@strapi/content-manager 5.16.1 → 5.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/admin/history/components/VersionContent.js +24 -3
  2. package/dist/admin/history/components/VersionContent.js.map +1 -1
  3. package/dist/admin/history/components/VersionContent.mjs +25 -4
  4. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/EditViewPage.js +11 -1
  6. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  7. package/dist/admin/pages/EditView/EditViewPage.mjs +11 -1
  8. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/DocumentActions.js +28 -4
  10. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  11. package/dist/admin/pages/EditView/components/DocumentActions.mjs +28 -4
  12. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  14. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  16. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +13 -2
  18. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +14 -3
  20. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +16 -3
  22. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +17 -4
  24. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormLayout.js +27 -3
  26. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormLayout.mjs +27 -3
  28. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/utils/data.js +103 -0
  30. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  31. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  32. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  33. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  34. package/dist/admin/src/utils/validation.d.ts +1 -0
  35. package/dist/admin/utils/validation.js +16 -5
  36. package/dist/admin/utils/validation.js.map +1 -1
  37. package/dist/admin/utils/validation.mjs +16 -5
  38. package/dist/admin/utils/validation.mjs.map +1 -1
  39. package/dist/server/services/document-metadata.js +1 -1
  40. package/dist/server/services/document-metadata.js.map +1 -1
  41. package/dist/server/services/document-metadata.mjs +1 -1
  42. package/dist/server/services/document-metadata.mjs.map +1 -1
  43. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  44. package/package.json +5 -5
@@ -22,6 +22,7 @@ var router = require('../../../router.js');
22
22
  var documents = require('../../../services/documents.js');
23
23
  var api = require('../../../utils/api.js');
24
24
  var translations = require('../../../utils/translations.js');
25
+ var data = require('../utils/data.js');
25
26
  var RelationModal = require('./FormInputs/Relations/RelationModal.js');
26
27
 
27
28
  function _interopNamespaceDefault(e) {
@@ -396,6 +397,7 @@ const transformData = (data)=>{
396
397
  const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
397
398
  const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
398
399
  const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
400
+ const { currentDocument: { components } } = useDocumentContext.useDocumentContext('PublishAction');
399
401
  // need to discriminate if the publish is coming from a relation modal or in the edit view
400
402
  const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
401
403
  const fromRelationModal = relationContext != undefined;
@@ -534,12 +536,16 @@ const transformData = (data)=>{
534
536
  }
535
537
  return;
536
538
  }
539
+ const { data: data$1 } = data.handleInvisibleAttributes(transformData(formValues), {
540
+ schema,
541
+ components
542
+ });
537
543
  const res = await publish({
538
544
  collectionType,
539
545
  model,
540
546
  documentId,
541
547
  params: currentDocumentMeta.params
542
- }, transformData(formValues));
548
+ }, data$1);
543
549
  // Reset form if successful
544
550
  if ('data' in res) {
545
551
  resetForm();
@@ -673,12 +679,14 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
673
679
  const isCloning = cloneMatch !== null;
674
680
  const { formatMessage } = reactIntl.useIntl();
675
681
  const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions();
682
+ const { currentDocument: { components } } = useDocumentContext.useDocumentContext('UpdateAction');
676
683
  const [{ rawQuery }] = strapiAdmin.useQueryParams();
677
684
  const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
678
685
  const { getInitialFormValues } = useDocument.useDoc();
679
686
  const isSubmitting = strapiAdmin.useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
680
687
  const modified = strapiAdmin.useForm('UpdateAction', ({ modified })=>modified);
681
688
  const setSubmitting = strapiAdmin.useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
689
+ const initialValues = strapiAdmin.useForm('UpdateAction', ({ initialValues })=>initialValues);
682
690
  const document = strapiAdmin.useForm('UpdateAction', ({ values })=>values);
683
691
  const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
684
692
  const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
@@ -686,6 +694,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
686
694
  const dispatch = RelationModal.useRelationModal('UpdateAction', (state)=>state.dispatch);
687
695
  // need to discriminate if the update is coming from a relation modal or in the edit view
688
696
  const relationContext = RelationModal.useRelationModal('UpdateAction', ()=>true, false);
697
+ const relationalModalSchema = RelationModal.useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
689
698
  const fieldToConnect = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
690
699
  const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
691
700
  const documentHistory = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
@@ -703,6 +712,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
703
712
  }, {
704
713
  skip: !parentDocumentMetaToUpdate
705
714
  });
715
+ const { schema } = useDocument.useDoc();
706
716
  const handleUpdate = React__namespace.useCallback(async ()=>{
707
717
  setSubmitting(true);
708
718
  try {
@@ -739,22 +749,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
739
749
  setErrors(formatValidationErrors(res.error));
740
750
  }
741
751
  } else if (documentId || collectionType === collections.SINGLE_TYPES) {
752
+ const { data: data$1 } = data.handleInvisibleAttributes(transformData(document), {
753
+ schema: fromRelationModal ? relationalModalSchema : schema,
754
+ initialValues,
755
+ components
756
+ });
742
757
  const res = await update({
743
758
  collectionType,
744
759
  model,
745
760
  documentId,
746
761
  params: currentDocumentMeta.params
747
- }, transformData(document));
762
+ }, data$1);
748
763
  if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
749
764
  setErrors(formatValidationErrors(res.error));
750
765
  } else {
751
766
  resetForm();
752
767
  }
753
768
  } else {
769
+ const { data: data$1 } = data.handleInvisibleAttributes(transformData(document), {
770
+ schema: fromRelationModal ? relationalModalSchema : schema,
771
+ initialValues,
772
+ components
773
+ });
754
774
  const res = await create({
755
775
  model,
756
776
  params: currentDocumentMeta.params
757
- }, transformData(document));
777
+ }, data$1);
758
778
  if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
759
779
  if (fromRelationModal) {
760
780
  const createdRelation = {
@@ -855,7 +875,11 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
855
875
  fieldToConnectUID,
856
876
  updateDocumentMutation,
857
877
  formatAPIError,
858
- onPreview
878
+ onPreview,
879
+ initialValues,
880
+ schema,
881
+ components,
882
+ relationalModalSchema
859
883
  ]);
860
884
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
861
885
  React__namespace.useEffect(()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentActions.js","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';\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 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 <Menu.Item\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 variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\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\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","children","setIsOpen","isDisabled","every","Menu","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","Item","onSelect","display","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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"}
1
+ {"version":3,"file":"DocumentActions.js","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';\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, handleInvisibleAttributes } 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 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 <Menu.Item\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 variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\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\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 const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\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 { data } = handleInvisibleAttributes(transformData(formValues), {\n schema,\n components,\n });\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\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 {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\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 initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\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 relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\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 const { schema } = useDoc();\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 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 { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\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 { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\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 initialValues,\n schema,\n components,\n relationalModalSchema,\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","children","setIsOpen","isDisabled","every","Menu","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","Item","onSelect","display","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","components","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","handleInvisibleAttributes","res","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","payload","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","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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"}