@strapi/content-manager 5.58.0 → 5.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +4 -3
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +4 -3
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/RelativeTime.js +2 -1
  6. package/dist/admin/components/RelativeTime.js.map +1 -1
  7. package/dist/admin/components/RelativeTime.mjs +2 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/content-manager.js.map +1 -1
  10. package/dist/admin/content-manager.mjs.map +1 -1
  11. package/dist/admin/history/components/VersionContent.js +8 -8
  12. package/dist/admin/history/components/VersionContent.js.map +1 -1
  13. package/dist/admin/history/components/VersionContent.mjs +8 -8
  14. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionInputRenderer.js +2 -1
  16. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  17. package/dist/admin/history/components/VersionInputRenderer.mjs +2 -1
  18. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  22. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  24. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  26. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +3 -2
  28. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +3 -2
  30. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +8 -6
  32. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +8 -6
  34. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +2 -1
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
  38. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js +2 -1
  40. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +2 -1
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +6 -3
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +6 -3
  46. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  48. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -4
  50. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -4
  52. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  56. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormLayout.js +5 -4
  60. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormLayout.mjs +5 -4
  62. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/InputRenderer.js +3 -1
  64. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -1
  66. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  68. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/utils/data.js +3 -3
  70. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  71. package/dist/admin/pages/EditView/utils/data.mjs +3 -3
  72. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  73. package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -3
  74. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  75. package/dist/admin/pages/ListConfiguration/components/Settings.mjs +3 -3
  76. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  77. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +2 -2
  78. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  79. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs +2 -2
  80. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  81. package/dist/admin/pages/ListView/ListViewPage.js +73 -13
  82. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  83. package/dist/admin/pages/ListView/ListViewPage.mjs +74 -14
  84. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  85. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js +1 -1
  86. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  87. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs +1 -1
  88. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  89. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  90. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  91. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -1
  92. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  93. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +4 -1
  94. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  95. package/dist/admin/pages/ListView/components/Filters.js +12 -10
  96. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  97. package/dist/admin/pages/ListView/components/Filters.mjs +12 -10
  98. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  99. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  100. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  101. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +2 -1
  102. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  103. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +2 -1
  104. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  105. package/dist/admin/pages/ListView/utils/applyAttributeRenames.js +68 -0
  106. package/dist/admin/pages/ListView/utils/applyAttributeRenames.js.map +1 -0
  107. package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs +64 -0
  108. package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs.map +1 -0
  109. package/dist/admin/preview/components/PreviewHeader.js +3 -1
  110. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  111. package/dist/admin/preview/components/PreviewHeader.mjs +3 -1
  112. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  113. package/dist/admin/preview/components/PreviewSidePanel.js +2 -1
  114. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  115. package/dist/admin/preview/components/PreviewSidePanel.mjs +2 -1
  116. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  117. package/dist/admin/preview/utils/getPreviewUrlStatus.js +17 -0
  118. package/dist/admin/preview/utils/getPreviewUrlStatus.js.map +1 -0
  119. package/dist/admin/preview/utils/getPreviewUrlStatus.mjs +15 -0
  120. package/dist/admin/preview/utils/getPreviewUrlStatus.mjs.map +1 -0
  121. package/dist/admin/services/relations.js +2 -2
  122. package/dist/admin/services/relations.js.map +1 -1
  123. package/dist/admin/services/relations.mjs +2 -2
  124. package/dist/admin/services/relations.mjs.map +1 -1
  125. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +1 -1
  126. package/dist/admin/src/history/components/VersionInputRenderer.d.ts +3 -1
  127. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -0
  128. package/dist/admin/src/pages/ListView/utils/applyAttributeRenames.d.ts +12 -0
  129. package/dist/admin/src/preview/utils/getPreviewUrlStatus.d.ts +6 -0
  130. package/dist/admin/translations/eu.json.js +3 -3
  131. package/dist/admin/translations/eu.json.mjs +3 -3
  132. package/dist/admin/translations/gu.json.js +4 -4
  133. package/dist/admin/translations/gu.json.mjs +4 -4
  134. package/dist/admin/translations/hi.json.js +9 -9
  135. package/dist/admin/translations/hi.json.mjs +9 -9
  136. package/dist/admin/translations/ml.json.js +6 -6
  137. package/dist/admin/translations/ml.json.mjs +6 -6
  138. package/dist/admin/translations/sa.json.js +10 -10
  139. package/dist/admin/translations/sa.json.mjs +10 -10
  140. package/dist/server/controllers/relations.js +48 -16
  141. package/dist/server/controllers/relations.js.map +1 -1
  142. package/dist/server/controllers/relations.mjs +49 -17
  143. package/dist/server/controllers/relations.mjs.map +1 -1
  144. package/dist/server/history/services/history.js +1 -1
  145. package/dist/server/history/services/history.js.map +1 -1
  146. package/dist/server/history/services/history.mjs +1 -1
  147. package/dist/server/history/services/history.mjs.map +1 -1
  148. package/dist/server/homepage/services/homepage.js.map +1 -1
  149. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  150. package/dist/server/mcp/schemas/filters-schema.js +10 -2
  151. package/dist/server/mcp/schemas/filters-schema.js.map +1 -1
  152. package/dist/server/mcp/schemas/filters-schema.mjs +10 -2
  153. package/dist/server/mcp/schemas/filters-schema.mjs.map +1 -1
  154. package/dist/server/preview/controllers/validation/preview.js +1 -1
  155. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  156. package/dist/server/preview/controllers/validation/preview.mjs +2 -2
  157. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  158. package/dist/server/preview/services/preview-config.js.map +1 -1
  159. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  160. package/dist/server/register.js +6 -0
  161. package/dist/server/register.js.map +1 -1
  162. package/dist/server/register.mjs +6 -0
  163. package/dist/server/register.mjs.map +1 -1
  164. package/dist/server/services/components.js.map +1 -1
  165. package/dist/server/services/components.mjs.map +1 -1
  166. package/dist/server/services/configuration/rename-fields.js +68 -0
  167. package/dist/server/services/configuration/rename-fields.js.map +1 -0
  168. package/dist/server/services/configuration/rename-fields.mjs +66 -0
  169. package/dist/server/services/configuration/rename-fields.mjs.map +1 -0
  170. package/dist/server/services/document-metadata.js +1 -1
  171. package/dist/server/services/document-metadata.js.map +1 -1
  172. package/dist/server/services/document-metadata.mjs +1 -1
  173. package/dist/server/services/document-metadata.mjs.map +1 -1
  174. package/dist/server/services/utils/configuration/attribute-renames.js +164 -0
  175. package/dist/server/services/utils/configuration/attribute-renames.js.map +1 -0
  176. package/dist/server/services/utils/configuration/attribute-renames.mjs +161 -0
  177. package/dist/server/services/utils/configuration/attribute-renames.mjs.map +1 -0
  178. package/dist/server/services/utils/configuration/attributes.js +12 -12
  179. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  180. package/dist/server/services/utils/configuration/attributes.mjs +12 -12
  181. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  182. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  183. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  184. package/dist/server/src/index.d.ts +2 -0
  185. package/dist/server/src/index.d.ts.map +1 -1
  186. package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
  187. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  188. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  189. package/dist/server/src/register.d.ts.map +1 -1
  190. package/dist/server/src/services/components.d.ts +2 -0
  191. package/dist/server/src/services/components.d.ts.map +1 -1
  192. package/dist/server/src/services/configuration/rename-fields.d.ts +15 -0
  193. package/dist/server/src/services/configuration/rename-fields.d.ts.map +1 -0
  194. package/dist/server/src/services/index.d.ts +2 -0
  195. package/dist/server/src/services/index.d.ts.map +1 -1
  196. package/dist/server/src/services/utils/configuration/attribute-renames.d.ts +57 -0
  197. package/dist/server/src/services/utils/configuration/attribute-renames.d.ts.map +1 -0
  198. package/dist/shared/contracts/content-types.d.ts +5 -0
  199. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  200. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"VersionInputRenderer.mjs","sources":["../../../../admin/src/history/components/VersionInputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const emptyLabel = formatMessage({\n id: 'content-manager.containers.empty-label',\n defaultMessage: 'Untitled',\n });\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n // Be defensive about the shape: admin-user relations are sanitized to a\n // plain user object on the server, and historical version data can carry\n // shapes that pre-date the `{ results, meta }` contract. Treat anything\n // without an array `results` as \"no relations\".\n const hasResultsShape =\n !!formattedFieldValue &&\n typeof formattedFieldValue === 'object' &&\n Array.isArray((formattedFieldValue as { results?: unknown }).results);\n const missingCount =\n hasResultsShape &&\n typeof (formattedFieldValue as { meta?: { missingCount?: number } }).meta?.missingCount ===\n 'number'\n ? (formattedFieldValue as { meta: { missingCount: number } }).meta.missingCount\n : 0;\n\n if (\n !hasResultsShape ||\n ((formattedFieldValue as { results: unknown[] }).results.length === 0 && missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue as {\n results: RelationResult[];\n meta: { missingCount: number };\n };\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField, emptyLabel);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: unknown) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, unknown> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n const nextNode =\n typeof node[key] === 'object' && node[key] !== null && Array.isArray(node[key]) === false\n ? (node[key] as Record<string, unknown>)\n : {};\n node[key] = nextNode;\n node = nextNode;\n }\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField<{ results: unknown[]; meta: { missingCount: number } }>(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * Resolve the layout, configuration metadata and schema attributes needed to\n * render a component field on the history page. Returns `null` when any of\n * those are missing — happens when the component schema referenced by the\n * version was deleted via the Content-Type Builder, in which case the caller\n * should render a fallback instead of crashing on the destructuring.\n */\nconst resolveComponentRenderResources = (\n componentUID: string,\n componentsLayout: { [uid: string]: { layout: unknown } | undefined },\n configurationComponents: { [uid: string]: { metadatas: unknown } | undefined },\n components: { [uid: string]: { attributes: unknown } | undefined }\n) => {\n const componentLayout = componentsLayout[componentUID];\n const componentConfiguration = configurationComponents[componentUID];\n const componentSchema = components[componentUID];\n\n if (!componentLayout || !componentConfiguration || !componentSchema) {\n return null;\n }\n\n return {\n layout: componentLayout.layout,\n metadatas: componentConfiguration.metadatas,\n schemaAttributes: componentSchema.attributes,\n };\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component': {\n const renderResources = resolveComponentRenderResources(\n props.attribute.component,\n componentsLayout,\n configuration.components,\n components\n );\n\n // The component schema referenced by this version is no longer present\n // (deleted via the Content-Type Builder). Render the label only so the\n // rest of the page still loads instead of crashing on the lookups below.\n if (!renderResources) {\n return <Field.Label>{props.label}</Field.Label>;\n }\n\n const { layout, metadatas, schemaAttributes } = renderResources as {\n layout: Array<EditFieldLayout[]>;\n metadatas: Parameters<typeof getRemaingFieldsLayout>[0]['metadatas'];\n schemaAttributes: Parameters<typeof getRemaingFieldsLayout>[0]['schemaAttributes'];\n };\n\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas,\n fieldSizes,\n schemaAttributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n }\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer, CustomRelationInput, resolveComponentRenderResources };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","emptyLabel","id","defaultMessage","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","hasResultsShape","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","nextNode","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","resolveComponentRenderResources","componentUID","componentsLayout","configurationComponents","components","componentLayout","componentConfiguration","componentSchema","layout","metadatas","schemaAttributes","attributes","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","renderResources","component","remainingFieldsLayout","getRemaingFieldsLayout","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps"],"mappings":"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"}
