UNPKG

@whop/embedded-components-react-js

Version:

React components for Whop.js

42 lines (41 loc) 1 kB
"use client"; import "../chunk-NSSMTXJJ.mjs"; import { useEffect, useMemo, useSyncExternalStore } from "react"; function useElementSnapshot(source) { const callbacks = useMemo(()=>{ return new Set(); }, []); const state = useSyncExternalStore((listener)=>{ const onSnapshot = ()=>{ listener(); }; callbacks.add(onSnapshot); return ()=>{ callbacks.delete(onSnapshot); }; }, ()=>{ const snap = source?.getSnapshot(); return snap; }, ()=>{ return null; }); useEffect(()=>{ if (!source) { return; } const onSnapshot = ()=>{ for (const callback of callbacks){ callback(); } }; source.on("snapshot", onSnapshot); return ()=>{ source.off("snapshot", onSnapshot); }; }, [ source, callbacks ]); return state; } export { useElementSnapshot };