@forest-js/core
Version:
A tiny, functional DOM engine with explicit update and real DOM.
34 lines • 816 B
JavaScript
/**
* @function createStore
* @description Create a store
* @param initial - Initial value
* @returns Store
* @example
* ```ts
* const store = createStore(0);
* ```
*/
export function createStore(initial) {
let value = initial;
const subscribers = new Set();
return {
get: () => value,
set: (next) => {
value = next;
subscribers.forEach((fn) => fn());
},
update: (fn) => {
value = fn(value);
subscribers.forEach((fn) => fn());
},
subscribe: (fn) => {
subscribers.delete(fn);
subscribers.add(fn);
return () => subscribers.delete(fn);
},
unsubscribe: (fn) => {
subscribers.delete(fn);
},
};
}
//# sourceMappingURL=core.js.map