const observers = {};
export const Observable = Object.freeze({
notify: (event, data) => {
(observers[event] || []).forEach((observer) => observer(data))
},
subscribe: (event, func) => {
(observers[event] ??= []).push(func);
},
unsubscribe: (event, func) => {
[...observers[event] || []].forEach((observer, index) => {
if (observer === func) {
observers[event].splice(index, 1);
}
});
},
});