{"version":3,"file":"ModalContent.mjs","sourceRoot":"","sources":["../../../src/components/ModalContent/ModalContent.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,QAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;;AAE7D,OAAO,EAAE,OAAO,EAAE,iCAA6B;AAC/C,OAAO,EACL,GAAG,EACH,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAClB,yBAAe;AAChB,OAAO,EAAE,eAAe,EAAE,2BAAiB;AAC3C,OAAO,EAAE,UAAU,EAAE,gCAAsB;AAE3C,OAAO,EACL,uCAAuC,EACvC,6BAA6B,EAC9B,qCAAiC;AAElC,OAAO,EAAE,gBAAgB,EAAE,iCAA6B;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CACE,EACE,SAAS,EACT,QAAQ,EACR,IAAI,GAAG,gBAAgB,CAAC,EAAE,EAC1B,gBAAgB,EAChB,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,MAAM,EACJ,OAAO,EACP,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,SAAS,GACV,GAAG,eAAe,EAAE,CAAC;IACtB,MAAM,cAAc,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC5C,IAAI,mBAAmB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACjD,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC;QACF,MAAM,kBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC/C,IAAI,CAAC,sBAAsB,EAAE;gBAC3B,OAAO;aACR;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B,CAAC;YAClD,mEAAmE;YACnE,4DAA4D;YAC5D,kEAAkE;YAClE,8DAA8D;YAC9D,IAAI,MAAM,EAAE,OAAO,CAAC,IAAI,uCAAuC,GAAG,CAAC,EAAE;gBACnE,OAAO;aACR;YACD,IACE,cAAc,CAAC,OAAO;gBACtB,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAc,CAAC,EAChD;gBACA,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAE3D,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACtD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAChE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,oBAAC,UAAU,IACT,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS;QAEpB,6BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,CAChB,6EAA6E,EAC7E,gCAAgC,EAChC,SAAS,CACV,KACG,KAAK;YAET,oBAAC,GAAG,IACF,GAAG,EAAE,cAA2C,EAChD,OAAO,QACP,eAAe,EAAE,kBAAkB,CAAC,mBAAmB,EACvD,WAAW,EAAE,cAAc,CAAC,iBAAiB,EAC7C,WAAW,EAAE,CAAC,EACd,cAAc,EAAE,iBAAiB,CAAC,KAAK,EACvC,UAAU,EAAE,aAAa,CAAC,OAAO,EACjC,aAAa,EAAE,gBAAgB,CAAC,MAAM,EACtC,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,CAAC,KACZ,gBAAgB,EACpB,SAAS,EAAE,OAAO,CAChB,8EAA8E,EAC9E,6BAA6B,CAAC,IAAI,CAAC,EACnC,gBAAgB,EAAE,SAAS,CAC5B;gBAED,iCAAS,IAAI,EAAC,QAAQ,gBAAY,MAAM,IACrC,QAAQ,CACD,CACN,CACF,CACK,CACd,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC","sourcesContent":["import React, { forwardRef, useEffect, useRef } from 'react';\n\nimport { twMerge } from '../../utils/tw-merge';\nimport {\n  Box,\n  BoxAlignItems,\n  BoxBackgroundColor,\n  BoxBorderColor,\n  BoxFlexDirection,\n  BoxJustifyContent,\n} from '../Box';\nimport { useModalContext } from '../Modal';\nimport { ModalFocus } from '../ModalFocus';\n\nimport {\n  MODAL_CONTENT_IGNORE_OUTSIDE_CLICK_ATTR,\n  TWCLASSMAP_MODAL_CONTENT_SIZE,\n} from './ModalContent.constants';\nimport type { ModalContentProps } from './ModalContent.types';\nimport { ModalContentSize } from './ModalContent.types';\n\nexport const ModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\n  (\n    {\n      className,\n      children,\n      size = ModalContentSize.Sm,\n      modalDialogProps,\n      ...props\n    },\n    ref,\n  ) => {\n    const {\n      onClose,\n      isClosedOnEscapeKey,\n      isClosedOnOutsideClick,\n      initialFocusRef,\n      finalFocusRef,\n      restoreFocus,\n      autoFocus,\n    } = useModalContext();\n    const modalDialogRef = useRef<HTMLElement>(null);\n\n    useEffect(() => {\n      const handleEscKey = (event: KeyboardEvent) => {\n        if (isClosedOnEscapeKey && event.key === 'Escape') {\n          onClose();\n        }\n      };\n      const handleClickOutside = (event: MouseEvent) => {\n        if (!isClosedOnOutsideClick) {\n          return;\n        }\n        const target = event.target as HTMLElement | null;\n        // Floating UI primitives (Popover, Tooltip, Select dropdown, etc.)\n        // that portal alongside the Modal but are part of the modal\n        // interaction can opt out of the outside-click handler by setting\n        // `data-mm-modal-ignore-outside-click` on their root element.\n        if (target?.closest(`[${MODAL_CONTENT_IGNORE_OUTSIDE_CLICK_ATTR}]`)) {\n          return;\n        }\n        if (\n          modalDialogRef.current &&\n          !modalDialogRef.current.contains(target as Node)\n        ) {\n          onClose();\n        }\n      };\n\n      document.addEventListener('keydown', handleEscKey);\n      document.addEventListener('mousedown', handleClickOutside);\n\n      return () => {\n        document.removeEventListener('keydown', handleEscKey);\n        document.removeEventListener('mousedown', handleClickOutside);\n      };\n    }, [isClosedOnEscapeKey, isClosedOnOutsideClick, onClose]);\n\n    return (\n      <ModalFocus\n        initialFocusRef={initialFocusRef}\n        finalFocusRef={finalFocusRef}\n        restoreFocus={restoreFocus}\n        autoFocus={autoFocus}\n      >\n        <div\n          ref={ref}\n          className={twMerge(\n            'fixed inset-0 z-[1050] flex items-start justify-center p-4 sm:py-8 md:py-12',\n            '[@media(max-height:475px)]:p-2',\n            className,\n          )}\n          {...props}\n        >\n          <Box\n            ref={modalDialogRef as React.Ref<HTMLDivElement>}\n            asChild\n            backgroundColor={BoxBackgroundColor.BackgroundElevated1}\n            borderColor={BoxBorderColor.BorderAlternative}\n            borderWidth={1}\n            justifyContent={BoxJustifyContent.Start}\n            alignItems={BoxAlignItems.Stretch}\n            flexDirection={BoxFlexDirection.Column}\n            paddingTop={4}\n            paddingBottom={4}\n            {...modalDialogProps}\n            className={twMerge(\n              'flex max-h-full w-full rounded-[32px] shadow-lg motion-safe:animate-slide-up',\n              TWCLASSMAP_MODAL_CONTENT_SIZE[size],\n              modalDialogProps?.className,\n            )}\n          >\n            <section role=\"dialog\" aria-modal=\"true\">\n              {children}\n            </section>\n          </Box>\n        </div>\n      </ModalFocus>\n    );\n  },\n);\n\nModalContent.displayName = 'ModalContent';\n"]}