import React from "react"; // copy from "@uidotdev/usehooks" export function useClickAway(cb) { const ref = React.useRef(null); const refCb = React.useRef(cb); React.useLayoutEffect(() => { refCb.current = cb; }); React.useEffect(() => { const handler = (e) => { const element = ref.current; if (element && !element.contains(e.target)) { refCb.current(e); } }; document.addEventListener("mousedown", handler); document.addEventListener("touchstart", handler); return () => { document.removeEventListener("mousedown", handler); document.removeEventListener("touchstart", handler); }; }, []); return ref; }