@strapi/content-manager 5.49.0 → 5.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/DragLayer.js.map +1 -1
- package/dist/admin/components/DragLayer.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +66 -67
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +68 -69
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js +3 -3
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs +3 -3
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/history/routes.js.map +1 -1
- package/dist/admin/history/routes.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +15 -8
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +15 -8
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +21 -7
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +23 -9
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +168 -78
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +168 -79
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +6 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +8 -5
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +8 -5
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +5 -4
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +5 -4
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js +117 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js.map +1 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs +109 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs.map +1 -0
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +71 -11
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +73 -13
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +5 -3
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +5 -3
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +37 -0
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +39 -2
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +28 -3
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +28 -4
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js +8 -7
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +8 -7
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +40 -11
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +41 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/routes.js.map +1 -1
- package/dist/admin/preview/routes.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +9 -15
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +10 -15
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
- package/dist/admin/router.js.map +1 -1
- package/dist/admin/router.mjs.map +1 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/components/ComponentIcon.d.ts +4 -3
- package/dist/admin/src/components/DragLayer.d.ts +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +1 -2
- package/dist/admin/src/content-manager.d.ts +15 -15
- package/dist/admin/src/history/routes.d.ts +2 -2
- package/dist/admin/src/history/services/historyVersion.d.ts +3 -3
- package/dist/admin/src/hooks/useContentTypeSchema.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +8 -9
- package/dist/admin/src/hooks/useDocumentActions.d.ts +17 -16
- package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +3 -3
- package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
- package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +0 -1
- package/dist/admin/src/index.d.ts +1 -1
- package/dist/admin/src/modules/app.d.ts +5 -5
- package/dist/admin/src/pages/EditView/EditViewPage.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +12 -1
- package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +4 -4
- package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/Editor.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +19 -20
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.d.ts +7 -1
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +12 -12
- package/dist/admin/src/pages/EditView/utils/draftRelationCounts.d.ts +26 -0
- package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/Filters.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/TableCells/CellContent.d.ts +11 -2
- package/dist/admin/src/pages/ListView/components/TableCells/CellValue.d.ts +1 -1
- package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +1 -1
- package/dist/admin/src/preview/routes.d.ts +2 -2
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +1 -7
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +0 -1
- package/dist/admin/src/router.d.ts +2 -2
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +49 -89
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +8 -22
- package/dist/admin/src/services/uid.d.ts +8 -8
- package/dist/admin/src/utils/api.d.ts +2 -2
- package/dist/admin/src/utils/conditionalFields.d.ts +1 -0
- package/dist/admin/src/utils/layouts/normalizeContentManagerLayout.d.ts +4 -4
- package/dist/admin/src/utils/objects.d.ts +7 -4
- package/dist/admin/src/utils/users.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +2 -1
- package/dist/admin/translations/en.json.js +6 -2
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +6 -2
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +262 -87
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +262 -87
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/utils/api.js +6 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs +6 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/conditionalFields.js.map +1 -1
- package/dist/admin/utils/conditionalFields.mjs.map +1 -1
- package/dist/admin/utils/objects.js +43 -13
- package/dist/admin/utils/objects.js.map +1 -1
- package/dist/admin/utils/objects.mjs +43 -13
- package/dist/admin/utils/objects.mjs.map +1 -1
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +6 -3
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +6 -3
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/relations.js +5 -4
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +5 -4
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +2 -2
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +2 -2
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/validation/model-configuration.js +3 -1
- package/dist/server/controllers/validation/model-configuration.js.map +1 -1
- package/dist/server/controllers/validation/model-configuration.mjs +3 -1
- package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +27 -7
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +27 -7
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/preview/controllers/preview.js +9 -0
- package/dist/server/preview/controllers/preview.js.map +1 -1
- package/dist/server/preview/controllers/preview.mjs +9 -0
- package/dist/server/preview/controllers/preview.mjs.map +1 -1
- package/dist/server/preview/controllers/previewScript.js +1450 -0
- package/dist/server/preview/routes/preview.js +11 -0
- package/dist/server/preview/routes/preview.js.map +1 -1
- package/dist/server/preview/routes/preview.mjs +11 -0
- package/dist/server/preview/routes/preview.mjs.map +1 -1
- package/dist/server/services/document-manager.js +13 -19
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +13 -19
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/permission.js +4 -3
- package/dist/server/services/permission.js.map +1 -1
- package/dist/server/services/permission.mjs +4 -3
- package/dist/server/services/permission.mjs.map +1 -1
- package/dist/server/services/utils/draft-relations.js +9 -0
- package/dist/server/services/utils/draft-relations.js.map +1 -0
- package/dist/server/services/utils/draft-relations.mjs +7 -0
- package/dist/server/services/utils/draft-relations.mjs.map +1 -0
- package/dist/server/services/utils/draft.js +118 -25
- package/dist/server/services/utils/draft.js.map +1 -1
- package/dist/server/services/utils/draft.mjs +118 -25
- package/dist/server/services/utils/draft.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +15 -1
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +15 -1
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/clone.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +5 -5
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +3 -3
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/model-configuration.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/relations.d.ts +2 -2
- package/dist/server/src/history/controllers/history-version.d.ts +1 -7
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/controllers/index.d.ts +2 -1
- package/dist/server/src/history/controllers/index.d.ts.map +1 -1
- package/dist/server/src/history/controllers/validation/history-version.d.ts +1 -1
- package/dist/server/src/history/services/history.d.ts +0 -2
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +3 -3
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/history/utils.d.ts +1 -18
- package/dist/server/src/history/utils.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +0 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/index.d.ts +2 -1
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
- package/dist/server/src/homepage/index.d.ts +4 -8
- package/dist/server/src/homepage/index.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage-query-utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts +3 -4
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/index.d.ts +4 -8
- package/dist/server/src/homepage/services/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +79 -85
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/permissions.d.ts +1 -1
- package/dist/server/src/mcp/permissions.d.ts.map +1 -1
- package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/utils.d.ts.map +1 -1
- package/dist/server/src/middlewares/routing.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/index.d.ts +2 -1
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/preview.d.ts +5 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/validation/preview.d.ts +1 -2
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -1
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -16
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +2 -2
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/configuration.d.ts.map +1 -1
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +5 -5
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts +14 -14
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +6 -6
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/field-sizes.d.ts +2 -2
- package/dist/server/src/services/field-sizes.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +78 -84
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +12 -31
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/populate-builder.d.ts +4 -4
- package/dist/server/src/services/populate-builder.d.ts.map +1 -1
- package/dist/server/src/services/uid.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/attributes.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
- package/dist/server/src/services/utils/count.d.ts.map +1 -1
- package/dist/server/src/services/utils/draft-relations.d.ts +19 -0
- package/dist/server/src/services/utils/draft-relations.d.ts.map +1 -0
- package/dist/server/src/services/utils/draft.d.ts +8 -7
- package/dist/server/src/services/utils/draft.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/server/src/services/utils/store.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +4 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/single-types.d.ts +4 -1
- package/dist/shared/contracts/single-types.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/admin/preview/utils/previewScript.js +0 -1068
- package/dist/admin/preview/utils/previewScript.js.map +0 -1
- package/dist/admin/preview/utils/previewScript.mjs +0 -1066
- package/dist/admin/preview/utils/previewScript.mjs.map +0 -1
- package/dist/admin/src/preview/utils/previewScript.d.ts +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionInputRenderer.mjs","sources":["../../../../admin/src/history/components/VersionInputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n // Be defensive about the shape: admin-user relations are sanitized to a\n // plain user object on the server, and historical version data can carry\n // shapes that pre-date the `{ results, meta }` contract. Treat anything\n // without an array `results` as \"no relations\".\n const hasResultsShape =\n !!formattedFieldValue &&\n typeof formattedFieldValue === 'object' &&\n Array.isArray((formattedFieldValue as { results?: unknown }).results);\n const missingCount =\n hasResultsShape &&\n typeof (formattedFieldValue as { meta?: { missingCount?: number } }).meta?.missingCount ===\n 'number'\n ? (formattedFieldValue as { meta: { missingCount: number } }).meta.missingCount\n : 0;\n\n if (\n !hasResultsShape ||\n ((formattedFieldValue as { results: unknown[] }).results.length === 0 && missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue as {\n results: RelationResult[];\n meta: { missingCount: number };\n };\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: any) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, any> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n node[key] = node[key] || {};\n }\n\n // Traverse down the tree\n node = node[key];\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * Resolve the layout, configuration metadata and schema attributes needed to\n * render a component field on the history page. Returns `null` when any of\n * those are missing — happens when the component schema referenced by the\n * version was deleted via the Content-Type Builder, in which case the caller\n * should render a fallback instead of crashing on the destructuring.\n */\nconst resolveComponentRenderResources = (\n componentUID: string,\n componentsLayout: { [uid: string]: { layout: unknown } | undefined },\n configurationComponents: { [uid: string]: { metadatas: unknown } | undefined },\n components: { [uid: string]: { attributes: unknown } | undefined }\n) => {\n const componentLayout = componentsLayout[componentUID];\n const componentConfiguration = configurationComponents[componentUID];\n const componentSchema = components[componentUID];\n\n if (!componentLayout || !componentConfiguration || !componentSchema) {\n return null;\n }\n\n return {\n layout: componentLayout.layout,\n metadatas: componentConfiguration.metadatas,\n schemaAttributes: componentSchema.attributes,\n };\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component': {\n const renderResources = resolveComponentRenderResources(\n props.attribute.component,\n componentsLayout,\n configuration.components,\n components\n );\n\n // The component schema referenced by this version is no longer present\n // (deleted via the Content-Type Builder). Render the label only so the\n // rest of the page still loads instead of crashing on the lookups below.\n if (!renderResources) {\n return <Field.Label>{props.label}</Field.Label>;\n }\n\n const { layout, metadatas, schemaAttributes } = renderResources as {\n layout: Array<EditFieldLayout[]>;\n metadatas: Parameters<typeof getRemaingFieldsLayout>[0]['metadatas'];\n schemaAttributes: Parameters<typeof getRemaingFieldsLayout>[0]['schemaAttributes'];\n };\n\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas,\n fieldSizes,\n schemaAttributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n }\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer, CustomRelationInput, resolveComponentRenderResources };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","hasResultsShape","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","id","defaultMessage","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","resolveComponentRenderResources","componentUID","componentsLayout","configurationComponents","components","componentLayout","componentConfiguration","componentSchema","layout","metadatas","schemaAttributes","attributes","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","renderResources","component","remainingFieldsLayout","getRemaingFieldsLayout","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionInputRenderer.mjs","sources":["../../../../admin/src/history/components/VersionInputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n // Be defensive about the shape: admin-user relations are sanitized to a\n // plain user object on the server, and historical version data can carry\n // shapes that pre-date the `{ results, meta }` contract. Treat anything\n // without an array `results` as \"no relations\".\n const hasResultsShape =\n !!formattedFieldValue &&\n typeof formattedFieldValue === 'object' &&\n Array.isArray((formattedFieldValue as { results?: unknown }).results);\n const missingCount =\n hasResultsShape &&\n typeof (formattedFieldValue as { meta?: { missingCount?: number } }).meta?.missingCount ===\n 'number'\n ? (formattedFieldValue as { meta: { missingCount: number } }).meta.missingCount\n : 0;\n\n if (\n !hasResultsShape ||\n ((formattedFieldValue as { results: unknown[] }).results.length === 0 && missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue as {\n results: RelationResult[];\n meta: { missingCount: number };\n };\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: unknown) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, unknown> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n const nextNode =\n typeof node[key] === 'object' && node[key] !== null && Array.isArray(node[key]) === false\n ? (node[key] as Record<string, unknown>)\n : {};\n node[key] = nextNode;\n node = nextNode;\n }\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField<{ results: unknown[]; meta: { missingCount: number } }>(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * Resolve the layout, configuration metadata and schema attributes needed to\n * render a component field on the history page. Returns `null` when any of\n * those are missing — happens when the component schema referenced by the\n * version was deleted via the Content-Type Builder, in which case the caller\n * should render a fallback instead of crashing on the destructuring.\n */\nconst resolveComponentRenderResources = (\n componentUID: string,\n componentsLayout: { [uid: string]: { layout: unknown } | undefined },\n configurationComponents: { [uid: string]: { metadatas: unknown } | undefined },\n components: { [uid: string]: { attributes: unknown } | undefined }\n) => {\n const componentLayout = componentsLayout[componentUID];\n const componentConfiguration = configurationComponents[componentUID];\n const componentSchema = components[componentUID];\n\n if (!componentLayout || !componentConfiguration || !componentSchema) {\n return null;\n }\n\n return {\n layout: componentLayout.layout,\n metadatas: componentConfiguration.metadatas,\n schemaAttributes: componentSchema.attributes,\n };\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component': {\n const renderResources = resolveComponentRenderResources(\n props.attribute.component,\n componentsLayout,\n configuration.components,\n components\n );\n\n // The component schema referenced by this version is no longer present\n // (deleted via the Content-Type Builder). Render the label only so the\n // rest of the page still loads instead of crashing on the lookups below.\n if (!renderResources) {\n return <Field.Label>{props.label}</Field.Label>;\n }\n\n const { layout, metadatas, schemaAttributes } = renderResources as {\n layout: Array<EditFieldLayout[]>;\n metadatas: Parameters<typeof getRemaingFieldsLayout>[0]['metadatas'];\n schemaAttributes: Parameters<typeof getRemaingFieldsLayout>[0]['schemaAttributes'];\n };\n\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas,\n fieldSizes,\n schemaAttributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n }\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer, CustomRelationInput, resolveComponentRenderResources };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","hasResultsShape","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","id","defaultMessage","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","nextNode","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","resolveComponentRenderResources","componentUID","componentsLayout","configurationComponents","components","componentLayout","componentConfiguration","componentSchema","layout","metadatas","schemaAttributes","attributes","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","renderResources","component","remainingFieldsLayout","getRemaingFieldsLayout","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type
|
|
1
|
+
{"version":3,"file":"routes.js","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type RouteObject } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: RouteObject[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n"],"names":["ProtectedHistoryPage","React","lazy","then","mod","default","routes","path","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,oBAAAA,iBAAuBC,gBAAAA,CAAMC,IAAI,CAAC,IACtC,oDAAO,oBAAA,KAAA,CAAmBC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAqB,CAAA,CAAA,CAAA;AAG/E;;AAEC,UACKM,MAAAA,GAAwB;AAC5B,IAAA;QACEC,IAAAA,EAAM,mCAAA;QACNC,SAAAA,EAAWR;AACb,KAAA;AACA,IAAA;QACEO,IAAAA,EAAM,+BAAA;QACNC,SAAAA,EAAWR;AACb;AACD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.mjs","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type
|
|
1
|
+
{"version":3,"file":"routes.mjs","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type RouteObject } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: RouteObject[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n"],"names":["ProtectedHistoryPage","React","lazy","then","mod","default","routes","path","Component"],"mappings":";;AAKA,MAAMA,oBAAAA,iBAAuBC,KAAAA,CAAMC,IAAI,CAAC,IACtC,OAAO,qBAAA,CAAA,CAAmBC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAqB,CAAA,CAAA,CAAA;AAG/E;;AAEC,UACKM,MAAAA,GAAwB;AAC5B,IAAA;QACEC,IAAAA,EAAM,mCAAA;QACNC,SAAAA,EAAWR;AACb,KAAA;AACA,IAAA;QACEO,IAAAA,EAAM,+BAAA;QACNC,SAAAA,EAAWR;AACb;AACD;;;;"}
|
|
@@ -63,6 +63,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
63
63
|
const navigate = reactRouterDom.useNavigate();
|
|
64
64
|
const { data: aiFeatureConfig } = ee.useGetAiFeatureConfigQuery();
|
|
65
65
|
const isAiAvailable = ee.useAIAvailability();
|
|
66
|
+
const isAiI18nConfigured = Boolean(aiFeatureConfig?.isAiI18nConfigured);
|
|
66
67
|
// Get metadata from context providers for tracking purposes
|
|
67
68
|
const previewContext = Preview.usePreviewContext('useDocumentActions', ()=>true, false);
|
|
68
69
|
const relationContext = RelationModal.useRelationModal('useDocumentActions', ()=>true, false);
|
|
@@ -223,7 +224,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
223
224
|
fromPreview,
|
|
224
225
|
fromRelationModal,
|
|
225
226
|
...isAiAvailable ? {
|
|
226
|
-
isAiI18nConfigured
|
|
227
|
+
isAiI18nConfigured
|
|
227
228
|
} : {}
|
|
228
229
|
});
|
|
229
230
|
toggleNotification({
|
|
@@ -248,7 +249,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
248
249
|
fromRelationModal,
|
|
249
250
|
toggleNotification,
|
|
250
251
|
formatMessage,
|
|
251
|
-
formatAPIError
|
|
252
|
+
formatAPIError,
|
|
253
|
+
isAiAvailable,
|
|
254
|
+
isAiI18nConfigured
|
|
252
255
|
]);
|
|
253
256
|
const [publishManyDocuments, { isLoading: isPublishingMany }] = documents.usePublishManyDocumentsMutation();
|
|
254
257
|
const publishMany = React__namespace.useCallback(async ({ model, documentIds, params })=>{
|
|
@@ -320,7 +323,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
320
323
|
fromPreview,
|
|
321
324
|
fromRelationModal,
|
|
322
325
|
...isAiAvailable ? {
|
|
323
|
-
isAiI18nConfigured
|
|
326
|
+
isAiI18nConfigured
|
|
324
327
|
} : {}
|
|
325
328
|
});
|
|
326
329
|
toggleNotification({
|
|
@@ -349,7 +352,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
349
352
|
fromRelationModal,
|
|
350
353
|
toggleNotification,
|
|
351
354
|
formatMessage,
|
|
352
|
-
formatAPIError
|
|
355
|
+
formatAPIError,
|
|
356
|
+
isAiAvailable,
|
|
357
|
+
isAiI18nConfigured
|
|
353
358
|
]);
|
|
354
359
|
const [unpublishDocument] = documents.useUnpublishDocumentMutation();
|
|
355
360
|
const unpublish = React__namespace.useCallback(async ({ collectionType, model, documentId, params }, discardDraft = false)=>{
|
|
@@ -466,7 +471,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
466
471
|
fromPreview,
|
|
467
472
|
fromRelationModal,
|
|
468
473
|
...isAiAvailable ? {
|
|
469
|
-
isAiI18nConfigured
|
|
474
|
+
isAiI18nConfigured
|
|
470
475
|
} : {}
|
|
471
476
|
});
|
|
472
477
|
toggleNotification({
|
|
@@ -497,7 +502,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
497
502
|
toggleNotification,
|
|
498
503
|
trackUsage,
|
|
499
504
|
isAiAvailable,
|
|
500
|
-
|
|
505
|
+
isAiI18nConfigured
|
|
501
506
|
]);
|
|
502
507
|
const [autoCloneDocument] = documents.useAutoCloneDocumentMutation();
|
|
503
508
|
const autoClone = React__namespace.useCallback(async ({ model, sourceId, locale })=>{
|
|
@@ -565,7 +570,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
565
570
|
trackUsage('didCreateEntry', {
|
|
566
571
|
...trackerProperty,
|
|
567
572
|
...isAiAvailable ? {
|
|
568
|
-
isAiI18nConfigured
|
|
573
|
+
isAiI18nConfigured
|
|
569
574
|
} : {}
|
|
570
575
|
});
|
|
571
576
|
toggleNotification({
|
|
@@ -597,7 +602,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
597
602
|
toggleNotification,
|
|
598
603
|
formatMessage,
|
|
599
604
|
formatAPIError,
|
|
600
|
-
navigate
|
|
605
|
+
navigate,
|
|
606
|
+
isAiAvailable,
|
|
607
|
+
isAiI18nConfigured
|
|
601
608
|
]);
|
|
602
609
|
const [getDoc] = documents.useLazyGetDocumentQuery();
|
|
603
610
|
const getDocument = React__namespace.useCallback(async (args)=>{
|
|
@@ -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: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\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?: object;\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?: object;\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?: object;\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?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\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?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\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 { data: aiFeatureConfig } = useGetAiFeatureConfigQuery();\n const isAiAvailable = useAIAvailability();\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\n ? { isAiI18nConfigured: Boolean(aiFeatureConfig?.isAiI18nConfigured) }\n : {}),\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 ]\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\n ? { isAiI18nConfigured: Boolean(aiFeatureConfig?.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 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 ]\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\n ? { isAiI18nConfigured: Boolean(aiFeatureConfig?.isAiI18nConfigured) }\n : {}),\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 aiFeatureConfig,\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\n ? { isAiI18nConfigured: Boolean(aiFeatureConfig?.isAiI18nConfigured) }\n : {}),\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 [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\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","data","aiFeatureConfig","useGetAiFeatureConfigQuery","isAiAvailable","useAIAvailability","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","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","isAiI18nConfigured","Boolean","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'>\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 { data: aiFeatureConfig } = useGetAiFeatureConfigQuery();\n const isAiAvailable = useAIAvailability();\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","data","aiFeatureConfig","useGetAiFeatureConfigQuery","isAiAvailable","useAIAvailability","isAiI18nConfigured","Boolean","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","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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"}
|
|
@@ -41,6 +41,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
41
41
|
const navigate = useNavigate();
|
|
42
42
|
const { data: aiFeatureConfig } = useGetAiFeatureConfigQuery();
|
|
43
43
|
const isAiAvailable = useAIAvailability();
|
|
44
|
+
const isAiI18nConfigured = Boolean(aiFeatureConfig?.isAiI18nConfigured);
|
|
44
45
|
// Get metadata from context providers for tracking purposes
|
|
45
46
|
const previewContext = usePreviewContext('useDocumentActions', ()=>true, false);
|
|
46
47
|
const relationContext = useRelationModal('useDocumentActions', ()=>true, false);
|
|
@@ -201,7 +202,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
201
202
|
fromPreview,
|
|
202
203
|
fromRelationModal,
|
|
203
204
|
...isAiAvailable ? {
|
|
204
|
-
isAiI18nConfigured
|
|
205
|
+
isAiI18nConfigured
|
|
205
206
|
} : {}
|
|
206
207
|
});
|
|
207
208
|
toggleNotification({
|
|
@@ -226,7 +227,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
226
227
|
fromRelationModal,
|
|
227
228
|
toggleNotification,
|
|
228
229
|
formatMessage,
|
|
229
|
-
formatAPIError
|
|
230
|
+
formatAPIError,
|
|
231
|
+
isAiAvailable,
|
|
232
|
+
isAiI18nConfigured
|
|
230
233
|
]);
|
|
231
234
|
const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();
|
|
232
235
|
const publishMany = React.useCallback(async ({ model, documentIds, params })=>{
|
|
@@ -298,7 +301,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
298
301
|
fromPreview,
|
|
299
302
|
fromRelationModal,
|
|
300
303
|
...isAiAvailable ? {
|
|
301
|
-
isAiI18nConfigured
|
|
304
|
+
isAiI18nConfigured
|
|
302
305
|
} : {}
|
|
303
306
|
});
|
|
304
307
|
toggleNotification({
|
|
@@ -327,7 +330,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
327
330
|
fromRelationModal,
|
|
328
331
|
toggleNotification,
|
|
329
332
|
formatMessage,
|
|
330
|
-
formatAPIError
|
|
333
|
+
formatAPIError,
|
|
334
|
+
isAiAvailable,
|
|
335
|
+
isAiI18nConfigured
|
|
331
336
|
]);
|
|
332
337
|
const [unpublishDocument] = useUnpublishDocumentMutation();
|
|
333
338
|
const unpublish = React.useCallback(async ({ collectionType, model, documentId, params }, discardDraft = false)=>{
|
|
@@ -444,7 +449,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
444
449
|
fromPreview,
|
|
445
450
|
fromRelationModal,
|
|
446
451
|
...isAiAvailable ? {
|
|
447
|
-
isAiI18nConfigured
|
|
452
|
+
isAiI18nConfigured
|
|
448
453
|
} : {}
|
|
449
454
|
});
|
|
450
455
|
toggleNotification({
|
|
@@ -475,7 +480,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
475
480
|
toggleNotification,
|
|
476
481
|
trackUsage,
|
|
477
482
|
isAiAvailable,
|
|
478
|
-
|
|
483
|
+
isAiI18nConfigured
|
|
479
484
|
]);
|
|
480
485
|
const [autoCloneDocument] = useAutoCloneDocumentMutation();
|
|
481
486
|
const autoClone = React.useCallback(async ({ model, sourceId, locale })=>{
|
|
@@ -543,7 +548,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
543
548
|
trackUsage('didCreateEntry', {
|
|
544
549
|
...trackerProperty,
|
|
545
550
|
...isAiAvailable ? {
|
|
546
|
-
isAiI18nConfigured
|
|
551
|
+
isAiI18nConfigured
|
|
547
552
|
} : {}
|
|
548
553
|
});
|
|
549
554
|
toggleNotification({
|
|
@@ -575,7 +580,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
|
575
580
|
toggleNotification,
|
|
576
581
|
formatMessage,
|
|
577
582
|
formatAPIError,
|
|
578
|
-
navigate
|
|
583
|
+
navigate,
|
|
584
|
+
isAiAvailable,
|
|
585
|
+
isAiI18nConfigured
|
|
579
586
|
]);
|
|
580
587
|
const [getDoc] = useLazyGetDocumentQuery();
|
|
581
588
|
const getDocument = React.useCallback(async (args)=>{
|