{"version":3,"file":"Modal.mjs","sources":["../../../../../../../../../web/src/adminPortal/shared/components/Modal.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { extractErrorMessage } from '../../../utils/extractErrorMessage';\nimport { useToggleState } from '../utils/useToggleState';\nimport { useToast } from './Toast';\n\nexport type ModalStateType = {\n  isOpen: boolean;\n  open: () => void;\n  close: () => void;\n  confirm: () => Promise<void>;\n};\n\nexport const useModalState = (confirmAction?: () => unknown): ModalStateType => {\n  const { isOpen, open, close } = useToggleState();\n  const { openToast } = useToast();\n\n  const confirm = async () => {\n    try {\n      await confirmAction?.();\n    } catch (e: unknown) {\n      const message = extractErrorMessage(e);\n      if (message) {\n        openToast({ text: message, type: 'error' });\n      }\n    }\n  };\n\n  return { isOpen, open, close, confirm };\n};\n\nexport type ModalCoreProps = Omit<ModalStateType, 'open'> & {\n  cancelButtonText?: string;\n  description?: string;\n  confirmButtonText?: string;\n  disableConfirm?: boolean;\n  warning?: boolean;\n  title: string;\n  showLoadingOnConfirm?: boolean;\n  noCancelButton?: boolean;\n  keepOpenOnConfirm?: boolean;\n  children?: ReactNode;\n};\n"],"names":["useModalState","confirmAction","isOpen","open","close","useToggleState","openToast","useToast","confirm","e","message","extractErrorMessage","text","type"],"mappings":";;;;AAaO,MAAMA,gBAAgB,CAACC,aAAAA,GAAAA;AAC5B,IAAA,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGC,cAAAA,EAAAA;IAChC,MAAM,EAAEC,SAAS,EAAE,GAAGC,QAAAA,EAAAA;AAEtB,IAAA,MAAMC,OAAAA,GAAU,UAAA;QACd,IAAI;YACF,MAAMP,aAAAA,IAAAA;AACR,QAAA,CAAA,CAAE,OAAOQ,CAAAA,EAAY;AACnB,YAAA,MAAMC,UAAUC,mBAAAA,CAAoBF,CAAAA,CAAAA;AACpC,YAAA,IAAIC,OAAAA,EAAS;gBACXJ,SAAAA,CAAU;oBAAEM,IAAAA,EAAMF,OAAAA;oBAASG,IAAAA,EAAM;AAAQ,iBAAA,CAAA;AAC3C,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AAAEX,QAAAA,MAAAA;AAAQC,QAAAA,IAAAA;AAAMC,QAAAA,KAAAA;AAAOI,QAAAA;AAAQ,KAAA;AACxC;;;;"}