{"version":3,"file":"useDialogs-BUzVrTSP.mjs","names":["open","options","message"],"sources":["../src/hooks/useDialogs.tsx"],"sourcesContent":["import {\n  Button,\n  Dialog,\n  DialogActions,\n  DialogContent,\n  DialogTitle,\n  useEventCallback,\n} from \"@mui/material\";\nimport { useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { ReactNode } from \"react\";\n\nexport interface OpenDialogOptions<TResult> {\n  onClose?: (result: TResult) => Promise<void>;\n}\n\nexport interface AlertOptions {\n  title?: ReactNode;\n}\n\nexport interface ConfirmOptions {\n  title?: ReactNode;\n  cancelText?: ReactNode;\n}\n\nexport interface DialogProps<TPayload = undefined, TResult = void> {\n  payload: TPayload;\n  open: boolean;\n  onClose: (result: TResult) => Promise<void>;\n}\n\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\n\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\n\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<\n  DialogProps<TPayload, TResult>\n>;\n\nexport interface OpenDialog {\n  <TPayload extends undefined, TResult>(\n    Component: DialogComponent<TPayload, TResult>,\n    payload?: TPayload,\n    options?: OpenDialogOptions<TResult>,\n  ): Promise<TResult>;\n  <TPayload, TResult>(\n    Component: DialogComponent<TPayload, TResult>,\n    payload: TPayload,\n    options?: OpenDialogOptions<TResult>,\n  ): Promise<TResult>;\n}\n\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\n\nexport interface AlertDialogPayload extends AlertOptions {\n  message: ReactNode;\n}\n\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>;\n\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\n  const { t } = useTranslation();\n\n  return (\n    <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\n      <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\n      <DialogContent>{payload.message}</DialogContent>\n      <DialogActions>\n        <Button onClick={() => onClose()} autoFocus>\n          {t(\"Layout.Dialog.Confirm\")}\n        </Button>\n      </DialogActions>\n    </Dialog>\n  );\n}\n\nexport interface ConfirmDialogPayload extends ConfirmOptions {\n  message: ReactNode;\n}\n\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>;\n\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\n  const { t } = useTranslation();\n\n  return (\n    <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\n      <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\n      <DialogContent>{payload.message}</DialogContent>\n      <DialogActions>\n        <Button onClick={() => onClose(false)}>\n          {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\n        </Button>\n        <Button onClick={() => onClose(true)} autoFocus>\n          {t(\"Layout.Dialog.Confirm\")}\n        </Button>\n      </DialogActions>\n    </Dialog>\n  );\n}\n\ninterface DialogHook {\n  alert: OpenAlertDialog;\n  confirm: OpenConfirmDialog;\n  open: OpenDialog;\n  close: CloseDialog;\n}\n\nexport function useDialogs(): DialogHook {\n  const { open, close } = useContext(DialogsContext);\n\n  const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\n    open(AlertDialog, { ...options, message }),\n  );\n\n  const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\n    open(ConfirmDialog, { ...options, message }),\n  );\n\n  return { alert, confirm, open, close };\n}\n"],"mappings":"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"}