{"version":3,"file":"ModalOverlay.mjs","sources":["../../../packages/modal/ModalOverlay.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from 'react'\nimport ReactDOM from 'react-dom'\nimport { useMergeRefs, useEscape, useLockScroll } from '../hooks/index.js'\nimport { withTransition } from '../transition/index.js'\nimport { modalRoot } from '../utils/index.js'\nimport { ModalOverlayInnerProps } from './types.js'\nimport {\n  ModalPortalStyle,\n  ModalOverflowStyle,\n  ModalContentStyle,\n} from './ModalOverlayStyles.js'\nimport { useModalFocus } from './useModalFocus.js'\nimport { useModalClose } from './useModalClose.js'\n\nexport const ModalOverlay = withTransition(\n  // eslint-disable-next-line react/display-name\n  forwardRef(\n    (\n      {\n        onClose,\n        onBack,\n        duration,\n        transitionStatus,\n        ...rest\n      }: ModalOverlayInnerProps,\n      externalRef?: ForwardedRef<HTMLDivElement>,\n    ) => {\n      const closable = !!onClose\n\n      useEscape(onClose)\n      useLockScroll()\n\n      const controlRef = useModalFocus()\n      const { ref: closeRef, handleClick } = useModalClose(onClose)\n\n      const mergedRef = useMergeRefs([controlRef, closeRef, externalRef])\n\n      if (!modalRoot) return null\n\n      return ReactDOM.createPortal(\n        <ModalPortalStyle\n          $closable={closable}\n          $duration={duration}\n          $transition={transitionStatus}\n          onClick={handleClick}\n        >\n          <ModalOverflowStyle>\n            <ModalContentStyle\n              tabIndex={-1}\n              role='dialog'\n              aria-modal='true'\n              ref={mergedRef}\n              $transition={transitionStatus}\n              $duration={duration}\n              {...rest}\n            />\n          </ModalOverflowStyle>\n        </ModalPortalStyle>,\n        modalRoot,\n      )\n    },\n  ),\n)\nModalOverlay.displayName = 'ModalOverlay'\n"],"names":["ModalOverlay","withTransition","forwardRef","_ref","externalRef","onClose","onBack","duration","transitionStatus","rest","closable","useEscape","useLockScroll","controlRef","useModalFocus","ref","closeRef","handleClick","useModalClose","mergedRef","useMergeRefs","modalRoot","ReactDOM","createPortal","_jsx","ModalPortalStyle","$closable","$duration","$transition","onClick","children","ModalOverflowStyle","ModalContentStyle","tabIndex","role","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;AAcO,MAAMA,YAAY,GAAGC,cAAc;AAAA;AACxC;AACAC,UAAU,CACR,CAAAC,IAAA,EAQEC,WAA0C,KACvC;EAAA,IARH;IACEC,OAAO;IACPC,MAAM;IACNC,QAAQ;IACRC,gBAAgB;IAChB,GAAGC,IAAAA;AACmB,GAAC,GAAAN,IAAA,CAAA;AAGzB,EAAA,MAAMO,QAAQ,GAAG,CAAC,CAACL,OAAO,CAAA;EAE1BM,SAAS,CAACN,OAAO,CAAC,CAAA;AAClBO,EAAAA,aAAa,EAAE,CAAA;AAEf,EAAA,MAAMC,UAAU,GAAGC,aAAa,EAAE,CAAA;EAClC,MAAM;AAAEC,IAAAA,GAAG,EAAEC,QAAQ;AAAEC,IAAAA,WAAAA;AAAY,GAAC,GAAGC,aAAa,CAACb,OAAO,CAAC,CAAA;EAE7D,MAAMc,SAAS,GAAGC,YAAY,CAAC,CAACP,UAAU,EAAEG,QAAQ,EAAEZ,WAAW,CAAC,CAAC,CAAA;AAEnE,EAAA,IAAI,CAACiB,SAAS,EAAE,OAAO,IAAI,CAAA;AAE3B,EAAA,oBAAOC,QAAQ,CAACC,YAAY,cAC1BC,GAAA,CAACC,gBAAgB,EAAA;AACfC,IAAAA,SAAS,EAAEhB,QAAS;AACpBiB,IAAAA,SAAS,EAAEpB,QAAS;AACpBqB,IAAAA,WAAW,EAAEpB,gBAAiB;AAC9BqB,IAAAA,OAAO,EAAEZ,WAAY;IAAAa,QAAA,eAErBN,GAAA,CAACO,kBAAkB,EAAA;MAAAD,QAAA,eACjBN,GAAA,CAACQ,iBAAiB,EAAA;QAChBC,QAAQ,EAAE,CAAC,CAAE;AACbC,QAAAA,IAAI,EAAC,QAAQ;AACb,QAAA,YAAA,EAAW,MAAM;AACjBnB,QAAAA,GAAG,EAAEI,SAAU;AACfS,QAAAA,WAAW,EAAEpB,gBAAiB;AAC9BmB,QAAAA,SAAS,EAAEpB,QAAS;QAAA,GAChBE,IAAAA;OACL,CAAA;KACiB,CAAA;GACJ,CAAC,EACnBY,SACF,CAAC,CAAA;AACH,CACF,CACF,EAAC;AACDrB,YAAY,CAACmC,WAAW,GAAG,cAAc;;;;"}