{"version":3,"sources":["jsdelivr-header.js","/npm/@mantine/modals@8.1.0/src/context.ts","/npm/@mantine/modals@8.1.0/src/use-modals/use-modals.ts","/npm/@mantine/modals@8.1.0/src/ConfirmModal.tsx","/npm/@mantine/modals@8.1.0/src/events.ts","/npm/@mantine/modals@8.1.0/src/reducer.ts","/npm/@mantine/modals@8.1.0/src/ModalsProvider.tsx"],"names":[],"mappings":"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","file":"/npm/@mantine/modals@8.1.0/esm/index.mjs/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@mantine/modals@8.1.0/esm/index.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { createContext, ReactNode } from 'react';\nimport { ModalProps } from '@mantine/core';\nimport type { ConfirmModalProps } from './ConfirmModal';\n\nexport type ModalSettings = Partial<Omit<ModalProps, 'opened'>> & { modalId?: string };\n\nexport type ConfirmLabels = Record<'confirm' | 'cancel', ReactNode>;\n\nexport interface OpenConfirmModal extends ModalSettings, ConfirmModalProps {}\nexport interface OpenContextModal<CustomProps extends Record<string, any> = {}>\n  extends ModalSettings {\n  innerProps: CustomProps;\n}\n\nexport interface ContextModalProps<T extends Record<string, any> = {}> {\n  context: ModalsContextProps;\n  innerProps: T;\n  id: string;\n}\n\nexport type ModalState =\n  | { id: string; props: ModalSettings; type: 'content' }\n  | { id: string; props: OpenConfirmModal; type: 'confirm' }\n  | { id: string; props: OpenContextModal; type: 'context'; ctx: string };\n\nexport interface ModalsContextProps {\n  modalProps: ModalSettings;\n  modals: ModalState[];\n  openModal: (props: ModalSettings) => string;\n  openConfirmModal: (props: OpenConfirmModal) => string;\n  openContextModal: <TKey extends MantineModal>(\n    modal: TKey,\n    props: OpenContextModal<Parameters<MantineModals[TKey]>[0]['innerProps']>\n  ) => string;\n  closeModal: (id: string, canceled?: boolean) => void;\n  closeContextModal: <TKey extends MantineModal>(id: TKey, canceled?: boolean) => void;\n  closeAll: () => void;\n  updateModal: (payload: { modalId: string } & Partial<OpenConfirmModal>) => void;\n  updateContextModal: (payload: { modalId: string } & Partial<OpenContextModal<any>>) => void;\n}\n\nexport interface MantineModalsOverride {}\n\nexport type MantineModalsOverwritten = MantineModalsOverride extends {\n  modals: Record<string, React.FC<ContextModalProps<any>>>;\n}\n  ? MantineModalsOverride\n  : {\n      modals: Record<string, React.FC<ContextModalProps<any>>>;\n    };\n\nexport type MantineModals = MantineModalsOverwritten['modals'];\n\nexport type MantineModal = keyof MantineModals;\n\nexport const ModalsContext = createContext<ModalsContextProps>(null as any);\nModalsContext.displayName = '@mantine/modals/ModalsContext';\n","import { useContext } from 'react';\nimport { ModalsContext } from '../context';\n\nexport function useModals() {\n  const ctx = useContext(ModalsContext);\n\n  if (!ctx) {\n    throw new Error(\n      '[@mantine/modals] useModals hook was called outside of context, wrap your app with ModalsProvider component'\n    );\n  }\n\n  return ctx;\n}\n","import { Box, Button, ButtonProps, Group, GroupProps } from '@mantine/core';\nimport { ConfirmLabels } from './context';\nimport { useModals } from './use-modals/use-modals';\n\nexport interface ConfirmModalProps {\n  id?: string;\n  children?: React.ReactNode;\n  onCancel?: () => void;\n  onConfirm?: () => void;\n  closeOnConfirm?: boolean;\n  closeOnCancel?: boolean;\n  cancelProps?: ButtonProps &\n    React.ComponentPropsWithoutRef<'button'> &\n    Record<`data-${string}`, string>;\n  confirmProps?: ButtonProps &\n    React.ComponentPropsWithoutRef<'button'> &\n    Record<`data-${string}`, string>;\n  groupProps?: GroupProps;\n  labels?: ConfirmLabels;\n}\n\nexport function ConfirmModal({\n  id,\n  cancelProps,\n  confirmProps,\n  labels = { cancel: '', confirm: '' },\n  closeOnConfirm = true,\n  closeOnCancel = true,\n  groupProps,\n  onCancel,\n  onConfirm,\n  children,\n}: ConfirmModalProps) {\n  const { cancel: cancelLabel, confirm: confirmLabel } = labels;\n  const ctx = useModals();\n\n  const handleCancel = (event: React.MouseEvent<HTMLButtonElement>) => {\n    typeof cancelProps?.onClick === 'function' && cancelProps?.onClick(event);\n    typeof onCancel === 'function' && onCancel();\n    closeOnCancel && ctx.closeModal(id!);\n  };\n\n  const handleConfirm = (event: React.MouseEvent<HTMLButtonElement>) => {\n    typeof confirmProps?.onClick === 'function' && confirmProps?.onClick(event);\n    typeof onConfirm === 'function' && onConfirm();\n    closeOnConfirm && ctx.closeModal(id!);\n  };\n\n  return (\n    <>\n      {children && <Box mb=\"md\">{children}</Box>}\n\n      <Group mt={children ? 0 : 'md'} justify=\"flex-end\" {...groupProps}>\n        <Button variant=\"default\" {...cancelProps} onClick={handleCancel}>\n          {cancelProps?.children || cancelLabel}\n        </Button>\n\n        <Button {...confirmProps} onClick={handleConfirm}>\n          {confirmProps?.children || confirmLabel}\n        </Button>\n      </Group>\n    </>\n  );\n}\n","import { createUseExternalEvents } from '@mantine/core';\nimport { randomId } from '@mantine/hooks';\nimport {\n  MantineModal,\n  MantineModals,\n  ModalSettings,\n  OpenConfirmModal,\n  OpenContextModal,\n} from './context';\n\ntype ModalsEvents = {\n  openModal: (payload: ModalSettings) => string;\n  openConfirmModal: (payload: OpenConfirmModal) => string;\n  openContextModal: <TKey extends MantineModal>(\n    payload: OpenContextModal<Parameters<MantineModals[TKey]>[0]['innerProps']> & { modal: TKey }\n  ) => string;\n  closeModal: (id: string) => void;\n  closeContextModal: <TKey extends MantineModal>(id: TKey) => void;\n  closeAllModals: () => void;\n  updateModal: (payload: { modalId: string } & Partial<ModalSettings>) => void;\n  updateContextModal: (payload: { modalId: string } & Partial<OpenContextModal<any>>) => void;\n};\n\nexport const [useModalsEvents, createEvent] =\n  createUseExternalEvents<ModalsEvents>('mantine-modals');\n\nexport const openModal: ModalsEvents['openModal'] = (payload) => {\n  const id = payload.modalId || randomId();\n  createEvent('openModal')({ ...payload, modalId: id });\n  return id;\n};\n\nexport const openConfirmModal: ModalsEvents['openConfirmModal'] = (payload) => {\n  const id = payload.modalId || randomId();\n  createEvent('openConfirmModal')({ ...payload, modalId: id });\n  return id;\n};\n\nexport const openContextModal: ModalsEvents['openContextModal'] = <TKey extends MantineModal>(\n  payload: OpenContextModal<Parameters<MantineModals[TKey]>[0]['innerProps']> & { modal: TKey }\n) => {\n  const id = payload.modalId || randomId();\n  createEvent('openContextModal')({ ...payload, modalId: id });\n  return id;\n};\n\nexport const closeModal = createEvent('closeModal');\n\nexport const closeContextModal: ModalsEvents['closeContextModal'] = <TKey extends MantineModal>(\n  id: TKey\n) => createEvent('closeContextModal')(id);\n\nexport const closeAllModals = createEvent('closeAllModals');\n\nexport const updateModal = (payload: { modalId: string } & Partial<ModalSettings>) =>\n  createEvent('updateModal')(payload);\n\nexport const updateContextModal = (payload: { modalId: string } & Partial<OpenContextModal<any>>) =>\n  createEvent('updateContextModal')(payload);\n\nexport const modals: {\n  open: ModalsEvents['openModal'];\n  close: ModalsEvents['closeModal'];\n  closeAll: ModalsEvents['closeAllModals'];\n  openConfirmModal: ModalsEvents['openConfirmModal'];\n  openContextModal: ModalsEvents['openContextModal'];\n  updateModal: ModalsEvents['updateModal'];\n  updateContextModal: ModalsEvents['updateContextModal'];\n} = {\n  open: openModal,\n  close: closeModal,\n  closeAll: closeAllModals,\n  openConfirmModal,\n  openContextModal,\n  updateModal,\n  updateContextModal,\n};\n","import { ModalSettings, ModalState, OpenContextModal } from './context';\n\ninterface ModalsState {\n  modals: ModalState[];\n\n  /**\n   * Modal that is currently open or was the last open one.\n   * Keeping the last one is necessary for providing a clean exit transition.\n   */\n  current: ModalState | null;\n}\n\ninterface OpenAction {\n  type: 'OPEN';\n  modal: ModalState;\n}\n\ninterface CloseAction {\n  type: 'CLOSE';\n  modalId: string;\n  canceled?: boolean;\n}\n\ninterface CloseAllAction {\n  type: 'CLOSE_ALL';\n  canceled?: boolean;\n}\n\ninterface UpdateAction {\n  type: 'UPDATE';\n  modalId: string;\n  newProps: Partial<ModalSettings>;\n}\n\nfunction handleCloseModal(modal: ModalState, canceled?: boolean) {\n  if (canceled && modal.type === 'confirm') {\n    modal.props.onCancel?.();\n  }\n\n  modal.props.onClose?.();\n}\n\nexport function modalsReducer(\n  state: ModalsState,\n  action: OpenAction | CloseAction | CloseAllAction | UpdateAction\n): ModalsState {\n  switch (action.type) {\n    case 'OPEN': {\n      return {\n        current: action.modal,\n        modals: [...state.modals, action.modal],\n      };\n    }\n    case 'CLOSE': {\n      const modal = state.modals.find((m) => m.id === action.modalId);\n      if (!modal) {\n        return state;\n      }\n\n      handleCloseModal(modal, action.canceled);\n\n      const remainingModals = state.modals.filter((m) => m.id !== action.modalId);\n\n      return {\n        current: remainingModals[remainingModals.length - 1] || state.current,\n        modals: remainingModals,\n      };\n    }\n    case 'CLOSE_ALL': {\n      if (!state.modals.length) {\n        return state;\n      }\n\n      // Resolve modal stack from top to bottom\n      state.modals\n        .concat()\n        .reverse()\n        .forEach((modal) => {\n          handleCloseModal(modal, action.canceled);\n        });\n\n      return {\n        current: state.current,\n        modals: [],\n      };\n    }\n    case 'UPDATE': {\n      const { modalId, newProps } = action;\n\n      const updatedModals = state.modals.map((modal) => {\n        if (modal.id !== modalId) {\n          return modal;\n        }\n\n        if (modal.type === 'content' || modal.type === 'confirm') {\n          return {\n            ...modal,\n            props: {\n              ...modal.props,\n              ...newProps,\n            },\n          };\n        }\n\n        if (modal.type === 'context') {\n          return {\n            ...modal,\n            props: {\n              ...modal.props,\n              ...newProps,\n              innerProps: {\n                ...modal.props.innerProps,\n                ...(newProps as Partial<OpenContextModal<any>>).innerProps,\n              },\n            },\n          };\n        }\n\n        return modal;\n      });\n\n      const currentModal =\n        state.current?.id === modalId\n          ? updatedModals.find((modal) => modal.id === modalId) || state.current\n          : state.current;\n\n      return {\n        ...state,\n        modals: updatedModals,\n        current: currentModal,\n      };\n    }\n    default: {\n      return state;\n    }\n  }\n}\n","import { useCallback, useReducer, useRef } from 'react';\nimport { getDefaultZIndex, Modal } from '@mantine/core';\nimport { randomId } from '@mantine/hooks';\nimport { ConfirmModal } from './ConfirmModal';\nimport {\n  ConfirmLabels,\n  ContextModalProps,\n  ModalsContext,\n  ModalsContextProps,\n  ModalSettings,\n  OpenConfirmModal,\n  OpenContextModal,\n} from './context';\nimport { useModalsEvents } from './events';\nimport { modalsReducer } from './reducer';\n\nexport interface ModalsProviderProps {\n  /** Your app */\n  children?: React.ReactNode;\n\n  /** Predefined modals */\n  modals?: Record<string, React.FC<ContextModalProps<any>>>;\n\n  /** Shared Modal component props, applied for every modal */\n  modalProps?: ModalSettings;\n\n  /** Confirm modal labels */\n  labels?: ConfirmLabels;\n}\n\nfunction separateConfirmModalProps(props: OpenConfirmModal) {\n  if (!props) {\n    return { confirmProps: {}, modalProps: {} };\n  }\n\n  const {\n    id,\n    children,\n    onCancel,\n    onConfirm,\n    closeOnConfirm,\n    closeOnCancel,\n    cancelProps,\n    confirmProps,\n    groupProps,\n    labels,\n    ...others\n  } = props;\n\n  return {\n    confirmProps: {\n      id,\n      children,\n      onCancel,\n      onConfirm,\n      closeOnConfirm,\n      closeOnCancel,\n      cancelProps,\n      confirmProps,\n      groupProps,\n      labels,\n    },\n    modalProps: {\n      id,\n      ...others,\n    },\n  };\n}\n\nexport function ModalsProvider({ children, modalProps, labels, modals }: ModalsProviderProps) {\n  const [state, dispatch] = useReducer(modalsReducer, { modals: [], current: null });\n  const stateRef = useRef(state);\n  stateRef.current = state;\n\n  const closeAll = useCallback(\n    (canceled?: boolean) => {\n      dispatch({ type: 'CLOSE_ALL', canceled });\n    },\n    [stateRef, dispatch]\n  );\n\n  const openModal = useCallback(\n    ({ modalId, ...props }: ModalSettings) => {\n      const id = modalId || randomId();\n\n      dispatch({\n        type: 'OPEN',\n        modal: {\n          id,\n          type: 'content',\n          props,\n        },\n      });\n      return id;\n    },\n    [dispatch]\n  );\n\n  const openConfirmModal = useCallback(\n    ({ modalId, ...props }: OpenConfirmModal) => {\n      const id = modalId || randomId();\n      dispatch({\n        type: 'OPEN',\n        modal: {\n          id,\n          type: 'confirm',\n          props,\n        },\n      });\n      return id;\n    },\n    [dispatch]\n  );\n\n  const openContextModal = useCallback(\n    (modal: string, { modalId, ...props }: OpenContextModal) => {\n      const id = modalId || randomId();\n      dispatch({\n        type: 'OPEN',\n        modal: {\n          id,\n          type: 'context',\n          props,\n          ctx: modal,\n        },\n      });\n      return id;\n    },\n    [dispatch]\n  );\n\n  const closeModal = useCallback(\n    (id: string, canceled?: boolean) => {\n      dispatch({ type: 'CLOSE', modalId: id, canceled });\n    },\n    [stateRef, dispatch]\n  );\n\n  const updateModal = useCallback(\n    ({ modalId, ...newProps }: Partial<ModalSettings> & { modalId: string }) => {\n      dispatch({\n        type: 'UPDATE',\n        modalId,\n        newProps,\n      });\n    },\n    [dispatch]\n  );\n\n  const updateContextModal = useCallback(\n    ({ modalId, ...newProps }: { modalId: string } & Partial<OpenContextModal<any>>) => {\n      dispatch({ type: 'UPDATE', modalId, newProps });\n    },\n    [dispatch]\n  );\n\n  useModalsEvents({\n    openModal,\n    openConfirmModal,\n    openContextModal: ({ modal, ...payload }: any) => openContextModal(modal, payload),\n    closeModal,\n    closeContextModal: closeModal,\n    closeAllModals: closeAll,\n    updateModal,\n    updateContextModal,\n  });\n\n  const ctx: ModalsContextProps = {\n    modalProps: modalProps || {},\n    modals: state.modals,\n    openModal,\n    openConfirmModal,\n    openContextModal,\n    closeModal,\n    closeContextModal: closeModal,\n    closeAll,\n    updateModal,\n    updateContextModal,\n  };\n\n  const getCurrentModal = () => {\n    const currentModal = stateRef.current.current;\n    switch (currentModal?.type) {\n      case 'context': {\n        const { innerProps, ...rest } = currentModal.props;\n        const ContextModal = modals![currentModal.ctx];\n\n        return {\n          modalProps: rest,\n          content: <ContextModal innerProps={innerProps} context={ctx} id={currentModal.id} />,\n        };\n      }\n      case 'confirm': {\n        const { modalProps: separatedModalProps, confirmProps: separatedConfirmProps } =\n          separateConfirmModalProps(currentModal.props);\n\n        return {\n          modalProps: separatedModalProps,\n          content: (\n            <ConfirmModal\n              {...separatedConfirmProps}\n              id={currentModal.id}\n              labels={currentModal.props.labels || labels}\n            />\n          ),\n        };\n      }\n      case 'content': {\n        const { children: currentModalChildren, ...rest } = currentModal.props;\n\n        return {\n          modalProps: rest,\n          content: currentModalChildren,\n        };\n      }\n      default: {\n        return {\n          modalProps: {},\n          content: null,\n        };\n      }\n    }\n  };\n\n  const { modalProps: currentModalProps, content } = getCurrentModal();\n\n  return (\n    <ModalsContext.Provider value={ctx}>\n      <Modal\n        zIndex={getDefaultZIndex('modal') + 1}\n        {...modalProps}\n        {...currentModalProps}\n        opened={state.modals.length > 0}\n        onClose={() => closeModal(state.current?.id as any)}\n      >\n        {content}\n      </Modal>\n\n      {children}\n    </ModalsContext.Provider>\n  );\n}\n"]}