@rtdui/hooks
Version:
React hooks library base on @mantine/hooks
41 lines (38 loc) • 916 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=useStore.mjs.map