{"version":3,"file":"use-modal.cjs","sources":["../../../src/components/ModalBase/use-modal.ts"],"sourcesContent":["import { useState } from 'react';\nimport { useFocusReturn, useId, useWindowEvent } from '@raikou/hooks';\nimport { TransitionOverride } from '../Transition';\nimport { useLockScroll } from './use-lock-scroll';\n\ninterface UseModalInput {\n  opened: boolean;\n  onClose: () => void;\n  id: string | undefined;\n  transitionProps: TransitionOverride | undefined;\n  trapFocus: boolean | undefined;\n  closeOnEscape: boolean | undefined;\n  returnFocus: boolean | undefined;\n}\n\nexport function useModal({\n  id,\n  transitionProps,\n  opened,\n  trapFocus,\n  closeOnEscape,\n  onClose,\n  returnFocus,\n}: UseModalInput) {\n  const _id = useId(id);\n  const [titleMounted, setTitleMounted] = useState(false);\n  const [bodyMounted, setBodyMounted] = useState(false);\n\n  const transitionDuration =\n    typeof transitionProps?.duration === 'number' ? transitionProps?.duration : 200;\n\n  const shouldLockScroll = useLockScroll({ opened, transitionDuration });\n\n  useWindowEvent(\n    'keydown',\n    (event) => {\n      if (event.key === 'Escape' && closeOnEscape && opened) {\n        const shouldTrigger =\n          (event.target as HTMLElement)?.getAttribute('data-raikou-stop-propagation') !== 'true';\n        shouldTrigger && onClose();\n      }\n    },\n    { capture: true }\n  );\n\n  useFocusReturn({ opened, shouldReturnFocus: trapFocus && returnFocus });\n\n  return {\n    _id,\n    titleMounted,\n    bodyMounted,\n    shouldLockScroll,\n    setTitleMounted,\n    setBodyMounted,\n  };\n}\n"],"names":["useId","useState","useLockScroll","useWindowEvent","useFocusReturn"],"mappings":";;;;;;AAeO,SAAS,QAAS,CAAA;AAAA,EACvB,EAAA;AAAA,EACA,eAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAkB,EAAA;AAChB,EAAM,MAAA,GAAA,GAAMA,YAAM,EAAE,CAAA;AACpB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,KAAK,CAAA;AAEpD,EAAA,MAAM,qBACJ,OAAO,eAAA,EAAiB,QAAa,KAAA,QAAA,GAAW,iBAAiB,QAAW,GAAA,GAAA;AAE9E,EAAA,MAAM,gBAAmB,GAAAC,2BAAA,CAAc,EAAE,MAAA,EAAQ,oBAAoB,CAAA;AAErE,EAAAC,oBAAA;AAAA,IACE,SAAA;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,QAAY,IAAA,aAAA,IAAiB,MAAQ,EAAA;AACrD,QAAA,MAAM,aACH,GAAA,KAAA,CAAM,MAAwB,EAAA,YAAA,CAAa,8BAA8B,CAAM,KAAA,MAAA;AAClF,QAAA,aAAA,IAAiB,OAAQ,EAAA;AAAA;AAC3B,KACF;AAAA,IACA,EAAE,SAAS,IAAK;AAAA,GAClB;AAEA,EAAAC,oBAAA,CAAe,EAAE,MAAA,EAAQ,iBAAmB,EAAA,SAAA,IAAa,aAAa,CAAA;AAEtE,EAAO,OAAA;AAAA,IACL,GAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}