@strapi/content-manager 5.58.0 → 5.59.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 (159) 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/hooks/useDocumentActions.js.map +1 -1
  16. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  18. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  20. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  22. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -2
  24. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -2
  26. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +7 -6
  28. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +7 -6
  30. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +2 -1
  32. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
  34. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js +2 -1
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +2 -1
  38. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
  40. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +4 -3
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -4
  46. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -4
  48. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormLayout.js +4 -4
  56. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormLayout.mjs +4 -4
  58. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  60. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/utils/data.js +3 -3
  62. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  63. package/dist/admin/pages/EditView/utils/data.mjs +3 -3
  64. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  65. package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -3
  66. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  67. package/dist/admin/pages/ListConfiguration/components/Settings.mjs +3 -3
  68. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  69. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +2 -2
  70. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  71. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs +2 -2
  72. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  73. package/dist/admin/pages/ListView/ListViewPage.js +73 -13
  74. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  75. package/dist/admin/pages/ListView/ListViewPage.mjs +74 -14
  76. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  77. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js +1 -1
  78. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  79. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs +1 -1
  80. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  81. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  82. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  83. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -1
  84. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  85. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +4 -1
  86. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  87. package/dist/admin/pages/ListView/components/Filters.js +12 -10
  88. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  89. package/dist/admin/pages/ListView/components/Filters.mjs +12 -10
  90. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  91. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  92. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  93. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +2 -1
  94. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  95. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +2 -1
  96. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  97. package/dist/admin/pages/ListView/utils/applyAttributeRenames.js +68 -0
  98. package/dist/admin/pages/ListView/utils/applyAttributeRenames.js.map +1 -0
  99. package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs +64 -0
  100. package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs.map +1 -0
  101. package/dist/admin/preview/components/PreviewHeader.js +3 -1
  102. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  103. package/dist/admin/preview/components/PreviewHeader.mjs +3 -1
  104. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  105. package/dist/admin/services/relations.js +2 -2
  106. package/dist/admin/services/relations.js.map +1 -1
  107. package/dist/admin/services/relations.mjs +2 -2
  108. package/dist/admin/services/relations.mjs.map +1 -1
  109. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +1 -1
  110. package/dist/admin/src/pages/ListView/utils/applyAttributeRenames.d.ts +12 -0
  111. package/dist/admin/translations/eu.json.js +3 -3
  112. package/dist/admin/translations/eu.json.mjs +3 -3
  113. package/dist/admin/translations/gu.json.js +4 -4
  114. package/dist/admin/translations/gu.json.mjs +4 -4
  115. package/dist/admin/translations/hi.json.js +9 -9
  116. package/dist/admin/translations/hi.json.mjs +9 -9
  117. package/dist/admin/translations/ml.json.js +6 -6
  118. package/dist/admin/translations/ml.json.mjs +6 -6
  119. package/dist/admin/translations/sa.json.js +10 -10
  120. package/dist/admin/translations/sa.json.mjs +10 -10
  121. package/dist/server/homepage/services/homepage.js.map +1 -1
  122. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  123. package/dist/server/preview/services/preview-config.js.map +1 -1
  124. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  125. package/dist/server/register.js +6 -0
  126. package/dist/server/register.js.map +1 -1
  127. package/dist/server/register.mjs +6 -0
  128. package/dist/server/register.mjs.map +1 -1
  129. package/dist/server/services/components.js.map +1 -1
  130. package/dist/server/services/components.mjs.map +1 -1
  131. package/dist/server/services/configuration/rename-fields.js +68 -0
  132. package/dist/server/services/configuration/rename-fields.js.map +1 -0
  133. package/dist/server/services/configuration/rename-fields.mjs +66 -0
  134. package/dist/server/services/configuration/rename-fields.mjs.map +1 -0
  135. package/dist/server/services/utils/configuration/attribute-renames.js +164 -0
  136. package/dist/server/services/utils/configuration/attribute-renames.js.map +1 -0
  137. package/dist/server/services/utils/configuration/attribute-renames.mjs +161 -0
  138. package/dist/server/services/utils/configuration/attribute-renames.mjs.map +1 -0
  139. package/dist/server/services/utils/configuration/attributes.js +12 -12
  140. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  141. package/dist/server/services/utils/configuration/attributes.mjs +12 -12
  142. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  143. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  144. package/dist/server/src/index.d.ts +2 -0
  145. package/dist/server/src/index.d.ts.map +1 -1
  146. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  147. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  148. package/dist/server/src/register.d.ts.map +1 -1
  149. package/dist/server/src/services/components.d.ts +2 -0
  150. package/dist/server/src/services/components.d.ts.map +1 -1
  151. package/dist/server/src/services/configuration/rename-fields.d.ts +15 -0
  152. package/dist/server/src/services/configuration/rename-fields.d.ts.map +1 -0
  153. package/dist/server/src/services/index.d.ts +2 -0
  154. package/dist/server/src/services/index.d.ts.map +1 -1
  155. package/dist/server/src/services/utils/configuration/attribute-renames.d.ts +57 -0
  156. package/dist/server/src/services/utils/configuration/attribute-renames.d.ts.map +1 -0
  157. package/dist/shared/contracts/content-types.d.ts +5 -0
  158. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  159. package/package.json +6 -6
