{"version":3,"sources":["../../src/useClickOutside/useClickOutside.ts"],"names":["useEffect","useRef","useState","useClickOutside","callback","container","isTouchEvent","setTouchEvent","eventType","handleEvent","useClickOutside_default"],"mappings":"8BAAA,OAAS,aAAAA,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAG5C,MAAMC,EAAmCC,GAAY,CACnD,MAAMC,EAAYJ,EAAuB,IAAI,EAEvC,CAACK,EAAcC,CAAa,EAAIL,EAAS,EAAK,EAE9CM,EAAYF,EAAe,WAAa,QAExCG,EAAe,GAAa,CAC5B,EAAE,OAAS,SAAWH,GAItBD,EAAU,SAAW,EAAE,SAAW,OAC/BA,EAAU,QAAQ,SAAS,EAAE,MAAc,GAC9CD,EAAS,CAAC,EAGhB,EAEA,OAAAJ,EAAU,KACR,SAAS,iBAAiBQ,EAAWC,EAAa,EAAI,EAE/C,IAAM,CACX,SAAS,oBAAoBD,EAAWC,EAAa,EAAI,CAC3D,EACD,EAEDT,EAAU,IAAM,CACdO,EAAc,iBAAkB,SAAS,eAAe,CAC1D,EAAG,CAAC,CAAC,EAEEF,CACT,EAEA,IAAOK,EAAQP","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { UseClickOutside } from './types';\n\nconst useClickOutside: UseClickOutside = callback => {\n  const container = useRef<HTMLDivElement>(null);\n\n  const [isTouchEvent, setTouchEvent] = useState(false);\n\n  const eventType = isTouchEvent ? 'touchend' : 'click';\n\n  const handleEvent = (e: Event) => {\n    if (e.type === 'click' && isTouchEvent) {\n      return;\n    }\n\n    if (container.current && e.target !== null) {\n      if (!container.current.contains(e.target as Node)) {\n        callback(e);\n      }\n    }\n  };\n\n  useEffect(() => {\n    document.addEventListener(eventType, handleEvent, true);\n\n    return () => {\n      document.removeEventListener(eventType, handleEvent, true);\n    };\n  });\n\n  useEffect(() => {\n    setTouchEvent('ontouchstart' in document.documentElement);\n  }, []);\n\n  return container;\n};\n\nexport default useClickOutside;\n"]}