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