@@ -63,10 +63,10 @@ const createLayoutFromFields = (fields)=>{
63
63
  * Those fields would be restored if the user restores the history version, which is why it's
64
64
  * important to show them, even if they're not in the normal layout.
65
65
  */ function getRemaingFieldsLayout({ layout, metadatas, schemaAttributes, fieldSizes }) {
66
- const fieldsInLayout = layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name)));
66
+ const fieldsInLayout = new Set(layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name))));
67
67
  const remainingFields = Object.entries(metadatas).reduce((currentRemainingFields, [name, field])=>{
68
68
  // Make sure we do not fields that are not visible, e.g. "id"
69
- if (!fieldsInLayout.includes(name) && field.edit.visible === true) {
69
+ if (!fieldsInLayout.has(name) && field.edit.visible === true) {
70
70
  const attribute = schemaAttributes[name];
71
71
  // @ts-expect-error not sure why attribute causes type error
72
72
  currentRemainingFields.push({
@@ -170,7 +170,7 @@ const FormPanel = ({ panel })=>{
170
170
  direction: "column",
171
171
  alignItems: "stretch",
172
172
  gap: 6,
173
- children: panel.map((row, gridRowIndex)=>{
173
+ children: panel.map((row)=>{
174
174
  const visibleFields = row.filter(isFieldVisible);
175
175
  if (visibleFields.length === 0) {
176
176
  return null; // Skip rendering the entire grid row
@@ -191,7 +191,7 @@ const FormPanel = ({ panel })=>{
191
191
  })
192
192
  }, field.name);
193
193
  })
194
- }, gridRowIndex);
194
+ }, row.map((field)=>field.name).join('.'));
195
195
  })
196
196
  })
197
197
  });
@@ -263,10 +263,10 @@ const VersionContent = ()=>{
263
263
  children: [
264
264
  ...layout,
265
265
  ...remainingFieldsLayout
266
- ].map((panel, index)=>{
266
+ ].map((panel)=>{
267
267
  return /*#__PURE__*/ jsxRuntime.jsx(FormPanel, {
268
268
  panel: panel
269
- }, index);
269
+ }, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
270
270
  })
271
271
  })
272
272
  }, version.id),
@@ -325,10 +325,10 @@ const VersionContent = ()=>{
325
325
  alignItems: "stretch",
326
326
  gap: 6,
327
327
  position: "relative",
328
- children: unknownFieldsLayout.map((panel, index)=>{
328
+ children: unknownFieldsLayout.map((panel)=>{
329
329
  return /*#__PURE__*/ jsxRuntime.jsx(FormPanel, {
330
330
  panel: panel
331
- }, index);
331
+ }, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
332
332
  })
333
333
  })
334
334
  }, `${version.id}-unknownFields`)
@@ -1 +1 @@
1
- {"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","Set","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
1
+ {"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>, Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = new Set(\n layout.flatMap((panel) => panel.flatMap((row) => row.flatMap((field) => field.name)))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.has(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root\n key={row.map((field) => field.name).join('.')}\n gap={{ initial: 6, medium: 4 }}\n >\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","Set","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","has","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","visibleFields","filter","col","join","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
@@ -38,10 +38,10 @@ const createLayoutFromFields = (fields)=>{
38
38
  * Those fields would be restored if the user restores the history version, which is why it's
39
39
  * important to show them, even if they're not in the normal layout.
40
40
  */ function getRemaingFieldsLayout({ layout, metadatas, schemaAttributes, fieldSizes }) {
41
- const fieldsInLayout = layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name)));
41
+ const fieldsInLayout = new Set(layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name))));
42
42
  const remainingFields = Object.entries(metadatas).reduce((currentRemainingFields, [name, field])=>{
43
43
  // Make sure we do not fields that are not visible, e.g. "id"
44
- if (!fieldsInLayout.includes(name) && field.edit.visible === true) {
44
+ if (!fieldsInLayout.has(name) && field.edit.visible === true) {
45
45
  const attribute = schemaAttributes[name];
46
46
  // @ts-expect-error not sure why attribute causes type error
47
47
  currentRemainingFields.push({
@@ -145,7 +145,7 @@ const FormPanel = ({ panel })=>{
145
145
  direction: "column",
146
146
  alignItems: "stretch",
147
147
  gap: 6,
148
- children: panel.map((row, gridRowIndex)=>{
148
+ children: panel.map((row)=>{
149
149
  const visibleFields = row.filter(isFieldVisible);
150
150
  if (visibleFields.length === 0) {
151
151
  return null; // Skip rendering the entire grid row
@@ -166,7 +166,7 @@ const FormPanel = ({ panel })=>{
166
166
  })
167
167
  }, field.name);
168
168
  })
169
- }, gridRowIndex);
169
+ }, row.map((field)=>field.name).join('.'));
170
170
  })
171
171
  })
172
172
  });
@@ -238,10 +238,10 @@ const VersionContent = ()=>{
238
238
  children: [
239
239
  ...layout,
240
240
  ...remainingFieldsLayout
241
- ].map((panel, index)=>{
241
+ ].map((panel)=>{
242
242
  return /*#__PURE__*/ jsx(FormPanel, {
243
243
  panel: panel
244
- }, index);
244
+ }, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
245
245
  })
246
246
  })
247
247
  }, version.id),
@@ -300,10 +300,10 @@ const VersionContent = ()=>{
300
300
  alignItems: "stretch",
301
301
  gap: 6,
302
302
  position: "relative",
303
- children: unknownFieldsLayout.map((panel, index)=>{
303
+ children: unknownFieldsLayout.map((panel)=>{
304
304
  return /*#__PURE__*/ jsx(FormPanel, {
305
305
  panel: panel
306
- }, index);
306
+ }, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
307
307
  })
308
308
  })
309
309
  }, `${version.id}-unknownFields`)
@@ -1 +1 @@
1
- {"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","Set","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
1
+ {"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>, Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = new Set(\n layout.flatMap((panel) => panel.flatMap((row) => row.flatMap((field) => field.name)))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.has(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root\n key={row.map((field) => field.name).join('.')}\n gap={{ initial: 6, medium: 4 }}\n >\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","Set","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","has","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","visibleFields","filter","col","join","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"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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"}