@strapi/content-manager 5.47.0 → 5.47.1

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 (32) hide show
  1. package/dist/admin/hooks/useDocument.js +82 -2
  2. package/dist/admin/hooks/useDocument.js.map +1 -1
  3. package/dist/admin/hooks/useDocument.mjs +82 -2
  4. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/EditViewPage.js +3 -2
  6. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  7. package/dist/admin/pages/EditView/EditViewPage.mjs +3 -2
  8. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/DocumentActions.js +6 -3
  10. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  11. package/dist/admin/pages/EditView/components/DocumentActions.mjs +6 -3
  12. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +4 -1
  14. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +4 -1
  16. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  17. package/dist/admin/utils/relations.js +4 -0
  18. package/dist/admin/utils/relations.js.map +1 -1
  19. package/dist/admin/utils/relations.mjs +4 -0
  20. package/dist/admin/utils/relations.mjs.map +1 -1
  21. package/dist/server/homepage/services/homepage.js +21 -16
  22. package/dist/server/homepage/services/homepage.js.map +1 -1
  23. package/dist/server/homepage/services/homepage.mjs +21 -16
  24. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  25. package/dist/server/services/document-metadata.js +32 -3
  26. package/dist/server/services/document-metadata.js.map +1 -1
  27. package/dist/server/services/document-metadata.mjs +32 -3
  28. package/dist/server/services/document-metadata.mjs.map +1 -1
  29. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  30. package/dist/server/src/services/document-metadata.d.ts +11 -1
  31. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  32. package/package.json +6 -6
