Files
emaui/node_modules/@mantine/store/esm/store.mjs
2026-05-29 15:23:46 +03:00

41 lines
913 B
JavaScript

'use client';
import { useSyncExternalStore } from 'react';
function createStore(initialState) {
let state = initialState;
let initialized = false;
const listeners = /* @__PURE__ */ new Set();
return {
getState() {
return state;
},
updateState(value) {
state = typeof value === "function" ? value(state) : value;
},
setState(value) {
this.updateState(value);
listeners.forEach((listener) => listener(state));
},
initialize(value) {
if (!initialized) {
state = value;
initialized = true;
}
},
subscribe(callback) {
listeners.add(callback);
return () => listeners.delete(callback);
}
};
}
function useStore(store) {
return useSyncExternalStore(
store.subscribe,
() => store.getState(),
() => store.getState()
);
}
export { createStore, useStore };
//# sourceMappingURL=store.mjs.map