1
+ {"version":3,"file":"VersionInputRenderer.mjs","sources":["../../../../admin/src/history/components/VersionInputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const emptyLabel = formatMessage({\n id: 'content-manager.containers.empty-label',\n defaultMessage: 'Untitled',\n });\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n // Be defensive about the shape: admin-user relations are sanitized to a\n // plain user object on the server, and historical version data can carry\n // shapes that pre-date the `{ results, meta }` contract. Treat anything\n // without an array `results` as \"no relations\".\n const hasResultsShape =\n !!formattedFieldValue &&\n typeof formattedFieldValue === 'object' &&\n Array.isArray((formattedFieldValue as { results?: unknown }).results);\n const missingCount =\n hasResultsShape &&\n typeof (formattedFieldValue as { meta?: { missingCount?: number } }).meta?.missingCount ===\n 'number'\n ? (formattedFieldValue as { meta: { missingCount: number } }).meta.missingCount\n : 0;\n\n if (\n !hasResultsShape ||\n ((formattedFieldValue as { results: unknown[] }).results.length === 0 && missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue as {\n results: RelationResult[];\n meta: { missingCount: number };\n };\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField, emptyLabel);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: unknown) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, unknown> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n const nextNode =\n typeof node[key] === 'object' && node[key] !== null && Array.isArray(node[key]) === false\n ? (node[key] as Record<string, unknown>)\n : {};\n node[key] = nextNode;\n node = nextNode;\n }\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField<{ results: unknown[]; meta: { missingCount: number } }>(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n /** Passed down by component and dynamic zone layouts; not used here. */\n size?: number;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * Resolve the layout, configuration metadata and schema attributes needed to\n * render a component field on the history page. Returns `null` when any of\n * those are missing — happens when the component schema referenced by the\n * version was deleted via the Content-Type Builder, in which case the caller\n * should render a fallback instead of crashing on the destructuring.\n */\nconst resolveComponentRenderResources = (\n componentUID: string,\n componentsLayout: { [uid: string]: { layout: unknown } | undefined },\n configurationComponents: { [uid: string]: { metadatas: unknown } | undefined },\n components: { [uid: string]: { attributes: unknown } | undefined }\n) => {\n const componentLayout = componentsLayout[componentUID];\n const componentConfiguration = configurationComponents[componentUID];\n const componentSchema = components[componentUID];\n\n if (!componentLayout || !componentConfiguration || !componentSchema) {\n return null;\n }\n\n return {\n layout: componentLayout.layout,\n metadatas: componentConfiguration.metadatas,\n schemaAttributes: componentSchema.attributes,\n };\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n // Not spread with the rest: design-system inputs have a `size` prop of their own.\n size: _size,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component': {\n const renderResources = resolveComponentRenderResources(\n props.attribute.component,\n componentsLayout,\n configuration.components,\n components\n );\n\n // The component schema referenced by this version is no longer present\n // (deleted via the Content-Type Builder). Render the label only so the\n // rest of the page still loads instead of crashing on the lookups below.\n if (!renderResources) {\n return <Field.Label>{props.label}</Field.Label>;\n }\n\n const { layout, metadatas, schemaAttributes } = renderResources as {\n layout: Array<EditFieldLayout[]>;\n metadatas: Parameters<typeof getRemaingFieldsLayout>[0]['metadatas'];\n schemaAttributes: Parameters<typeof getRemaingFieldsLayout>[0]['schemaAttributes'];\n };\n\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas,\n fieldSizes,\n schemaAttributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n }\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer, CustomRelationInput, resolveComponentRenderResources };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","emptyLabel","id","defaultMessage","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","hasResultsShape","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","nextNode","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","resolveComponentRenderResources","componentUID","componentsLayout","configurationComponents","components","componentLayout","componentConfiguration","componentSchema","layout","metadatas","schemaAttributes","attributes","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","size","_size","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","renderResources","component","remainingFieldsLayout","getRemaingFieldsLayout","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useGetAiFeatureConfigQuery, useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: unknown; meta?: unknown; error?: unknown }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: unknown; error?: unknown }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype QueryParams = Record<string, unknown>;\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const isAiAvailable = useAIAvailability();\n const { data: aiFeatureConfig } = useGetAiFeatureConfigQuery(undefined, {\n skip: !isAiAvailable,\n });\n const isAiI18nConfigured = Boolean(aiFeatureConfig?.isAiI18nConfigured);\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', {\n documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n cloneDocument,\n trackUsage,\n toggleNotification,\n formatMessage,\n formatAPIError,\n navigate,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","isAiAvailable","useAIAvailability","data","aiFeatureConfig","useGetAiFeatureConfigQuery","undefined","skip","isAiI18nConfigured","Boolean","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
1
+ {"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useGetAiFeatureConfigQuery, useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: unknown; meta?: unknown; error?: unknown }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: unknown; error?: unknown }> =\n Pick<TResponse, 'data'> | { error: BaseQueryError | SerializedError };\n\ntype QueryParams = Record<string, unknown>;\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const isAiAvailable = useAIAvailability();\n const { data: aiFeatureConfig } = useGetAiFeatureConfigQuery(undefined, {\n skip: !isAiAvailable,\n });\n const isAiI18nConfigured = Boolean(aiFeatureConfig?.isAiI18nConfigured);\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', {\n documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n cloneDocument,\n trackUsage,\n toggleNotification,\n formatMessage,\n formatAPIError,\n navigate,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","isAiAvailable","useAIAvailability","data","aiFeatureConfig","useGetAiFeatureConfigQuery","undefined","skip","isAiI18nConfigured","Boolean","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}