UNPKG

@storm-stack/hooks

Version:

A collection of React hooks used by Storm Software in various client libraries and applications.

32 lines (31 loc) 804 B
import { isFunction } from "@storm-stack/types/type-checks/is-function"; import * as React from "react"; const emptyFn = () => { }; const emptyFnFn = () => emptyFn; export function useDidFinishSSR(value, options) { if (process.env.TAMAGUI_TARGET === "native") { return value ?? true; } if (options?.sync) { return React.useSyncExternalStore( emptyFnFn, () => value ?? true, () => false ); } const [cur, setCur] = React.useState(value); React.useEffect(() => { setCur(value ?? true); }, []); return cur ?? false; } export function useDidFinishSSRSync(value) { return useDidFinishSSR(value, { sync: true }); } export function useClientValue(value) { const done = useDidFinishSSR(); return done ? isFunction(value) ? value() : value : void 0; }