UNPKG

@preact-signals/safe-react

Version:
1 lines 1.31 kB
{"version":3,"file":"hooks.mjs","sources":["../../../src/lib/hooks.ts"],"sourcesContent":["\"use client\";\n\nimport { signal, computed, effect } from \"@preact/signals-core\";\nimport { useRef, useMemo, useEffect } from \"react\";\n\nconst Empty = [] as const;\nexport function useSignal<T>(value: T) {\n return useMemo(() => signal<T>(value), Empty);\n}\n\nexport function useComputed<T>(compute: () => T) {\n const $compute = useRef(compute);\n $compute.current = compute;\n return useMemo(() => computed<T>(() => $compute.current()), Empty);\n}\n\nexport function useSignalEffect(cb: () => void | (() => void)) {\n const callback = useRef(cb);\n callback.current = cb;\n\n useEffect(() => {\n return effect(() => callback.current());\n }, Empty);\n}\n"],"names":[],"mappings":";;;AAKA,MAAM,QAAQ,EAAC;AACR,SAAS,UAAa,KAAA,EAAU;AACrC,EAAA,OAAO,OAAA,CAAQ,MAAM,MAAA,CAAU,KAAK,GAAG,KAAK,CAAA;AAC9C;AAEO,SAAS,YAAe,OAAA,EAAkB;AAC/C,EAAA,MAAM,QAAA,GAAW,OAAO,OAAO,CAAA;AAC/B,EAAA,QAAA,CAAS,OAAA,GAAU,OAAA;AACnB,EAAA,OAAO,OAAA,CAAQ,MAAM,QAAA,CAAY,MAAM,SAAS,OAAA,EAAS,GAAG,KAAK,CAAA;AACnE;AAEO,SAAS,gBAAgB,EAAA,EAA+B;AAC7D,EAAA,MAAM,QAAA,GAAW,OAAO,EAAE,CAAA;AAC1B,EAAA,QAAA,CAAS,OAAA,GAAU,EAAA;AAEnB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAA,CAAO,MAAM,QAAA,CAAS,OAAA,EAAS,CAAA;AAAA,EACxC,GAAG,KAAK,CAAA;AACV;;;;"}