{"version":3,"sources":["../../src/useEventListener/useEventListener.ts"],"names":["useEffect","useRef","useEventListener","eventName","handler","element","savedHandler","eventListener","event","_a","useEventListener_default"],"mappings":"8BAAA,OAAS,aAAAA,EAAW,UAAAC,MAAc,QAIlC,MAAMC,EAAqC,CAACC,EAAWC,EAASC,EAAU,SAAiB,CACzF,MAAMC,EAAeL,EAAwB,EAE7CD,EAAU,IAAM,CACdM,EAAa,QAAUF,CACzB,EAAG,CAACA,CAAO,CAAC,EAEZJ,EAAU,IAAM,CAGd,GAAI,EAFgBK,GAAWA,EAAQ,kBAGrC,OAGF,MAAME,EAAiBC,GAAc,CAlBzC,IAAAC,EAkB4C,OAAAA,EAAAH,GAAA,YAAAA,EAAc,UAAd,YAAAG,EAAA,KAAAH,EAAwBE,IAEhE,OAAAH,EAAQ,iBAAiBF,EAAWI,CAAa,EAE1C,IAAM,CACXF,EAAQ,oBAAoBF,EAAWI,CAAa,CACtD,CACF,EAAG,CAACJ,EAAWE,CAAO,CAAC,CACzB,EAEA,IAAOK,EAAQR","sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { GeneralFunction } from '@asherng/common-types';\nimport type { UseEventListener } from './types';\n\nconst useEventListener: UseEventListener = (eventName, handler, element = window): void => {\n  const savedHandler = useRef<GeneralFunction>();\n\n  useEffect(() => {\n    savedHandler.current = handler;\n  }, [handler]);\n\n  useEffect(() => {\n    const isSupported = element && element.addEventListener;\n\n    if (!isSupported) {\n      return;\n    }\n\n    const eventListener = (event: Event) => savedHandler?.current?.(event);\n\n    element.addEventListener(eventName, eventListener);\n\n    return () => {\n      element.removeEventListener(eventName, eventListener);\n    };\n  }, [eventName, element]);\n};\n\nexport default useEventListener;\n"]}