@@ -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 tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n Menu,\n ButtonProps,\n Tooltip,\n IconButton,\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 type?: 'publish' | 'update' | 'unpublish' | 'discard';\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 isDesktop = useIsDesktop();\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 const addHintTooltip = (action: Action, children: React.ReactNode) => {\n return !action.disabled ? (\n <Tooltip\n label={formatMessage(\n {\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to {action}',\n },\n {\n action: action.label,\n }\n )}\n >\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\n ) : (\n children\n );\n };\n\n const primaryActionContent = (\n <>\n <Flex flex={1} alignItems=\"stretch\" direction=\"column\">\n {addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n buttonType={primaryAction.type === 'publish' ? undefined : 'submit'}\n />\n )}\n </Flex>\n\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 </>\n );\n\n return (\n <Flex direction={{ initial: 'row', large: 'column' }} gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n {isDesktop ? <Flex gap={2}>{primaryActionContent}</Flex> : primaryActionContent}\n </tours.contentManager.Publish>\n {secondaryAction ? (\n <Flex flex={1} order={{ initial: -1, large: 0 }} alignItems=\"stretch\" direction=\"column\">\n {secondaryAction.type === 'publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Omit<Action, 'type'> {\n buttonType?: 'button' | 'submit' | 'reset';\n type?: DocumentActionDescription['type'];\n}\n\nconst DocumentActionButton = ({ buttonType = 'button', ...action }: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: DocumentActionButtonProps) => 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 type={buttonType}\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 const triggerRef = React.useRef<HTMLButtonElement>(null);\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 const handleOpenChange = (open: boolean) => {\n if (!isDisabled) {\n setIsOpen(open);\n }\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={handleOpenChange}>\n <Menu.Trigger\n ref={triggerRef}\n disabled={isDisabled}\n label={\n label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })\n }\n tag={IconButton}\n icon={<More />}\n variant={variant}\n />\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\" maxWidth=\"25rem\">\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 getValues = useForm('PublishAction', (state) => state.getValues);\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 dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n /**\n * Yield one microtask so React can flush any pending field updates from the same task\n * (common with fast local runners / Playwright) before we read values and validate.\n * TODO: replace with an explicit form flush contract when we can (same concern as Save flow).\n */\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField =\n schema &&\n Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n // For components, check if any of the component fields are readable\n if (attribute.type === 'component') {\n const componentFields = (canReadFields ?? []).filter((field) =>\n field.startsWith(`${fieldName}.`)\n );\n return componentFields.length === 0;\n }\n\n // For regular fields, check if the field itself is readable\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\n const { data } = handleInvisibleAttributes(transformData(getValues()), {\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 with current values as new initial values (clears errors/submitting and sets modified to false)\n if ('data' in res) {\n resetForm(getValues());\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\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 // Auto-publish on CMD+Enter on macOS, and CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n if (!hasDraftRelations) {\n performPublish();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [hasDraftRelations, performPublish, schema?.options?.draftAndPublish]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n type: 'publish',\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 dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\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 getValues = useForm('UpdateAction', (state) => state.getValues);\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 = async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n // Blur the active element so inputs that debounce into the form (e.g. blocks editor) flush\n // before validate/getValues — on fast clients Save can otherwise read stale field state.\n // Use the global DOM document — form values are not in scope here (avoid shadowing `document`).\n (globalThis.document?.activeElement as HTMLElement | undefined)?.blur();\n\n // Yield microtasks so batched React updates after blur/onChange can settle before validate\n // (same idea as performPublish; two ticks vs one gives a bit more room after focus/blur).\n // TODO: replace with an explicit field/form flush contract when available.\n await Promise.resolve();\n await Promise.resolve();\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 const latestValues = getValues();\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(latestValues)\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(latestValues), {\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(latestValues);\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\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 dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\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","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","addHintTooltip","children","disabled","_jsx","Tooltip","label","defaultMessage","Flex","width","primaryActionContent","_jsxs","_Fragment","flex","alignItems","direction","DocumentActionButton","variant","buttonType","type","length","DocumentActionsMenu","initial","large","gap","tours","contentManager","Publish","order","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","title","message","content","status","timeout","onClose","preventDefault","handleClose","Button","startIcon","icon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","setIsOpen","isDisabled","every","triggerRef","useRef","handleOpenChange","open","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","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","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","size","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","componentFields","field","startsWith","required","handleInvisibleAttributes","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","options","draftAndPublish","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4HA,MAAMA,uBAAAA,GAA0B,CAC9BC,kBAAAA,EACAC,cAAAA,EACAC,IAAAA,EACAC,iBAAAA,GAAAA;AAEA;;;;AAIC,MACD,MAAMC,cAAAA,GAAiB,CAAC,CAACC,IAAIL,kBAAAA,EAAoBC,cAAAA,CAAAA;AACjD,IAAA,MAAMK,kBAAAA,GAAqBF,cAAAA,GACvBH,cAAAA,GAEAA,cAAAA,CAAeM,KAAK,CAAC,GAAA,CAAA,CAAKC,KAAK,CAAC,CAAA,EAAG,EAAC,CAAA,CAAGC,IAAI,CAAC,GAAA,CAAA;AAChD,IAAA,MAAMC,sBAAsBN,cAAAA,GACxB;QACEO,OAAAA,EAAS;AACP,YAAA;AACEC,gBAAAA,EAAAA,EAAIV,KAAKW,UAAU;AACnBA,gBAAAA,UAAAA,EAAYX,KAAKW,UAAU;AAC3BC,gBAAAA,MAAAA,EAAQZ,KAAKY;AACf;AACD;KACH,GACA;AACE,QAAA,CAACb,eAAeM,KAAK,CAAC,GAAA,CAAA,CAAKQ,GAAG,KAAM;YAClCJ,OAAAA,EAAS;AACP,gBAAA;AACEC,oBAAAA,EAAAA,EAAIV,KAAKW,UAAU;AACnBA,oBAAAA,UAAAA,EAAYX,KAAKW,UAAU;AAC3BC,oBAAAA,MAAAA,EAAQZ,KAAKY;AACf;AACD,aAAA;AACDE,YAAAA,UAAAA,EAAY;AACd,SAAA;;QAEAC,WAAAA,EAAad;AACf,KAAA;AACJ,IAAA,MAAMe,eAAAA,GAAkBC,GAAAA,CAAI,EAAC,EAAGb,kBAAAA,EAAoBI,mBAAAA,CAAAA;AACpD,IAAA,OAAOU,MAAMpB,kBAAAA,EAAoBkB,eAAAA,CAAAA;AACnC,CAAA;AAEA,MAAMG,eAAAA,GAAkB,CAAC,EAAEC,OAAO,EAAwB,GAAA;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,SAAAA,GAAYC,wBAAAA,EAAAA;IAClB,MAAM,CAACC,eAAeC,eAAAA,EAAiB,GAAGC,YAAY,GAAGP,OAAAA,CAAQQ,MAAM,CAAC,CAACC,MAAAA,GAAAA;QACvE,IAAIA,MAAAA,CAAOC,QAAQ,KAAKC,SAAAA,EAAW;YACjC,OAAO,IAAA;AACT,QAAA;QAEA,MAAMC,SAAAA,GAAYC,MAAMC,OAAO,CAACL,OAAOC,QAAQ,CAAA,GAAID,MAAAA,CAAOC,QAAQ,GAAG;AAACD,YAAAA,MAAAA,CAAOC;AAAS,SAAA;QACtF,OAAOE,SAAAA,CAAUG,QAAQ,CAAC,OAAA,CAAA;AAC5B,IAAA,CAAA,CAAA;AAEA,IAAA,IAAI,CAACV,aAAAA,EAAe;QAClB,OAAO,IAAA;AACT,IAAA;IAEA,MAAMW,cAAAA,GAAiB,CAACP,MAAAA,EAAgBQ,QAAAA,GAAAA;AACtC,QAAA,OAAO,CAACR,MAAAA,CAAOS,QAAQ,iBACrBC,cAAA,CAACC,oBAAAA,EAAAA;AACCC,YAAAA,KAAAA,EAAOpB,aAAAA,CACL;gBACEX,EAAAA,EAAI,8CAAA;gBACJgC,cAAAA,EAAgB;aAClB,EACA;AACEb,gBAAAA,MAAAA,EAAQA,OAAOY;AACjB,aAAA,CAAA;AAGF,YAAA,QAAA,gBAAAF,cAAA,CAACI,iBAAAA,EAAAA;gBAAKC,KAAAA,EAAM,MAAA;AAAQP,gBAAAA,QAAAA,EAAAA;;AAGtBA,SAAAA,CAAAA,GAAAA,QAAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMQ,oBAAAA,iBACJC,eAAA,CAAAC,mBAAA,EAAA;;0BACER,cAAA,CAACI,iBAAAA,EAAAA;gBAAKK,IAAAA,EAAM,CAAA;gBAAGC,UAAAA,EAAW,SAAA;gBAAUC,SAAAA,EAAU,QAAA;AAC3Cd,gBAAAA,QAAAA,EAAAA,cAAAA,CACCX,6BACAc,cAAA,CAACY,oBAAAA,EAAAA;AACE,oBAAA,GAAG1B,aAAa;oBACjB2B,OAAAA,EAAS3B,aAAAA,CAAc2B,OAAO,IAAI,SAAA;AAClCC,oBAAAA,UAAAA,EAAY5B,aAAAA,CAAc6B,IAAI,KAAK,SAAA,GAAYvB,SAAAA,GAAY;;;YAKhEJ,WAAAA,CAAY4B,MAAM,GAAG,CAAA,iBACpBhB,cAAA,CAACiB,mBAAAA,EAAAA;gBACCpC,OAAAA,EAASO,WAAAA;AACTc,gBAAAA,KAAAA,EAAOpB,aAAAA,CAAc;oBACnBX,EAAAA,EAAI,6DAAA;oBACJgC,cAAAA,EAAgB;AAClB,iBAAA;AAEA,aAAA,CAAA,GAAA;;;AAIR,IAAA,qBACEI,eAAA,CAACH,iBAAAA,EAAAA;QAAKO,SAAAA,EAAW;YAAEO,OAAAA,EAAS,KAAA;YAAOC,KAAAA,EAAO;AAAS,SAAA;QAAGC,GAAAA,EAAK,CAAA;QAAGV,UAAAA,EAAW,SAAA;QAAUL,KAAAA,EAAM,MAAA;;0BACvFL,cAAA,CAACqB,iBAAAA,CAAMC,cAAc,CAACC,OAAO,EAAA;AAC1BvC,gBAAAA,QAAAA,EAAAA,SAAAA,iBAAYgB,cAAA,CAACI,iBAAAA,EAAAA;oBAAKgB,GAAAA,EAAK,CAAA;AAAId,oBAAAA,QAAAA,EAAAA;AAA+BA,iBAAAA,CAAAA,GAAAA;;AAE5DnB,YAAAA,eAAAA,iBACCa,cAAA,CAACI,iBAAAA,EAAAA;gBAAKK,IAAAA,EAAM,CAAA;gBAAGe,KAAAA,EAAO;AAAEN,oBAAAA,OAAAA,EAAS,EAAC;oBAAGC,KAAAA,EAAO;AAAE,iBAAA;gBAAGT,UAAAA,EAAW,SAAA;gBAAUC,SAAAA,EAAU,QAAA;AAC7ExB,gBAAAA,QAAAA,EAAAA,eAAAA,CAAgB4B,IAAI,KAAK,SAAA,iBACxBf,eAACqB,iBAAAA,CAAMC,cAAc,CAACC,OAAO,EAAA;AAC3B,oBAAA,QAAA,gBAAAvB,cAAA,CAACY,oBAAAA,EAAAA;AACE,wBAAA,GAAGzB,eAAe;wBACnB0B,OAAAA,EAAS1B,eAAAA,CAAgB0B,OAAO,IAAI;;mCAIxCb,cAAA,CAACY,oBAAAA,EAAAA;AACE,oBAAA,GAAGzB,eAAe;oBACnB0B,OAAAA,EAAS1B,eAAAA,CAAgB0B,OAAO,IAAI,WAAA;oBACpCC,UAAAA,EAAW;;AAIf,aAAA,CAAA,GAAA;;;AAGV;AAWA,MAAMF,uBAAuB,CAAC,EAAEE,aAAa,QAAQ,EAAE,GAAGxB,MAAAA,EAAmC,GAAA;AAC3F,IAAA,MAAM,CAACmC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAC9D,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAE/B,MAAMC,WAAAA,GAAc,CAACzC,MAAAA,GAAsC,OAAO0C,CAAAA,GAAAA;YAChE,MAAM,EAAEC,UAAU,IAAM,KAAK,EAAEC,MAAM,EAAE/D,EAAE,EAAE,GAAGmB,MAAAA;YAE9C,MAAM6C,UAAAA,GAAa,MAAMF,OAAAA,CAAQD,CAAAA,CAAAA;YAEjC,IAAIE,MAAAA,IAAU,CAACC,UAAAA,EAAY;AACzB,gBAAA,OAAQD,OAAOnB,IAAI;oBACjB,KAAK,cAAA;wBACHc,kBAAAA,CAAmB;AACjBO,4BAAAA,KAAAA,EAAOF,OAAOE,KAAK;AACnBC,4BAAAA,OAAAA,EAASH,OAAOI,OAAO;AACvBvB,4BAAAA,IAAAA,EAAMmB,OAAOK,MAAM;AACnBC,4BAAAA,OAAAA,EAASN,OAAOM,OAAO;AACvBC,4BAAAA,OAAAA,EAASP,OAAOO;AAClB,yBAAA,CAAA;AACA,wBAAA;oBACF,KAAK,QAAA;oBACL,KAAK,OAAA;AACHT,wBAAAA,CAAAA,CAAEU,cAAc,EAAA;wBAChBhB,WAAAA,CAAYvD,EAAAA,CAAAA;AAChB;AACF,YAAA;AACF,QAAA,CAAA;AAEA,IAAA,MAAMwE,WAAAA,GAAc,IAAA;QAClBjB,WAAAA,CAAY,IAAA,CAAA;AACd,IAAA,CAAA;IAEA,qBACEnB,eAAA,CAAAC,mBAAA,EAAA;;0BACER,cAAA,CAAC4C,mBAAAA,EAAAA;gBACCnC,IAAAA,EAAK,MAAA;AACLoC,gBAAAA,SAAAA,EAAWvD,OAAOwD,IAAI;AACtB/C,gBAAAA,QAAAA,EAAUT,OAAOS,QAAQ;AACzBkC,gBAAAA,OAAAA,EAASF,WAAAA,CAAYzC,MAAAA,CAAAA;gBACrByD,cAAAA,EAAe,QAAA;gBACflC,OAAAA,EAASvB,MAAAA,CAAOuB,OAAO,IAAI,SAAA;gBAC3BmC,UAAAA,EAAW,KAAA;gBACXC,aAAAA,EAAc,KAAA;AACdC,gBAAAA,OAAAA,EAAS5D,OAAO4D,OAAO;gBACvBnC,IAAAA,EAAMD,UAAAA;AAELxB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOY;;AAETZ,YAAAA,MAAAA,CAAO4C,MAAM,EAAEnB,IAAAA,KAAS,QAAA,iBACvBf,cAAA,CAACmD,2BAAAA,EAAAA;AACE,gBAAA,GAAG7D,OAAO4C,MAAM;AACjBrB,gBAAAA,OAAAA,EAASvB,MAAAA,CAAO4C,MAAM,EAAErB,OAAAA,IAAWvB,OAAOuB,OAAO;gBACjDuC,MAAAA,EAAQ3B,QAAAA,KAAanC,OAAOnB,EAAE;gBAC9BsE,OAAAA,EAASE;AAET,aAAA,CAAA,GAAA,IAAA;AACHrD,YAAAA,MAAAA,CAAO4C,MAAM,EAAEnB,IAAAA,KAAS,OAAA,iBACvBf,cAAA,CAACqD,mBAAAA,EAAAA;AACE,gBAAA,GAAG/D,OAAO4C,MAAM;gBACjBoB,YAAAA,EAAcX,WAAAA;gBACdS,MAAAA,EAAQ3B,QAAAA,KAAanC,OAAOnB;AAE5B,aAAA,CAAA,GAAA;;;AAGV;AAYA,MAAM8C,mBAAAA,GAAsB,CAAC,EAC3BpC,OAAO,EACPiB,QAAQ,EACRI,KAAK,EACLW,OAAAA,GAAU,UAAU,EACK,GAAA;AACzB,IAAA,MAAM,CAACuC,MAAAA,EAAQG,SAAAA,CAAU,GAAG5B,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC3C,IAAA,MAAM,CAACH,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAC9D,MAAM,EAAE9C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE8C,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAC/B,MAAM0B,UAAAA,GAAa3E,OAAAA,CAAQ4E,KAAK,CAAC,CAACnE,MAAAA,GAAWA,MAAAA,CAAOS,QAAQ,CAAA,IAAKlB,OAAAA,CAAQmC,MAAM,KAAK,CAAA;IACpF,MAAM0C,UAAAA,GAAa/B,gBAAAA,CAAMgC,MAAM,CAAoB,IAAA,CAAA;IAEnD,MAAM5B,WAAAA,GAAc,CAACzC,MAAAA,GAAmB,OAAO0C,CAAAA,GAAAA;YAC7C,MAAM,EAAEC,UAAU,IAAM,KAAK,EAAEC,MAAM,EAAE/D,EAAE,EAAE,GAAGmB,MAAAA;YAE9C,MAAM6C,UAAAA,GAAa,MAAMF,OAAAA,CAAQD,CAAAA,CAAAA;YAEjC,IAAIE,MAAAA,IAAU,CAACC,UAAAA,EAAY;AACzB,gBAAA,OAAQD,OAAOnB,IAAI;oBACjB,KAAK,cAAA;wBACHc,kBAAAA,CAAmB;AACjBO,4BAAAA,KAAAA,EAAOF,OAAOE,KAAK;AACnBC,4BAAAA,OAAAA,EAASH,OAAOI,OAAO;AACvBvB,4BAAAA,IAAAA,EAAMmB,OAAOK,MAAM;AACnBC,4BAAAA,OAAAA,EAASN,OAAOM,OAAO;AACvBC,4BAAAA,OAAAA,EAASP,OAAOO;AAClB,yBAAA,CAAA;AACA,wBAAA;oBACF,KAAK,QAAA;oBACL,KAAK,OAAA;wBACHf,WAAAA,CAAYvD,EAAAA,CAAAA;AAChB;AACF,YAAA;AACF,QAAA,CAAA;AAEA,IAAA,MAAMwE,WAAAA,GAAc,IAAA;QAClBjB,WAAAA,CAAY,IAAA,CAAA;QACZ6B,SAAAA,CAAU,KAAA,CAAA;AACZ,IAAA,CAAA;AAEA,IAAA,MAAMK,mBAAmB,CAACC,IAAAA,GAAAA;AACxB,QAAA,IAAI,CAACL,UAAAA,EAAY;YACfD,SAAAA,CAAUM,IAAAA,CAAAA;AACZ,QAAA;AACF,IAAA,CAAA;IAEA,qBACEtD,eAAA,CAACuD,kBAAKC,IAAI,EAAA;QAACF,IAAAA,EAAMT,MAAAA;QAAQY,YAAAA,EAAcJ,gBAAAA;;AACrC,0BAAA5D,cAAA,CAAC8D,kBAAKG,OAAO,EAAA;gBACXC,GAAAA,EAAKR,UAAAA;gBACL3D,QAAAA,EAAUyD,UAAAA;AACVtD,gBAAAA,KAAAA,EACEA,SACApB,aAAAA,CAAc;oBACZX,EAAAA,EAAI,6DAAA;oBACJgC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;gBAEFgE,GAAAA,EAAKC,uBAAAA;AACLtB,gBAAAA,IAAAA,gBAAM9C,cAAA,CAACqE,UAAAA,EAAAA,EAAAA,CAAAA;gBACPxD,OAAAA,EAASA;;AAEX,0BAAAN,eAAA,CAACuD,kBAAKQ,OAAO,EAAA;gBAACC,SAAAA,EAAW/E,SAAAA;gBAAWgF,gBAAAA,EAAiB,YAAA;gBAAaC,QAAAA,EAAS,OAAA;;oBACxE5F,OAAAA,CAAQ6F,GAAG,CAAC,CAACpF,MAAAA,GAAAA;wBACZ,qBACEU,cAAA,CAAC8D,kBAAKa,IAAI,EAAA;AACR5E,4BAAAA,QAAAA,EAAUT,OAAOS,QAAQ;8IAEzB6E,UAAU7C,WAAAA,CAAYzC,MAAAA,CAAAA;4BACtBuF,OAAAA,EAAQ,OAAA;AAERhE,4BAAAA,OAAAA,EAASvB,OAAOuB,OAAO,KAAK,QAAA,GAAWvB,MAAAA,CAAOuB,OAAO,GAAG,SAAA;AACxDgC,4BAAAA,SAAAA,EAAWvD,OAAOwD,IAAI;AAEtB,4BAAA,QAAA,gBAAA9C,cAAA,CAACI,iBAAAA,EAAAA;gCAAK2C,cAAAA,EAAe,eAAA;gCAAgB3B,GAAAA,EAAK,CAAA;AACxC,gCAAA,QAAA,gBAAApB,cAAA,CAACI,iBAAAA,EAAAA;oCAAKgB,GAAAA,EAAK,CAAA;oCAAG+C,GAAAA,EAAI,MAAA;AACf7E,oCAAAA,QAAAA,EAAAA,MAAAA,CAAOY;;;AANPZ,yBAAAA,EAAAA,MAAAA,CAAOnB,EAAE,CAAA;AAWpB,oBAAA,CAAA,CAAA;AACC2B,oBAAAA;;;YAEFjB,OAAAA,CAAQ6F,GAAG,CAAC,CAACpF,MAAAA,GAAAA;gBACZ,qBACEiB,eAAA,CAACoB,iBAAMmD,QAAQ,EAAA;;AACZxF,wBAAAA,MAAAA,CAAO4C,MAAM,EAAEnB,IAAAA,KAAS,QAAA,iBACvBf,cAAA,CAACmD,2BAAAA,EAAAA;AACE,4BAAA,GAAG7D,OAAO4C,MAAM;AACjBrB,4BAAAA,OAAAA,EAASvB,OAAOuB,OAAO;4BACvBuC,MAAAA,EAAQ3B,QAAAA,KAAanC,OAAOnB,EAAE;4BAC9BsE,OAAAA,EAASE;AAET,yBAAA,CAAA,GAAA,IAAA;AACHrD,wBAAAA,MAAAA,CAAO4C,MAAM,EAAEnB,IAAAA,KAAS,OAAA,iBACvBf,cAAA,CAACqD,mBAAAA,EAAAA;AACE,4BAAA,GAAG/D,OAAO4C,MAAM;4BACjBoB,YAAAA,EAAcX,WAAAA;4BACdS,MAAAA,EAAQ3B,QAAAA,KAAanC,OAAOnB;AAE5B,yBAAA,CAAA,GAAA;;AAfemB,iBAAAA,EAAAA,MAAAA,CAAOnB,EAAE,CAAA;AAkBlC,YAAA,CAAA;;;AAGN;AAYA,MAAMgF,8BAA8B,CAAC,EACnCV,OAAO,EACPsC,QAAQ,EACRC,SAAS,EACT5C,KAAK,EACLE,OAAO,EACPc,MAAM,EACNvC,UAAU,WAAW,EACrBqC,OAAO,EAC0B,GAAA;IACjC,MAAM,EAAEpE,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM4D,WAAAA,GAAc,UAAA;AAClB,QAAA,IAAIoC,QAAAA,EAAU;YACZ,MAAMA,QAAAA,EAAAA;AACR,QAAA;AAEAtC,QAAAA,OAAAA,EAAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMwC,aAAAA,GAAgB,UAAA;AACpB,QAAA,IAAID,SAAAA,EAAW;YACb,MAAMA,SAAAA,EAAAA;AACR,QAAA;AAEAvC,QAAAA,OAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,qBACEzC,cAAA,CAACkF,oBAAOnB,IAAI,EAAA;QAACF,IAAAA,EAAMT,MAAAA;QAAQY,YAAAA,EAAcrB,WAAAA;gCACvCpC,eAAA,CAAC2E,oBAAOZ,OAAO,EAAA;;AACb,8BAAAtE,cAAA,CAACkF,oBAAOC,MAAM,EAAA;AAAE/C,oBAAAA,QAAAA,EAAAA;;AAChB,8BAAApC,cAAA,CAACkF,oBAAOE,IAAI,EAAA;AAAE9C,oBAAAA,QAAAA,EAAAA;;AACd,8BAAA/B,eAAA,CAAC2E,oBAAOG,MAAM,EAAA;;AACZ,sCAAArF,cAAA,CAACkF,oBAAOI,MAAM,EAAA;AACZ,4BAAA,QAAA,gBAAAtF,cAAA,CAAC4C,mBAAAA,EAAAA;gCAAO/B,OAAAA,EAAQ,UAAA;gCAAW0E,SAAS,EAAA,IAAA;0CACjCzG,aAAAA,CAAc;oCACbX,EAAAA,EAAI,8BAAA;oCACJgC,cAAAA,EAAgB;AAClB,iCAAA;;;sCAGJH,cAAA,CAAC4C,mBAAAA,EAAAA;4BAAOX,OAAAA,EAASgD,aAAAA;4BAAepE,OAAAA,EAASA,OAAAA;4BAAS0E,SAAS,EAAA,IAAA;4BAACrC,OAAAA,EAASA,OAAAA;sCAClEpE,aAAAA,CAAc;gCACbX,EAAAA,EAAI,+BAAA;gCACJgC,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAMZ,CAAA;AAWA,MAAMkD,sBAAsB,CAAC,EAC3BD,MAAM,EACNhB,KAAK,EACLK,OAAO,EACP+C,MAAAA,EAAQH,MAAM,EACd/C,OAAAA,EAASgC,OAAO,EAChBhB,YAAY,EACa,GAAA;AACzB,IAAA,MAAMX,WAAAA,GAAc,IAAA;AAClB,QAAA,IAAIF,OAAAA,EAAS;AACXA,YAAAA,OAAAA,EAAAA;AACF,QAAA;AAEAa,QAAAA,YAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,qBACEtD,cAAA,CAACyF,mBAAM1B,IAAI,EAAA;QAACF,IAAAA,EAAMT,MAAAA;QAAQY,YAAAA,EAAcrB,WAAAA;gCACtCpC,eAAA,CAACkF,mBAAMnB,OAAO,EAAA;;AACZ,8BAAAtE,cAAA,CAACyF,mBAAMN,MAAM,EAAA;4CACXnF,cAAA,CAACyF,mBAAMC,KAAK,EAAA;AAAEtD,wBAAAA,QAAAA,EAAAA;;;gBAEf,OAAOkC,OAAAA,KAAY,2BAClBtE,cAAA,CAACsE,OAAAA,EAAAA;oBAAQ7B,OAAAA,EAASE;AAElB,iBAAA,CAAA,iBAAA3C,cAAA,CAACyF,mBAAML,IAAI,EAAA;AAAEd,oBAAAA,QAAAA,EAAAA;;gBAEd,OAAOe,MAAAA,KAAW,2BAAarF,cAAA,CAACqF,MAAAA,EAAAA;oBAAO5C,OAAAA,EAASE;AAAkB0C,iBAAAA,CAAAA,GAAAA;;;;AAI3E,CAAA;AAEA,MAAMM,gBAAgB,CAAClI,IAAAA,GAAAA;IACrB,IAAIiC,KAAAA,CAAMC,OAAO,CAAClC,IAAAA,CAAAA,EAAO;QACvB,OAAOA,IAAAA,CAAKiH,GAAG,CAACiB,aAAAA,CAAAA;AAClB,IAAA;AAEA,IAAA,IAAI,OAAOlI,IAAAA,KAAS,QAAA,IAAYA,IAAAA,KAAS,IAAA,EAAM;AAC7C,QAAA,IAAI,aAAaA,IAAAA,EAAM;AACrB,YAAA,OAAOA,KAAKmI,OAAO;AACrB,QAAA;AAEA,QAAA,OAAOC,UAAUF,aAAAA,CAAAA,CAAelI,IAAAA,CAAAA;AAClC,IAAA;IAEA,OAAOA,IAAAA;AACT,CAAA;AAEA;;AAEkG,qGAElG,MAAMqI,aAAAA,GAAyC,CAAC,EAC9CC,SAAS,EACT3H,UAAU,EACV4H,KAAK,EACLC,cAAc,EACdC,IAAI,EACJC,QAAQ,EACT,GAAA;AACC,IAAA,MAAM,EACJC,eAAAA,EAAiB,EAAEC,MAAM,EAAE,EAC5B,GAAGC,qCAAAA,CAAmB,eAAA,CAAA;AAEvB,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;IACjB,MAAM,EAAE3E,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAE2E,+BAAAA,EAAiCC,sBAAsB,EAAE,GAAGC,8BAAAA,EAAAA;IACpE,MAAMC,UAAAA,GAAaC,wBAASC,gBAAAA,CAAAA,KAAe,IAAA;IAC3C,MAAMC,SAAAA,GAAYF,wBAASG,iBAAAA,CAAAA,KAAgB,IAAA;IAC3C,MAAM,EAAE7I,EAAE,EAAE,GAAG8I,wBAAAA,EAAAA;IACf,MAAM,EAAEnI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEmI,UAAU,EAAEC,aAAa,EAAE,GAAGC,4BAAAA,CACpC,eAAA,EACA,CAAC,EAAEF,UAAU,EAAEC,aAAa,EAAE,IAAM;AAAED,YAAAA,UAAAA;AAAYC,YAAAA;SAAc,CAAA,CAAA;AAElE,IAAA,MAAM,EAAEE,OAAO,EAAEC,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;AAC/B,IAAA,MAAMC,YAAYC,yBAAAA,CAAkB,cAAA,EAAgB,CAACC,KAAAA,GAAUA,KAAAA,CAAMF,SAAS,EAAE,KAAA,CAAA;IAChF,MAAM,CACJG,mBAAAA,EACA,EAAEL,SAAAA,EAAWM,uBAAuB,EAAEC,OAAAA,EAASC,qBAAqB,EAAE,CACvE,GAAGC,uCAAAA,EAAAA;AACJ,IAAA,MAAM,CAACC,0BAAAA,EAA4BC,6BAAAA,CAA8B,GAAGtG,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AACnF,IAAA,MAAM,CAACsG,2BAAAA,EAA6BC,8BAAAA,CAA+B,GAAGxG,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AAErF,IAAA,MAAM,CAAC,EAAEwG,QAAQ,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAEvB,IAAA,MAAMC,WAAWC,mBAAAA,CAAQ,eAAA,EAAiB,CAAC,EAAED,QAAQ,EAAE,GAAKA,QAAAA,CAAAA;AAC5D,IAAA,MAAME,gBAAgBD,mBAAAA,CAAQ,eAAA,EAAiB,CAAC,EAAEC,aAAa,EAAE,GAAKA,aAAAA,CAAAA;AACtE,IAAA,MAAMC,eAAeF,mBAAAA,CAAQ,eAAA,EAAiB,CAAC,EAAEE,YAAY,EAAE,GAAKA,YAAAA,CAAAA;AACpE,IAAA,MAAMC,WAAWH,mBAAAA,CAAQ,eAAA,EAAiB,CAACb,KAAAA,GAAUA,MAAMgB,QAAQ,CAAA;AACnE,IAAA,MAAMC,YAAYJ,mBAAAA,CAAQ,eAAA,EAAiB,CAACb,KAAAA,GAAUA,MAAMiB,SAAS,CAAA;AACrE,IAAA,MAAMC,YAAYL,mBAAAA,CAAQ,eAAA,EAAiB,CAACb,KAAAA,GAAUA,MAAMkB,SAAS,CAAA;AACrE,IAAA,MAAMC,aAAaN,mBAAAA,CAAQ,eAAA,EAAiB,CAAC,EAAEO,MAAM,EAAE,GAAKA,MAAAA,CAAAA;AAC5D,IAAA,MAAMC,YAAYR,mBAAAA,CAAQ,eAAA,EAAiB,CAAC,EAAEQ,SAAS,EAAE,GAAKA,SAAAA,CAAAA;AAC9D,IAAA,MAAM,EACJ3C,eAAAA,EAAiB,EAAE4C,UAAU,EAAE,EAChC,GAAG1C,qCAAAA,CAAmB,eAAA,CAAA;;AAGvB,IAAA,MAAM2C,eAAAA,GAAkBC,8BAAAA,CAAiB,eAAA,EAAiB,IAAM,IAAA,EAAM,KAAA,CAAA;AACtE,IAAA,MAAMC,oBAAoBF,eAAAA,IAAmBzJ,SAAAA;AAE7C,IAAA,MAAM4J,WAAWF,8BAAAA,CAAiB,eAAA,EAAiB,CAACxB,KAAAA,GAAUA,MAAM0B,QAAQ,CAAA;IAC5E,MAAM5L,cAAAA,GAAiB0L,+BACrB,eAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMA,KAAK,CAAClK,cAAc,EACrC,KAAA,CAAA;IAEF,MAAME,iBAAAA,GAAoBwL,+BACxB,eAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMA,KAAK,CAAChK,iBAAiB,EACxC,KAAA,CAAA;IAEF,MAAM2L,eAAAA,GAAkBH,+BACtB,eAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMA,KAAK,CAAC2B,eAAe,EACtC,KAAA,CAAA;AAEF,IAAA,MAAMC,mBAAmBJ,8BAAAA,CAAiB,eAAA,EAAiB,CAACxB,KAAAA,GAAUA,MAAM4B,gBAAgB,CAAA;AAE5F,IAAA,MAAMC,qBAAqBC,yBAAAA,CAAc,eAAA,EAAiB,CAACC,CAAAA,GAAMA,EAAEL,QAAQ,CAAA;AAE3E,IAAA,MAAM,EAAEM,mBAAmB,EAAE,GAAGpD,qCAAAA,CAAmB,eAAA,CAAA;IACnD,MAAM,CAACqD,uBAAuB,GAAGC,mCAAAA,EAAAA;AACjC,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGnD,8BAAAA,EAAAA;IAEpD,MAAMoD,WAAAA,GAAcL,mBAAAA,CAAoBtL,UAAU,IAAID,EAAAA;AAEtDwD,IAAAA,gBAAAA,CAAMqI,SAAS,CAAC,IAAA;AACd,QAAA,IAAIlC,qBAAAA,EAAuB;YACzBjG,kBAAAA,CAAmB;gBACjBd,IAAAA,EAAM,QAAA;AACNsB,gBAAAA,OAAAA,EAASvD,aAAAA,CAAc;AACrBX,oBAAAA,EAAAA,EAAI8L,2BAAAA,CAAe,oCAAA,CAAA;oBACnB9J,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC2H,QAAAA,qBAAAA;AAAuBjG,QAAAA,kBAAAA;AAAoB/C,QAAAA;AAAc,KAAA,CAAA;AAE7D6C,IAAAA,gBAAAA,CAAMqI,SAAS,CAAC,IAAA;AACd,QAAA,MAAME,sBAAsB,IAAIC,GAAAA,EAAAA;AAEhC;;;;QAKA,MAAMC,wBAAwB,CAAC3M,IAAAA,GAAAA;AAC7B,YAAA,MAAM4M,SAAAA,GAAY5M,IAAAA,CAAKS,OAAO,IAAI,EAAE;YACpCmM,SAAAA,CAAUC,OAAO,CAAC,CAACC,QAAAA,GAAAA;gBACjB,IAAIA,QAAAA,CAAShI,MAAM,KAAK,OAAA,EAAS;oBAC/B2H,mBAAAA,CAAoBM,GAAG,CAACD,QAAAA,CAASpM,EAAE,CAAA;AACrC,gBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;AAEA;;;;QAKA,MAAMsM,qBAAqB,CAAChN,IAAAA,GAAAA;YAC1BiN,MAAAA,CAAOC,OAAO,CAAClN,IAAAA,CAAAA,CAAM6M,OAAO,CAAC,CAAC,CAACM,KAAKC,KAAAA,CAAM,GAAA;AACxC,gBAAA,IAAID,GAAAA,KAAQ,SAAA,IAAalL,KAAAA,CAAMC,OAAO,CAACkL,KAAAA,CAAAA,EAAQ;oBAC7CT,qBAAAA,CAAsB;wBAAElM,OAAAA,EAAS2M;AAAM,qBAAA,CAAA;AACzC,gBAAA,CAAA,MAAO,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAYA,UAAU,IAAA,EAAM;oBACtDJ,kBAAAA,CAAmBI,KAAAA,CAAAA;AACrB,gBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAEA,IAAI,CAACzM,cAAckK,QAAAA,EAAU;YAC3BmC,kBAAAA,CAAmB5B,UAAAA,CAAAA;AACnBZ,YAAAA,6BAAAA,CAA8BiC,oBAAoBY,IAAI,CAAA;AACxD,QAAA;IACF,CAAA,EAAG;AAAC1M,QAAAA,UAAAA;AAAYkK,QAAAA,QAAAA;AAAUO,QAAAA,UAAAA;AAAYZ,QAAAA;AAA8B,KAAA,CAAA;AAEpEtG,IAAAA,gBAAAA,CAAMqI,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAAC7D,QAAAA,IAAY,CAACA,QAAAA,CAAS/H,UAAU,IAAIwI,UAAAA,EAAY;AACnD,YAAA;AACF,QAAA;AAEA,QAAA,MAAMmE,wBAAAA,GAA2B,UAAA;AAC/B,YAAA,MAAM,EAAEtN,IAAI,EAAEuN,KAAK,EAAE,GAAG,MAAMrD,mBAAAA,CAAoB;AAChD1B,gBAAAA,cAAAA;AACAD,gBAAAA,KAAAA;AACA5H,gBAAAA,UAAAA;AACA6M,gBAAAA,MAAAA,EAAQvB,oBAAoBuB;AAC9B,aAAA,CAAA;AAEA,YAAA,IAAID,KAAAA,EAAO;gBACT,MAAMA,KAAAA;AACR,YAAA;AAEA,YAAA,IAAIvN,IAAAA,EAAM;AACR0K,gBAAAA,8BAAAA,CAA+B1K,KAAKA,IAAI,CAAA;AAC1C,YAAA;AACF,QAAA,CAAA;AAEAsN,QAAAA,wBAAAA,EAAAA;IACF,CAAA,EAAG;AACDnE,QAAAA,UAAAA;AACAT,QAAAA,QAAAA;AACA/H,QAAAA,UAAAA;AACAuJ,QAAAA,mBAAAA;AACA1B,QAAAA,cAAAA;AACAD,QAAAA,KAAAA;AACA0D,QAAAA,mBAAAA,CAAoBuB;AACrB,KAAA,CAAA;AACD,IAAA,MAAMC,0BAAAA,GAA6B7B,eAAAA,EAAiB8B,EAAAA,CAAG,EAAC,CAAA,IAAM7B,gBAAAA;AAC9D,IAAA,MAAM8B,qBAAqBC,uBAAAA,CACzB;AACEjN,QAAAA,UAAAA,EAAY8M,0BAAAA,EAA4B9M,UAAAA;AACxC4H,QAAAA,KAAAA,EAAOkF,0BAAAA,EAA4BlF,KAAAA;AACnCC,QAAAA,cAAAA,EAAgBiF,0BAAAA,EAA4BjF,cAAAA;AAC5CgF,QAAAA,MAAAA,EAAQC,0BAAAA,EAA4BD;KACtC,EACA;AAAEK,QAAAA,IAAAA,EAAM,CAACJ;AAA2B,KAAA,CAAA;IAEtC,MAAM,EAAEK,oBAAoB,EAAE,GAAGC,kBAAAA,EAAAA;AAEjC,IAAA,MAAMC,sBACJ,CAACtF,WAAWuF,sCAAAA,CAA4B,IACtCxF,IAAAA,EAAMyF,eAAAA,CAAgBC,KAAK,CAACC,GAAAA,GAAQA,GAAG,CAACH,sCAAAA,CAA4B,KAAK,IAAA,CAAI,KAC/EvF,UAAU5D,MAAAA,KAAW,UAAA;;AAGvB,IAAA,MAAMuJ,cAAAA,GAAiB,UAAA;QACrBtD,aAAAA,CAAc,IAAA,CAAA;QAEd,IAAI;AACF;;;;UAKA,MAAMuD,QAAQC,OAAO,EAAA;AAErB,YAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMvD,SAAS,IAAA,EAAM;gBACtCnG,MAAAA,EAAQ;AACV,aAAA,CAAA;AACA,YAAA,IAAI0J,MAAAA,EAAQ;gBACV,MAAMC,0BAAAA,GACJ7F,MAAAA,IACAqE,MAAAA,CAAOyB,IAAI,CAAC9F,OAAO+F,UAAU,CAAA,CAAER,IAAI,CAAC,CAACS,SAAAA,GAAAA;AACnC,oBAAA,MAAMC,SAAAA,GAAYjG,MAAAA,CAAO+F,UAAU,CAACC,SAAAA,CAAU;;oBAG9C,IAAIC,SAAAA,CAAUvL,IAAI,KAAK,WAAA,EAAa;AAClC,wBAAA,MAAMwL,kBAAkB,CAACpF,aAAAA,IAAiB,EAAE,EAAE9H,MAAM,CAAC,CAACmN,QACpDA,KAAAA,CAAMC,UAAU,CAAC,CAAA,EAAGJ,SAAAA,CAAU,CAAC,CAAC,CAAA,CAAA;wBAElC,OAAOE,eAAAA,CAAgBvL,MAAM,KAAK,CAAA;AACpC,oBAAA;;oBAGA,OAAOsL,SAAAA,EAAWI,QAAAA,IAAY,CAAC,CAACvF,iBAAiB,EAAC,EAAGvH,QAAQ,CAACyM,SAAAA,CAAAA;AAChE,gBAAA,CAAA,CAAA;AAEF,gBAAA,IAAIH,0BAAAA,EAA4B;oBAC9BrK,kBAAAA,CAAmB;wBACjBd,IAAAA,EAAM,QAAA;AACNsB,wBAAAA,OAAAA,EAASvD,aAAAA,CAAc;4BACrBX,EAAAA,EAAI,4DAAA;4BACJgC,cAAAA,EACE;AACJ,yBAAA;AACF,qBAAA,CAAA;gBACF,CAAA,MAAO;oBACL0B,kBAAAA,CAAmB;wBACjBd,IAAAA,EAAM,QAAA;AACNsB,wBAAAA,OAAAA,EAASvD,aAAAA,CAAc;4BACrBX,EAAAA,EAAI,kCAAA;4BACJgC,cAAAA,EACE;AACJ,yBAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACA,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM,QAAE1C,MAAI,EAAE,GAAGkP,8BAAAA,CAA0BhH,cAAciD,SAAAA,EAAAA,CAAAA,EAAc;AACrEvC,gBAAAA,MAAAA;AACA2C,gBAAAA;AACF,aAAA,CAAA;YACA,MAAM4D,GAAAA,GAAM,MAAMvF,OAAAA,CAChB;AACEpB,gBAAAA,cAAAA;AACAD,gBAAAA,KAAAA;AACA5H,gBAAAA,UAAAA;AACA6M,gBAAAA,MAAAA,EAAQvB,oBAAoBuB;aAC9B,EACAxN,MAAAA,CAAAA;;AAIF,YAAA,IAAI,UAAUmP,GAAAA,EAAK;gBACjB7D,SAAAA,CAAUH,SAAAA,EAAAA,CAAAA;gBACVW,kBAAAA,CAAmB;oBACjBxI,IAAAA,EAAM,uBAAA;oBACN8L,OAAAA,EAAS;wBAACC,wCAAAA,CAA6BxL,cAAc,CAACyL;AAAc;AACtE,iBAAA,CAAA;AACF,YAAA;YAEA,IAAI,MAAA,IAAUH,GAAAA,IAAO3G,cAAAA,KAAmB+G,wBAAAA,EAAc;AACpD;;AAEC,YACD,IAAIjD,WAAAA,KAAgB,QAAA,IAAY,CAACZ,iBAAAA,EAAmB;oBAClD5C,QAAAA,CAAS;AACP0G,wBAAAA,QAAAA,EAAU,CAAC,GAAG,EAAEhH,cAAAA,CAAe,CAAC,EAAED,KAAAA,CAAM,CAAC,EAAE4G,GAAAA,CAAInP,IAAI,CAACW,UAAU,CAAA,CAAE;wBAChE8O,MAAAA,EAAQ9E;AACV,qBAAA,CAAA;AACF,gBAAA,CAAA,MAAO,IAAIe,iBAAAA,EAAmB;AAC5B,oBAAA,MAAMgE,WAAAA,GAAc;wBAClB/O,UAAAA,EAAYwO,GAAAA,CAAInP,IAAI,CAACW,UAAU;AAC/B6H,wBAAAA,cAAAA;AACAD,wBAAAA,KAAAA;AACAiF,wBAAAA,MAAAA,EAAQvB,oBAAoBuB;AAC9B,qBAAA;AAEA;;;;cAKA,IACEzN,cAAAA,IACA6L,eAAAA,KACC6B,0BAAAA,CAA2B9M,UAAU,IACpC8M,0BAAAA,CAA2BjF,cAAc,KAAK+G,wBAAW,CAAA,EAC3D;AACA,wBAAA,MAAMzP,qBACJ2N,0BAAAA,CAA2BjF,cAAc,KAAK+G,wBAAAA,GAC1CzB,oBAAAA,EAAAA,GACAH,mBAAmBG,oBAAoB,EAAA;AAC7C,wBAAA,MAAM6B,oBAAAA,GAAuB/D,eAAAA,CAAgB8B,EAAE,CAAC,CAAC,CAAA,CAAA,IAAM7B,gBAAAA;AAEvD,wBAAA,MAAM+D,eAAe/P,uBAAAA,CACnBC,kBAAAA,EACAC,cAAAA,EACAoP,GAAAA,CAAInP,IAAI,EACRC,iBAAAA,CAAAA;wBAGF,IAAI;4BACF,MAAM4P,SAAAA,GAAY,MAAM3D,sBAAAA,CAAuB;AAC7C1D,gCAAAA,cAAAA,EAAgBmH,qBAAqBnH,cAAc;AACnDD,gCAAAA,KAAAA,EAAOoH,qBAAqBpH,KAAK;AACjC5H,gCAAAA,UAAAA,EACEgP,qBAAqBnH,cAAc,KAAK+G,wBAAAA,GACpCI,oBAAAA,CAAqBhP,UAAU,GAC/BoB,SAAAA;AACNyL,gCAAAA,MAAAA,EAAQmC,qBAAqBnC,MAAM;gCACnCxN,IAAAA,EAAM4P;AACR,6BAAA,CAAA;AAEA,4BAAA,IAAI,WAAWC,SAAAA,EAAW;gCACxBzL,kBAAAA,CAAmB;oCAAEd,IAAAA,EAAM,QAAA;oCAAUsB,OAAAA,EAASyH,cAAAA,CAAewD,UAAUtC,KAAK;AAAE,iCAAA,CAAA;AAC9E,gCAAA;AACF,4BAAA;AACF,wBAAA,CAAA,CAAE,OAAOuC,GAAAA,EAAK;4BACZ1L,kBAAAA,CAAmB;gCACjBd,IAAAA,EAAM,QAAA;AACNsB,gCAAAA,OAAAA,EAASvD,aAAAA,CAAc;oCACrBX,EAAAA,EAAI,oBAAA;oCACJgC,cAAAA,EAAgB;AAClB,iCAAA;AACF,6BAAA,CAAA;4BAEA,MAAMoN,GAAAA;AACR,wBAAA;AACF,oBAAA;oBAEAnE,QAAAA,CAAS;wBACPrI,IAAAA,EAAM,wBAAA;wBACN8L,OAAAA,EAAS;4BAAE1G,QAAAA,EAAUgH,WAAAA;4BAAaK,wBAAAA,EAA0B;AAAK;AACnE,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA,CAAA,MAAO,IACL,OAAA,IAAWZ,GAAAA,IACXa,oBAAAA,CAAiBb,GAAAA,CAAI5B,KAAK,CAAA,IAC1B4B,GAAAA,CAAI5B,KAAK,CAAC0C,IAAI,KAAK,iBAAA,EACnB;gBACA/E,SAAAA,CAAUjC,sBAAAA,CAAuBkG,IAAI5B,KAAK,CAAA,CAAA;AAC5C,YAAA;QACF,CAAA,QAAU;YACRxC,aAAAA,CAAc,KAAA,CAAA;AACd,YAAA,IAAIhB,SAAAA,EAAW;AACbA,gBAAAA,SAAAA,EAAAA;AACF,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMmG,sBAAsB3F,0BAAAA,GAA6BE,2BAAAA;;;AAGzD,IAAA,MAAM0F,yBAAAA,GAA4B,KAAA;IAClC,MAAMC,iBAAAA,GAAoBD,yBAAmD;;AAG7EjM,IAAAA,gBAAAA,CAAMqI,SAAS,CAAC,IAAA;QACd,IAAI,CAAC3D,MAAAA,EAAQyH,OAAAA,EAASC,eAAAA,EAAiB;AACrC,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,gBAAgB,CAAChM,CAAAA,GAAAA;YACrB,IAAIA,CAAAA,CAAE4I,GAAG,KAAK,OAAA,KAAY5I,CAAAA,CAAEiM,OAAO,IAAIjM,CAAAA,CAAEkM,OAAM,CAAA,EAAI;AACjDlM,gBAAAA,CAAAA,CAAEU,cAAc,EAAA;AAChB,gBAAwB;AACtBoJ,oBAAAA,cAAAA,EAAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA,CAAA;QAEAqC,MAAAA,CAAOC,gBAAgB,CAAC,SAAA,EAAWJ,aAAAA,CAAAA;QAEnC,OAAO,IAAA;YACLG,MAAAA,CAAOE,mBAAmB,CAAC,SAAA,EAAWL,aAAAA,CAAAA;AACxC,QAAA,CAAA;IACF,CAAA,EAAG;AAACH,QAAAA,iBAAAA;AAAmB/B,QAAAA,cAAAA;AAAgBzF,QAAAA,MAAAA,EAAQyH,OAAAA,EAASC;AAAgB,KAAA,CAAA;IAExE,IAAI,CAAC1H,MAAAA,EAAQyH,OAAAA,EAASC,eAAAA,EAAiB;QACrC,OAAO,IAAA;AACT,IAAA;IAEA,OAAO;QACLhN,IAAAA,EAAM,SAAA;QACNmC,OAAAA,EAASoE,SAAAA;QACT/H,QAAAA,EAAU;AAAC,YAAA,OAAA;AAAS,YAAA,SAAA;AAAW,YAAA;AAAiB,SAAA;AAChD;;;;;;;;AAQC,QACDQ,QAAAA,EACEgH,SAAAA,IACA0B,YAAAA,IACAb,uBAAAA,IACA7B,cAAc,WAAA,IACb,CAACuC,QAAAA,IAAYmD,mBAAAA,IACb,CAACnD,QAAAA,IAAY,CAACnC,QAAAA,EAAU/H,cACzB,CAAC8I,UAAAA;AACHhH,QAAAA,KAAAA,EAAOpB,aAAAA,CAAc;YACnBX,EAAAA,EAAI,mBAAA;YACJgC,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACA8B,OAAAA,EAAS,UAAA;YAOP,MAAM6J,cAAAA,EAAAA;AACR,QAAA,CAAA;AACA5J,QAAAA,MAAAA,EAAQ2L,iBAAAA,GACJ;YACE9M,IAAAA,EAAM,QAAA;YACNF,OAAAA,EAAS,QAAA;YACT2E,MAAAA,EAAQ,IAAA;AACRpD,YAAAA,KAAAA,EAAOtD,aAAAA,CAAc;gBACnBX,EAAAA,EAAI8L,2BAAAA,CAAe,CAAC,mDAAmD,CAAC,CAAA;gBACxE9J,cAAAA,EAAgB;AAClB,aAAA,CAAA;AACAmC,YAAAA,OAAAA,EAASxD,aAAAA,CACP;gBACEX,EAAAA,EAAI8L,2BAAAA,CAAe,CAAC,qDAAqD,CAAC,CAAA;gBAC1E9J,cAAAA,EACE;aACJ,EACA;gBACEmO,KAAAA,EAAOX;AACT,aAAA,CAAA;YAEF3I,SAAAA,EAAW,UAAA;gBACT,MAAM8G,cAAAA,EAAAA;AACR,YAAA;SACF,GACAtM;AACN,KAAA;AACF,CAAA;AAEAsG,aAAAA,CAAc/E,IAAI,GAAG,SAAA;AACrB+E,aAAAA,CAAcvG,QAAQ,GAAG;AAAC,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAiB,CAAA;AAE/D,MAAMgP,YAAAA,GAAwC,CAAC,EAC7CxI,SAAS,EACT3H,UAAU,EACV4H,KAAK,EACLC,cAAc,EACf,GAAA;AACC,IAAA,MAAMsD,qBAAqBC,yBAAAA,CAAc,cAAA,EAAgB,CAACC,CAAAA,GAAMA,EAAEL,QAAQ,CAAA;AAC1E,IAAA,MAAM7C,QAAAA,GAAWC,0BAAAA,EAAAA;IACjB,MAAM,EAAE3E,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAE2E,+BAAAA,EAAiCC,sBAAsB,EAAE,GAAGC,8BAAAA,EAAAA;AACpE,IAAA,MAAM6H,aAAa3H,uBAAAA,CAASG,iBAAAA,CAAAA;AAC5B,IAAA,MAAMD,YAAYyH,UAAAA,KAAe,IAAA;IACjC,MAAM,EAAE1P,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE0P,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAErH,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;AAC7C,IAAA,MAAM,EACJnB,eAAAA,EAAiB,EAAE4C,UAAU,EAAE,EAChC,GAAG1C,qCAAAA,CAAmB,cAAA,CAAA;AACvB,IAAA,MAAM,CAAC,EAAE8B,QAAQ,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACvB,IAAA,MAAMb,YAAYC,yBAAAA,CAAkB,cAAA,EAAgB,CAACC,KAAAA,GAAUA,KAAAA,CAAMF,SAAS,EAAE,KAAA,CAAA;IAChF,MAAM,EAAE+D,oBAAoB,EAAE,GAAGC,kBAAAA,EAAAA;AAEjC,IAAA,MAAM/C,eAAeF,mBAAAA,CAAQ,cAAA,EAAgB,CAAC,EAAEE,YAAY,EAAE,GAAKA,YAAAA,CAAAA;AACnE,IAAA,MAAMH,WAAWC,mBAAAA,CAAQ,cAAA,EAAgB,CAAC,EAAED,QAAQ,EAAE,GAAKA,QAAAA,CAAAA;AAC3D,IAAA,MAAME,gBAAgBD,mBAAAA,CAAQ,cAAA,EAAgB,CAAC,EAAEC,aAAa,EAAE,GAAKA,aAAAA,CAAAA;AACrE,IAAA,MAAMoG,gBAAgBrG,mBAAAA,CAAQ,cAAA,EAAgB,CAAC,EAAEqG,aAAa,EAAE,GAAKA,aAAAA,CAAAA;AACrE,IAAA,MAAMhG,YAAYL,mBAAAA,CAAQ,cAAA,EAAgB,CAACb,KAAAA,GAAUA,MAAMkB,SAAS,CAAA;AACpE,IAAA,MAAMF,WAAWH,mBAAAA,CAAQ,cAAA,EAAgB,CAACb,KAAAA,GAAUA,MAAMgB,QAAQ,CAAA;AAClE,IAAA,MAAMC,YAAYJ,mBAAAA,CAAQ,cAAA,EAAgB,CAACb,KAAAA,GAAUA,MAAMiB,SAAS,CAAA;AACpE,IAAA,MAAMI,YAAYR,mBAAAA,CAAQ,cAAA,EAAgB,CAAC,EAAEQ,SAAS,EAAE,GAAKA,SAAAA,CAAAA;AAE7D,IAAA,MAAMK,WAAWF,8BAAAA,CAAiB,cAAA,EAAgB,CAACxB,KAAAA,GAAUA,MAAM0B,QAAQ,CAAA;;AAG3E,IAAA,MAAMH,eAAAA,GAAkBC,8BAAAA,CAAiB,cAAA,EAAgB,IAAM,IAAA,EAAM,KAAA,CAAA;IACrE,MAAM2F,qBAAAA,GAAwB3F,+BAC5B,cAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMtB,eAAe,CAACC,MAAM,EACvC,KAAA,CAAA;IAEF,MAAM7I,cAAAA,GAAiB0L,+BACrB,cAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMA,KAAK,CAAClK,cAAc,EACrC,KAAA,CAAA;IAEF,MAAME,iBAAAA,GAAoBwL,+BACxB,eAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMA,KAAK,CAAChK,iBAAiB,EACxC,KAAA,CAAA;IAEF,MAAM2L,eAAAA,GAAkBH,+BACtB,cAAA,EACA,CAACxB,QAAUA,KAAAA,CAAMA,KAAK,CAAC2B,eAAe,EACtC,KAAA,CAAA;AAEF,IAAA,MAAMC,mBAAmBJ,8BAAAA,CAAiB,cAAA,EAAgB,CAACxB,KAAAA,GAAUA,MAAM4B,gBAAgB,CAAA;AAC3F,IAAA,MAAMH,oBAAoBF,eAAAA,IAAmBzJ,SAAAA;AAE7C,IAAA,MAAM,EAAEkK,mBAAmB,EAAE,GAAGpD,qCAAAA,CAAmB,cAAA,CAAA;IACnD,MAAM,CAACqD,uBAAuB,GAAGC,mCAAAA,EAAAA;AACjC,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGnD,8BAAAA,EAAAA;AACpD,IAAA,MAAMuE,0BAAAA,GAA6B7B,eAAAA,EAAiB8B,EAAAA,CAAG,EAAC,CAAA,IAAM7B,gBAAAA;AAC9D,IAAA,MAAM8B,qBAAqBC,uBAAAA,CACzB;AACEjN,QAAAA,UAAAA,EAAY8M,0BAAAA,EAA4B9M,UAAAA;AACxC4H,QAAAA,KAAAA,EAAOkF,0BAAAA,EAA4BlF,KAAAA;AACnCC,QAAAA,cAAAA,EAAgBiF,0BAAAA,EAA4BjF,cAAAA;AAC5CgF,QAAAA,MAAAA,EAAQC,0BAAAA,EAA4BD;KACtC,EACA;AAAEK,QAAAA,IAAAA,EAAM,CAACJ;AAA2B,KAAA,CAAA;IAEtC,MAAM,EAAE7E,MAAM,EAAE,GAAGmF,kBAAAA,EAAAA;AAEnB,IAAA,MAAMsD,YAAAA,GAAe,UAAA;QACnBtG,aAAAA,CAAc,IAAA,CAAA;QAEd,IAAI;AACF,YAAA,IAAI,CAACF,QAAAA,EAAU;AACb,gBAAA;AACF,YAAA;;;;YAKCyG,UAAAA,CAAW5I,QAAQ,EAAE6I,aAAAA,EAA2CC,IAAAA,EAAAA;;;;AAKjE,YAAA,MAAMlD,QAAQC,OAAO,EAAA;AACrB,YAAA,MAAMD,QAAQC,OAAO,EAAA;AAErB,YAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMvD,SAAS,IAAA,EAAM;gBACtCnG,MAAAA,EAAQ;AACV,aAAA,CAAA;AAEA,YAAA,IAAI0J,MAAAA,EAAQ;gBACVpK,kBAAAA,CAAmB;oBACjBd,IAAAA,EAAM,QAAA;AACNsB,oBAAAA,OAAAA,EAASvD,aAAAA,CAAc;wBACrBX,EAAAA,EAAI,kCAAA;wBACJgC,cAAAA,EACE;AACJ,qBAAA;AACF,iBAAA,CAAA;AAEA,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM+O,YAAAA,GAAetG,SAAAA,EAAAA;AAErB,YAAA,IAAI7B,SAAAA,EAAW;gBACb,MAAM6F,GAAAA,GAAM,MAAM+B,KAAAA,CAChB;AACE3I,oBAAAA,KAAAA;oBACA5H,UAAAA,EAAYoQ,UAAAA,CAAWvD,MAAM,CAACkE,MAAM;AACpClE,oBAAAA,MAAAA,EAAQvB,oBAAoBuB;AAC9B,iBAAA,EACAtF,aAAAA,CAAcuJ,YAAAA,CAAAA,CAAAA;AAGhB,gBAAA,IAAI,UAAUtC,GAAAA,EAAK;oBACjBrG,QAAAA,CACE;AACE0G,wBAAAA,QAAAA,EAAU,CAAC,GAAG,EAAEL,IAAInP,IAAI,CAACW,UAAU,CAAA,CAAE;wBACrC8O,MAAAA,EAAQ9E;qBACV,EACA;wBAAEgH,QAAAA,EAAU;AAAO,qBAAA,CAAA;AAEvB,gBAAA,CAAA,MAAO,IACL,OAAA,IAAWxC,GAAAA,IACXa,oBAAAA,CAAiBb,GAAAA,CAAI5B,KAAK,CAAA,IAC1B4B,GAAAA,CAAI5B,KAAK,CAAC0C,IAAI,KAAK,iBAAA,EACnB;oBACA/E,SAAAA,CAAUjC,sBAAAA,CAAuBkG,IAAI5B,KAAK,CAAA,CAAA;AAC5C,gBAAA;YACF,CAAA,MAAO,IAAI5M,UAAAA,IAAc6H,cAAAA,KAAmB+G,wBAAAA,EAAc;AACxD,gBAAA,MAAM,QAAEvP,MAAI,EAAE,GAAGkP,8BAAAA,CAA0BhH,cAAcuJ,YAAAA,CAAAA,EAAe;AACtE7I,oBAAAA,MAAAA,EAAQ8C,oBAAoB0F,qBAAAA,GAAwBxI,MAAAA;AACpDuI,oBAAAA,aAAAA;AACA5F,oBAAAA;AACF,iBAAA,CAAA;gBACA,MAAM4D,GAAAA,GAAM,MAAM8B,MAAAA,CAChB;AACEzI,oBAAAA,cAAAA;AACAD,oBAAAA,KAAAA;AACA5H,oBAAAA,UAAAA;AACA6M,oBAAAA,MAAAA,EAAQvB,oBAAoBuB;iBAC9B,EACAxN,MAAAA,CAAAA;gBAGF,IAAI,OAAA,IAAWmP,GAAAA,IAAOa,oBAAAA,CAAiBb,GAAAA,CAAI5B,KAAK,CAAA,IAAK4B,GAAAA,CAAI5B,KAAK,CAAC0C,IAAI,KAAK,iBAAA,EAAmB;oBACzF/E,SAAAA,CAAUjC,sBAAAA,CAAuBkG,IAAI5B,KAAK,CAAA,CAAA;gBAC5C,CAAA,MAAO;oBACLjC,SAAAA,CAAUmG,YAAAA,CAAAA;AACZ,gBAAA;YACF,CAAA,MAAO;AACL,gBAAA,MAAM,QAAEzR,MAAI,EAAE,GAAGkP,8BAAAA,CAA0BhH,cAAcuJ,YAAAA,CAAAA,EAAe;AACtE7I,oBAAAA,MAAAA,EAAQ8C,oBAAoB0F,qBAAAA,GAAwBxI,MAAAA;AACpDuI,oBAAAA,aAAAA;AACA5F,oBAAAA;AACF,iBAAA,CAAA;gBACA,MAAM4D,GAAAA,GAAM,MAAM6B,MAAAA,CAChB;AACEzI,oBAAAA,KAAAA;AACAiF,oBAAAA,MAAAA,EAAQvB,oBAAoBuB;iBAC9B,EACAxN,MAAAA,CAAAA;gBAGF,IAAI,MAAA,IAAUmP,GAAAA,IAAO3G,cAAAA,KAAmB+G,wBAAAA,EAAc;AACpD,oBAAA,IAAI7D,iBAAAA,EAAmB;AACrB,wBAAA,MAAMkG,eAAAA,GAAkB;4BACtBjR,UAAAA,EAAYwO,GAAAA,CAAInP,IAAI,CAACW,UAAU;AAC/B6H,4BAAAA,cAAAA;AACAD,4BAAAA,KAAAA;AACAiF,4BAAAA,MAAAA,EAAQvB,oBAAoBuB;AAC9B,yBAAA;AACA;;;;gBAKA,IACEzN,cAAAA,IACA6L,eAAAA,KACC6B,0BAAAA,CAA2B9M,UAAU,IACpC8M,0BAAAA,CAA2BjF,cAAc,KAAK+G,wBAAW,CAAA,EAC3D;AACA,4BAAA,MAAMzP,qBACJ2N,0BAAAA,CAA2BjF,cAAc,KAAK+G,wBAAAA,GAC1CzB,oBAAAA,EAAAA,GACAH,mBAAmBG,oBAAoB,EAAA;AAE7C,4BAAA,MAAM8B,eAAe/P,uBAAAA,CACnBC,kBAAAA,EACAC,cAAAA,EACAoP,GAAAA,CAAInP,IAAI,EACRC,iBAAAA,CAAAA;4BAGF,IAAI;gCACF,MAAM4P,SAAAA,GAAY,MAAM3D,sBAAAA,CAAuB;AAC7C1D,oCAAAA,cAAAA,EAAgBiF,2BAA2BjF,cAAc;AACzDD,oCAAAA,KAAAA,EAAOkF,2BAA2BlF,KAAK;AACvC5H,oCAAAA,UAAAA,EACE8M,2BAA2BjF,cAAc,KAAK+G,wBAAAA,GAC1C9B,0BAAAA,CAA2B9M,UAAU,GACrCoB,SAAAA;AACNyL,oCAAAA,MAAAA,EAAQC,2BAA2BD,MAAM;oCACzCxN,IAAAA,EAAM;AACJ,wCAAA,GAAG4P;AACL;AACF,iCAAA,CAAA;AACA,gCAAA,IAAI,WAAWC,SAAAA,EAAW;oCACxBzL,kBAAAA,CAAmB;wCAAEd,IAAAA,EAAM,QAAA;wCAAUsB,OAAAA,EAASyH,cAAAA,CAAewD,UAAUtC,KAAK;AAAE,qCAAA,CAAA;AAC9E,oCAAA;AACF,gCAAA;AACF,4BAAA,CAAA,CAAE,OAAOuC,GAAAA,EAAK;gCACZ1L,kBAAAA,CAAmB;oCACjBd,IAAAA,EAAM,QAAA;AACNsB,oCAAAA,OAAAA,EAASvD,aAAAA,CAAc;wCACrBX,EAAAA,EAAI,oBAAA;wCACJgC,cAAAA,EAAgB;AAClB,qCAAA;AACF,iCAAA,CAAA;gCAEA,MAAMoN,GAAAA;AACR,4BAAA;AACF,wBAAA;wBAEAnE,QAAAA,CAAS;4BACPrI,IAAAA,EAAM,wBAAA;4BACN8L,OAAAA,EAAS;gCAAE1G,QAAAA,EAAUkJ,eAAAA;gCAAiB7B,wBAAAA,EAA0B;AAAK;AACvE,yBAAA,CAAA;oBACF,CAAA,MAAO;wBACLjH,QAAAA,CACE;AACE0G,4BAAAA,QAAAA,EAAU,CAAC,GAAG,EAAEL,IAAInP,IAAI,CAACW,UAAU,CAAA,CAAE;4BACrC8O,MAAAA,EAAQ9E;yBACV,EACA;4BAAEkH,OAAAA,EAAS,IAAA;4BAAMF,QAAAA,EAAU;AAAO,yBAAA,CAAA;AAEtC,oBAAA;AACF,gBAAA,CAAA,MAAO,IACL,OAAA,IAAWxC,GAAAA,IACXa,oBAAAA,CAAiBb,GAAAA,CAAI5B,KAAK,CAAA,IAC1B4B,GAAAA,CAAI5B,KAAK,CAAC0C,IAAI,KAAK,iBAAA,EACnB;oBACA/E,SAAAA,CAAUjC,sBAAAA,CAAuBkG,IAAI5B,KAAK,CAAA,CAAA;AAC5C,gBAAA;AACF,YAAA;QACF,CAAA,QAAU;YACRzB,kBAAAA,CAAmB;gBACjBxI,IAAAA,EAAM,uBAAA;gBACN8L,OAAAA,EAAS;oBAACC,wCAAAA,CAA6BxL,cAAc,CAACyL;AAAc;AACtE,aAAA,CAAA;YACAvE,aAAAA,CAAc,KAAA,CAAA;AACd,YAAA,IAAIhB,SAAAA,EAAW;AACbA,gBAAAA,SAAAA,EAAAA;AACF,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;QACLtE,OAAAA,EAASoE,SAAAA;AACT;;;;;AAKC,QACDvH,UAAU0I,YAAAA,IAAiB,CAACH,QAAAA,IAAY,CAACvB,aAAchB,SAAAA,KAAc,WAAA;AACrE7F,QAAAA,KAAAA,EAAOpB,aAAAA,CAAc;YACnBX,EAAAA,EAAI,aAAA;YACJgC,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACA8B,OAAAA,EAAS6M,YAAAA;QACTvP,QAAAA,EAAU;AAAC,YAAA,OAAA;AAAS,YAAA,SAAA;AAAW,YAAA;AAAiB;AAClD,KAAA;AACF,CAAA;AAEAgP,YAAAA,CAAaxN,IAAI,GAAG,QAAA;AACpBwN,YAAAA,CAAahP,QAAQ,GAAG;AAAC,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAiB,CAAA;AAE9D,MAAMgQ,uBAAAA,GAA0B;IAC9BC,IAAAA,EAAM,MAAA;IACNC,OAAAA,EAAS;AACX,CAAA;AAEA,MAAMC,eAAAA,GAA2C,CAAC,EAChD3J,SAAS,EACT3H,UAAU,EACV4H,KAAK,EACLC,cAAc,EACdE,QAAQ,EACT,GAAA;IACC,MAAM,EAAErH,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEsH,MAAM,EAAE,GAAGmF,kBAAAA,EAAAA;AACnB,IAAA,MAAMtE,aAAaE,4BAAAA,CAAgB,iBAAA,EAAmB,CAAC,EAAEF,UAAU,EAAE,GAAKA,UAAAA,CAAAA;IAC1E,MAAM,EAAEyI,SAAS,EAAE,GAAGpI,qCAAAA,EAAAA;AACtB,IAAA,MAAM,CAAC,EAAEqI,KAAK,EAAE,CAAC,GAAGvH,0BAAAA,EAAAA;AACpB,IAAA,MAAM4C,SAAStJ,gBAAAA,CAAMkO,OAAO,CAAC,IAAMC,qBAAiBF,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;IACnE,MAAM,EAAE/N,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,CAACiO,eAAAA,EAAiBC,kBAAAA,CAAmB,GAAGrO,gBAAAA,CAAMC,QAAQ,CAAC,IAAA,CAAA;IAE7D,MAAMqO,kBAAAA,GAAqB9J,UAAU5D,MAAAA,KAAW,UAAA;AAEhD,IAAA,MAAM2N,eAAe,CAACrF,KAAAA,GAAAA;QACpBmF,kBAAAA,CAAmBnF,KAAAA,KAAU0E,wBAAwBC,IAAI,CAAA;AAC3D,IAAA,CAAA;IAEA,IAAI,CAACnJ,MAAAA,EAAQyH,OAAAA,EAASC,eAAAA,EAAiB;QACrC,OAAO,IAAA;AACT,IAAA;IAEA,OAAO;QACLhO,QAAAA,EACE,CAACmH,cACDnB,SAAAA,KAAc,WAAA,IACbI,UAAU5D,MAAAA,KAAW,WAAA,IAAe4D,UAAU5D,MAAAA,KAAW,UAAA;AAC5DrC,QAAAA,KAAAA,EAAOpB,aAAAA,CAAc;YACnBX,EAAAA,EAAI,qBAAA;YACJgC,cAAAA,EAAgB;AAClB,SAAA,CAAA;AACA2C,QAAAA,IAAAA,gBAAM9C,cAAA,CAACmQ,WAAAA,EAAAA,EAAAA,CAAAA;QACPlO,OAAAA,EAAS,UAAA;AACP;;;;AAIC,UACD,IAAI,CAAE7D,UAAAA,IAAc6H,cAAAA,KAAmB+G,4BAAiBiD,kBAAAA,EAAoB;AAC1E,gBAAA,IAAI,CAAC7R,UAAAA,EAAY;;AAEfgS,oBAAAA,OAAAA,CAAQpF,KAAK,CACX,8GAAA,CAAA;oBAGFnJ,kBAAAA,CAAmB;AACjBQ,wBAAAA,OAAAA,EAASvD,aAAAA,CAAc;4BACrBX,EAAAA,EAAI,yCAAA;4BACJgC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACAY,IAAAA,EAAM;AACR,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM4O,SAAAA,CAAU;AACd1J,gBAAAA,cAAAA;AACAD,gBAAAA,KAAAA;AACA5H,gBAAAA,UAAAA;AACA6M,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA,CAAA;AACA/I,QAAAA,MAAAA,EAAQ+N,kBAAAA,GACJ;YACElP,IAAAA,EAAM,QAAA;AACNqB,YAAAA,KAAAA,EAAOtD,aAAAA,CAAc;gBACnBX,EAAAA,EAAI,oCAAA;gBACJgC,cAAAA,EAAgB;AAClB,aAAA,CAAA;AACAmC,YAAAA,OAAAA,gBACE/B,eAAA,CAACH,iBAAAA,EAAAA;gBAAKM,UAAAA,EAAW,YAAA;gBAAaC,SAAAA,EAAU,QAAA;gBAASS,GAAAA,EAAK,CAAA;;kCACpDb,eAAA,CAACH,iBAAAA,EAAAA;wBAAKC,KAAAA,EAAM,MAAA;wBAAOM,SAAAA,EAAU,QAAA;wBAASS,GAAAA,EAAK,CAAA;;0CACzCpB,cAAA,CAACqQ,mBAAAA,EAAAA;gCAAchQ,KAAAA,EAAM,MAAA;gCAAOiQ,MAAAA,EAAO,MAAA;gCAAOC,IAAAA,EAAK;;0CAC/CvQ,cAAA,CAACwQ,uBAAAA,EAAAA;gCAAWrM,GAAAA,EAAI,GAAA;gCAAItD,OAAAA,EAAQ,OAAA;gCAAQ4P,SAAAA,EAAU,QAAA;0CAC3C3R,aAAAA,CAAc;oCACbX,EAAAA,EAAI,+CAAA;oCACJgC,cAAAA,EAAgB;AAClB,iCAAA;;;;AAGJ,kCAAAI,eAAA,CAACmQ,mBAAMC,KAAK,EAAA;AACVC,wBAAAA,YAAAA,EAAcrB,wBAAwBC,IAAI;wBAC1C9B,IAAAA,EAAK,iBAAA;AACLmD,wBAAAA,YAAAA,EAAY/R,aAAAA,CAAc;4BACxBX,EAAAA,EAAI,sDAAA;4BACJgC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2Q,aAAAA,EAAeZ,YAAAA;;AAEf,0CAAAlQ,cAAA,CAAC0Q,mBAAM/L,IAAI,EAAA;gCAACoM,OAAAA,EAAShB,eAAAA;AAAiBlF,gCAAAA,KAAAA,EAAO0E,wBAAwBC,IAAI;0CACtE1Q,aAAAA,CAAc;oCACbX,EAAAA,EAAI,4DAAA;oCACJgC,cAAAA,EAAgB;AAClB,iCAAA;;AAEF,0CAAAH,cAAA,CAAC0Q,mBAAM/L,IAAI,EAAA;AAACoM,gCAAAA,OAAAA,EAAS,CAAChB,eAAAA;AAAiBlF,gCAAAA,KAAAA,EAAO0E,wBAAwBE,OAAO;0CAC1E3Q,aAAAA,CAAc;oCACbX,EAAAA,EAAI,+DAAA;oCACJgC,cAAAA,EAAgB;AAClB,iCAAA;;;;;;YAKR6E,SAAAA,EAAW,UAAA;gBACT,IAAI,CAAC5G,UAAAA,IAAc6H,cAAAA,KAAmB+G,wBAAAA,EAAc;;AAElDoD,oBAAAA,OAAAA,CAAQpF,KAAK,CACX,8GAAA,CAAA;oBAGFnJ,kBAAAA,CAAmB;AACjBQ,wBAAAA,OAAAA,EAASvD,aAAAA,CAAc;4BACrBX,EAAAA,EAAI,yCAAA;4BACJgC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACAY,IAAAA,EAAM;AACR,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,MAAM4O,SAAAA,CACJ;AACE1J,oBAAAA,cAAAA;AACAD,oBAAAA,KAAAA;AACA5H,oBAAAA,UAAAA;AACA6M,oBAAAA;AACF,iBAAA,EACA,CAAC8E,eAAAA,CAAAA;AAEL,YAAA;SACF,GACAvQ,SAAAA;QACJqB,OAAAA,EAAS,QAAA;QACTtB,QAAAA,EAAU;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY;AAClC,KAAA;AACF,CAAA;AAEAmQ,eAAAA,CAAgB3O,IAAI,GAAG,WAAA;AACvB2O,eAAAA,CAAgBnQ,QAAQ,GAAG,OAAA;AAE3B,MAAMyR,aAAAA,GAAyC,CAAC,EAC9CjL,SAAS,EACT3H,UAAU,EACV4H,KAAK,EACLC,cAAc,EACdE,QAAQ,EACT,GAAA;IACC,MAAM,EAAErH,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEsH,MAAM,EAAE,GAAGmF,kBAAAA,EAAAA;AACnB,IAAA,MAAMyF,YAAY7J,4BAAAA,CAAgB,eAAA,EAAiB,CAAC,EAAE6J,SAAS,EAAE,GAAKA,SAAAA,CAAAA;AACtE,IAAA,MAAM,EAAEC,OAAO,EAAE5J,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;AAC/B,IAAA,MAAM,CAAC,EAAEqI,KAAK,EAAE,CAAC,GAAGvH,0BAAAA,EAAAA;AACpB,IAAA,MAAM4C,SAAStJ,gBAAAA,CAAMkO,OAAO,CAAC,IAAMC,qBAAiBF,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,IAAI,CAACvJ,MAAAA,EAAQyH,OAAAA,EAASC,eAAAA,EAAiB;QACrC,OAAO,IAAA;AACT,IAAA;IAEA,OAAO;AACLhO,QAAAA,QAAAA,EAAU,CAACkR,SAAAA,IAAalL,SAAAA,KAAc,WAAA,IAAeI,UAAU5D,MAAAA,KAAW,UAAA;AAC1ErC,QAAAA,KAAAA,EAAOpB,aAAAA,CAAc;YACnBX,EAAAA,EAAI,uCAAA;YACJgC,cAAAA,EAAgB;AAClB,SAAA,CAAA;AACA2C,QAAAA,IAAAA,gBAAM9C,cAAA,CAACmQ,WAAAA,EAAAA,EAAAA,CAAAA;QACP5Q,QAAAA,EAAU;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;QAChCsB,OAAAA,EAAS,QAAA;QACTqB,MAAAA,EAAQ;YACNnB,IAAAA,EAAM,QAAA;AACNqB,YAAAA,KAAAA,EAAOtD,aAAAA,CAAc;gBACnBX,EAAAA,EAAI,oCAAA;gBACJgC,cAAAA,EAAgB;AAClB,aAAA,CAAA;AACAmC,YAAAA,OAAAA,gBACE/B,eAAA,CAACH,iBAAAA,EAAAA;gBAAKO,SAAAA,EAAU,QAAA;gBAASS,GAAAA,EAAK,CAAA;;kCAC5BpB,cAAA,CAACqQ,mBAAAA,EAAAA;wBAAchQ,KAAAA,EAAM,MAAA;wBAAOiQ,MAAAA,EAAO,MAAA;wBAAOC,IAAAA,EAAK;;kCAC/CvQ,cAAA,CAACwQ,uBAAAA,EAAAA;wBAAWrM,GAAAA,EAAI,GAAA;wBAAItD,OAAAA,EAAQ,OAAA;wBAAQ4P,SAAAA,EAAU,QAAA;kCAC3C3R,aAAAA,CAAc;4BACbX,EAAAA,EAAI,6CAAA;4BACJgC,cAAAA,EAAgB;AAClB,yBAAA;;;;YAIN+C,OAAAA,EAASoE,SAAAA;YACTtC,SAAAA,EAAW,UAAA;AACT,gBAAA,MAAMkM,OAAAA,CAAQ;AACZjL,oBAAAA,cAAAA;AACAD,oBAAAA,KAAAA;AACA5H,oBAAAA,UAAAA;AACA6M,oBAAAA;AACF,iBAAA,CAAA;AACF,YAAA;AACF;AACF,KAAA;AACF,CAAA;AAEA+F,aAAAA,CAAcjQ,IAAI,GAAG,SAAA;AACrBiQ,aAAAA,CAAczR,QAAQ,GAAG,OAAA;AAEzB,MAAM4R,eAAAA,GAAkB;AAACrL,IAAAA,aAAAA;AAAeyI,IAAAA,YAAAA;AAAcmB,IAAAA,eAAAA;AAAiBsB,IAAAA;AAAc;;;;;;;"}
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 tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n Menu,\n ButtonProps,\n Tooltip,\n IconButton,\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 type?: 'publish' | 'update' | 'unpublish' | 'discard';\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 isDesktop = useIsDesktop();\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 const addHintTooltip = (action: Action, children: React.ReactNode) => {\n return !action.disabled ? (\n <Tooltip\n label={formatMessage(\n {\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to {action}',\n },\n {\n action: action.label,\n }\n )}\n >\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\n ) : (\n children\n );\n };\n\n const primaryActionContent = (\n <>\n <Flex flex={1} alignItems=\"stretch\" direction=\"column\">\n {addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n buttonType={primaryAction.type === 'publish' ? undefined : 'submit'}\n />\n )}\n </Flex>\n\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 </>\n );\n\n return (\n <Flex direction={{ initial: 'row', large: 'column' }} gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n {isDesktop ? <Flex gap={2}>{primaryActionContent}</Flex> : primaryActionContent}\n </tours.contentManager.Publish>\n {secondaryAction ? (\n <Flex flex={1} order={{ initial: -1, large: 0 }} alignItems=\"stretch\" direction=\"column\">\n {secondaryAction.type === 'publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Omit<Action, 'type'> {\n buttonType?: 'button' | 'submit' | 'reset';\n type?: DocumentActionDescription['type'];\n}\n\nconst DocumentActionButton = ({ buttonType = 'button', ...action }: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: DocumentActionButtonProps) => 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 type={buttonType}\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 const triggerRef = React.useRef<HTMLButtonElement>(null);\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 const handleOpenChange = (open: boolean) => {\n if (!isDisabled) {\n setIsOpen(open);\n }\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={handleOpenChange}>\n <Menu.Trigger\n ref={triggerRef}\n disabled={isDisabled}\n label={\n label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })\n }\n tag={IconButton}\n icon={<More />}\n variant={variant}\n />\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\" maxWidth=\"25rem\">\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 getValues = useForm('PublishAction', (state) => state.getValues);\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 dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n /**\n * Yield one microtask so React can flush any pending field updates from the same task\n * (common with fast local runners / Playwright) before we read values and validate.\n * TODO: replace with an explicit form flush contract when we can (same concern as Save flow).\n */\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField =\n schema &&\n Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n // For components, check if any of the component fields are readable\n if (attribute.type === 'component') {\n const componentFields = (canReadFields ?? []).filter((field) =>\n field.startsWith(`${fieldName}.`)\n );\n return componentFields.length === 0;\n }\n\n // For regular fields, check if the field itself is readable\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\n const { data } = handleInvisibleAttributes(transformData(getValues()), {\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 with current values as new initial values (clears errors/submitting and sets modified to false)\n if ('data' in res) {\n resetForm(getValues());\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\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 // Auto-publish on CMD+Enter on macOS, and CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n if (!hasDraftRelations) {\n performPublish();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [hasDraftRelations, performPublish, schema?.options?.draftAndPublish]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n type: 'publish',\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 dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\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 getValues = useForm('UpdateAction', (state) => state.getValues);\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 suitableSchema = fromRelationModal ? relationalModalSchema : schema;\n const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;\n\n const handleUpdate = async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n // Blur the active element so inputs that debounce into the form (e.g. blocks editor) flush\n // before validate/getValues — on fast clients Save can otherwise read stale field state.\n // Use the global DOM document — form values are not in scope here (avoid shadowing `document`).\n (globalThis.document?.activeElement as HTMLElement | undefined)?.blur();\n\n // Yield microtasks so batched React updates after blur/onChange can settle before validate\n // (same idea as performPublish; two ticks vs one gives a bit more room after focus/blur).\n // TODO: replace with an explicit field/form flush contract when available.\n await Promise.resolve();\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n // enforce \"published\" validation if not using \"draft and published\"\n status: !hasDraftAndPublished ? 'published' : '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 const latestValues = getValues();\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(latestValues)\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(latestValues), {\n schema: suitableSchema,\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(latestValues);\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\n schema: suitableSchema,\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 dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\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","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","addHintTooltip","children","disabled","_jsx","Tooltip","label","defaultMessage","Flex","width","primaryActionContent","_jsxs","_Fragment","flex","alignItems","direction","DocumentActionButton","variant","buttonType","type","length","DocumentActionsMenu","initial","large","gap","tours","contentManager","Publish","order","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","title","message","content","status","timeout","onClose","preventDefault","handleClose","Button","startIcon","icon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","setIsOpen","isDisabled","every","triggerRef","useRef","handleOpenChange","open","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","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","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","size","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","componentFields","field","startsWith","required","handleInvisibleAttributes","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","options","draftAndPublish","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","suitableSchema","hasDraftAndPublished","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","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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"}
@@ -777,6 +777,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
777
777
  skip: !parentDocumentMetaToUpdate
778
778
  });
779
779
  const { schema } = useDoc();
780
+ const suitableSchema = fromRelationModal ? relationalModalSchema : schema;
781
+ const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;
780
782
  const handleUpdate = async ()=>{
781
783
  setSubmitting(true);
782
784
  try {
@@ -793,7 +795,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
793
795
  await Promise.resolve();
794
796
  await Promise.resolve();
795
797
  const { errors } = await validate(true, {
796
- status: 'draft'
798
+ // enforce "published" validation if not using "draft and published"
799
+ status: !hasDraftAndPublished ? 'published' : 'draft'
797
800
  });
798
801
  if (errors) {
799
802
  toggleNotification({
@@ -824,7 +827,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
824
827
  }
825
828
  } else if (documentId || collectionType === SINGLE_TYPES) {
826
829
  const { data } = handleInvisibleAttributes(transformData(latestValues), {
827
- schema: fromRelationModal ? relationalModalSchema : schema,
830
+ schema: suitableSchema,
828
831
  initialValues,
829
832
  components
830
833
  });
@@ -841,7 +844,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
841
844
  }
842
845
  } else {
843
846
  const { data } = handleInvisibleAttributes(transformData(latestValues), {
844
- schema: fromRelationModal ? relationalModalSchema : schema,
847
+ schema: suitableSchema,
845
848
  initialValues,
846
849
  components
847
850
  });