1
0
mirror of https://github.com/jaandrle/deka-dom-el synced 2024-11-22 16:55:23 +01:00
This commit is contained in:
Jan Andrle 2024-01-13 09:55:46 +01:00
parent 13c75fede1
commit 14427882ed
Signed by: jaandrle
GPG Key ID: B3A25AED155AFFAB

View File

@ -81,11 +81,24 @@ function todoComponent({ textContent, value }){
textContent(ev.target.value); textContent(ev.target.value);
is_editable(false); is_editable(false);
}); });
const memo= initMemo(host);
return el("li").append( return el("li").append(
O.el(is_editable, is=> is O.el(is_editable, is=> is
? el("input", { value: textContent(), type: "text" }, onedited) ? memo("view", ()=> el("input", { value: textContent(), type: "text" }, onedited))
: el("span", { textContent, onclick: is_editable.bind(null, true) }), : memo("edit", ()=> el("span", { textContent, onclick: is_editable.bind(null, true) }))
), ),
el("button", { type: "button", value, textContent: "-" }, onclick) el("button", { type: "button", value, textContent: "-" }, onclick)
); );
} }
function initMemo(host){
const memos= new Map();
host(on.disconnected(()=> memos.clear()));
return function useMemo(key, fn){
let memo= memos.get(key);
if(!memo){
memo= fn();
memos.set(key, memo);
}
return memo;
}
}