{"version":3,"file":"useDismiss.cjs","sources":["../../../../src/internal/hooks/useDismiss.ts"],"sourcesContent":["import type {MouseEvent, KeyboardEvent, MutableRefObject} from 'react';\nimport {useCallback} from 'react';\n\nimport {EventType, useEventListener} from '@/internal/hooks/useEventListener.ts';\n\n/**\n * React hook. Triggers provided callback when ESC key pressed or registered click outside provided element\n */\nexport const useDismiss = <TElement extends HTMLElement | null>(\n    callback: () => void,\n    ref: MutableRefObject<TElement>,\n    isOpen: boolean\n) => {\n    const handleKeyDown = useCallback(\n        (event: KeyboardEvent<TElement>) => {\n            if (isOpen && event.key === 'Escape') {\n                callback();\n            }\n        },\n        [callback, isOpen]\n    );\n\n    useEventListener(EventType.keydown, handleKeyDown);\n\n    const handleMouseDown = useCallback(\n        (event: MouseEvent<TElement>) => {\n            if (isOpen && !ref.current!.contains(event.target as TElement)) {\n                callback();\n            }\n        },\n        [callback, isOpen, ref]\n    );\n\n    useEventListener(EventType.mousedown, handleMouseDown);\n};\n"],"names":["useDismiss","callback","ref","isOpen","handleKeyDown","useCallback","event","useEventListener","EventType","handleMouseDown"],"mappings":"0JAQaA,EAAa,CACtBC,EACAC,EACAC,IACC,CACD,MAAMC,EAAgBC,EAAAA,YACjBC,GAAmC,CAC5BH,GAAUG,EAAM,MAAQ,UACxBL,EAAA,CAER,EACA,CAACA,EAAUE,CAAM,CAAA,EAGrBI,mBAAiBC,EAAAA,UAAU,QAASJ,CAAa,EAEjD,MAAMK,EAAkBJ,EAAAA,YACnBC,GAAgC,CACzBH,GAAU,CAACD,EAAI,QAAS,SAASI,EAAM,MAAkB,GACzDL,EAAA,CAER,EACA,CAACA,EAAUE,EAAQD,CAAG,CAAA,EAG1BK,mBAAiBC,EAAAA,UAAU,UAAWC,CAAe,CACzD"}