{"version":3,"sources":["../src/dialog.tsx"],"sourcesContent":["import type { ButtonProps } from \"@yamada-ui/button\"\nimport type { CSSUIObject, ThemeProps } from \"@yamada-ui/core\"\nimport type { ReactNode } from \"react\"\nimport type { ModalProps } from \"./modal\"\nimport { Button } from \"@yamada-ui/button\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { motionForwardRef } from \"@yamada-ui/motion\"\nimport {\n  cx,\n  findChild,\n  getValidChildren,\n  isEmpty,\n  isUndefined,\n  isValidElement,\n  omitChildren,\n} from \"@yamada-ui/utils\"\nimport { DialogBody } from \"./dialog-body\"\nimport { DialogCloseButton } from \"./dialog-close-button\"\nimport { DialogFooter } from \"./dialog-footer\"\nimport { DialogHeader } from \"./dialog-header\"\nimport { DialogOverlay } from \"./dialog-overlay\"\nimport { Modal } from \"./modal\"\nimport { DialogProvider } from \"./modal-context\"\n\ninterface DialogOptions {\n  /**\n   * The dialog cancel to use.\n   */\n  cancel?: ButtonProps | ReactNode\n  /**\n   * The dialog footer to use.\n   */\n  footer?: ReactNode\n  /**\n   * The dialog header to use.\n   */\n  header?: ReactNode\n  /**\n   * The dialog other to use.\n   */\n  other?: ButtonProps | ReactNode\n  /**\n   * The dialog success to use.\n   */\n  success?: ButtonProps | ReactNode\n  /**\n   * The callback invoked when cancel button clicked.\n   */\n  onCancel?: (onClose: (() => void) | undefined) => void\n  /**\n   * The callback invoked when other button clicked.\n   */\n  onOther?: (onClose: (() => void) | undefined) => void\n  /**\n   * The callback invoked when success button clicked.\n   */\n  onSuccess?: (onClose: (() => void) | undefined) => void\n}\n\nexport interface DialogProps\n  extends Omit<ModalProps, keyof ThemeProps>,\n    ThemeProps<\"Dialog\">,\n    DialogOptions {}\n\n/**\n * `Dialog` is a component used to confirm or interrupt user actions.\n *\n * @see Docs https://yamada-ui.com/components/overlay/dialog\n */\nexport const Dialog = motionForwardRef<DialogProps, \"section\">(\n  ({ size, ...props }, ref) => {\n    const [styles, mergedProps] = useComponentMultiStyle(\"Dialog\", {\n      size,\n      ...props,\n    })\n    const {\n      className,\n      cancel,\n      children,\n      footer,\n      header,\n      other,\n      success,\n      withCloseButton = true,\n      withOverlay = true,\n      containerProps,\n      onCancel,\n      onClose,\n      onOther,\n      onSuccess,\n      ...rest\n    } = omitThemeProps(mergedProps)\n\n    const validChildren = getValidChildren(children)\n\n    const customDialogOverlay = findChild(validChildren, DialogOverlay)\n    const customDialogCloseButton = findChild(validChildren, DialogCloseButton)\n    const customDialogHeader = findChild(validChildren, DialogHeader)\n    const customDialogBody = findChild(validChildren, DialogBody)\n    const customDialogFooter = findChild(validChildren, DialogFooter)\n\n    const cloneChildren = !isEmpty(validChildren)\n      ? omitChildren(\n          validChildren,\n          DialogOverlay,\n          DialogCloseButton,\n          DialogHeader,\n          DialogBody,\n          DialogFooter,\n        )\n      : children\n\n    const css: CSSUIObject = { ...styles.container }\n\n    const cancelButtonProps: ButtonProps =\n      isValidElement(cancel) || isUndefined(cancel)\n        ? { children: cancel }\n        : cancel\n    const otherButtonProps: ButtonProps =\n      isValidElement(other) || isUndefined(other) ? { children: other } : other\n    const successButtonProps: ButtonProps =\n      isValidElement(success) || isUndefined(success)\n        ? { children: success }\n        : success\n\n    if (!cancelButtonProps.variant) cancelButtonProps.variant = \"ghost\"\n    if (!otherButtonProps.colorScheme)\n      otherButtonProps.colorScheme = \"secondary\"\n    if (!successButtonProps.colorScheme)\n      successButtonProps.colorScheme = \"primary\"\n\n    const hasCancelButton = !!cancelButtonProps.children\n    const hasOtherButton = !!otherButtonProps.children\n    const hasSuccessButton = !!successButtonProps.children\n    const hasFooter = hasCancelButton || hasOtherButton || hasSuccessButton\n\n    return (\n      <DialogProvider value={styles}>\n        <Modal\n          ref={ref}\n          className={cx(\"ui-dialog\", className)}\n          __css={css}\n          {...{\n            withCloseButton: false,\n            withOverlay: false,\n            containerProps,\n            onClose,\n            ...rest,\n            size,\n          }}\n        >\n          {customDialogOverlay ??\n            (withOverlay && size !== \"full\" ? <DialogOverlay /> : null)}\n          {customDialogCloseButton ??\n            (withCloseButton && onClose ? <DialogCloseButton /> : null)}\n          {customDialogHeader ??\n            (header ? <DialogHeader>{header}</DialogHeader> : null)}\n          {customDialogBody ??\n            (cloneChildren ? <DialogBody>{cloneChildren}</DialogBody> : null)}\n          {customDialogFooter ??\n            (footer || hasFooter ? (\n              <DialogFooter>\n                {footer ?? (\n                  <>\n                    {hasCancelButton ? (\n                      <Button\n                        onClick={() => onCancel?.(onClose)}\n                        {...cancelButtonProps}\n                      />\n                    ) : null}\n                    {hasOtherButton ? (\n                      <Button\n                        onClick={() => onOther?.(onClose)}\n                        {...otherButtonProps}\n                      />\n                    ) : null}\n                    {hasSuccessButton ? (\n                      <Button\n                        onClick={() => onSuccess?.(onClose)}\n                        {...successButtonProps}\n                      />\n                    ) : null}\n                  </>\n                )}\n              </DialogFooter>\n            ) : null)}\n        </Modal>\n      </DialogProvider>\n    )\n  },\n)\n\nDialog.displayName = \"Dialog\"\nDialog.__ui__ = \"Dialog\"\n"],"mappings":"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","names":[]}