{"version":3,"file":"useOuterClick.cjs","sources":["../../src/hooks/useOuterClick.ts"],"sourcesContent":["import { type RefObject, useEffect } from 'react'\n\nexport function useOuterClick(\n  targets: Array<RefObject<HTMLElement>>,\n  callback: (e: MouseEvent) => void,\n) {\n  useEffect(() => {\n    const handleOuterClick = (e: MouseEvent) => {\n      if (targets.every((target) => isEventExcludedParent(e, target.current))) {\n        callback(e)\n      }\n    }\n\n    window.addEventListener('click', handleOuterClick)\n\n    return () => {\n      window.removeEventListener('click', handleOuterClick)\n    }\n  }, [callback, targets])\n}\n\nfunction isEventExcludedParent(e: MouseEvent, parent: Element | null): boolean {\n  if (!parent) return false\n\n  const path = e.composedPath()\n\n  if (path.length === 0) return false\n\n  return !path.includes(parent)\n}\n"],"names":["useEffect"],"mappings":";;;;AAEM,SAAU,aAAa,CAC3B,OAAsC,EACtC,QAAiC,EAAA;IAEjCA,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,gBAAgB,GAAG,CAAC,CAAa,KAAI;AACzC,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;gBACvE,QAAQ,CAAC,CAAC,CAAC;YACb;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAElD,QAAA,OAAO,MAAK;AACV,YAAA,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACvD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzB;AAEA,SAAS,qBAAqB,CAAC,CAAa,EAAE,MAAsB,EAAA;AAClE,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AAEzB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE;AAE7B,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK;AAEnC,IAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/B;;;;"}