{"version":3,"file":"use-click-outside.mjs","names":[],"sources":["../../src/use-click-outside/use-click-outside.ts"],"sourcesContent":["import { useEffect, useEffectEvent, useRef } from 'react';\n\ntype EventType = MouseEvent | TouchEvent;\n\nconst DEFAULT_EVENTS = ['mousedown', 'touchstart'];\n\nexport function useClickOutside<T extends HTMLElement = any>(\n  callback: (event: EventType) => void,\n  events?: string[] | null,\n  nodes?: (HTMLElement | null)[],\n  enabled: boolean = true\n) {\n  const ref = useRef<T>(null);\n  const eventsList = events || DEFAULT_EVENTS;\n\n  const listener = useEffectEvent((event: Event) => {\n    const { target } = event ?? {};\n    const shouldIgnore =\n      !document.body.contains(target as Node) && (target as Element)?.tagName !== 'HTML';\n\n    if (shouldIgnore) {\n      return;\n    }\n\n    const path = event.composedPath();\n\n    if (Array.isArray(nodes)) {\n      const shouldTrigger = nodes.every((node) => !!node && !path.includes(node));\n      shouldTrigger && callback(event as EventType);\n    } else if (ref.current && !path.includes(ref.current)) {\n      callback(event as EventType);\n    }\n  });\n\n  const eventsKey = eventsList.join(',');\n\n  useEffect(() => {\n    if (!enabled) {\n      return undefined;\n    }\n\n    const events = eventsKey.split(',');\n    events.forEach((fn) => document.addEventListener(fn, listener));\n\n    return () => {\n      events.forEach((fn) => document.removeEventListener(fn, listener));\n    };\n  }, [eventsKey, enabled]);\n\n  return ref;\n}\n"],"mappings":";;;AAIA,MAAM,iBAAiB,CAAC,aAAa,YAAY;AAEjD,SAAgB,gBACd,UACA,QACA,OACA,UAAmB,MACnB;CACA,MAAM,MAAM,OAAU,IAAI;CAC1B,MAAM,aAAa,UAAU;CAE7B,MAAM,WAAW,gBAAgB,UAAiB;EAChD,MAAM,EAAE,WAAW,SAAS,CAAC;EAI7B,IAFE,CAAC,SAAS,KAAK,SAAS,MAAc,KAAM,QAAoB,YAAY,QAG5E;EAGF,MAAM,OAAO,MAAM,aAAa;EAEhC,IAAI,MAAM,QAAQ,KAAK,GAErB,MAD4B,OAAO,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,CAC7D,KAAK,SAAS,KAAkB;OACvC,IAAI,IAAI,WAAW,CAAC,KAAK,SAAS,IAAI,OAAO,GAClD,SAAS,KAAkB;CAE/B,CAAC;CAED,MAAM,YAAY,WAAW,KAAK,GAAG;CAErC,gBAAgB;EACd,IAAI,CAAC,SACH;EAGF,MAAM,SAAS,UAAU,MAAM,GAAG;EAClC,OAAO,SAAS,OAAO,SAAS,iBAAiB,IAAI,QAAQ,CAAC;EAE9D,aAAa;GACX,OAAO,SAAS,OAAO,SAAS,oBAAoB,IAAI,QAAQ,CAAC;EACnE;CACF,GAAG,CAAC,WAAW,OAAO,CAAC;CAEvB,OAAO;AACT"}