{"version":3,"file":"DocumentActions.mjs","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  useForm,\n  useNotification,\n  NotificationConfig,\n  useAPIErrorHandler,\n  useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n  Button,\n  Dialog,\n  Flex,\n  Modal,\n  Radio,\n  Typography,\n  VisuallyHidden,\n  Menu,\n  ButtonProps,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\nimport { DefaultTheme, styled } from 'styled-components';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n  useGetDraftRelationCountQuery,\n  useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n  label: string;\n  onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n  icon?: React.ReactNode;\n  /**\n   * @default false\n   */\n  disabled?: boolean;\n  /**\n   * @default 'panel'\n   * @description Where the action should be rendered.\n   */\n  position?: DocumentActionPosition | DocumentActionPosition[];\n  dialog?: DialogOptions | NotificationOptions | ModalOptions;\n  /**\n   * @default 'secondary'\n   */\n  variant?: ButtonProps['variant'];\n  loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n  type: 'dialog';\n  title: string;\n  content?: React.ReactNode;\n  variant?: ButtonProps['variant'];\n  onConfirm?: () => void | Promise<void>;\n  onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n  type: 'notification';\n  title: string;\n  link?: {\n    label: string;\n    url: string;\n    target?: string;\n  };\n  content?: string;\n  onClose?: () => void;\n  status?: NotificationConfig['type'];\n  timeout?: number;\n}\n\ninterface ModalOptions {\n  type: 'modal';\n  title: string;\n  content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n  footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n  onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n  id: string;\n}\n\ninterface DocumentActionsProps {\n  actions: Action[];\n}\n\nconst connectRelationToParent = (\n  parentDataToUpdate: AnyData | undefined,\n  fieldToConnect: string,\n  data: Create.Response['data'] | Publish.Response['data'],\n  fieldToConnectUID?: string\n) => {\n  /*\n   * Check if the fieldToConnect is already present in the parentDataToUpdate.\n   * This happens in particular when in the parentDocument you have created\n   * a new component without saving.\n   */\n  const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n  const fieldToConnectPath = isFieldPresent\n    ? fieldToConnect\n    : // Compute the path to the parent object\n      fieldToConnect.split('.').slice(0, -1).join('.');\n  const fieldToConnectValue = isFieldPresent\n    ? {\n        connect: [\n          {\n            id: data.documentId,\n            documentId: data.documentId,\n            locale: data.locale,\n          },\n        ],\n      }\n    : {\n        [fieldToConnect.split('.').pop()!]: {\n          connect: [\n            {\n              id: data.documentId,\n              documentId: data.documentId,\n              locale: data.locale,\n            },\n          ],\n          disconnect: [],\n        },\n        // In case the object was not present you need to pass the componentUID of the parent document\n        __component: fieldToConnectUID,\n      };\n  const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n  return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n  const { formatMessage } = useIntl();\n  const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n    if (action.position === undefined) {\n      return true;\n    }\n\n    const positions = Array.isArray(action.position) ? action.position : [action.position];\n    return positions.includes('panel');\n  });\n\n  if (!primaryAction) {\n    return null;\n  }\n\n  return (\n    <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n      <Flex gap={2}>\n        <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n        {restActions.length > 0 ? (\n          <DocumentActionsMenu\n            actions={restActions}\n            label={formatMessage({\n              id: 'content-manager.containers.edit.panels.default.more-actions',\n              defaultMessage: 'More document actions',\n            })}\n          />\n        ) : null}\n      </Flex>\n      {secondaryAction ? (\n        <DocumentActionButton\n          {...secondaryAction}\n          variant={secondaryAction.variant || 'secondary'}\n        />\n      ) : null}\n    </Flex>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n  const [dialogId, setDialogId] = React.useState<string | null>(null);\n  const { toggleNotification } = useNotification();\n\n  const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n    const { onClick = () => false, dialog, id } = action;\n\n    const muteDialog = await onClick(e);\n\n    if (dialog && !muteDialog) {\n      switch (dialog.type) {\n        case 'notification':\n          toggleNotification({\n            title: dialog.title,\n            message: dialog.content,\n            type: dialog.status,\n            timeout: dialog.timeout,\n            onClose: dialog.onClose,\n          });\n          break;\n        case 'dialog':\n        case 'modal':\n          e.preventDefault();\n          setDialogId(id);\n      }\n    }\n  };\n\n  const handleClose = () => {\n    setDialogId(null);\n  };\n\n  return (\n    <>\n      <Button\n        flex=\"auto\"\n        startIcon={action.icon}\n        disabled={action.disabled}\n        onClick={handleClick(action)}\n        justifyContent=\"center\"\n        variant={action.variant || 'default'}\n        paddingTop=\"7px\"\n        paddingBottom=\"7px\"\n        loading={action.loading}\n      >\n        {action.label}\n      </Button>\n      {action.dialog?.type === 'dialog' ? (\n        <DocumentActionConfirmDialog\n          {...action.dialog}\n          variant={action.dialog?.variant ?? action.variant}\n          isOpen={dialogId === action.id}\n          onClose={handleClose}\n        />\n      ) : null}\n      {action.dialog?.type === 'modal' ? (\n        <DocumentActionModal\n          {...action.dialog}\n          onModalClose={handleClose}\n          isOpen={dialogId === action.id}\n        />\n      ) : null}\n    </>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n  actions: Action[];\n  children?: React.ReactNode;\n  label?: string;\n  variant?: 'ghost' | 'tertiary';\n}\n\nconst MenuItem = styled(Menu.Item)<{ isVariantDanger?: boolean; isDisabled?: boolean }>`\n  &:hover {\n    background: ${({ theme, isVariantDanger, isDisabled }) =>\n      isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};\n  }\n`;\n\nconst DocumentActionsMenu = ({\n  actions,\n  children,\n  label,\n  variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n  const [isOpen, setIsOpen] = React.useState(false);\n  const [dialogId, setDialogId] = React.useState<string | null>(null);\n  const { formatMessage } = useIntl();\n  const { toggleNotification } = useNotification();\n  const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n\n  const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n    const { onClick = () => false, dialog, id } = action;\n\n    const muteDialog = await onClick(e);\n\n    if (dialog && !muteDialog) {\n      switch (dialog.type) {\n        case 'notification':\n          toggleNotification({\n            title: dialog.title,\n            message: dialog.content,\n            type: dialog.status,\n            timeout: dialog.timeout,\n            onClose: dialog.onClose,\n          });\n          break;\n        case 'dialog':\n        case 'modal':\n          setDialogId(id);\n      }\n    }\n  };\n\n  const handleClose = () => {\n    setDialogId(null);\n    setIsOpen(false);\n  };\n\n  return (\n    <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n      <Menu.Trigger\n        disabled={isDisabled}\n        size=\"S\"\n        endIcon={null}\n        paddingTop=\"4px\"\n        paddingLeft=\"7px\"\n        paddingRight=\"7px\"\n        variant={variant}\n      >\n        <More aria-hidden focusable={false} />\n        <VisuallyHidden tag=\"span\">\n          {label ||\n            formatMessage({\n              id: 'content-manager.containers.edit.panels.default.more-actions',\n              defaultMessage: 'More document actions',\n            })}\n        </VisuallyHidden>\n      </Menu.Trigger>\n      <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\">\n        {actions.map((action) => {\n          return (\n            <MenuItem\n              disabled={action.disabled}\n              /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n              onSelect={handleClick(action)}\n              display=\"block\"\n              key={action.id}\n              isVariantDanger={action.variant === 'danger'}\n              isDisabled={action.disabled}\n            >\n              <Flex justifyContent=\"space-between\" gap={4}>\n                <Flex\n                  color={!action.disabled ? convertActionVariantToColor(action.variant) : 'inherit'}\n                  gap={2}\n                  tag=\"span\"\n                >\n                  <Flex\n                    tag=\"span\"\n                    color={\n                      !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit'\n                    }\n                  >\n                    {action.icon}\n                  </Flex>\n                  {action.label}\n                </Flex>\n              </Flex>\n            </MenuItem>\n          );\n        })}\n        {children}\n      </Menu.Content>\n      {actions.map((action) => {\n        return (\n          <React.Fragment key={action.id}>\n            {action.dialog?.type === 'dialog' ? (\n              <DocumentActionConfirmDialog\n                {...action.dialog}\n                variant={action.variant}\n                isOpen={dialogId === action.id}\n                onClose={handleClose}\n              />\n            ) : null}\n            {action.dialog?.type === 'modal' ? (\n              <DocumentActionModal\n                {...action.dialog}\n                onModalClose={handleClose}\n                isOpen={dialogId === action.id}\n              />\n            ) : null}\n          </React.Fragment>\n        );\n      })}\n    </Menu.Root>\n  );\n};\n\nconst convertActionVariantToColor = (\n  variant: DocumentActionDescription['variant'] = 'secondary'\n): keyof DefaultTheme['colors'] | undefined => {\n  switch (variant) {\n    case 'danger':\n      return 'danger600';\n    case 'secondary':\n      return undefined;\n    case 'success':\n      return 'success600';\n    default:\n      return 'primary600';\n  }\n};\n\nconst convertActionVariantToIconColor = (\n  variant: DocumentActionDescription['variant'] = 'secondary'\n): keyof DefaultTheme['colors'] | undefined => {\n  switch (variant) {\n    case 'danger':\n      return 'danger600';\n    case 'secondary':\n      return 'neutral500';\n    case 'success':\n      return 'success600';\n    default:\n      return 'primary600';\n  }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n  onClose: () => void;\n  isOpen: Dialog.Props['open'];\n  loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n  onClose,\n  onCancel,\n  onConfirm,\n  title,\n  content,\n  isOpen,\n  variant = 'secondary',\n  loading,\n}: DocumentActionConfirmDialogProps) => {\n  const { formatMessage } = useIntl();\n\n  const handleClose = async () => {\n    if (onCancel) {\n      await onCancel();\n    }\n\n    onClose();\n  };\n\n  const handleConfirm = async () => {\n    if (onConfirm) {\n      await onConfirm();\n    }\n\n    onClose();\n  };\n\n  return (\n    <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n      <Dialog.Content>\n        <Dialog.Header>{title}</Dialog.Header>\n        <Dialog.Body>{content}</Dialog.Body>\n        <Dialog.Footer>\n          <Dialog.Cancel>\n            <Button variant=\"tertiary\" fullWidth>\n              {formatMessage({\n                id: 'app.components.Button.cancel',\n                defaultMessage: 'Cancel',\n              })}\n            </Button>\n          </Dialog.Cancel>\n          <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n            {formatMessage({\n              id: 'app.components.Button.confirm',\n              defaultMessage: 'Confirm',\n            })}\n          </Button>\n        </Dialog.Footer>\n      </Dialog.Content>\n    </Dialog.Root>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n  onModalClose: () => void;\n  isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n  isOpen,\n  title,\n  onClose,\n  footer: Footer,\n  content: Content,\n  onModalClose,\n}: DocumentActionModalProps) => {\n  const handleClose = () => {\n    if (onClose) {\n      onClose();\n    }\n\n    onModalClose();\n  };\n\n  return (\n    <Modal.Root open={isOpen} onOpenChange={handleClose}>\n      <Modal.Content>\n        <Modal.Header>\n          <Modal.Title>{title}</Modal.Title>\n        </Modal.Header>\n        {typeof Content === 'function' ? (\n          <Content onClose={handleClose} />\n        ) : (\n          <Modal.Body>{Content}</Modal.Body>\n        )}\n        {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n      </Modal.Content>\n    </Modal.Root>\n  );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n  if (Array.isArray(data)) {\n    return data.map(transformData);\n  }\n\n  if (typeof data === 'object' && data !== null) {\n    if ('apiData' in data) {\n      return data.apiData;\n    }\n\n    return mapValues(transformData)(data);\n  }\n\n  return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n  activeTab,\n  documentId,\n  model,\n  collectionType,\n  meta,\n  document,\n}) => {\n  const {\n    currentDocument: { schema },\n  } = useDocumentContext('PublishAction');\n\n  const navigate = useNavigate();\n  const { toggleNotification } = useNotification();\n  const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n  const isListView = useMatch(LIST_PATH) !== null;\n  const isCloning = useMatch(CLONE_PATH) !== null;\n  const { id } = useParams();\n  const { formatMessage } = useIntl();\n  const { canPublish, canReadFields } = useDocumentRBAC(\n    'PublishAction',\n    ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n  );\n  const { publish, isLoading } = useDocumentActions();\n  const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n  const [\n    countDraftRelations,\n    { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n  ] = useGetDraftRelationCountQuery();\n  const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n  const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n  const [{ rawQuery }] = useQueryParams();\n\n  const modified = useForm('PublishAction', ({ modified }) => modified);\n  const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n  const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n  const validate = useForm('PublishAction', (state) => state.validate);\n  const setErrors = useForm('PublishAction', (state) => state.setErrors);\n  const formValues = useForm('PublishAction', ({ values }) => values);\n  const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n\n  // need to discriminate if the publish is coming from a relation modal or in the edit view\n  const relationContext = useRelationModal('PublishAction', () => true, false);\n  const fromRelationModal = relationContext != undefined;\n\n  const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n  const fieldToConnect = useRelationModal(\n    'PublishAction',\n    (state) => state.state.fieldToConnect,\n    false\n  );\n  const fieldToConnectUID = useRelationModal(\n    'PublishAction',\n    (state) => state.state.fieldToConnectUID,\n    false\n  );\n  const documentHistory = useRelationModal(\n    'PublishAction',\n    (state) => state.state.documentHistory,\n    false\n  );\n  const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n  const { currentDocumentMeta } = useDocumentContext('PublishAction');\n  const [updateDocumentMutation] = useUpdateDocumentMutation();\n  const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n  const idToPublish = currentDocumentMeta.documentId || id;\n\n  React.useEffect(() => {\n    if (isErrorDraftRelations) {\n      toggleNotification({\n        type: 'danger',\n        message: formatMessage({\n          id: getTranslation('error.records.fetch-draft-relatons'),\n          defaultMessage: 'An error occurred while fetching draft relations on this document.',\n        }),\n      });\n    }\n  }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n  React.useEffect(() => {\n    const localDraftRelations = new Set();\n\n    /**\n     * Extracts draft relations from the provided data object.\n     * It checks for a connect array of relations.\n     * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n     */\n    const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n      const relations = data.connect || [];\n      relations.forEach((relation) => {\n        if (relation.status === 'draft') {\n          localDraftRelations.add(relation.id);\n        }\n      });\n    };\n\n    /**\n     * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n     * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n     * It recursively calls itself for any non-null objects it contains.\n     */\n    const traverseAndExtract = (data: { [field: string]: any }) => {\n      Object.entries(data).forEach(([key, value]) => {\n        if (key === 'connect' && Array.isArray(value)) {\n          extractDraftRelations({ connect: value });\n        } else if (typeof value === 'object' && value !== null) {\n          traverseAndExtract(value);\n        }\n      });\n    };\n\n    if (!documentId || modified) {\n      traverseAndExtract(formValues);\n      setLocalCountOfDraftRelations(localDraftRelations.size);\n    }\n  }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n  React.useEffect(() => {\n    if (!document || !document.documentId || isListView) {\n      return;\n    }\n\n    const fetchDraftRelationsCount = async () => {\n      const { data, error } = await countDraftRelations({\n        collectionType,\n        model,\n        documentId,\n        params: currentDocumentMeta.params,\n      });\n\n      if (error) {\n        throw error;\n      }\n\n      if (data) {\n        setServerCountOfDraftRelations(data.data);\n      }\n    };\n\n    fetchDraftRelationsCount();\n  }, [\n    isListView,\n    document,\n    documentId,\n    countDraftRelations,\n    collectionType,\n    model,\n    currentDocumentMeta.params,\n  ]);\n  const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n  const parentDocumentData = useDocument(\n    {\n      documentId: parentDocumentMetaToUpdate?.documentId,\n      model: parentDocumentMetaToUpdate?.model,\n      collectionType: parentDocumentMetaToUpdate?.collectionType,\n      params: parentDocumentMetaToUpdate?.params,\n    },\n    { skip: !parentDocumentMetaToUpdate }\n  );\n  const { getInitialFormValues } = useDoc();\n\n  const isDocumentPublished =\n    (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n      meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n    document?.status !== 'modified';\n\n  if (!schema?.options?.draftAndPublish) {\n    return null;\n  }\n\n  const performPublish = async () => {\n    setSubmitting(true);\n\n    try {\n      const { errors } = await validate(true, {\n        status: 'published',\n      });\n      if (errors) {\n        const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName) => {\n          const attribute = schema.attributes[fieldName];\n\n          return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n        });\n\n        if (hasUnreadableRequiredField) {\n          toggleNotification({\n            type: 'danger',\n            message: formatMessage({\n              id: 'content-manager.validation.error.unreadable-required-field',\n              defaultMessage:\n                'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n            }),\n          });\n        } else {\n          toggleNotification({\n            type: 'danger',\n            message: formatMessage({\n              id: 'content-manager.validation.error',\n              defaultMessage:\n                'There are validation errors in your document. Please fix them before saving.',\n            }),\n          });\n        }\n        return;\n      }\n      const res = await publish(\n        {\n          collectionType,\n          model,\n          documentId,\n          params: currentDocumentMeta.params,\n        },\n        transformData(formValues)\n      );\n\n      // Reset form if successful\n      if ('data' in res) {\n        resetForm();\n      }\n\n      if ('data' in res && collectionType !== SINGLE_TYPES) {\n        /**\n         * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n         */\n        if (idToPublish === 'create' && !fromRelationModal) {\n          navigate({\n            pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n            search: rawQuery,\n          });\n        } else if (fromRelationModal) {\n          const newRelation = {\n            documentId: res.data.documentId,\n            collectionType,\n            model,\n            params: currentDocumentMeta.params,\n          };\n\n          /*\n           * Update, if needed, the parent relation with the newly published document.\n           * Check if in history we have the parent relation otherwise use the\n           * rootDocument\n           */\n          if (\n            fieldToConnect &&\n            documentHistory &&\n            (parentDocumentMetaToUpdate.documentId ||\n              parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n          ) {\n            const parentDataToUpdate =\n              parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n                ? getInitialFormValues()\n                : parentDocumentData.getInitialFormValues();\n            const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n            const dataToUpdate = connectRelationToParent(\n              parentDataToUpdate,\n              fieldToConnect,\n              res.data,\n              fieldToConnectUID\n            );\n\n            try {\n              const updateRes = await updateDocumentMutation({\n                collectionType: metaDocumentToUpdate.collectionType,\n                model: metaDocumentToUpdate.model,\n                documentId:\n                  metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n                    ? metaDocumentToUpdate.documentId\n                    : undefined,\n                params: metaDocumentToUpdate.params,\n                data: dataToUpdate,\n              });\n\n              if ('error' in updateRes) {\n                toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n                return;\n              }\n            } catch (err) {\n              toggleNotification({\n                type: 'danger',\n                message: formatMessage({\n                  id: 'notification.error',\n                  defaultMessage: 'An error occurred',\n                }),\n              });\n\n              throw err;\n            }\n          }\n\n          dispatch({\n            type: 'GO_TO_CREATED_RELATION',\n            payload: { document: newRelation, shouldBypassConfirmation: true },\n          });\n        }\n      } else if (\n        'error' in res &&\n        isBaseQueryError(res.error) &&\n        res.error.name === 'ValidationError'\n      ) {\n        setErrors(formatValidationErrors(res.error));\n      }\n    } finally {\n      setSubmitting(false);\n      if (onPreview) {\n        onPreview();\n      }\n    }\n  };\n\n  const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n  // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n  // see RFC \"Count draft relations\" in Notion\n  const enableDraftRelationsCount = false;\n  const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n  return {\n    loading: isLoading,\n    position: ['panel', 'preview', 'relation-modal'],\n    /**\n     * Disabled when:\n     *  - currently if you're cloning a document we don't support publish & clone at the same time.\n     *  - the form is submitting\n     *  - the active tab is the published tab\n     *  - the document is already published & not modified\n     *  - the document is being created & not modified\n     *  - the user doesn't have the permission to publish\n     */\n    disabled:\n      isCloning ||\n      isSubmitting ||\n      isLoadingDraftRelations ||\n      activeTab === 'published' ||\n      (!modified && isDocumentPublished) ||\n      (!modified && !document?.documentId) ||\n      !canPublish,\n    label: formatMessage({\n      id: 'app.utils.publish',\n      defaultMessage: 'Publish',\n    }),\n    onClick: async () => {\n      if (hasDraftRelations) {\n        // In this case we need to show the user a confirmation dialog.\n        // Return from the onClick and let the dialog handle the process.\n        return;\n      }\n\n      await performPublish();\n    },\n    dialog: hasDraftRelations\n      ? {\n          type: 'dialog',\n          variant: 'danger',\n          footer: null,\n          title: formatMessage({\n            id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n            defaultMessage: 'Confirmation',\n          }),\n          content: formatMessage(\n            {\n              id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n              defaultMessage:\n                'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n            },\n            {\n              count: totalDraftRelations,\n            }\n          ),\n          onConfirm: async () => {\n            await performPublish();\n          },\n        }\n      : undefined,\n  };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n  activeTab,\n  documentId,\n  model,\n  collectionType,\n}) => {\n  const navigate = useNavigate();\n  const { toggleNotification } = useNotification();\n  const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n  const cloneMatch = useMatch(CLONE_PATH);\n  const isCloning = cloneMatch !== null;\n  const { formatMessage } = useIntl();\n  const { create, update, clone, isLoading } = useDocumentActions();\n  const [{ rawQuery }] = useQueryParams();\n  const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n  const { getInitialFormValues } = useDoc();\n\n  const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n  const modified = useForm('UpdateAction', ({ modified }) => modified);\n  const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n  const document = useForm('UpdateAction', ({ values }) => values);\n  const validate = useForm('UpdateAction', (state) => state.validate);\n  const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n  const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n  const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n  // need to discriminate if the update is coming from a relation modal or in the edit view\n  const relationContext = useRelationModal('UpdateAction', () => true, false);\n  const fieldToConnect = useRelationModal(\n    'UpdateAction',\n    (state) => state.state.fieldToConnect,\n    false\n  );\n  const fieldToConnectUID = useRelationModal(\n    'PublishAction',\n    (state) => state.state.fieldToConnectUID,\n    false\n  );\n  const documentHistory = useRelationModal(\n    'UpdateAction',\n    (state) => state.state.documentHistory,\n    false\n  );\n  const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n  const fromRelationModal = relationContext != undefined;\n\n  const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n  const [updateDocumentMutation] = useUpdateDocumentMutation();\n  const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n  const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n  const parentDocumentData = useDocument(\n    {\n      documentId: parentDocumentMetaToUpdate?.documentId,\n      model: parentDocumentMetaToUpdate?.model,\n      collectionType: parentDocumentMetaToUpdate?.collectionType,\n      params: parentDocumentMetaToUpdate?.params,\n    },\n    { skip: !parentDocumentMetaToUpdate }\n  );\n\n  const handleUpdate = React.useCallback(async () => {\n    setSubmitting(true);\n\n    try {\n      if (!modified) {\n        return;\n      }\n\n      const { errors } = await validate(true, {\n        status: 'draft',\n      });\n\n      if (errors) {\n        toggleNotification({\n          type: 'danger',\n          message: formatMessage({\n            id: 'content-manager.validation.error',\n            defaultMessage:\n              'There are validation errors in your document. Please fix them before saving.',\n          }),\n        });\n\n        return;\n      }\n\n      if (isCloning) {\n        const res = await clone(\n          {\n            model,\n            documentId: cloneMatch.params.origin!,\n            params: currentDocumentMeta.params,\n          },\n          transformData(document)\n        );\n\n        if ('data' in res) {\n          navigate(\n            {\n              pathname: `../${res.data.documentId}`,\n              search: rawQuery,\n            },\n            { relative: 'path' }\n          );\n        } else if (\n          'error' in res &&\n          isBaseQueryError(res.error) &&\n          res.error.name === 'ValidationError'\n        ) {\n          setErrors(formatValidationErrors(res.error));\n        }\n      } else if (documentId || collectionType === SINGLE_TYPES) {\n        const res = await update(\n          {\n            collectionType,\n            model,\n            documentId,\n            params: currentDocumentMeta.params,\n          },\n          transformData(document)\n        );\n\n        if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n          setErrors(formatValidationErrors(res.error));\n        } else {\n          resetForm();\n        }\n      } else {\n        const res = await create(\n          {\n            model,\n            params: currentDocumentMeta.params,\n          },\n          transformData(document)\n        );\n\n        if ('data' in res && collectionType !== SINGLE_TYPES) {\n          if (fromRelationModal) {\n            const createdRelation = {\n              documentId: res.data.documentId,\n              collectionType,\n              model,\n              params: currentDocumentMeta.params,\n            };\n            /*\n             * Update, if needed, the parent relation with the newly published document.\n             * Check if in history we have the parent relation otherwise use the\n             * rootDocument\n             */\n            if (\n              fieldToConnect &&\n              documentHistory &&\n              (parentDocumentMetaToUpdate.documentId ||\n                parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n            ) {\n              const parentDataToUpdate =\n                parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n                  ? getInitialFormValues()\n                  : parentDocumentData.getInitialFormValues();\n\n              const dataToUpdate = connectRelationToParent(\n                parentDataToUpdate,\n                fieldToConnect,\n                res.data,\n                fieldToConnectUID\n              );\n\n              try {\n                const updateRes = await updateDocumentMutation({\n                  collectionType: parentDocumentMetaToUpdate.collectionType,\n                  model: parentDocumentMetaToUpdate.model,\n                  documentId:\n                    parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n                      ? parentDocumentMetaToUpdate.documentId\n                      : undefined,\n                  params: parentDocumentMetaToUpdate.params,\n                  data: {\n                    ...dataToUpdate,\n                  },\n                });\n                if ('error' in updateRes) {\n                  toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n                  return;\n                }\n              } catch (err) {\n                toggleNotification({\n                  type: 'danger',\n                  message: formatMessage({\n                    id: 'notification.error',\n                    defaultMessage: 'An error occurred',\n                  }),\n                });\n\n                throw err;\n              }\n            }\n\n            dispatch({\n              type: 'GO_TO_CREATED_RELATION',\n              payload: { document: createdRelation, shouldBypassConfirmation: true },\n            });\n          } else {\n            navigate(\n              {\n                pathname: `../${res.data.documentId}`,\n                search: rawQuery,\n              },\n              { replace: true, relative: 'path' }\n            );\n          }\n        } else if (\n          'error' in res &&\n          isBaseQueryError(res.error) &&\n          res.error.name === 'ValidationError'\n        ) {\n          setErrors(formatValidationErrors(res.error));\n        }\n      }\n    } finally {\n      setSubmitting(false);\n      if (onPreview) {\n        onPreview();\n      }\n    }\n  }, [\n    setSubmitting,\n    modified,\n    validate,\n    isCloning,\n    documentId,\n    collectionType,\n    toggleNotification,\n    formatMessage,\n    clone,\n    model,\n    cloneMatch?.params.origin,\n    currentDocumentMeta.params,\n    document,\n    navigate,\n    rawQuery,\n    setErrors,\n    formatValidationErrors,\n    update,\n    resetForm,\n    create,\n    fromRelationModal,\n    fieldToConnect,\n    documentHistory,\n    parentDocumentMetaToUpdate,\n    dispatch,\n    getInitialFormValues,\n    parentDocumentData,\n    fieldToConnectUID,\n    updateDocumentMutation,\n    formatAPIError,\n    onPreview,\n  ]);\n\n  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux\n  React.useEffect(() => {\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault();\n        handleUpdate();\n      }\n    };\n\n    window.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleUpdate]);\n\n  return {\n    loading: isLoading,\n    /**\n     * Disabled when:\n     * - the form is submitting\n     * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n     * - the active tab is the published tab\n     */\n    disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n    label: formatMessage({\n      id: 'global.save',\n      defaultMessage: 'Save',\n    }),\n    onClick: handleUpdate,\n    position: ['panel', 'preview', 'relation-modal'],\n  };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n  KEEP: 'keep',\n  DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n  activeTab,\n  documentId,\n  model,\n  collectionType,\n  document,\n}) => {\n  const { formatMessage } = useIntl();\n  const { schema } = useDoc();\n  const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n  const { unpublish } = useDocumentActions();\n  const [{ query }] = useQueryParams();\n  const params = React.useMemo(() => buildValidParams(query), [query]);\n  const { toggleNotification } = useNotification();\n  const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n  const isDocumentModified = document?.status === 'modified';\n\n  const handleChange = (value: string) => {\n    setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n  };\n\n  if (!schema?.options?.draftAndPublish) {\n    return null;\n  }\n\n  return {\n    disabled:\n      !canPublish ||\n      activeTab === 'published' ||\n      (document?.status !== 'published' && document?.status !== 'modified'),\n    label: formatMessage({\n      id: 'app.utils.unpublish',\n      defaultMessage: 'Unpublish',\n    }),\n    icon: <Cross />,\n    onClick: async () => {\n      /**\n       * return if there's no id & we're in a collection type, or the status modified\n       * for either collection type because we use a dialog to handle the process in\n       * the latter case.\n       */\n      if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n        if (!documentId) {\n          // This should never, ever, happen.\n          console.error(\n            \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n          );\n\n          toggleNotification({\n            message: formatMessage({\n              id: 'content-manager.actions.unpublish.error',\n              defaultMessage: 'An error occurred while trying to unpublish the document.',\n            }),\n            type: 'danger',\n          });\n        }\n\n        return;\n      }\n\n      await unpublish({\n        collectionType,\n        model,\n        documentId,\n        params,\n      });\n    },\n    dialog: isDocumentModified\n      ? {\n          type: 'dialog',\n          title: formatMessage({\n            id: 'app.components.ConfirmDialog.title',\n            defaultMessage: 'Confirmation',\n          }),\n          content: (\n            <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n              <Flex width=\"100%\" direction=\"column\" gap={2}>\n                <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n                <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n                  {formatMessage({\n                    id: 'content-manager.actions.unpublish.dialog.body',\n                    defaultMessage: 'Are you sure?',\n                  })}\n                </Typography>\n              </Flex>\n              <Radio.Group\n                defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n                name=\"discard-options\"\n                aria-label={formatMessage({\n                  id: 'content-manager.actions.unpublish.dialog.radio-label',\n                  defaultMessage: 'Choose an option to unpublish the document.',\n                })}\n                onValueChange={handleChange}\n              >\n                <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n                  {formatMessage({\n                    id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n                    defaultMessage: 'Keep draft',\n                  })}\n                </Radio.Item>\n                <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n                  {formatMessage({\n                    id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n                    defaultMessage: 'Replace draft',\n                  })}\n                </Radio.Item>\n              </Radio.Group>\n            </Flex>\n          ),\n          onConfirm: async () => {\n            if (!documentId && collectionType !== SINGLE_TYPES) {\n              // This should never, ever, happen.\n              console.error(\n                \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n              );\n\n              toggleNotification({\n                message: formatMessage({\n                  id: 'content-manager.actions.unpublish.error',\n                  defaultMessage: 'An error occurred while trying to unpublish the document.',\n                }),\n                type: 'danger',\n              });\n            }\n\n            await unpublish(\n              {\n                collectionType,\n                model,\n                documentId,\n                params,\n              },\n              !shouldKeepDraft\n            );\n          },\n        }\n      : undefined,\n    variant: 'danger',\n    position: ['panel', 'table-row'],\n  };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n  activeTab,\n  documentId,\n  model,\n  collectionType,\n  document,\n}) => {\n  const { formatMessage } = useIntl();\n  const { schema } = useDoc();\n  const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n  const { discard, isLoading } = useDocumentActions();\n  const [{ query }] = useQueryParams();\n  const params = React.useMemo(() => buildValidParams(query), [query]);\n\n  if (!schema?.options?.draftAndPublish) {\n    return null;\n  }\n\n  return {\n    disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n    label: formatMessage({\n      id: 'content-manager.actions.discard.label',\n      defaultMessage: 'Discard changes',\n    }),\n    icon: <Cross />,\n    position: ['panel', 'table-row'],\n    variant: 'danger',\n    dialog: {\n      type: 'dialog',\n      title: formatMessage({\n        id: 'app.components.ConfirmDialog.title',\n        defaultMessage: 'Confirmation',\n      }),\n      content: (\n        <Flex direction=\"column\" gap={2}>\n          <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n          <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n            {formatMessage({\n              id: 'content-manager.actions.discard.dialog.body',\n              defaultMessage: 'Are you sure?',\n            })}\n          </Typography>\n        </Flex>\n      ),\n      loading: isLoading,\n      onConfirm: async () => {\n        await discard({\n          collectionType,\n          model,\n          documentId,\n          params,\n        });\n      },\n    },\n  };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n  DocumentActionDescription,\n  DocumentActionPosition,\n  DialogOptions,\n  NotificationOptions,\n  ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","_jsxs","Flex","direction","gap","alignItems","width","_jsx","DocumentActionButton","variant","length","DocumentActionsMenu","label","defaultMessage","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","type","title","message","content","status","timeout","onClose","preventDefault","handleClose","_Fragment","Button","flex","startIcon","icon","disabled","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","MenuItem","styled","Menu","Item","theme","isVariantDanger","isDisabled","colors","danger100","children","setIsOpen","every","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","onSelect","display","color","convertActionVariantToColor","convertActionVariantToIconColor","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","formValues","values","resetForm","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","options","draftAndPublish","performPublish","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","required","res","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","payload","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","create","update","clone","handleUpdate","useCallback","origin","relative","createdRelation","replace","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}