UNPKG

@rtdui/hooks

Version:

React hooks library base on @mantine/hooks

41 lines (38 loc) 916 B
'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