@tldraw/editor
Version:
tldraw infinite canvas SDK (editor).
36 lines (35 loc) • 906 B
JavaScript
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