{"version":3,"file":"Modal.mjs","names":["Modal","AntModal"],"sources":["../../src/Modal/Modal.tsx"],"sourcesContent":["'use client';\n\nimport { Button, ConfigProvider, Drawer, Modal as AntModal } from 'antd';\nimport { cssVar, cx, useResponsive } from 'antd-style';\nimport { Maximize2, Minimize2, X } from 'lucide-react';\nimport { memo, type ReactNode, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport { type ModalProps } from './type';\n\nconst Modal = memo<ModalProps>(\n  ({\n    panelRef,\n    allowFullscreen,\n    children,\n    title = ' ',\n    className,\n    classNames,\n    width = 700,\n    onCancel,\n    open,\n    destroyOnHidden,\n    paddings,\n    height = '75dvh',\n    enableResponsive = true,\n    footer,\n    styles: customStyles,\n    okText,\n    onOk,\n    cancelText,\n    okButtonProps,\n    cancelButtonProps,\n    confirmLoading,\n    ...rest\n  }) => {\n    const [fullscreen, setFullscreen] = useState(false);\n    const { mobile } = useResponsive();\n    const hideFooter = footer === false || footer === null;\n    if (enableResponsive && mobile)\n      return (\n        <ConfigProvider\n          theme={{\n            token: {\n              colorBgElevated: cssVar.colorBgContainer,\n            },\n          }}\n        >\n          <Drawer\n            className={cx(styles.drawerContent, className)}\n            closeIcon={<ActionIcon icon={X} />}\n            destroyOnHidden={destroyOnHidden}\n            height={fullscreen ? 'calc(100% - env(safe-area-inset-top))' : height}\n            open={open}\n            panelRef={panelRef}\n            placement={'bottom'}\n            title={title}\n            classNames={\n              typeof classNames === 'function'\n                ? classNames\n                : {\n                    ...classNames,\n                    wrapper: cx(styles.wrap, classNames?.wrapper),\n                  }\n            }\n            extra={\n              allowFullscreen && (\n                <ActionIcon\n                  icon={fullscreen ? Minimize2 : Maximize2}\n                  onClick={() => setFullscreen(!fullscreen)}\n                />\n              )\n            }\n            footer={\n              hideFooter\n                ? null\n                : (footer as ReactNode) || (\n                    <>\n                      <Button\n                        color={'default'}\n                        variant={'filled'}\n                        onClick={onCancel as any}\n                        {...cancelButtonProps}\n                      >\n                        {cancelText || 'Cancel'}\n                      </Button>\n                      <Button\n                        loading={confirmLoading}\n                        type=\"primary\"\n                        onClick={onOk as any}\n                        {...okButtonProps}\n                        style={{\n                          marginInlineStart: 8,\n                          ...okButtonProps?.style,\n                        }}\n                      >\n                        {okText || 'OK'}\n                      </Button>\n                    </>\n                  )\n            }\n            styles={\n              typeof customStyles === 'function'\n                ? customStyles\n                : {\n                    ...customStyles,\n                    body: {\n                      paddingBlock: `16px ${footer ? 0 : '16px'}`,\n                      paddingInline: paddings?.desktop ?? 16,\n                      ...customStyles?.body,\n                    },\n                  }\n            }\n            onClose={onCancel as any}\n            {...rest}\n          >\n            {children}\n          </Drawer>\n        </ConfigProvider>\n      );\n\n    return (\n      <ConfigProvider\n        theme={{\n          token: {\n            colorBgElevated: cssVar.colorBgContainer,\n          },\n        }}\n      >\n        <AntModal\n          closable\n          cancelText={cancelText}\n          className={cx(styles.content, className)}\n          closeIcon={<Icon icon={X} size={20} />}\n          confirmLoading={confirmLoading}\n          destroyOnHidden={destroyOnHidden}\n          footer={hideFooter ? null : footer}\n          mask={{ closable: true }}\n          okButtonProps={okButtonProps}\n          okText={okText}\n          open={open}\n          panelRef={panelRef}\n          title={title}\n          width={width}\n          cancelButtonProps={{\n            color: 'default',\n            variant: 'filled',\n            ...cancelButtonProps,\n          }}\n          classNames={\n            typeof classNames === 'function'\n              ? classNames\n              : {\n                  ...classNames,\n                  wrapper: cx(styles.wrap, classNames?.wrapper),\n                }\n          }\n          styles={\n            typeof customStyles === 'function'\n              ? customStyles\n              : {\n                  ...customStyles,\n                  body: {\n                    maxHeight: height,\n                    overflow: 'hidden auto',\n                    paddingBlock: `0 ${footer === null ? '16px' : 0}`,\n                    paddingInline: paddings?.desktop ?? 16,\n                    ...customStyles?.body,\n                  },\n                }\n          }\n          onCancel={onCancel}\n          onOk={onOk}\n          {...rest}\n        >\n          {children}\n        </AntModal>\n      </ConfigProvider>\n    );\n  },\n);\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n"],"mappings":";;;;;;;;;;AAaA,MAAMA,UAAQ,MACX,EACC,UACA,iBACA,UACA,QAAQ,KACR,WACA,YACA,QAAQ,KACR,UACA,MACA,iBACA,UACA,SAAS,SACT,mBAAmB,MACnB,QACA,QAAQ,cACR,QACA,MACA,YACA,eACA,mBACA,gBACA,GAAG,WACC;CACJ,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CACnD,MAAM,EAAE,WAAW,eAAe;CAClC,MAAM,aAAa,WAAW,SAAS,WAAW;AAClD,KAAI,oBAAoB,OACtB,QACE,oBAAC,gBAAD;EACE,OAAO,EACL,OAAO,EACL,iBAAiB,OAAO,kBACzB,EACF;YAED,oBAAC,QAAD;GACE,WAAW,GAAG,OAAO,eAAe,UAAU;GAC9C,WAAW,oBAAC,YAAD,EAAY,MAAM,GAAK,CAAA;GACjB;GACjB,QAAQ,aAAa,0CAA0C;GACzD;GACI;GACV,WAAW;GACJ;GACP,YACE,OAAO,eAAe,aAClB,aACA;IACE,GAAG;IACH,SAAS,GAAG,OAAO,MAAM,YAAY,QAAQ;IAC9C;GAEP,OACE,mBACE,oBAAC,YAAD;IACE,MAAM,aAAa,YAAY;IAC/B,eAAe,cAAc,CAAC,WAAW;IACzC,CAAA;GAGN,QACE,aACI,OACC,UACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;IACE,OAAO;IACP,SAAS;IACT,SAAS;IACT,GAAI;cAEH,cAAc;IACR,CAAA,EACT,oBAAC,QAAD;IACE,SAAS;IACT,MAAK;IACL,SAAS;IACT,GAAI;IACJ,OAAO;KACL,mBAAmB;KACnB,GAAG,eAAe;KACnB;cAEA,UAAU;IACJ,CAAA,CACR,EAAA,CAAA;GAGX,QACE,OAAO,iBAAiB,aACpB,eACA;IACE,GAAG;IACH,MAAM;KACJ,cAAc,QAAQ,SAAS,IAAI;KACnC,eAAe,UAAU,WAAW;KACpC,GAAG,cAAc;KAClB;IACF;GAEP,SAAS;GACT,GAAI;GAEH;GACM,CAAA;EACM,CAAA;AAGrB,QACE,oBAAC,gBAAD;EACE,OAAO,EACL,OAAO,EACL,iBAAiB,OAAO,kBACzB,EACF;YAED,oBAACC,OAAD;GACE,UAAA;GACY;GACZ,WAAW,GAAG,OAAO,SAAS,UAAU;GACxC,WAAW,oBAAC,MAAD;IAAM,MAAM;IAAG,MAAM;IAAM,CAAA;GACtB;GACC;GACjB,QAAQ,aAAa,OAAO;GAC5B,MAAM,EAAE,UAAU,MAAM;GACT;GACP;GACF;GACI;GACH;GACA;GACP,mBAAmB;IACjB,OAAO;IACP,SAAS;IACT,GAAG;IACJ;GACD,YACE,OAAO,eAAe,aAClB,aACA;IACE,GAAG;IACH,SAAS,GAAG,OAAO,MAAM,YAAY,QAAQ;IAC9C;GAEP,QACE,OAAO,iBAAiB,aACpB,eACA;IACE,GAAG;IACH,MAAM;KACJ,WAAW;KACX,UAAU;KACV,cAAc,KAAK,WAAW,OAAO,SAAS;KAC9C,eAAe,UAAU,WAAW;KACpC,GAAG,cAAc;KAClB;IACF;GAEG;GACJ;GACN,GAAI;GAEH;GACQ,CAAA;EACI,CAAA;EAGtB;AAED,QAAM,cAAc"}