UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

32 lines (31 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTimeout = exports.useSyncStoreOpt = exports.useSyncStore = exports.useBrowserLayoutEffect = exports.useIsoLayoutEffect = void 0; const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); exports.useIsoLayoutEffect = typeof window === 'object' && !!window.document ? React.useLayoutEffect : React.useEffect; exports.useBrowserLayoutEffect = typeof window === 'object' && !!window.document ? React.useLayoutEffect : () => { }; const useSyncStore = (store) => React.useSyncExternalStore(store.subscribe, store.getSnapshot); exports.useSyncStore = useSyncStore; const emptySyncStore = { getSnapshot: () => undefined, subscribe: () => () => { }, }; const useSyncStoreOpt = (store = emptySyncStore) => React.useSyncExternalStore(store.subscribe, store.getSnapshot); exports.useSyncStoreOpt = useSyncStoreOpt; const useTimeout = (ms, deps = [ms]) => { const [ready, setReady] = React.useState(false); // biome-ignore lint/correctness/useExhaustiveDependencies: ready do not need to memoize it React.useEffect(() => { if (ready) setReady(false); const timer = setTimeout(() => { setReady(true); }, ms); return () => { clearTimeout(timer); }; }, deps); return ready; }; exports.useTimeout = useTimeout;