UNPKG

@tldraw/editor

Version:

tldraw infinite canvas SDK (editor).

36 lines (35 loc) 906 B
import { useAtom } from "@tldraw/state-react"; import { assert } from "@tldraw/utils"; import { useCallback, useDebugValue, useLayoutEffect, useRef } from "react"; function useEvent(handler) { const handlerRef = useRef(); useLayoutEffect(() => { handlerRef.current = handler; }); useDebugValue(handler); return useCallback((...args) => { const fn = handlerRef.current; assert(fn, "fn does not exist"); return fn(...args); }, []); } function useReactiveEvent(handler) { const handlerAtom = useAtom("useReactiveEvent", () => handler); useLayoutEffect(() => { handlerAtom.set(handler); }); useDebugValue(handler); return useCallback( (...args) => { const fn = handlerAtom.get(); assert(fn, "fn does not exist"); return fn(...args); }, [handlerAtom] ); } export { useEvent, useReactiveEvent }; //# sourceMappingURL=useEvent.mjs.map