stateButton = (label) => {
const node = htl.html`<div><button>${label}</button></div>`;
const button = node.querySelector("button");
const state = { hovering: false, clicking: false };
set(node, state);
button.addEventListener("pointerdown", setState({clicking: true}));
button.addEventListener("pointerup", setState({clicking: false}));
button.addEventListener("mouseenter", setState({hovering: true}));
button.addEventListener("mouseleave", setState({hovering: false, clicking: false}));
function setState(newState) {
return function() {
Object.assign(state, newState);
set(node, state);
}
}
return node;
}