@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 554 B
JavaScript
import{useEffect as i,useRef as a}from"react";function f(c,s,u=!0){const t=a(c),o=a(s);i(()=>{t.current=c,o.current=s}),i(()=>{if(!u)return;const r=e=>{(Array.isArray(t.current)?t.current:[t.current]).some(n=>{if(!n||!n.current)return!1;const d=e.target;return n.current.contains(d)||e.composed&&n.current.contains(e.composedPath()[0])})||o.current(e)};return document.addEventListener("click",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("click",r),document.removeEventListener("touchstart",r)}},[u])}export default f;