UNPKG

@stainless-code/persist

Version:

Hydration-aware persistence for any reactive store — zero-dep persistSource core; codecs, backends, cross-tab transport, source + framework hydration adapters ship as opt-in recipes

20 lines (19 loc) • 611 B
import { useSyncExternalStore } from "preact/compat"; //#region src/adapters/frameworks/preact.ts const noopSubscribe = () => () => {}; const alwaysTrue = () => true; /** * Mount a `HydrationSignal` into Preact. * * @example * ```ts * import { useHydrated } from "@stainless-code/persist/frameworks/preact"; * const { hydrated } = useHydrated(prefsHydration); * if (!hydrated) return <Skeleton />; * ``` */ function useHydrated(signal) { return { hydrated: useSyncExternalStore(signal?.subscribeHydrated ?? noopSubscribe, signal?.isHydrated ?? alwaysTrue, alwaysTrue) }; } //#endregion export { useHydrated };