@strapi/content-manager 0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8 → 0.0.0-experimental.848e0ac442910c1ad22a7c5eaab07088827fb53c
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 +3 -0
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentIcon.mjs +3 -0
- package/dist/admin/components/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js +4 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
- package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +90 -48
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +92 -50
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +26 -8
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +26 -8
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/history/components/HistoryAction.js.map +1 -1
- package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +1 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +1 -0
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/history/components/VersionsList.js +1 -1
- package/dist/admin/history/components/VersionsList.js.map +1 -1
- package/dist/admin/history/components/VersionsList.mjs +1 -1
- package/dist/admin/history/components/VersionsList.mjs.map +1 -1
- package/dist/admin/history/pages/History.js +7 -7
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/pages/History.mjs +7 -7
- package/dist/admin/history/pages/History.mjs.map +1 -1
- package/dist/admin/history/services/historyVersion.js.map +1 -1
- package/dist/admin/history/services/historyVersion.mjs.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +24 -5
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +24 -5
- package/dist/admin/hooks/useDocumentActions.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 +27 -6
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +28 -7
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +7 -3
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +8 -4
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +11 -3
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +11 -3
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.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/BlocksInput/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.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 +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
- 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/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.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/FormLayout.js +13 -8
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +92 -27
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +94 -29
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +25 -20
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +25 -20
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +1 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +0 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +0 -2
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.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 +4 -1
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +130 -14
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/components/InputPopover.mjs +112 -15
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.js +0 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +18 -8
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +18 -8
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +12 -10
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +14 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/services/preview.js.map +1 -1
- package/dist/admin/preview/services/preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +34 -0
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +34 -1
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.js +107 -0
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
- package/dist/admin/preview/utils/previewScript.js +198 -115
- package/dist/admin/preview/utils/previewScript.js.map +1 -1
- package/dist/admin/preview/utils/previewScript.mjs +198 -115
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
- package/dist/admin/router.js.map +1 -1
- package/dist/admin/router.mjs.map +1 -1
- package/dist/admin/services/api.js +2 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +2 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +19 -3
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +19 -3
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/services/relations.js.map +1 -1
- package/dist/admin/services/relations.mjs.map +1 -1
- package/dist/admin/src/components/LeftMenu.d.ts +3 -1
- package/dist/admin/src/components/Widgets.d.ts +6 -2
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
- package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
- package/dist/admin/src/preview/components/InputPopover.d.ts +1 -1
- package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +2 -1
- package/dist/admin/src/preview/pages/Preview.d.ts +6 -2
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +35 -0
- package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
- package/dist/admin/src/preview/utils/previewScript.d.ts +1 -0
- 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 +16 -16
- 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 +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/translations/en.json.js +6 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +6 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -0
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +1 -0
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +2 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +2 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/utils/translations.js.map +1 -1
- package/dist/admin/utils/translations.mjs.map +1 -1
- package/dist/admin/utils/urls.js.map +1 -1
- package/dist/admin/utils/urls.mjs.map +1 -1
- package/dist/admin/utils/users.js.map +1 -1
- package/dist/admin/utils/users.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 +2 -1
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +2 -1
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/relations.js +6 -4
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +6 -4
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +3 -1
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +3 -1
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/validation/dimensions.js.map +1 -1
- package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/controllers/validation/index.mjs.map +1 -1
- package/dist/server/history/utils.js.map +1 -1
- package/dist/server/history/utils.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +1 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +1 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/middlewares/routing.js.map +1 -1
- package/dist/server/middlewares/routing.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js +8 -33
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +9 -34
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/preview/utils.js.map +1 -1
- package/dist/server/preview/utils.mjs.map +1 -1
- package/dist/server/services/configuration.js.map +1 -1
- package/dist/server/services/configuration.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +23 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +23 -1
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/field-sizes.js.map +1 -1
- package/dist/server/services/field-sizes.mjs.map +1 -1
- package/dist/server/services/uid.js.map +1 -1
- package/dist/server/services/uid.mjs.map +1 -1
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/services/utils/store.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/single-types.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* ---------------------------------------------------------------------------------------------*/ const HIGHLIGHT_PADDING = 2; // in pixels
|
|
13
13
|
const HIGHLIGHT_HOVER_COLOR = window.STRAPI_HIGHLIGHT_HOVER_COLOR ?? '#4945ff'; // dark primary500
|
|
14
14
|
const HIGHLIGHT_ACTIVE_COLOR = window.STRAPI_HIGHLIGHT_ACTIVE_COLOR ?? '#7b79ff'; // dark primary600
|
|
15
|
+
const HIGHLIGHT_STYLES_ID = 'strapi-preview-highlight-styles';
|
|
16
|
+
const DOUBLE_CLICK_TIMEOUT = 300; // milliseconds to wait for potential double-click
|
|
15
17
|
const DISABLE_STEGA_DECODING = window.STRAPI_DISABLE_STEGA_DECODING ?? false;
|
|
16
18
|
const SOURCE_ATTRIBUTE = 'data-strapi-source';
|
|
17
19
|
const OVERLAY_ID = 'strapi-preview-overlay';
|
|
@@ -19,7 +21,8 @@
|
|
|
19
21
|
STRAPI_FIELD_FOCUS: 'strapiFieldFocus',
|
|
20
22
|
STRAPI_FIELD_BLUR: 'strapiFieldBlur',
|
|
21
23
|
STRAPI_FIELD_CHANGE: 'strapiFieldChange',
|
|
22
|
-
STRAPI_FIELD_FOCUS_INTENT: 'strapiFieldFocusIntent'
|
|
24
|
+
STRAPI_FIELD_FOCUS_INTENT: 'strapiFieldFocusIntent',
|
|
25
|
+
STRAPI_FIELD_SINGLE_CLICK_HINT: 'strapiFieldSingleClickHint'
|
|
23
26
|
};
|
|
24
27
|
/**
|
|
25
28
|
* Calling the function in no-run mode lets us retrieve the constants from other files and keep
|
|
@@ -38,6 +41,9 @@
|
|
|
38
41
|
payload
|
|
39
42
|
}, '*');
|
|
40
43
|
};
|
|
44
|
+
const getElementsByPath = (path)=>{
|
|
45
|
+
return document.querySelectorAll(`[${SOURCE_ATTRIBUTE}*="path=${path}"]`);
|
|
46
|
+
};
|
|
41
47
|
/* -----------------------------------------------------------------------------------------------
|
|
42
48
|
* Functionality pieces
|
|
43
49
|
* ---------------------------------------------------------------------------------------------*/ const setupStegaDOMObserver = async ()=>{
|
|
@@ -47,14 +53,15 @@
|
|
|
47
53
|
const { vercelStegaDecode: stegaDecode, vercelStegaClean: stegaClean } = await import(// @ts-expect-error it's not a local dependency
|
|
48
54
|
// eslint-disable-next-line import/no-unresolved
|
|
49
55
|
'https://cdn.jsdelivr.net/npm/@vercel/stega@0.1.2/+esm');
|
|
50
|
-
const
|
|
56
|
+
const applyStegaToElement = (element)=>{
|
|
51
57
|
const directTextNodes = Array.from(element.childNodes).filter((node)=>node.nodeType === Node.TEXT_NODE);
|
|
52
58
|
const directTextContent = directTextNodes.map((node)=>node.textContent || '').join('');
|
|
53
59
|
if (directTextContent) {
|
|
54
60
|
try {
|
|
61
|
+
// TODO: check if we can call split instead of decode+clean
|
|
55
62
|
const result = stegaDecode(directTextContent);
|
|
56
|
-
if (result) {
|
|
57
|
-
element.setAttribute(SOURCE_ATTRIBUTE, result.
|
|
63
|
+
if (result && 'strapiSource' in result) {
|
|
64
|
+
element.setAttribute(SOURCE_ATTRIBUTE, result.strapiSource);
|
|
58
65
|
// Remove encoded part from DOM text content (to avoid breaking links for example)
|
|
59
66
|
directTextNodes.forEach((node)=>{
|
|
60
67
|
if (node.textContent) {
|
|
@@ -70,7 +77,7 @@
|
|
|
70
77
|
};
|
|
71
78
|
// Process all existing elements
|
|
72
79
|
const allElements = document.querySelectorAll('*');
|
|
73
|
-
Array.from(allElements).forEach(
|
|
80
|
+
Array.from(allElements).forEach(applyStegaToElement);
|
|
74
81
|
// Create observer for new elements and text changes
|
|
75
82
|
const observer = new MutationObserver((mutations)=>{
|
|
76
83
|
mutations.forEach((mutation)=>{
|
|
@@ -80,16 +87,16 @@
|
|
|
80
87
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
81
88
|
const element = node;
|
|
82
89
|
// Process the added element
|
|
83
|
-
|
|
90
|
+
applyStegaToElement(element);
|
|
84
91
|
// Process all child elements
|
|
85
92
|
const childElements = element.querySelectorAll('*');
|
|
86
|
-
Array.from(childElements).forEach(
|
|
93
|
+
Array.from(childElements).forEach(applyStegaToElement);
|
|
87
94
|
}
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
// Handle text content changes
|
|
91
98
|
if (mutation.type === 'characterData' && mutation.target.parentElement) {
|
|
92
|
-
|
|
99
|
+
applyStegaToElement(mutation.target.parentElement);
|
|
93
100
|
}
|
|
94
101
|
});
|
|
95
102
|
});
|
|
@@ -100,6 +107,37 @@
|
|
|
100
107
|
});
|
|
101
108
|
return observer;
|
|
102
109
|
};
|
|
110
|
+
const createHighlightStyles = ()=>{
|
|
111
|
+
const existingStyles = document.getElementById(HIGHLIGHT_STYLES_ID);
|
|
112
|
+
// Remove existing styles to avoid duplicates
|
|
113
|
+
if (existingStyles) {
|
|
114
|
+
existingStyles.remove();
|
|
115
|
+
}
|
|
116
|
+
const styleElement = document.createElement('style');
|
|
117
|
+
styleElement.id = HIGHLIGHT_STYLES_ID;
|
|
118
|
+
styleElement.textContent = `
|
|
119
|
+
.strapi-highlight {
|
|
120
|
+
position: absolute;
|
|
121
|
+
outline: 2px solid transparent;
|
|
122
|
+
pointer-events: auto;
|
|
123
|
+
border-radius: 2px;
|
|
124
|
+
background-color: transparent;
|
|
125
|
+
will-change: transform;
|
|
126
|
+
transition: outline-color 0.1s ease-in-out;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.strapi-highlight:hover {
|
|
130
|
+
outline-color: ${HIGHLIGHT_HOVER_COLOR} !important;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.strapi-highlight.strapi-highlight-focused {
|
|
134
|
+
outline-color: ${HIGHLIGHT_ACTIVE_COLOR} !important;
|
|
135
|
+
outline-width: 3px !important;
|
|
136
|
+
}
|
|
137
|
+
`;
|
|
138
|
+
document.head.appendChild(styleElement);
|
|
139
|
+
return styleElement;
|
|
140
|
+
};
|
|
103
141
|
const createOverlaySystem = ()=>{
|
|
104
142
|
// Clean up before creating a new overlay so we can safely call previewScript multiple times
|
|
105
143
|
window.__strapi_previewCleanup?.();
|
|
@@ -119,9 +157,10 @@
|
|
|
119
157
|
return overlay;
|
|
120
158
|
};
|
|
121
159
|
const createHighlightManager = (overlay)=>{
|
|
122
|
-
const
|
|
160
|
+
const elementsToHighlight = new Map();
|
|
123
161
|
const eventListeners = [];
|
|
124
162
|
const focusedHighlights = [];
|
|
163
|
+
const pendingClicks = new Map(); // number is timeout id
|
|
125
164
|
let focusedField = null;
|
|
126
165
|
const drawHighlight = (target, highlight)=>{
|
|
127
166
|
if (!highlight) return;
|
|
@@ -131,36 +170,67 @@
|
|
|
131
170
|
highlight.style.transform = `translate(${rect.left - HIGHLIGHT_PADDING}px, ${rect.top - HIGHLIGHT_PADDING}px)`;
|
|
132
171
|
};
|
|
133
172
|
const updateAllHighlights = ()=>{
|
|
134
|
-
|
|
173
|
+
elementsToHighlight.forEach((highlight, element)=>{
|
|
135
174
|
drawHighlight(element, highlight);
|
|
136
175
|
});
|
|
137
176
|
};
|
|
138
177
|
const createHighlightForElement = (element)=>{
|
|
139
|
-
if (
|
|
140
|
-
|
|
178
|
+
if (elementsToHighlight.has(element)) {
|
|
179
|
+
// Already has a highlight
|
|
180
|
+
return;
|
|
141
181
|
}
|
|
142
182
|
const highlight = document.createElement('div');
|
|
143
|
-
highlight.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
background-color: transparent;
|
|
149
|
-
will-change: transform;
|
|
150
|
-
transition: outline-color 0.1s ease-in-out;
|
|
151
|
-
`;
|
|
152
|
-
// Move hover detection to the underlying element
|
|
153
|
-
const mouseEnterHandler = ()=>{
|
|
154
|
-
if (!focusedHighlights.includes(highlight)) {
|
|
155
|
-
highlight.style.outlineColor = HIGHLIGHT_HOVER_COLOR;
|
|
183
|
+
highlight.className = 'strapi-highlight';
|
|
184
|
+
const clickHandler = (event)=>{
|
|
185
|
+
// Skip if this is a re-dispatched event from our delayed handler to avoid infinite loops
|
|
186
|
+
if (event.__strapi_redispatched) {
|
|
187
|
+
return;
|
|
156
188
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
189
|
+
// Prevent the immediate action for interactive elements
|
|
190
|
+
event.preventDefault();
|
|
191
|
+
event.stopPropagation();
|
|
192
|
+
// Clear any existing timeout for this element
|
|
193
|
+
const existingTimeout = pendingClicks.get(element);
|
|
194
|
+
if (existingTimeout) {
|
|
195
|
+
window.clearTimeout(existingTimeout);
|
|
196
|
+
pendingClicks.delete(element);
|
|
161
197
|
}
|
|
198
|
+
// Set up a delayed single-click handler
|
|
199
|
+
const timeout = window.setTimeout(()=>{
|
|
200
|
+
pendingClicks.delete(element);
|
|
201
|
+
// Send single-click hint notification
|
|
202
|
+
sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_SINGLE_CLICK_HINT, null);
|
|
203
|
+
// Re-trigger the click on the underlying element after the double-click timeout
|
|
204
|
+
// Create a new event to dispatch with a marker to prevent re-handling
|
|
205
|
+
const newEvent = new MouseEvent('click', {
|
|
206
|
+
bubbles: true,
|
|
207
|
+
cancelable: true,
|
|
208
|
+
view: window,
|
|
209
|
+
detail: 1,
|
|
210
|
+
button: event.button,
|
|
211
|
+
buttons: event.buttons,
|
|
212
|
+
clientX: event.clientX,
|
|
213
|
+
clientY: event.clientY,
|
|
214
|
+
ctrlKey: event.ctrlKey,
|
|
215
|
+
altKey: event.altKey,
|
|
216
|
+
shiftKey: event.shiftKey,
|
|
217
|
+
metaKey: event.metaKey
|
|
218
|
+
});
|
|
219
|
+
newEvent.__strapi_redispatched = true;
|
|
220
|
+
element.dispatchEvent(newEvent);
|
|
221
|
+
}, DOUBLE_CLICK_TIMEOUT);
|
|
222
|
+
pendingClicks.set(element, timeout);
|
|
162
223
|
};
|
|
163
|
-
const doubleClickHandler = ()=>{
|
|
224
|
+
const doubleClickHandler = (event)=>{
|
|
225
|
+
// Prevent the default behavior on double-click
|
|
226
|
+
event.preventDefault();
|
|
227
|
+
event.stopPropagation();
|
|
228
|
+
// Clear any pending single-click action
|
|
229
|
+
const existingTimeout = pendingClicks.get(element);
|
|
230
|
+
if (existingTimeout) {
|
|
231
|
+
clearTimeout(existingTimeout);
|
|
232
|
+
pendingClicks.delete(element);
|
|
233
|
+
}
|
|
164
234
|
const sourceAttribute = element.getAttribute(SOURCE_ATTRIBUTE);
|
|
165
235
|
if (sourceAttribute) {
|
|
166
236
|
const rect = element.getBoundingClientRect();
|
|
@@ -183,44 +253,45 @@
|
|
|
183
253
|
event.preventDefault();
|
|
184
254
|
}
|
|
185
255
|
};
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
element.addEventListener('mousedown', mouseDownHandler);
|
|
256
|
+
highlight.addEventListener('click', clickHandler);
|
|
257
|
+
highlight.addEventListener('dblclick', doubleClickHandler);
|
|
258
|
+
highlight.addEventListener('mousedown', mouseDownHandler);
|
|
190
259
|
// Store event listeners for cleanup
|
|
191
260
|
eventListeners.push({
|
|
192
|
-
element,
|
|
193
|
-
type: '
|
|
194
|
-
handler:
|
|
195
|
-
}, {
|
|
196
|
-
element,
|
|
197
|
-
type: 'mouseleave',
|
|
198
|
-
handler: mouseLeaveHandler
|
|
261
|
+
element: highlight,
|
|
262
|
+
type: 'click',
|
|
263
|
+
handler: clickHandler
|
|
199
264
|
}, {
|
|
200
|
-
element,
|
|
265
|
+
element: highlight,
|
|
201
266
|
type: 'dblclick',
|
|
202
267
|
handler: doubleClickHandler
|
|
203
268
|
}, {
|
|
204
|
-
element,
|
|
269
|
+
element: highlight,
|
|
205
270
|
type: 'mousedown',
|
|
206
271
|
handler: mouseDownHandler
|
|
207
272
|
});
|
|
208
|
-
|
|
273
|
+
elementsToHighlight.set(element, highlight);
|
|
209
274
|
overlay.appendChild(highlight);
|
|
210
275
|
drawHighlight(element, highlight);
|
|
211
276
|
};
|
|
212
277
|
const removeHighlightForElement = (element)=>{
|
|
213
|
-
const highlight =
|
|
278
|
+
const highlight = elementsToHighlight.get(element);
|
|
214
279
|
if (!highlight) return;
|
|
280
|
+
// Clear any pending click timeout for this element
|
|
281
|
+
const pendingTimeout = pendingClicks.get(element);
|
|
282
|
+
if (pendingTimeout) {
|
|
283
|
+
window.clearTimeout(pendingTimeout);
|
|
284
|
+
pendingClicks.delete(element);
|
|
285
|
+
}
|
|
215
286
|
highlight.remove();
|
|
216
|
-
|
|
217
|
-
// Remove event listeners for this
|
|
218
|
-
const listenersToRemove = eventListeners.filter((listener)=>listener.element ===
|
|
287
|
+
elementsToHighlight.delete(element);
|
|
288
|
+
// Remove event listeners for this highlight
|
|
289
|
+
const listenersToRemove = eventListeners.filter((listener)=>listener.element === highlight);
|
|
219
290
|
listenersToRemove.forEach(({ element, type, handler })=>{
|
|
220
291
|
element.removeEventListener(type, handler);
|
|
221
292
|
});
|
|
222
|
-
// Mutate eventListeners to remove listeners for this
|
|
223
|
-
eventListeners.splice(0, eventListeners.length, ...eventListeners.filter((listener)=>listener.element !==
|
|
293
|
+
// Mutate eventListeners to remove listeners for this highlight
|
|
294
|
+
eventListeners.splice(0, eventListeners.length, ...eventListeners.filter((listener)=>listener.element !== highlight));
|
|
224
295
|
};
|
|
225
296
|
// Process all existing elements with source attributes
|
|
226
297
|
const initialElements = window.document.querySelectorAll(`[${SOURCE_ATTRIBUTE}]`);
|
|
@@ -231,10 +302,10 @@
|
|
|
231
302
|
});
|
|
232
303
|
return {
|
|
233
304
|
get elements () {
|
|
234
|
-
return Array.from(
|
|
305
|
+
return Array.from(elementsToHighlight.keys());
|
|
235
306
|
},
|
|
236
307
|
get highlights () {
|
|
237
|
-
return Array.from(
|
|
308
|
+
return Array.from(elementsToHighlight.values());
|
|
238
309
|
},
|
|
239
310
|
updateAllHighlights,
|
|
240
311
|
eventListeners,
|
|
@@ -244,7 +315,56 @@
|
|
|
244
315
|
setFocusedField: (field)=>{
|
|
245
316
|
focusedField = field;
|
|
246
317
|
},
|
|
247
|
-
getFocusedField: ()=>focusedField
|
|
318
|
+
getFocusedField: ()=>focusedField,
|
|
319
|
+
clearAllPendingClicks: ()=>{
|
|
320
|
+
pendingClicks.forEach((timeout)=>clearTimeout(timeout));
|
|
321
|
+
pendingClicks.clear();
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
};
|
|
325
|
+
/**
|
|
326
|
+
* We need to track scroll in all the element parents in order to keep the highlight position
|
|
327
|
+
* in sync with the element position. Listening to window scroll is not enough because the
|
|
328
|
+
* element can be inside one or more scrollable containers.
|
|
329
|
+
*/ const setupScrollManagement = (highlightManager)=>{
|
|
330
|
+
const updateOnScroll = ()=>{
|
|
331
|
+
highlightManager.updateAllHighlights();
|
|
332
|
+
};
|
|
333
|
+
const scrollableElements = new Set();
|
|
334
|
+
scrollableElements.add(window);
|
|
335
|
+
// Find all scrollable ancestors for all tracked elements and set up scroll listeners
|
|
336
|
+
highlightManager.elements.forEach((element)=>{
|
|
337
|
+
let parent = element.parentElement;
|
|
338
|
+
while(parent){
|
|
339
|
+
const computedStyle = window.getComputedStyle(parent);
|
|
340
|
+
const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;
|
|
341
|
+
if (overflow.includes('scroll') || overflow.includes('auto')) {
|
|
342
|
+
scrollableElements.add(parent);
|
|
343
|
+
}
|
|
344
|
+
parent = parent.parentElement;
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
// Add scroll listeners to all scrollable elements
|
|
348
|
+
scrollableElements.forEach((element)=>{
|
|
349
|
+
if (element === window) {
|
|
350
|
+
window.addEventListener('scroll', updateOnScroll);
|
|
351
|
+
window.addEventListener('resize', updateOnScroll);
|
|
352
|
+
} else {
|
|
353
|
+
element.addEventListener('scroll', updateOnScroll);
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
const cleanup = ()=>{
|
|
357
|
+
scrollableElements.forEach((element)=>{
|
|
358
|
+
if (element === window) {
|
|
359
|
+
window.removeEventListener('scroll', updateOnScroll);
|
|
360
|
+
window.removeEventListener('resize', updateOnScroll);
|
|
361
|
+
} else {
|
|
362
|
+
element.removeEventListener('scroll', updateOnScroll);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
};
|
|
366
|
+
return {
|
|
367
|
+
cleanup
|
|
248
368
|
};
|
|
249
369
|
};
|
|
250
370
|
const setupObservers = (highlightManager, stegaObserver)=>{
|
|
@@ -305,51 +425,10 @@
|
|
|
305
425
|
SOURCE_ATTRIBUTE
|
|
306
426
|
]
|
|
307
427
|
});
|
|
308
|
-
const updateOnScroll = ()=>{
|
|
309
|
-
highlightManager.updateAllHighlights();
|
|
310
|
-
};
|
|
311
|
-
const scrollableElements = new Set();
|
|
312
|
-
scrollableElements.add(window);
|
|
313
|
-
const findScrollableAncestors = ()=>{
|
|
314
|
-
// Clear existing scrollable elements (except window)
|
|
315
|
-
scrollableElements.forEach((element)=>{
|
|
316
|
-
if (element !== window) {
|
|
317
|
-
element.removeEventListener('scroll', updateOnScroll);
|
|
318
|
-
}
|
|
319
|
-
});
|
|
320
|
-
scrollableElements.clear();
|
|
321
|
-
scrollableElements.add(window);
|
|
322
|
-
// Find all scrollable ancestors for all tracked elements
|
|
323
|
-
highlightManager.elements.forEach((element)=>{
|
|
324
|
-
let parent = element.parentElement;
|
|
325
|
-
while(parent){
|
|
326
|
-
const computedStyle = window.getComputedStyle(parent);
|
|
327
|
-
const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;
|
|
328
|
-
if (overflow.includes('scroll') || overflow.includes('auto')) {
|
|
329
|
-
scrollableElements.add(parent);
|
|
330
|
-
}
|
|
331
|
-
parent = parent.parentElement;
|
|
332
|
-
}
|
|
333
|
-
});
|
|
334
|
-
// Add scroll listeners to all scrollable elements
|
|
335
|
-
scrollableElements.forEach((element)=>{
|
|
336
|
-
if (element === window) {
|
|
337
|
-
window.addEventListener('scroll', updateOnScroll);
|
|
338
|
-
window.addEventListener('resize', updateOnScroll);
|
|
339
|
-
} else {
|
|
340
|
-
element.addEventListener('scroll', updateOnScroll);
|
|
341
|
-
}
|
|
342
|
-
});
|
|
343
|
-
};
|
|
344
|
-
// Initial setup of scrollable elements
|
|
345
|
-
findScrollableAncestors();
|
|
346
428
|
return {
|
|
347
429
|
resizeObserver,
|
|
348
430
|
highlightObserver,
|
|
349
|
-
stegaObserver
|
|
350
|
-
updateOnScroll,
|
|
351
|
-
scrollableElements,
|
|
352
|
-
findScrollableAncestors
|
|
431
|
+
stegaObserver
|
|
353
432
|
};
|
|
354
433
|
};
|
|
355
434
|
const setupEventHandlers = (highlightManager)=>{
|
|
@@ -359,8 +438,7 @@
|
|
|
359
438
|
if (event.data.type === INTERNAL_EVENTS.STRAPI_FIELD_CHANGE) {
|
|
360
439
|
const { field, value } = event.data.payload;
|
|
361
440
|
if (!field) return;
|
|
362
|
-
|
|
363
|
-
matchingElements.forEach((element)=>{
|
|
441
|
+
getElementsByPath(field).forEach((element)=>{
|
|
364
442
|
if (element instanceof HTMLElement) {
|
|
365
443
|
element.textContent = value || '';
|
|
366
444
|
}
|
|
@@ -375,17 +453,21 @@
|
|
|
375
453
|
if (!field) return;
|
|
376
454
|
// Clear existing focused highlights
|
|
377
455
|
highlightManager.focusedHighlights.forEach((highlight)=>{
|
|
378
|
-
highlight.
|
|
456
|
+
highlight.classList.remove('strapi-highlight-focused');
|
|
379
457
|
});
|
|
380
458
|
highlightManager.focusedHighlights.length = 0;
|
|
381
459
|
// Set new focused field and highlight matching elements
|
|
382
460
|
highlightManager.setFocusedField(field);
|
|
383
|
-
|
|
384
|
-
|
|
461
|
+
getElementsByPath(field).forEach((element, index)=>{
|
|
462
|
+
if (index === 0) {
|
|
463
|
+
element.scrollIntoView({
|
|
464
|
+
behavior: 'smooth',
|
|
465
|
+
block: 'center'
|
|
466
|
+
});
|
|
467
|
+
}
|
|
385
468
|
const highlight = highlightManager.highlights[Array.from(highlightManager.elements).indexOf(element)];
|
|
386
469
|
if (highlight) {
|
|
387
|
-
highlight.
|
|
388
|
-
highlight.style.outlineWidth = '3px';
|
|
470
|
+
highlight.classList.add('strapi-highlight-focused');
|
|
389
471
|
highlightManager.focusedHighlights.push(highlight);
|
|
390
472
|
}
|
|
391
473
|
});
|
|
@@ -396,8 +478,7 @@
|
|
|
396
478
|
const { field } = event.data.payload;
|
|
397
479
|
if (field !== highlightManager.getFocusedField()) return;
|
|
398
480
|
highlightManager.focusedHighlights.forEach((highlight)=>{
|
|
399
|
-
highlight.
|
|
400
|
-
highlight.style.outlineWidth = '2px';
|
|
481
|
+
highlight.classList.remove('strapi-highlight-focused');
|
|
401
482
|
});
|
|
402
483
|
highlightManager.focusedHighlights.length = 0;
|
|
403
484
|
highlightManager.setFocusedField(null);
|
|
@@ -415,35 +496,37 @@
|
|
|
415
496
|
messageEventListener
|
|
416
497
|
];
|
|
417
498
|
};
|
|
418
|
-
const createCleanupSystem = (overlay, observers, eventHandlers)=>{
|
|
499
|
+
const createCleanupSystem = (overlay, observers, scrollManager, eventHandlers, highlightManager)=>{
|
|
419
500
|
window.__strapi_previewCleanup = ()=>{
|
|
420
501
|
observers.resizeObserver.disconnect();
|
|
421
502
|
observers.highlightObserver.disconnect();
|
|
422
503
|
observers.stegaObserver?.disconnect();
|
|
423
|
-
//
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
window.removeEventListener('resize', observers.updateOnScroll);
|
|
428
|
-
} else {
|
|
429
|
-
element.removeEventListener('scroll', observers.updateOnScroll);
|
|
430
|
-
}
|
|
431
|
-
});
|
|
504
|
+
// Clean up scroll listeners
|
|
505
|
+
scrollManager.cleanup();
|
|
506
|
+
// Clear all pending click timeouts
|
|
507
|
+
highlightManager.clearAllPendingClicks();
|
|
432
508
|
// Remove highlight event listeners
|
|
433
509
|
eventHandlers.forEach(({ element, type, handler })=>{
|
|
434
510
|
element.removeEventListener(type, handler);
|
|
435
511
|
});
|
|
512
|
+
// Clean up CSS styles
|
|
513
|
+
const existingStyles = document.getElementById(HIGHLIGHT_STYLES_ID);
|
|
514
|
+
if (existingStyles) {
|
|
515
|
+
existingStyles.remove();
|
|
516
|
+
}
|
|
436
517
|
overlay.remove();
|
|
437
518
|
};
|
|
438
519
|
};
|
|
439
520
|
/* -----------------------------------------------------------------------------------------------
|
|
440
521
|
* Orchestration
|
|
441
522
|
* ---------------------------------------------------------------------------------------------*/ setupStegaDOMObserver().then((stegaObserver)=>{
|
|
523
|
+
createHighlightStyles();
|
|
442
524
|
const overlay = createOverlaySystem();
|
|
443
525
|
const highlightManager = createHighlightManager(overlay);
|
|
444
526
|
const observers = setupObservers(highlightManager, stegaObserver);
|
|
527
|
+
const scrollManager = setupScrollManagement(highlightManager);
|
|
445
528
|
const eventHandlers = setupEventHandlers(highlightManager);
|
|
446
|
-
createCleanupSystem(overlay, observers, eventHandlers);
|
|
529
|
+
createCleanupSystem(overlay, observers, scrollManager, eventHandlers, highlightManager);
|
|
447
530
|
});
|
|
448
531
|
};
|
|
449
532
|
|