{"version":3,"file":"ControlledFormDialog.cjs","sources":["../../../../src/components/Dialog/ControlledFormDialog/ControlledFormDialog.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentProps, type FC, type FormEvent, type ReactNode, useCallback } from 'react'\n\nimport { DialogContentInner } from '../DialogContentInner'\nimport { useDialogPortal } from '../useDialogPortal'\nimport { useObjectHeading } from '../useObjectHeading'\n\nimport {\n  FormDialogContentInner,\n  type FormDialogContentInnerProps,\n  type FormDialogHelpers,\n} from './FormDialogContentInner'\n\nimport type { DialogProps } from '../types'\n\ntype ObjectHeadingType = Omit<FormDialogContentInnerProps['heading'], 'id'>\ntype HeadingType = ReactNode | ObjectHeadingType\n\ntype AbstractProps = Omit<FormDialogContentInnerProps, 'heading'> &\n  DialogProps & {\n    heading: HeadingType\n  }\ntype Props = AbstractProps & Omit<ComponentProps<'div'>, keyof AbstractProps>\n\nconst headingObjectConverter = (text: ReactNode) => ({\n  text,\n})\n\nexport const ControlledFormDialog: FC<Props> = ({\n  children,\n  heading: orgHeading,\n  contentBgColor,\n  contentPadding,\n  actionText,\n  actionTheme,\n  onSubmit,\n  onClickClose,\n  onPressEscape = onClickClose,\n  responseStatus,\n  actionDisabled,\n  closeDisabled,\n  subActionArea,\n  className,\n  portalParent,\n  decorators,\n  id,\n  isOpen,\n  ...rest\n}) => {\n  const { createPortal } = useDialogPortal(portalParent, id)\n  const heading = useObjectHeading<HeadingType, ObjectHeadingType>(\n    orgHeading,\n    headingObjectConverter,\n  )\n\n  const actualOnClickClose = useCallback(() => {\n    if (isOpen) {\n      onClickClose()\n    }\n  }, [isOpen, onClickClose])\n\n  const onDelegateSubmit = useCallback(\n    (e: FormEvent<HTMLFormElement>, helpers: FormDialogHelpers) => {\n      if (isOpen) {\n        onSubmit(e, helpers)\n      }\n    },\n    [isOpen, onSubmit],\n  )\n\n  return createPortal(\n    <DialogContentInner\n      {...rest}\n      isOpen={isOpen}\n      ariaLabelledby={heading.id}\n      className={className}\n      onPressEscape={closeDisabled ? undefined : onPressEscape}\n    >\n      <FormDialogContentInner\n        heading={heading}\n        contentBgColor={contentBgColor}\n        contentPadding={contentPadding}\n        actionText={actionText}\n        actionTheme={actionTheme}\n        actionDisabled={actionDisabled}\n        closeDisabled={closeDisabled}\n        subActionArea={subActionArea}\n        onClickClose={actualOnClickClose}\n        onSubmit={onDelegateSubmit}\n        responseStatus={responseStatus}\n        decorators={decorators}\n      >\n        {children}\n      </FormDialogContentInner>\n    </DialogContentInner>,\n  )\n}\n"],"names":[],"mappings":";;;;;;;;;;AAyBA;;AAEC;;;;AA6BC;;AAEI;;AAEJ;;;AAKM;;AAEJ;AAIF;AA0BF;;"}