createSubscribable = () => {
const eventName = "state-changed";
const eventTarget = new EventTarget();
const notify = () => eventTarget.dispatchEvent(new CustomEvent(eventName));
const subscribe = (listener) => {
eventTarget.addEventListener(eventName, listener);
return () => unsubscribe(listener);
};
const unsubscribe = (listener) =>
eventTarget.removeEventListener(eventName, listener);
return {
unsubscribe,
subscribe,
notify
};
}