@contentstack/live-preview-utils 4.4.2 → 4.4.4
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/README.md +4 -2
- package/dist/legacy/common/inIframe.cjs +9 -0
- package/dist/legacy/common/inIframe.cjs.map +1 -1
- package/dist/legacy/common/inIframe.d.cts +2 -1
- package/dist/legacy/common/inIframe.d.ts +2 -1
- package/dist/legacy/common/inIframe.js +8 -0
- package/dist/legacy/common/inIframe.js.map +1 -1
- package/dist/legacy/configManager/config.default.cjs +8 -1
- package/dist/legacy/configManager/config.default.cjs.map +1 -1
- package/dist/legacy/configManager/config.default.js +8 -1
- package/dist/legacy/configManager/config.default.js.map +1 -1
- package/dist/legacy/configManager/configManager.cjs +24 -5
- package/dist/legacy/configManager/configManager.cjs.map +1 -1
- package/dist/legacy/configManager/configManager.d.cts +11 -1
- package/dist/legacy/configManager/configManager.d.ts +11 -1
- package/dist/legacy/configManager/configManager.js +23 -5
- package/dist/legacy/configManager/configManager.js.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.cjs +6 -3
- package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.js +6 -3
- package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
- package/dist/legacy/configManager/index.d.cts +1 -1
- package/dist/legacy/configManager/index.d.ts +1 -1
- package/dist/legacy/cslp/cslpdata.cjs +26 -12
- package/dist/legacy/cslp/cslpdata.cjs.map +1 -1
- package/dist/legacy/cslp/cslpdata.d.cts +0 -5
- package/dist/legacy/cslp/cslpdata.d.ts +0 -5
- package/dist/legacy/cslp/cslpdata.js +26 -12
- package/dist/legacy/cslp/cslpdata.js.map +1 -1
- package/dist/legacy/light-sdk.cjs +1 -1
- package/dist/legacy/light-sdk.js +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs +20 -0
- package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.d.cts +1 -0
- package/dist/legacy/livePreview/editButton/editButton.d.ts +1 -0
- package/dist/legacy/livePreview/editButton/editButton.js +20 -0
- package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +13 -10
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +15 -12
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
- package/dist/legacy/livePreview/live-preview.cjs +2 -0
- package/dist/legacy/livePreview/live-preview.cjs.map +1 -1
- package/dist/legacy/livePreview/live-preview.js +2 -0
- package/dist/legacy/livePreview/live-preview.js.map +1 -1
- package/dist/legacy/livePreview/onPageTraversal.cjs +1 -1
- package/dist/legacy/livePreview/onPageTraversal.cjs.map +1 -1
- package/dist/legacy/livePreview/onPageTraversal.js +1 -1
- package/dist/legacy/livePreview/onPageTraversal.js.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +37 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.d.cts +19 -0
- package/dist/legacy/preview/contentstack-live-preview-HOC.d.ts +19 -0
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +39 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
- package/dist/legacy/types/global.d.cjs +19 -0
- package/dist/legacy/types/global.d.cjs.map +1 -0
- package/dist/legacy/types/global.d.d.cts +8 -0
- package/dist/legacy/types/global.d.d.ts +8 -0
- package/dist/legacy/types/global.d.js +1 -0
- package/dist/legacy/types/global.d.js.map +1 -0
- package/dist/legacy/types/types.cjs.map +1 -1
- package/dist/legacy/types/types.d.cts +20 -1
- package/dist/legacy/types/types.d.ts +20 -1
- package/dist/legacy/types/types.js.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +32 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.js +32 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useCollab.cjs +8 -8
- package/dist/legacy/visualBuilder/eventManager/useCollab.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useCollab.js +8 -8
- package/dist/legacy/visualBuilder/eventManager/useCollab.js.map +1 -1
- package/dist/legacy/visualBuilder/index.cjs +8 -3
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.js +8 -3
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +26 -0
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +26 -0
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +29 -0
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.js +29 -0
- package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs +19 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.d.cts +8 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.d.ts +8 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js +9 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs +8 -0
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.js +8 -0
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.js.map +1 -1
- package/dist/legacy/{utils/handlePageTraversal.cjs → visualBuilder/utils/getWholeFieldElement.cjs} +15 -24
- package/dist/legacy/visualBuilder/utils/getWholeFieldElement.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/getWholeFieldElement.d.cts +4 -0
- package/dist/legacy/visualBuilder/utils/getWholeFieldElement.d.ts +4 -0
- package/dist/legacy/visualBuilder/utils/getWholeFieldElement.js +14 -0
- package/dist/legacy/visualBuilder/utils/getWholeFieldElement.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +2 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +2 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.cjs +38 -0
- package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.d.cts +7 -0
- package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.d.ts +7 -0
- package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.js +15 -0
- package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/resolvePageContext.cjs +49 -0
- package/dist/legacy/visualBuilder/utils/resolvePageContext.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/resolvePageContext.d.cts +6 -0
- package/dist/legacy/visualBuilder/utils/resolvePageContext.d.ts +6 -0
- package/dist/legacy/visualBuilder/utils/resolvePageContext.js +16 -0
- package/dist/legacy/visualBuilder/utils/resolvePageContext.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +6 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +6 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +12 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +1 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +1 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.js +12 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/common/inIframe.cjs +9 -0
- package/dist/modern/common/inIframe.cjs.map +1 -1
- package/dist/modern/common/inIframe.d.cts +2 -1
- package/dist/modern/common/inIframe.d.ts +2 -1
- package/dist/modern/common/inIframe.js +8 -0
- package/dist/modern/common/inIframe.js.map +1 -1
- package/dist/modern/configManager/config.default.cjs +8 -1
- package/dist/modern/configManager/config.default.cjs.map +1 -1
- package/dist/modern/configManager/config.default.js +8 -1
- package/dist/modern/configManager/config.default.js.map +1 -1
- package/dist/modern/configManager/configManager.cjs +24 -5
- package/dist/modern/configManager/configManager.cjs.map +1 -1
- package/dist/modern/configManager/configManager.d.cts +11 -1
- package/dist/modern/configManager/configManager.d.ts +11 -1
- package/dist/modern/configManager/configManager.js +23 -5
- package/dist/modern/configManager/configManager.js.map +1 -1
- package/dist/modern/configManager/handleUserConfig.cjs +3 -0
- package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/modern/configManager/handleUserConfig.js +3 -0
- package/dist/modern/configManager/handleUserConfig.js.map +1 -1
- package/dist/modern/configManager/index.d.cts +1 -1
- package/dist/modern/configManager/index.d.ts +1 -1
- package/dist/modern/cslp/cslpdata.cjs +25 -12
- package/dist/modern/cslp/cslpdata.cjs.map +1 -1
- package/dist/modern/cslp/cslpdata.d.cts +0 -5
- package/dist/modern/cslp/cslpdata.d.ts +0 -5
- package/dist/modern/cslp/cslpdata.js +25 -12
- package/dist/modern/cslp/cslpdata.js.map +1 -1
- package/dist/modern/light-sdk.cjs +1 -1
- package/dist/modern/light-sdk.js +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs +19 -0
- package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.d.cts +1 -0
- package/dist/modern/livePreview/editButton/editButton.d.ts +1 -0
- package/dist/modern/livePreview/editButton/editButton.js +19 -0
- package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +13 -10
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +15 -12
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
- package/dist/modern/livePreview/live-preview.cjs +1 -0
- package/dist/modern/livePreview/live-preview.cjs.map +1 -1
- package/dist/modern/livePreview/live-preview.js +1 -0
- package/dist/modern/livePreview/live-preview.js.map +1 -1
- package/dist/modern/livePreview/onPageTraversal.cjs +1 -1
- package/dist/modern/livePreview/onPageTraversal.cjs.map +1 -1
- package/dist/modern/livePreview/onPageTraversal.js +1 -1
- package/dist/modern/livePreview/onPageTraversal.js.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +36 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.d.cts +19 -0
- package/dist/modern/preview/contentstack-live-preview-HOC.d.ts +19 -0
- package/dist/modern/preview/contentstack-live-preview-HOC.js +38 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
- package/dist/modern/types/global.d.cjs +19 -0
- package/dist/modern/types/global.d.cjs.map +1 -0
- package/dist/modern/types/global.d.d.cts +8 -0
- package/dist/modern/types/global.d.d.ts +8 -0
- package/dist/modern/types/global.d.js +1 -0
- package/dist/modern/types/global.d.js.map +1 -0
- package/dist/modern/types/types.cjs.map +1 -1
- package/dist/modern/types/types.d.cts +20 -1
- package/dist/modern/types/types.d.ts +20 -1
- package/dist/modern/types/types.js.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs +32 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.js +32 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useCollab.cjs +5 -5
- package/dist/modern/visualBuilder/eventManager/useCollab.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useCollab.js +5 -5
- package/dist/modern/visualBuilder/eventManager/useCollab.js.map +1 -1
- package/dist/modern/visualBuilder/index.cjs +8 -3
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.js +8 -3
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +26 -0
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +26 -0
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs +29 -0
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.js +29 -0
- package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs +19 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.d.cts +8 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.d.ts +8 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.js +9 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs +8 -0
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.js +8 -0
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.js.map +1 -1
- package/dist/modern/{utils/handlePageTraversal.cjs → visualBuilder/utils/getWholeFieldElement.cjs} +15 -24
- package/dist/modern/visualBuilder/utils/getWholeFieldElement.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/getWholeFieldElement.d.cts +4 -0
- package/dist/modern/visualBuilder/utils/getWholeFieldElement.d.ts +4 -0
- package/dist/modern/visualBuilder/utils/getWholeFieldElement.js +14 -0
- package/dist/modern/visualBuilder/utils/getWholeFieldElement.js.map +1 -0
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +2 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js +2 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.cjs +37 -0
- package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.d.cts +7 -0
- package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.d.ts +7 -0
- package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.js +14 -0
- package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.js.map +1 -0
- package/dist/modern/visualBuilder/utils/resolvePageContext.cjs +48 -0
- package/dist/modern/visualBuilder/utils/resolvePageContext.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/resolvePageContext.d.cts +6 -0
- package/dist/modern/visualBuilder/utils/resolvePageContext.d.ts +6 -0
- package/dist/modern/visualBuilder/utils/resolvePageContext.js +15 -0
- package/dist/modern/visualBuilder/utils/resolvePageContext.js.map +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +6 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +6 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +12 -0
- package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.cts +1 -0
- package/dist/modern/visualBuilder/visualBuilder.style.d.ts +1 -0
- package/dist/modern/visualBuilder/visualBuilder.style.js +12 -0
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +1 -1
- package/dist/legacy/utils/handlePageTraversal.cjs.map +0 -1
- package/dist/legacy/utils/handlePageTraversal.d.cts +0 -3
- package/dist/legacy/utils/handlePageTraversal.d.ts +0 -3
- package/dist/legacy/utils/handlePageTraversal.js +0 -24
- package/dist/legacy/utils/handlePageTraversal.js.map +0 -1
- package/dist/modern/utils/handlePageTraversal.cjs.map +0 -1
- package/dist/modern/utils/handlePageTraversal.d.cts +0 -3
- package/dist/modern/utils/handlePageTraversal.d.ts +0 -3
- package/dist/modern/utils/handlePageTraversal.js +0 -24
- package/dist/modern/utils/handlePageTraversal.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/FieldToolbar.tsx"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport { CslpData as CslpDataUtil } from \"../../utils/cslpdata\";\nimport getChildrenDirection from \"../utils/getChildrenDirection\";\nimport {\n ALLOWED_MODAL_EDITABLE_FIELD,\n ALLOWED_REPLACE_FIELDS,\n} from \"../utils/constants\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport {\n handleDeleteInstance,\n handleMoveInstance,\n} from \"../utils/instanceHandlers\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { FieldDataType, ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n CaretIcon,\n DeleteIcon,\n MoveLeftIcon,\n MoveRightIcon,\n ReplaceAssetIcon,\n} from \"./icons\";\nimport { fieldIcons } from \"./icons/fields\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport CommentIcon from \"./CommentIcon\";\nimport React, { useEffect, useState, useRef } from \"preact/compat\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { IReferenceContentTypeSchema } from \"../../cms/types/contentTypeSchema.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FormIcon } from \"./icons\";\nimport { getDOMEditStack } from \"../utils/getCsDataOfElement\";\nimport { VariantIcon } from \"./icons/variant\";\nimport {\n BASE_VARIANT_STATUS,\n getFieldVariantStatus,\n IVariantStatus,\n VariantRevertDropdown,\n} from \"./FieldRevert/FieldRevertComponent\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { EntryPermissions } from \"../utils/getEntryPermissions\";\nimport { FieldLocationAppList } from \"./FieldLocationAppList\";\nimport { FieldLocationIcon } from \"./FieldLocationIcon\";\nimport { WorkflowStageDetails } from \"../utils/getWorkflowStageDetails\";\nimport { ResolvedVariantPermissions } from \"../utils/getResolvedVariantPermissions\";\n\nexport type FieldDetails = Pick<\n VisualBuilderCslpEventDetails,\n \"editableElement\" | \"fieldMetadata\"\n>;\n\nconst TOOLTIP_TOP_EDGE_BUFFER = 96;\n\ninterface MultipleFieldToolbarProps {\n eventDetails: VisualBuilderCslpEventDetails;\n hideOverlay: () => void;\n isVariant?: boolean;\n entryPermissions?: EntryPermissions | undefined;\n entryWorkflowStageDetails?: WorkflowStageDetails | undefined;\n resolvedVariantPermissions?: ResolvedVariantPermissions | undefined;\n}\n\nfunction handleReplaceAsset(fieldMetadata: CslpData) {\n // TODO avoid sending whole fieldMetadata\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_ASSET_MODAL,\n {\n fieldMetadata,\n }\n );\n}\n\nfunction handleReplaceReference(fieldMetadata: CslpData) {\n const isMultipleInstance =\n fieldMetadata.multipleFieldMetadata.index > -1 &&\n fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.multipleFieldMetadata.parentDetails?.parentPath;\n const entryPath = isMultipleInstance\n ? fieldMetadata.instance.fieldPathWithIndex\n : fieldMetadata.fieldPathWithIndex;\n\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REFERENCE_MODAL,\n {\n entry_uid: fieldMetadata.entry_uid,\n content_type_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n fieldPath: fieldMetadata.fieldPath,\n fieldPathWithIndex: fieldMetadata.fieldPathWithIndex,\n entryPath,\n }\n );\n}\n\nfunction handleEdit(fieldMetadata: CslpData) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_FIELD_EDIT_MODAL,\n { fieldMetadata }\n );\n}\n\nfunction handleFormFieldFocus(eventDetails: VisualBuilderCslpEventDetails) {\n const { editableElement } = eventDetails;\n return visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.FOCUS_FIELD,\n {\n DOMEditStack: getDOMEditStack(editableElement),\n toggleVisibility: true,\n }\n );\n}\n\nfunction FieldToolbarComponent(\n props: MultipleFieldToolbarProps\n): JSX.Element | null {\n const {\n eventDetails,\n isVariant: isVariantOrParentOfVariant,\n entryPermissions,\n entryWorkflowStageDetails,\n resolvedVariantPermissions,\n } = props;\n const { fieldMetadata, editableElement: targetElement } = eventDetails;\n const [isFormLoading, setIsFormLoading] = useState(false);\n const [fieldLocationData, setFieldLocationData] = useState<any>(null);\n const [displayAllApps, setDisplayAllApps] = useState(false);\n const moreButtonRef = useRef<HTMLButtonElement>(null);\n const toolbarRef = useRef<HTMLDivElement>(null);\n const [appListPosition, setAppListPosition] = useState<\"left\" | \"right\">(\n \"right\"\n );\n\n const parentPath =\n fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue ||\n \"\";\n const isVariant = !!fieldMetadata?.variant || isVariantOrParentOfVariant;\n const direction = getChildrenDirection(targetElement, parentPath);\n const [fieldSchema, setFieldSchema] = useState<ISchemaFieldMap | null>(\n null\n );\n const [fieldVariantStatus, setFieldVariantStatus] =\n useState<IVariantStatus>(BASE_VARIANT_STATUS);\n const [isOpenVariantRevert, setIsOpenVariantRevert] =\n useState<boolean>(false);\n\n let isModalEditable = false;\n let isReplaceAllowed = false;\n let isMultiple = false;\n let Icon = null;\n let fieldType = null;\n let isWholeMultipleField = false;\n const APP_LIST_MIN_WIDTH = 230;\n\n let disableFieldActions = false;\n if (fieldSchema) {\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n {\n editableElement: targetElement,\n fieldMetadata,\n },\n resolvedVariantPermissions,\n entryPermissions,\n entryWorkflowStageDetails,\n );\n disableFieldActions = isDisabled;\n\n fieldType = getFieldType(fieldSchema);\n\n Icon = fieldIcons[fieldType];\n\n isMultiple = fieldSchema.multiple || false;\n if (fieldType === FieldDataType.REFERENCE)\n isMultiple = (fieldSchema as IReferenceContentTypeSchema)\n .field_metadata.ref_multiple;\n\n // field is multiple but an instance is not selected\n // instead the whole field (all instances) is selected.\n // Currently, when whole featured_blogs is selected in canvas,\n // the fieldPathWithIndex and instance.fieldPathWithIndex are the same\n // cannot rely on -1 index, as the non-negative index then refers to the index of\n // the featured_blogs block in page_components\n // It is not needed except taxanomy.\n isWholeMultipleField =\n isMultiple &&\n (fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.instance.fieldPathWithIndex ||\n fieldMetadata.multipleFieldMetadata?.index === -1);\n\n isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType) && !isWholeMultipleField;\n\n isReplaceAllowed =\n ALLOWED_REPLACE_FIELDS.includes(fieldType) && !isWholeMultipleField;\n // if (\n // DEFAULT_MULTIPLE_FIELDS.includes(fieldType) &&\n // isWholeMultipleField &&\n // !isVariant\n // ) {\n // return null;\n // }\n }\n\n const domEditStack=getDOMEditStack(eventDetails.editableElement) as CslpDataUtil[]\n\n\n const invertTooltipPosition =\n targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;\n\n const handleMoreIconClick = () => {\n if (toolbarRef.current) {\n const rect = toolbarRef.current.getBoundingClientRect();\n const spaceRight = window.innerWidth - rect.right;\n const spaceLeft = rect.left;\n let position = \"\";\n\n if (spaceRight < APP_LIST_MIN_WIDTH) {\n position = \"left\";\n } else if (spaceRight > APP_LIST_MIN_WIDTH) {\n position = \"right\";\n } else {\n position = spaceRight > spaceLeft ? \"right\" : \"left\";\n }\n setAppListPosition(position as \"left\" | \"right\");\n }\n\n setDisplayAllApps(!displayAllApps);\n };\n\n const editButton = Icon ? (\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__edit-button\"\n className={classNames(\n \"visual-builder__button visual-builder__button--secondary visual-builder__button--edit\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__button--edit\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Edit\"}\n onClick={(e) => {\n // TODO the listener for field path is attached to the common parent requiring\n // propagation to be stopped, should ideally only attach onClick to fieldpath dropdown\n e.preventDefault();\n e.stopPropagation();\n handleEdit(fieldMetadata);\n }}\n disabled={disableFieldActions}\n >\n <Icon />\n </button>\n ) : null;\n\n const replaceButton = fieldType ? (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Replace\"}\n data-testid={`visual-builder-replace-${fieldType}`}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n if (fieldType === FieldDataType.REFERENCE) {\n handleReplaceReference(fieldMetadata);\n return;\n } else if (fieldType === FieldDataType.FILE) {\n handleReplaceAsset(fieldMetadata);\n return;\n }\n }}\n disabled={disableFieldActions}\n >\n <ReplaceAssetIcon />\n </button>\n ) : null;\n\n const formButton = (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__button--comment-loader\"\n ]]: isFormLoading,\n \"visual-builder__button--comment-loader\": isFormLoading,\n }\n )}\n data-tooltip={\"Form\"}\n data-testid={`visual-builder-form`}\n onClick={async (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsFormLoading(true);\n try {\n await handleFormFieldFocus(eventDetails);\n } finally {\n setIsFormLoading(false);\n }\n }}\n disabled={isFormLoading}\n >\n {isFormLoading ? <LoadingIcon /> : <FormIcon />}\n </button>\n );\n\n const toggleVariantDropdown = () => {\n setIsOpenVariantRevert(!isOpenVariantRevert);\n };\n\n const closeVariantDropdown = () => {\n setIsOpenVariantRevert(false);\n };\n\n const variantButton = (\n <button\n className={classNames(\n \"visual-builder__variant-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n visualBuilderStyles()[\"visual-builder__variant-button\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={isOpenVariantRevert} />\n </button>\n );\n\n // TODO sibling count is incorrect for this purpose\n\n const totalElementCount = targetElement?.parentNode?.childElementCount ?? 1;\n const indexOfElement = fieldMetadata?.multipleFieldMetadata?.index;\n\n const disableMoveLeft = indexOfElement === 0; // first element\n const disableMoveRight = indexOfElement === totalElementCount - 1; // last element\n\n useEffect(() => {\n async function fetchFieldSchema() {\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n if (fieldSchema) {\n setFieldSchema(fieldSchema);\n }\n const variantStatus = await getFieldVariantStatus(fieldMetadata);\n setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);\n }\n fetchFieldSchema();\n }, [fieldMetadata]);\n\n useEffect(() => {\n const event = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n (args: { data: { path: string } }) => {\n if (\n args.data?.path ===\n fieldMetadata.instance.fieldPathWithIndex\n ) {\n props.hideOverlay();\n }\n }\n );\n\n return () => {\n event?.unregister();\n };\n }, []);\n\n useEffect(() => {\n const fetchFieldLocationData = async () => {\n try {\n const event = await visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.FIELD_LOCATION_DATA, {\n domEditStack: getDOMEditStack(eventDetails.editableElement)\n });\n \n setFieldLocationData(event)\n } catch (error) {\n console.error('Error fetching field location data:', error);\n }\n };\n\n fetchFieldLocationData();\n }, [eventDetails.editableElement]);\n\n const multipleFieldToolbarButtonClasses = classNames(\n \"visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n );\n\n return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__multiple-field-toolbar\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__multiple-field-toolbar\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar\"\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__button-group\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__button-group\"\n ]\n )}\n >\n <>\n {isVariant ? (\n <VariantRevertDropdown\n fieldDataName={fieldMetadata.fieldPathWithIndex}\n fieldMetadata={fieldMetadata}\n variantStatus={fieldVariantStatus}\n isOpen={isOpenVariantRevert}\n closeDropdown={closeVariantDropdown}\n invertTooltipPosition={invertTooltipPosition}\n toggleVariantDropdown={toggleVariantDropdown}\n disabled={disableFieldActions}\n />\n ) : null}\n {isMultiple && !isWholeMultipleField ? (\n <>\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move up\"\n : \"Move left\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"previous\"\n );\n }}\n disabled={\n disableFieldActions || disableMoveLeft\n }\n >\n <MoveLeftIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={\n disableFieldActions ||\n disableMoveLeft\n }\n />\n </button>\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move down\"\n : \"Move right\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"next\"\n );\n }}\n disabled={\n disableFieldActions || disableMoveRight\n }\n >\n <MoveRightIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={\n disableFieldActions ||\n disableMoveRight\n }\n />\n </button>\n\n {isModalEditable ? editButton : null}\n {formButton}\n {isReplaceAllowed ? replaceButton : null}\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__delete-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\"Delete\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDeleteInstance(fieldMetadata);\n }}\n disabled={disableFieldActions}\n >\n <DeleteIcon />\n </button>\n </>\n ) : (\n <>\n {isModalEditable ? editButton : null}\n {isReplaceAllowed ? replaceButton : null}\n {formButton}\n {fieldSchema && !disableFieldActions ? (\n <CommentIcon\n fieldMetadata={fieldMetadata}\n fieldSchema={fieldSchema}\n invertTooltipPosition={\n invertTooltipPosition\n }\n />\n ) : null}\n </>\n )}\n\n {!disableFieldActions && (\n <FieldLocationIcon\n fieldLocationData={fieldLocationData}\n multipleFieldToolbarButtonClasses={\n multipleFieldToolbarButtonClasses\n }\n handleMoreIconClick={handleMoreIconClick}\n moreButtonRef={moreButtonRef}\n toolbarRef={toolbarRef}\n domEditStack={domEditStack}\n />\n )}\n </>\n </div>\n </div>\n {displayAllApps && (\n <FieldLocationAppList\n toolbarRef={toolbarRef}\n apps={fieldLocationData?.apps || ([] as any[])}\n position={appListPosition}\n domEditStack={domEditStack}\n setDisplayAllApps={setDisplayAllApps}\n displayAllApps={displayAllApps}\n />\n )}\n </div>\n );\n}\n\nexport default FieldToolbarComponent;\n"],"mappings":"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","names":["fieldSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/FieldToolbar.tsx"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport { CslpData as CslpDataUtil } from \"../../utils/cslpdata\";\nimport getChildrenDirection from \"../utils/getChildrenDirection\";\nimport {\n ALLOWED_MODAL_EDITABLE_FIELD,\n ALLOWED_REPLACE_FIELDS,\n} from \"../utils/constants\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport {\n handleDeleteInstance,\n handleMoveInstance,\n} from \"../utils/instanceHandlers\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { FieldDataType, ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n CaretIcon,\n DeleteIcon,\n MoveLeftIcon,\n MoveRightIcon,\n ReplaceAssetIcon,\n} from \"./icons\";\nimport { fieldIcons } from \"./icons/fields\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport CommentIcon from \"./CommentIcon\";\nimport React, { useEffect, useState, useRef } from \"preact/compat\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { IReferenceContentTypeSchema } from \"../../cms/types/contentTypeSchema.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FormIcon } from \"./icons\";\nimport { getDOMEditStack } from \"../utils/getCsDataOfElement\";\nimport { VariantIcon } from \"./icons/variant\";\nimport {\n BASE_VARIANT_STATUS,\n getFieldVariantStatus,\n IVariantStatus,\n VariantRevertDropdown,\n} from \"./FieldRevert/FieldRevertComponent\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { EntryPermissions } from \"../utils/getEntryPermissions\";\nimport { FieldLocationAppList } from \"./FieldLocationAppList\";\nimport { FieldLocationIcon } from \"./FieldLocationIcon\";\nimport { WorkflowStageDetails } from \"../utils/getWorkflowStageDetails\";\nimport { ResolvedVariantPermissions } from \"../utils/getResolvedVariantPermissions\";\nimport { isCustomFieldMultipleInstance as checkIsCustomFieldMultipleInstance } from \"../utils/isCustomFieldMultipleInstance\";\n\nexport type FieldDetails = Pick<\n VisualBuilderCslpEventDetails,\n \"editableElement\" | \"fieldMetadata\"\n>;\n\nconst TOOLTIP_TOP_EDGE_BUFFER = 96;\n\ninterface MultipleFieldToolbarProps {\n eventDetails: VisualBuilderCslpEventDetails;\n hideOverlay: () => void;\n isVariant?: boolean;\n entryPermissions?: EntryPermissions | undefined;\n entryWorkflowStageDetails?: WorkflowStageDetails | undefined;\n resolvedVariantPermissions?: ResolvedVariantPermissions | undefined;\n}\n\nfunction handleReplaceAsset(fieldMetadata: CslpData) {\n // TODO avoid sending whole fieldMetadata\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_ASSET_MODAL,\n {\n fieldMetadata,\n }\n );\n}\n\nfunction handleReplaceReference(fieldMetadata: CslpData) {\n const isMultipleInstance =\n fieldMetadata.multipleFieldMetadata.index > -1 &&\n fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.multipleFieldMetadata.parentDetails?.parentPath;\n const entryPath = isMultipleInstance\n ? fieldMetadata.instance.fieldPathWithIndex\n : fieldMetadata.fieldPathWithIndex;\n\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REFERENCE_MODAL,\n {\n entry_uid: fieldMetadata.entry_uid,\n content_type_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n fieldPath: fieldMetadata.fieldPath,\n fieldPathWithIndex: fieldMetadata.fieldPathWithIndex,\n entryPath,\n }\n );\n}\n\nfunction handleEdit(fieldMetadata: CslpData) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_FIELD_EDIT_MODAL,\n { fieldMetadata }\n );\n}\n\nfunction handleFormFieldFocus(eventDetails: VisualBuilderCslpEventDetails) {\n const { editableElement } = eventDetails;\n return visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.FOCUS_FIELD,\n {\n DOMEditStack: getDOMEditStack(editableElement),\n toggleVisibility: true,\n }\n );\n}\n\nfunction FieldToolbarComponent(\n props: MultipleFieldToolbarProps\n): JSX.Element | null {\n const {\n eventDetails,\n isVariant: isVariantOrParentOfVariant,\n entryPermissions,\n entryWorkflowStageDetails,\n resolvedVariantPermissions,\n } = props;\n const { fieldMetadata, editableElement: targetElement } = eventDetails;\n const [isFormLoading, setIsFormLoading] = useState(false);\n const [fieldLocationData, setFieldLocationData] = useState<any>(null);\n const [displayAllApps, setDisplayAllApps] = useState(false);\n const moreButtonRef = useRef<HTMLButtonElement>(null);\n const toolbarRef = useRef<HTMLDivElement>(null);\n const [appListPosition, setAppListPosition] = useState<\"left\" | \"right\">(\n \"right\"\n );\n\n const parentPath =\n fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue ||\n \"\";\n const isVariant = !!fieldMetadata?.variant || isVariantOrParentOfVariant;\n const direction = getChildrenDirection(targetElement, parentPath);\n const [fieldSchema, setFieldSchema] = useState<ISchemaFieldMap | null>(\n null\n );\n const [fieldVariantStatus, setFieldVariantStatus] =\n useState<IVariantStatus>(BASE_VARIANT_STATUS);\n const [isOpenVariantRevert, setIsOpenVariantRevert] =\n useState<boolean>(false);\n\n let isModalEditable = false;\n let isReplaceAllowed = false;\n let isMultiple = false;\n let Icon = null;\n let fieldType = null;\n let isWholeMultipleField = false;\n const APP_LIST_MIN_WIDTH = 230;\n\n let disableFieldActions = false;\n let isCustomFieldMultipleInstance = false;\n let isCustomFieldWholeMultiple = false;\n if (fieldSchema) {\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n {\n editableElement: targetElement,\n fieldMetadata,\n },\n resolvedVariantPermissions,\n entryPermissions,\n entryWorkflowStageDetails,\n );\n disableFieldActions = isDisabled;\n\n fieldType = getFieldType(fieldSchema);\n\n Icon = fieldIcons[fieldType];\n\n isMultiple = fieldSchema.multiple || false;\n if (fieldType === FieldDataType.REFERENCE)\n isMultiple = (fieldSchema as IReferenceContentTypeSchema)\n .field_metadata.ref_multiple;\n\n // field is multiple but an instance is not selected\n // instead the whole field (all instances) is selected.\n // Currently, when whole featured_blogs is selected in canvas,\n // the fieldPathWithIndex and instance.fieldPathWithIndex are the same\n // cannot rely on -1 index, as the non-negative index then refers to the index of\n // the featured_blogs block in page_components\n // It is not needed except taxanomy.\n isWholeMultipleField =\n isMultiple &&\n (fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.instance.fieldPathWithIndex ||\n fieldMetadata.multipleFieldMetadata?.index === -1);\n\n isCustomFieldMultipleInstance = checkIsCustomFieldMultipleInstance(fieldSchema, fieldMetadata);\n isCustomFieldWholeMultiple =\n fieldType === FieldDataType.CUSTOM_FIELD && isMultiple && isWholeMultipleField;\n\n if (isCustomFieldWholeMultiple) {\n isModalEditable = true;\n } else {\n isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType) && !isWholeMultipleField;\n }\n\n isReplaceAllowed =\n ALLOWED_REPLACE_FIELDS.includes(fieldType) && !isWholeMultipleField;\n // if (\n // DEFAULT_MULTIPLE_FIELDS.includes(fieldType) &&\n // isWholeMultipleField &&\n // !isVariant\n // ) {\n // return null;\n // }\n }\n\n const domEditStack=getDOMEditStack(eventDetails.editableElement) as CslpDataUtil[]\n\n\n const invertTooltipPosition =\n targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;\n\n const handleMoreIconClick = () => {\n if (toolbarRef.current) {\n const rect = toolbarRef.current.getBoundingClientRect();\n const spaceRight = window.innerWidth - rect.right;\n const spaceLeft = rect.left;\n let position = \"\";\n\n if (spaceRight < APP_LIST_MIN_WIDTH) {\n position = \"left\";\n } else if (spaceRight > APP_LIST_MIN_WIDTH) {\n position = \"right\";\n } else {\n position = spaceRight > spaceLeft ? \"right\" : \"left\";\n }\n setAppListPosition(position as \"left\" | \"right\");\n }\n\n setDisplayAllApps(!displayAllApps);\n };\n\n const editButton = Icon ? (\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__edit-button\"\n className={classNames(\n \"visual-builder__button visual-builder__button--secondary visual-builder__button--edit\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__button--edit\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Edit\"}\n onClick={(e) => {\n // TODO the listener for field path is attached to the common parent requiring\n // propagation to be stopped, should ideally only attach onClick to fieldpath dropdown\n e.preventDefault();\n e.stopPropagation();\n handleEdit(fieldMetadata);\n }}\n disabled={disableFieldActions}\n >\n <Icon />\n </button>\n ) : null;\n\n const replaceButton = fieldType ? (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Replace\"}\n data-testid={`visual-builder-replace-${fieldType}`}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n if (fieldType === FieldDataType.REFERENCE) {\n handleReplaceReference(fieldMetadata);\n return;\n } else if (fieldType === FieldDataType.FILE) {\n handleReplaceAsset(fieldMetadata);\n return;\n }\n }}\n disabled={disableFieldActions}\n >\n <ReplaceAssetIcon />\n </button>\n ) : null;\n\n const formButton = (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__button--comment-loader\"\n ]]: isFormLoading,\n \"visual-builder__button--comment-loader\": isFormLoading,\n }\n )}\n data-tooltip={\"Form\"}\n data-testid={`visual-builder-form`}\n onClick={async (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsFormLoading(true);\n try {\n await handleFormFieldFocus(eventDetails);\n } finally {\n setIsFormLoading(false);\n }\n }}\n disabled={isFormLoading}\n >\n {isFormLoading ? <LoadingIcon /> : <FormIcon />}\n </button>\n );\n\n const toggleVariantDropdown = () => {\n setIsOpenVariantRevert(!isOpenVariantRevert);\n };\n\n const closeVariantDropdown = () => {\n setIsOpenVariantRevert(false);\n };\n\n const variantButton = (\n <button\n className={classNames(\n \"visual-builder__variant-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n visualBuilderStyles()[\"visual-builder__variant-button\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={isOpenVariantRevert} />\n </button>\n );\n\n // TODO sibling count is incorrect for this purpose\n\n const totalElementCount = targetElement?.parentNode?.childElementCount ?? 1;\n const indexOfElement = fieldMetadata?.multipleFieldMetadata?.index;\n\n const disableMoveLeft = indexOfElement === 0; // first element\n const disableMoveRight = indexOfElement === totalElementCount - 1; // last element\n\n useEffect(() => {\n async function fetchFieldSchema() {\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n if (fieldSchema) {\n setFieldSchema(fieldSchema);\n }\n const variantStatus = await getFieldVariantStatus(fieldMetadata);\n setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);\n }\n fetchFieldSchema();\n }, [fieldMetadata]);\n\n useEffect(() => {\n const event = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n (args: { data: { path: string } }) => {\n if (\n args.data?.path ===\n fieldMetadata.instance.fieldPathWithIndex\n ) {\n props.hideOverlay();\n }\n }\n );\n\n return () => {\n event?.unregister();\n };\n }, []);\n\n useEffect(() => {\n const fetchFieldLocationData = async () => {\n try {\n const event = await visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.FIELD_LOCATION_DATA, {\n domEditStack: getDOMEditStack(eventDetails.editableElement)\n });\n \n setFieldLocationData(event)\n } catch (error) {\n console.error('Error fetching field location data:', error);\n }\n };\n\n fetchFieldLocationData();\n }, [eventDetails.editableElement]);\n\n const multipleFieldToolbarButtonClasses = classNames(\n \"visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n );\n\n if (isCustomFieldMultipleInstance) {\n return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__custom-field-instance-message\",\n visualBuilderStyles()[\"visual-builder__custom-field-instance-message\"]\n )}\n data-testid=\"visual-builder__custom-field-instance-message\"\n >\n You're on a custom field item. Select the entire custom field to edit or manage it.\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__multiple-field-toolbar\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__multiple-field-toolbar\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar\"\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__button-group\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__button-group\"\n ]\n )}\n >\n <>\n {isVariant ? (\n <VariantRevertDropdown\n fieldDataName={fieldMetadata.fieldPathWithIndex}\n fieldMetadata={fieldMetadata}\n variantStatus={fieldVariantStatus}\n isOpen={isOpenVariantRevert}\n closeDropdown={closeVariantDropdown}\n invertTooltipPosition={invertTooltipPosition}\n toggleVariantDropdown={toggleVariantDropdown}\n disabled={disableFieldActions}\n />\n ) : null}\n {isMultiple && !isWholeMultipleField ? (\n <>\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move up\"\n : \"Move left\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"previous\"\n );\n }}\n disabled={\n disableFieldActions || disableMoveLeft\n }\n >\n <MoveLeftIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={\n disableFieldActions ||\n disableMoveLeft\n }\n />\n </button>\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move down\"\n : \"Move right\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"next\"\n );\n }}\n disabled={\n disableFieldActions || disableMoveRight\n }\n >\n <MoveRightIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={\n disableFieldActions ||\n disableMoveRight\n }\n />\n </button>\n\n {isModalEditable ? editButton : null}\n {formButton}\n {isReplaceAllowed ? replaceButton : null}\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__delete-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\"Delete\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDeleteInstance(fieldMetadata);\n }}\n disabled={disableFieldActions}\n >\n <DeleteIcon />\n </button>\n </>\n ) : (\n <>\n {isModalEditable ? editButton : null}\n {isReplaceAllowed ? replaceButton : null}\n {formButton}\n {fieldSchema && !disableFieldActions ? (\n <CommentIcon\n fieldMetadata={fieldMetadata}\n fieldSchema={fieldSchema}\n invertTooltipPosition={\n invertTooltipPosition\n }\n />\n ) : null}\n </>\n )}\n\n {!disableFieldActions && (\n <FieldLocationIcon\n fieldLocationData={fieldLocationData}\n multipleFieldToolbarButtonClasses={\n multipleFieldToolbarButtonClasses\n }\n handleMoreIconClick={handleMoreIconClick}\n moreButtonRef={moreButtonRef}\n toolbarRef={toolbarRef}\n domEditStack={domEditStack}\n />\n )}\n </>\n </div>\n </div>\n {displayAllApps && (\n <FieldLocationAppList\n toolbarRef={toolbarRef}\n apps={fieldLocationData?.apps || ([] as any[])}\n position={appListPosition}\n domEditStack={domEditStack}\n setDisplayAllApps={setDisplayAllApps}\n displayAllApps={displayAllApps}\n />\n )}\n </div>\n );\n}\n\nexport default FieldToolbarComponent;\n"],"mappings":"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","names":["fieldSchema"]}
|
|
@@ -129,7 +129,7 @@ var useCollab = () => {
|
|
|
129
129
|
if (data?.data?.updateConfig) {
|
|
130
130
|
import_configManager.default.set("collab.isFeedbackMode", true);
|
|
131
131
|
}
|
|
132
|
-
if (threadUids
|
|
132
|
+
if (threadUids?.length > 0) {
|
|
133
133
|
threadUids.forEach((threadUid) => {
|
|
134
134
|
(0, import_generateThread.removeCollabIcon)(threadUid);
|
|
135
135
|
});
|
|
@@ -139,8 +139,8 @@ var useCollab = () => {
|
|
|
139
139
|
const collabThreadReopen = import_visualBuilderPostMessage.default?.on(
|
|
140
140
|
import_postMessage.VisualBuilderPostMessageEvents.COLLAB_THREAD_REOPEN,
|
|
141
141
|
(data) => {
|
|
142
|
-
const thread = data
|
|
143
|
-
if (!config?.collab?.enable) return;
|
|
142
|
+
const thread = data?.data?.thread;
|
|
143
|
+
if (!config?.collab?.enable || !thread) return;
|
|
144
144
|
const result = (0, import_generateThread2.generateThread)(thread, {
|
|
145
145
|
hidden: Boolean(config?.collab?.pauseFeedback)
|
|
146
146
|
});
|
|
@@ -155,8 +155,8 @@ var useCollab = () => {
|
|
|
155
155
|
const collabThreadHighlight = import_visualBuilderPostMessage.default?.on(
|
|
156
156
|
import_postMessage.VisualBuilderPostMessageEvents.COLLAB_THREAD_HIGHLIGHT,
|
|
157
157
|
(data) => {
|
|
158
|
-
const
|
|
159
|
-
if (!config?.collab?.enable || config?.collab?.pauseFeedback)
|
|
158
|
+
const threadUid = data?.data?.threadUid;
|
|
159
|
+
if (!config?.collab?.enable || config?.collab?.pauseFeedback || !threadUid)
|
|
160
160
|
return;
|
|
161
161
|
(0, import_generateThread.HighlightThread)(threadUid);
|
|
162
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useCollab.ts"],"sourcesContent":["import visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport Config from \"../../configManager/configManager\";\nimport {\n removeAllCollabIcons,\n hideAllCollabIcons,\n removeCollabIcon,\n HighlightThread,\n showAllCollabIcons,\n} from \"../generators/generateThread\";\nimport {\n generateThread,\n handleMissingThreads,\n} from \"../generators/generateThread\";\nimport {\n IThreadDTO,\n ICollabConfig,\n IThreadIdentifier,\n IThreadRemove,\n IThreadReopen,\n} from \"../types/collab.types\";\nimport { OnEvent } from \"@contentstack/advanced-post-message\";\n\nconst handleRemoveCommentIcons = (fromShare: boolean = false): void => {\n if (fromShare) {\n hideAllCollabIcons();\n return;\n }\n removeAllCollabIcons();\n};\n\nexport const useCollab = () => {\n const config = Config.get();\n const collabEnable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_ENABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.isFeedbackMode\",\n data?.data?.collab?.isFeedbackMode\n );\n showAllCollabIcons();\n return;\n }\n\n Config.set(\"collab.enable\", data.data.collab.enable ?? false);\n Config.set(\n \"collab.isFeedbackMode\",\n data.data.collab.isFeedbackMode ?? false\n );\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.inviteMetadata\",\n data.data.collab.inviteMetadata\n );\n }\n );\n\n const collabPayload = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DATA_UPDATE,\n (data: OnEvent<ICollabConfig>) => {\n if (!config?.collab?.enable) return;\n\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n\n if (data?.data?.collab?.inviteMetadata) {\n Config.set(\n \"collab.inviteMetadata\",\n data?.data?.collab?.inviteMetadata\n );\n return;\n }\n\n const missingThreadIds =\n data?.data?.collab?.payload\n ?.map((payload: IThreadDTO) => generateThread(payload))\n .filter((id): id is string => id !== undefined) || [];\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n\n const collabDisable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DISABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n handleRemoveCommentIcons(true);\n return;\n }\n\n Config.set(\"collab.enable\", false);\n Config.set(\"collab.isFeedbackMode\", false);\n\n handleRemoveCommentIcons();\n }\n );\n\n const collabThreadRemove = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREADS_REMOVE,\n (data: OnEvent<IThreadRemove>) => {\n const threadUids = data?.data?.threadUids;\n\n if (!config?.collab?.enable) return;\n\n if (data?.data?.updateConfig) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n if (threadUids
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useCollab.ts"],"sourcesContent":["import visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport Config from \"../../configManager/configManager\";\nimport {\n removeAllCollabIcons,\n hideAllCollabIcons,\n removeCollabIcon,\n HighlightThread,\n showAllCollabIcons,\n} from \"../generators/generateThread\";\nimport {\n generateThread,\n handleMissingThreads,\n} from \"../generators/generateThread\";\nimport {\n IThreadDTO,\n ICollabConfig,\n IThreadIdentifier,\n IThreadRemove,\n IThreadReopen,\n} from \"../types/collab.types\";\nimport { OnEvent } from \"@contentstack/advanced-post-message\";\n\nconst handleRemoveCommentIcons = (fromShare: boolean = false): void => {\n if (fromShare) {\n hideAllCollabIcons();\n return;\n }\n removeAllCollabIcons();\n};\n\nexport const useCollab = () => {\n const config = Config.get();\n const collabEnable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_ENABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.isFeedbackMode\",\n data?.data?.collab?.isFeedbackMode\n );\n showAllCollabIcons();\n return;\n }\n\n Config.set(\"collab.enable\", data.data.collab.enable ?? false);\n Config.set(\n \"collab.isFeedbackMode\",\n data.data.collab.isFeedbackMode ?? false\n );\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.inviteMetadata\",\n data.data.collab.inviteMetadata\n );\n }\n );\n\n const collabPayload = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DATA_UPDATE,\n (data: OnEvent<ICollabConfig>) => {\n if (!config?.collab?.enable) return;\n\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n\n if (data?.data?.collab?.inviteMetadata) {\n Config.set(\n \"collab.inviteMetadata\",\n data?.data?.collab?.inviteMetadata\n );\n return;\n }\n\n const missingThreadIds =\n data?.data?.collab?.payload\n ?.map((payload: IThreadDTO) => generateThread(payload))\n .filter((id): id is string => id !== undefined) || [];\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n\n const collabDisable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DISABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n handleRemoveCommentIcons(true);\n return;\n }\n\n Config.set(\"collab.enable\", false);\n Config.set(\"collab.isFeedbackMode\", false);\n\n handleRemoveCommentIcons();\n }\n );\n\n const collabThreadRemove = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREADS_REMOVE,\n (data: OnEvent<IThreadRemove>) => {\n const threadUids = data?.data?.threadUids;\n\n if (!config?.collab?.enable) return;\n\n if (data?.data?.updateConfig) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n if (threadUids?.length > 0) {\n threadUids.forEach((threadUid) => {\n removeCollabIcon(threadUid);\n });\n }\n }\n );\n\n const collabThreadReopen = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREAD_REOPEN,\n (data: OnEvent<IThreadReopen>) => {\n const thread = data?.data?.thread;\n\n if (!config?.collab?.enable || !thread) return;\n\n const result = generateThread(thread, {\n hidden: Boolean(config?.collab?.pauseFeedback),\n });\n if (result) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: [result],\n });\n }\n }\n );\n\n const collabThreadHighlight = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREAD_HIGHLIGHT,\n (data: OnEvent<IThreadIdentifier>) => {\n const threadUid = data?.data?.threadUid;\n if (!config?.collab?.enable || config?.collab?.pauseFeedback || !threadUid)\n return;\n\n HighlightThread(threadUid);\n }\n );\n\n return () => {\n collabEnable?.unregister();\n collabPayload?.unregister();\n collabDisable?.unregister();\n collabThreadRemove?.unregister();\n collabThreadReopen?.unregister();\n collabThreadHighlight?.unregister();\n };\n};\n"],"mappings":"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","names":["import_generateThread","Config","visualBuilderPostMessage"]}
|
|
@@ -106,7 +106,7 @@ var useCollab = () => {
|
|
|
106
106
|
if (data?.data?.updateConfig) {
|
|
107
107
|
Config.set("collab.isFeedbackMode", true);
|
|
108
108
|
}
|
|
109
|
-
if (threadUids
|
|
109
|
+
if (threadUids?.length > 0) {
|
|
110
110
|
threadUids.forEach((threadUid) => {
|
|
111
111
|
removeCollabIcon(threadUid);
|
|
112
112
|
});
|
|
@@ -116,8 +116,8 @@ var useCollab = () => {
|
|
|
116
116
|
const collabThreadReopen = visualBuilderPostMessage?.on(
|
|
117
117
|
VisualBuilderPostMessageEvents.COLLAB_THREAD_REOPEN,
|
|
118
118
|
(data) => {
|
|
119
|
-
const thread = data
|
|
120
|
-
if (!config?.collab?.enable) return;
|
|
119
|
+
const thread = data?.data?.thread;
|
|
120
|
+
if (!config?.collab?.enable || !thread) return;
|
|
121
121
|
const result = generateThread(thread, {
|
|
122
122
|
hidden: Boolean(config?.collab?.pauseFeedback)
|
|
123
123
|
});
|
|
@@ -132,8 +132,8 @@ var useCollab = () => {
|
|
|
132
132
|
const collabThreadHighlight = visualBuilderPostMessage?.on(
|
|
133
133
|
VisualBuilderPostMessageEvents.COLLAB_THREAD_HIGHLIGHT,
|
|
134
134
|
(data) => {
|
|
135
|
-
const
|
|
136
|
-
if (!config?.collab?.enable || config?.collab?.pauseFeedback)
|
|
135
|
+
const threadUid = data?.data?.threadUid;
|
|
136
|
+
if (!config?.collab?.enable || config?.collab?.pauseFeedback || !threadUid)
|
|
137
137
|
return;
|
|
138
138
|
HighlightThread(threadUid);
|
|
139
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useCollab.ts"],"sourcesContent":["import visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport Config from \"../../configManager/configManager\";\nimport {\n removeAllCollabIcons,\n hideAllCollabIcons,\n removeCollabIcon,\n HighlightThread,\n showAllCollabIcons,\n} from \"../generators/generateThread\";\nimport {\n generateThread,\n handleMissingThreads,\n} from \"../generators/generateThread\";\nimport {\n IThreadDTO,\n ICollabConfig,\n IThreadIdentifier,\n IThreadRemove,\n IThreadReopen,\n} from \"../types/collab.types\";\nimport { OnEvent } from \"@contentstack/advanced-post-message\";\n\nconst handleRemoveCommentIcons = (fromShare: boolean = false): void => {\n if (fromShare) {\n hideAllCollabIcons();\n return;\n }\n removeAllCollabIcons();\n};\n\nexport const useCollab = () => {\n const config = Config.get();\n const collabEnable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_ENABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.isFeedbackMode\",\n data?.data?.collab?.isFeedbackMode\n );\n showAllCollabIcons();\n return;\n }\n\n Config.set(\"collab.enable\", data.data.collab.enable ?? false);\n Config.set(\n \"collab.isFeedbackMode\",\n data.data.collab.isFeedbackMode ?? false\n );\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.inviteMetadata\",\n data.data.collab.inviteMetadata\n );\n }\n );\n\n const collabPayload = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DATA_UPDATE,\n (data: OnEvent<ICollabConfig>) => {\n if (!config?.collab?.enable) return;\n\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n\n if (data?.data?.collab?.inviteMetadata) {\n Config.set(\n \"collab.inviteMetadata\",\n data?.data?.collab?.inviteMetadata\n );\n return;\n }\n\n const missingThreadIds =\n data?.data?.collab?.payload\n ?.map((payload: IThreadDTO) => generateThread(payload))\n .filter((id): id is string => id !== undefined) || [];\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n\n const collabDisable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DISABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n handleRemoveCommentIcons(true);\n return;\n }\n\n Config.set(\"collab.enable\", false);\n Config.set(\"collab.isFeedbackMode\", false);\n\n handleRemoveCommentIcons();\n }\n );\n\n const collabThreadRemove = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREADS_REMOVE,\n (data: OnEvent<IThreadRemove>) => {\n const threadUids = data?.data?.threadUids;\n\n if (!config?.collab?.enable) return;\n\n if (data?.data?.updateConfig) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n if (threadUids
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useCollab.ts"],"sourcesContent":["import visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport Config from \"../../configManager/configManager\";\nimport {\n removeAllCollabIcons,\n hideAllCollabIcons,\n removeCollabIcon,\n HighlightThread,\n showAllCollabIcons,\n} from \"../generators/generateThread\";\nimport {\n generateThread,\n handleMissingThreads,\n} from \"../generators/generateThread\";\nimport {\n IThreadDTO,\n ICollabConfig,\n IThreadIdentifier,\n IThreadRemove,\n IThreadReopen,\n} from \"../types/collab.types\";\nimport { OnEvent } from \"@contentstack/advanced-post-message\";\n\nconst handleRemoveCommentIcons = (fromShare: boolean = false): void => {\n if (fromShare) {\n hideAllCollabIcons();\n return;\n }\n removeAllCollabIcons();\n};\n\nexport const useCollab = () => {\n const config = Config.get();\n const collabEnable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_ENABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.isFeedbackMode\",\n data?.data?.collab?.isFeedbackMode\n );\n showAllCollabIcons();\n return;\n }\n\n Config.set(\"collab.enable\", data.data.collab.enable ?? false);\n Config.set(\n \"collab.isFeedbackMode\",\n data.data.collab.isFeedbackMode ?? false\n );\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.inviteMetadata\",\n data.data.collab.inviteMetadata\n );\n }\n );\n\n const collabPayload = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DATA_UPDATE,\n (data: OnEvent<ICollabConfig>) => {\n if (!config?.collab?.enable) return;\n\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n\n if (data?.data?.collab?.inviteMetadata) {\n Config.set(\n \"collab.inviteMetadata\",\n data?.data?.collab?.inviteMetadata\n );\n return;\n }\n\n const missingThreadIds =\n data?.data?.collab?.payload\n ?.map((payload: IThreadDTO) => generateThread(payload))\n .filter((id): id is string => id !== undefined) || [];\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n\n const collabDisable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DISABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n handleRemoveCommentIcons(true);\n return;\n }\n\n Config.set(\"collab.enable\", false);\n Config.set(\"collab.isFeedbackMode\", false);\n\n handleRemoveCommentIcons();\n }\n );\n\n const collabThreadRemove = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREADS_REMOVE,\n (data: OnEvent<IThreadRemove>) => {\n const threadUids = data?.data?.threadUids;\n\n if (!config?.collab?.enable) return;\n\n if (data?.data?.updateConfig) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n if (threadUids?.length > 0) {\n threadUids.forEach((threadUid) => {\n removeCollabIcon(threadUid);\n });\n }\n }\n );\n\n const collabThreadReopen = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREAD_REOPEN,\n (data: OnEvent<IThreadReopen>) => {\n const thread = data?.data?.thread;\n\n if (!config?.collab?.enable || !thread) return;\n\n const result = generateThread(thread, {\n hidden: Boolean(config?.collab?.pauseFeedback),\n });\n if (result) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: [result],\n });\n }\n }\n );\n\n const collabThreadHighlight = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREAD_HIGHLIGHT,\n (data: OnEvent<IThreadIdentifier>) => {\n const threadUid = data?.data?.threadUid;\n if (!config?.collab?.enable || config?.collab?.pauseFeedback || !threadUid)\n return;\n\n HighlightThread(threadUid);\n }\n );\n\n return () => {\n collabEnable?.unregister();\n collabPayload?.unregister();\n collabDisable?.unregister();\n collabThreadRemove?.unregister();\n collabThreadReopen?.unregister();\n collabThreadHighlight?.unregister();\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -41,6 +41,7 @@ var import_types = require("../types/types.cjs");
|
|
|
41
41
|
var import_generateStartEditingButton = require("./generators/generateStartEditingButton.cjs");
|
|
42
42
|
var import_generateOverlay = require("./generators/generateOverlay.cjs");
|
|
43
43
|
var import_getEntryIdentifiersInCurrentPage = require("./utils/getEntryIdentifiersInCurrentPage.cjs");
|
|
44
|
+
var import_resolvePageContext = require("./utils/resolvePageContext.cjs");
|
|
44
45
|
var import_visualBuilderPostMessage = __toESM(require("./utils/visualBuilderPostMessage.cjs"), 1);
|
|
45
46
|
var import_postMessage = require("./utils/types/postMessage.types.cjs");
|
|
46
47
|
var import_goober = require("goober");
|
|
@@ -260,10 +261,14 @@ var _VisualBuilder = class _VisualBuilder {
|
|
|
260
261
|
if (!config.enable || config.mode < import_types.ILivePreviewModeConfig.BUILDER) {
|
|
261
262
|
return;
|
|
262
263
|
}
|
|
263
|
-
|
|
264
|
+
const { entryUid, contentTypeUid } = (0, import_resolvePageContext.resolvePageContext)();
|
|
265
|
+
const initPayload = {
|
|
264
266
|
isSSR: config.ssr,
|
|
265
|
-
href: window.location.href
|
|
266
|
-
|
|
267
|
+
href: window.location.href,
|
|
268
|
+
entry_uid: entryUid,
|
|
269
|
+
content_type_uid: contentTypeUid
|
|
270
|
+
};
|
|
271
|
+
import_visualBuilderPostMessage.default?.send("init", initPayload).then((data) => {
|
|
267
272
|
const {
|
|
268
273
|
windowType = import_types.ILivePreviewWindowType.BUILDER,
|
|
269
274
|
stackDetails,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/visualBuilder/index.ts"],"sourcesContent":["import { Signal, signal } from \"@preact/signals\";\n\nimport { inIframe } from \"../common/inIframe\";\nimport Config from \"../configManager/configManager\";\nimport {\n useHistoryPostMessageEvent,\n useOnEntryUpdatePostMessageEvent,\n} from \"../livePreview/eventManager/postMessageEvent.hooks\";\nimport {\n ILivePreviewModeConfig,\n ILivePreviewWindowType,\n IVisualBuilderInitEvent,\n} from \"../types/types\";\nimport { generateStartEditingButton } from \"./generators/generateStartEditingButton\";\n\nimport { addFocusOverlay } from \"./generators/generateOverlay\";\nimport { getEntryIdentifiersInCurrentPage } from \"./utils/getEntryIdentifiersInCurrentPage\";\nimport visualBuilderPostMessage from \"./utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./utils/types/postMessage.types\";\n\nimport { setup } from \"goober\";\nimport { debounce, isEqual } from \"lodash-es\";\nimport { h } from \"preact\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../cslp\";\nimport initUI from \"./components\";\nimport { useDraftFieldsPostMessageEvent } from \"./eventManager/useDraftFieldsPostMessageEvent\";\nimport { useHideFocusOverlayPostMessageEvent } from \"./eventManager/useHideFocusOverlayPostMessageEvent\";\nimport { useScrollToField } from \"./eventManager/useScrollToField\";\nimport { debounceAddVariantFieldClass, getHighlightVariantFieldsStatus, setHighlightVariantFields, useVariantFieldsPostMessageEvent } from \"./eventManager/useVariantsPostMessageEvent\";\nimport {\n generateEmptyBlocks,\n removeEmptyBlocks,\n} from \"./generators/generateEmptyBlock\";\nimport { addEventListeners, removeEventListeners } from \"./listeners\";\nimport { addKeyboardShortcuts } from \"./listeners/keyboardShortcuts\";\nimport { FieldSchemaMap } from \"./utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"./utils/isFieldDisabled\";\nimport {\n updateFocussedState,\n updateFocussedStateOnMutation,\n} from \"./utils/updateFocussedState\";\nimport { useHighlightCommentIcon } from \"./eventManager/useHighlightCommentIcon\";\nimport { updateHighlightedCommentIconPosition } from \"./generators/generateHighlightedComment\";\nimport {\n updateCollabIconPosition,\n updatePopupPositions,\n updateSuggestionListPosition,\n} from \"./generators/generateThread\";\nimport { useRecalculateVariantDataCSLPValues } from \"./eventManager/useRecalculateVariantDataCSLPValues\";\nimport { VB_EmptyBlockParentClass } from \"..\";\nimport { useCollab } from \"./eventManager/useCollab\";\nimport {\n handleMissingThreads,\n processThreadsBatch,\n filterUnrenderedThreads,\n clearThreadStatus,\n} from \"./generators/generateThread\";\nimport { IThreadDTO } from \"./types/collab.types\";\n\ninterface VisualBuilderGlobalStateImpl {\n previousSelectedEditableDOM: HTMLElement | Element | null;\n previousHoveredTargetDOM: Element | null;\n previousEmptyBlockParents: Element[] | [];\n focusFieldValue: string | null;\n focusFieldReceivedInput: boolean;\n audienceMode: boolean;\n locale: string;\n variant: string | null;\n highlightVariantFields: boolean;\n variantOrder: string[];\n focusElementObserver: MutationObserver | null;\n referenceParentMap: Record<string, string>;\n isFocussed: boolean;\n}\n\nlet threadsPayload: IThreadDTO[] = [];\n\nexport class VisualBuilder {\n private customCursor: HTMLDivElement | null = null;\n private overlayWrapper: HTMLDivElement | null = null;\n private visualBuilderContainer: HTMLDivElement | null = null;\n private focusedToolbar: HTMLDivElement | null = null;\n\n static VisualBuilderGlobalState: Signal<VisualBuilderGlobalStateImpl> =\n signal({\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: Config.get().stackDetails.masterLocale || \"en-us\",\n variant: null,\n highlightVariantFields: false,\n variantOrder: [],\n focusElementObserver: null,\n referenceParentMap: {},\n isFocussed: false,\n });\n\n private handlePositionChange(editableElement: HTMLElement) {\n updateFocussedState({\n editableElement,\n visualBuilderContainer: this.visualBuilderContainer,\n overlayWrapper: this.overlayWrapper,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n }\n\n private scrollEventHandler = () => {\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n updateHighlightedCommentIconPosition(); // Update icons position\n };\n\n private resizeEventHandler = () => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n updateHighlightedCommentIconPosition();\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n if (previousSelectedEditableDOM) {\n this.handlePositionChange(\n previousSelectedEditableDOM as HTMLElement\n );\n }\n };\n\n private resizeObserver = new ResizeObserver(([entry]) => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!this.overlayWrapper || !previousSelectedEditableDOM) {\n return;\n }\n\n // if previous selected editable element is not same as the current\n // target and the target is also not psuedo-editable then return\n if (\n !entry.target.isSameNode(previousSelectedEditableDOM) &&\n !entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n )\n ) {\n return;\n }\n\n const isPsuedoEditableElement = entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n );\n\n // the \"actual\" editable element when the current target is psuedo-editable\n // is the previous selected editable element instead of the closest data-cslp element\n // (cant use closest because the psuedo editable is absolute positioned)\n // (Note - why do we even need the closest? we do an early exit if entry.target\n // is not the previous selected editable element, needs more investigation)\n const editableElement = (\n isPsuedoEditableElement\n ? previousSelectedEditableDOM\n : entry.target.closest(\"[data-cslp]\")\n ) as HTMLElement | null;\n\n if (isPsuedoEditableElement) {\n // if the current target is psuedo-editable, then the resizing occurred by typing\n // into the psuedo editable, simply update the focus overlay\n addFocusOverlay(entry.target, this.overlayWrapper);\n\n // TODO check if we can now resize the actual editable element\n // when psuedo editable element is resized, avoid infinite loops\n } else if (editableElement) {\n this.handlePositionChange(editableElement);\n }\n\n // update the overlay if field is disabled\n const cslpData =\n editableElement && editableElement.getAttribute(\"data-cslp\");\n\n if (!editableElement || !isValidCslp(cslpData)) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n ).then((fieldSchema) => {\n if (!fieldSchema) {\n return;\n }\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement,\n fieldMetadata,\n });\n if (isDisabled) {\n addFocusOverlay(\n editableElement,\n this.overlayWrapper as HTMLDivElement,\n isDisabled\n );\n }\n });\n });\n\n private mutationObserver = new MutationObserver(\n debounce(\n async () => {\n updateFocussedStateOnMutation(\n this.overlayWrapper,\n this.focusedToolbar,\n this.visualBuilderContainer,\n this.resizeObserver\n );\n\n const emptyBlockParents = Array.from(\n document.querySelectorAll(`.${VB_EmptyBlockParentClass}`)\n );\n\n const previousEmptyBlockParents = VisualBuilder\n .VisualBuilderGlobalState.value\n .previousEmptyBlockParents as Element[];\n\n if (!isEqual(emptyBlockParents, previousEmptyBlockParents)) {\n const noMoreEmptyBlockParent =\n previousEmptyBlockParents.filter(\n (x) => !emptyBlockParents.includes(x)\n );\n const newEmptyBlockParent = emptyBlockParents.filter(\n (x) => !previousEmptyBlockParents.includes(x)\n );\n\n removeEmptyBlocks(noMoreEmptyBlockParent);\n await generateEmptyBlocks(newEmptyBlockParent);\n\n VisualBuilder.VisualBuilderGlobalState.value = {\n ...VisualBuilder.VisualBuilderGlobalState.value,\n previousEmptyBlockParents: emptyBlockParents,\n };\n }\n if (VisualBuilder.VisualBuilderGlobalState.value.variant && VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields) {\n debounceAddVariantFieldClass(VisualBuilder.VisualBuilderGlobalState.value.variant);\n }\n },\n 100,\n { trailing: true }\n )\n );\n\n private threadMutationObserver = new MutationObserver(\n debounce(() => {\n const container = document.querySelector(\n \".visual-builder__container\"\n );\n if (container && threadsPayload) {\n const unrenderedThreads =\n filterUnrenderedThreads(threadsPayload);\n\n if (unrenderedThreads.length > 0) {\n processThreadsBatch(threadsPayload).then(\n (missingThreadIds) => {\n missingThreadIds.forEach(clearThreadStatus);\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n }\n\n threadsPayload = [];\n }\n }, 1000)\n );\n\n constructor() {\n // Handles changes in element positions due to sidebar toggling or window resizing,\n // triggering a redraw of the visual builder\n window.addEventListener(\"resize\", this.resizeEventHandler);\n window.addEventListener(\"scroll\", this.scrollEventHandler);\n initUI({\n resizeObserver: this.resizeObserver,\n });\n\n // Initializing goober for css-in-js\n setup(h);\n\n this.visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n this.overlayWrapper = document.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n this.customCursor = document.querySelector(\".visual-builder__cursor\");\n this.focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const config = Config.get();\n\n if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {\n return;\n }\n\n visualBuilderPostMessage\n ?.send<IVisualBuilderInitEvent>(\"init\", {\n isSSR: config.ssr,\n href: window.location.href,\n })\n .then((data) => {\n const {\n windowType = ILivePreviewWindowType.BUILDER,\n stackDetails,\n collab,\n } = data || {};\n Config.set(\"windowType\", windowType);\n Config.set(\n \"stackDetails.masterLocale\",\n stackDetails?.masterLocale || \"en-us\"\n );\n\n if (collab) {\n Config.set(\"collab.enable\", collab.enable);\n Config.set(\"collab.isFeedbackMode\", collab.isFeedbackMode);\n Config.set(\"collab.inviteMetadata\", collab.inviteMetadata);\n }\n\n if (collab?.payload) {\n threadsPayload = collab?.payload;\n }\n\n addEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n this.threadMutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n });\n\n useHistoryPostMessageEvent();\n useCollab();\n\n if (windowType === ILivePreviewWindowType.BUILDER) {\n addKeyboardShortcuts({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n useScrollToField();\n useHighlightCommentIcon();\n\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n getHighlightVariantFieldsStatus().then((result) => {\n setHighlightVariantFields(result.highlightVariantFields);\n });\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_ALL_ENTRIES_IN_CURRENT_PAGE,\n getEntryIdentifiersInCurrentPage\n );\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.SEND_VARIANT_AND_LOCALE\n );\n\n visualBuilderPostMessage?.on<{\n scroll: boolean;\n }>(\n VisualBuilderPostMessageEvents.TOGGLE_SCROLL,\n (event) => {\n if (!event.data.scroll) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n\n }\n }\n );\n\n\n \n useHideFocusOverlayPostMessageEvent({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n\n // These events are used to sync the data when we made some changes in the entry without invoking live preview module.\n useOnEntryUpdatePostMessageEvent();\n useRecalculateVariantDataCSLPValues();\n useDraftFieldsPostMessageEvent();\n useVariantFieldsPostMessageEvent({ isSSR: config.ssr ?? false });\n }\n })\n .catch(() => {\n if (!inIframe()) {\n generateStartEditingButton();\n }\n });\n }\n\n // TODO: write test cases\n destroy = (): void => {\n // Remove event listeners\n window.removeEventListener(\"resize\", this.resizeEventHandler);\n window.removeEventListener(\"scroll\", this.scrollEventHandler);\n\n // Remove custom event listeners\n removeEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n // Disconnect observers\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n this.threadMutationObserver.disconnect();\n\n // Clear global state\n VisualBuilder.VisualBuilderGlobalState.value = {\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: \"en-us\",\n variant: null,\n highlightVariantFields: false,\n variantOrder: [],\n focusElementObserver: null,\n referenceParentMap: {},\n isFocussed: false,\n };\n\n // Remove DOM elements\n if (this.visualBuilderContainer) {\n window.document.body.removeChild(this.visualBuilderContainer);\n }\n if (this.customCursor) {\n this.customCursor.remove();\n }\n if (this.overlayWrapper) {\n this.overlayWrapper.remove();\n }\n if (this.focusedToolbar) {\n this.focusedToolbar.remove();\n }\n\n // Nullify references\n this.customCursor = null;\n this.overlayWrapper = null;\n this.visualBuilderContainer = null;\n this.focusedToolbar = null;\n };\n}\n"],"mappings":"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","names":["import_generateThread","initUI","Config","visualBuilderPostMessage"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/visualBuilder/index.ts"],"sourcesContent":["import { Signal, signal } from \"@preact/signals\";\n\nimport { inIframe } from \"../common/inIframe\";\nimport Config from \"../configManager/configManager\";\nimport {\n useHistoryPostMessageEvent,\n useOnEntryUpdatePostMessageEvent,\n} from \"../livePreview/eventManager/postMessageEvent.hooks\";\nimport {\n ILivePreviewModeConfig,\n ILivePreviewWindowType,\n IVisualBuilderInitEvent,\n} from \"../types/types\";\nimport { generateStartEditingButton } from \"./generators/generateStartEditingButton\";\n\nimport { addFocusOverlay } from \"./generators/generateOverlay\";\nimport { getEntryIdentifiersInCurrentPage } from \"./utils/getEntryIdentifiersInCurrentPage\";\nimport { resolvePageContext } from \"./utils/resolvePageContext\";\nimport visualBuilderPostMessage from \"./utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./utils/types/postMessage.types\";\n\nimport { setup } from \"goober\";\nimport { debounce, isEqual } from \"lodash-es\";\nimport { h } from \"preact\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../cslp\";\nimport initUI from \"./components\";\nimport { useDraftFieldsPostMessageEvent } from \"./eventManager/useDraftFieldsPostMessageEvent\";\nimport { useHideFocusOverlayPostMessageEvent } from \"./eventManager/useHideFocusOverlayPostMessageEvent\";\nimport { useScrollToField } from \"./eventManager/useScrollToField\";\nimport { debounceAddVariantFieldClass, getHighlightVariantFieldsStatus, setHighlightVariantFields, useVariantFieldsPostMessageEvent } from \"./eventManager/useVariantsPostMessageEvent\";\nimport {\n generateEmptyBlocks,\n removeEmptyBlocks,\n} from \"./generators/generateEmptyBlock\";\nimport { addEventListeners, removeEventListeners } from \"./listeners\";\nimport { addKeyboardShortcuts } from \"./listeners/keyboardShortcuts\";\nimport { FieldSchemaMap } from \"./utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"./utils/isFieldDisabled\";\nimport {\n updateFocussedState,\n updateFocussedStateOnMutation,\n} from \"./utils/updateFocussedState\";\nimport { useHighlightCommentIcon } from \"./eventManager/useHighlightCommentIcon\";\nimport { updateHighlightedCommentIconPosition } from \"./generators/generateHighlightedComment\";\nimport {\n updateCollabIconPosition,\n updatePopupPositions,\n updateSuggestionListPosition,\n} from \"./generators/generateThread\";\nimport { useRecalculateVariantDataCSLPValues } from \"./eventManager/useRecalculateVariantDataCSLPValues\";\nimport { VB_EmptyBlockParentClass } from \"..\";\nimport { useCollab } from \"./eventManager/useCollab\";\nimport {\n handleMissingThreads,\n processThreadsBatch,\n filterUnrenderedThreads,\n clearThreadStatus,\n} from \"./generators/generateThread\";\nimport { IThreadDTO } from \"./types/collab.types\";\n\ninterface VisualBuilderGlobalStateImpl {\n previousSelectedEditableDOM: HTMLElement | Element | null;\n previousHoveredTargetDOM: Element | null;\n previousEmptyBlockParents: Element[] | [];\n focusFieldValue: string | null;\n focusFieldReceivedInput: boolean;\n audienceMode: boolean;\n locale: string;\n variant: string | null;\n highlightVariantFields: boolean;\n variantOrder: string[];\n focusElementObserver: MutationObserver | null;\n referenceParentMap: Record<string, string>;\n isFocussed: boolean;\n}\n\nlet threadsPayload: IThreadDTO[] = [];\n\nexport class VisualBuilder {\n private customCursor: HTMLDivElement | null = null;\n private overlayWrapper: HTMLDivElement | null = null;\n private visualBuilderContainer: HTMLDivElement | null = null;\n private focusedToolbar: HTMLDivElement | null = null;\n\n static VisualBuilderGlobalState: Signal<VisualBuilderGlobalStateImpl> =\n signal({\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: Config.get().stackDetails.masterLocale || \"en-us\",\n variant: null,\n highlightVariantFields: false,\n variantOrder: [],\n focusElementObserver: null,\n referenceParentMap: {},\n isFocussed: false,\n });\n\n private handlePositionChange(editableElement: HTMLElement) {\n updateFocussedState({\n editableElement,\n visualBuilderContainer: this.visualBuilderContainer,\n overlayWrapper: this.overlayWrapper,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n }\n\n private scrollEventHandler = () => {\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n updateHighlightedCommentIconPosition(); // Update icons position\n };\n\n private resizeEventHandler = () => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n updateHighlightedCommentIconPosition();\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n if (previousSelectedEditableDOM) {\n this.handlePositionChange(\n previousSelectedEditableDOM as HTMLElement\n );\n }\n };\n\n private resizeObserver = new ResizeObserver(([entry]) => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!this.overlayWrapper || !previousSelectedEditableDOM) {\n return;\n }\n\n // if previous selected editable element is not same as the current\n // target and the target is also not psuedo-editable then return\n if (\n !entry.target.isSameNode(previousSelectedEditableDOM) &&\n !entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n )\n ) {\n return;\n }\n\n const isPsuedoEditableElement = entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n );\n\n // the \"actual\" editable element when the current target is psuedo-editable\n // is the previous selected editable element instead of the closest data-cslp element\n // (cant use closest because the psuedo editable is absolute positioned)\n // (Note - why do we even need the closest? we do an early exit if entry.target\n // is not the previous selected editable element, needs more investigation)\n const editableElement = (\n isPsuedoEditableElement\n ? previousSelectedEditableDOM\n : entry.target.closest(\"[data-cslp]\")\n ) as HTMLElement | null;\n\n if (isPsuedoEditableElement) {\n // if the current target is psuedo-editable, then the resizing occurred by typing\n // into the psuedo editable, simply update the focus overlay\n addFocusOverlay(entry.target, this.overlayWrapper);\n\n // TODO check if we can now resize the actual editable element\n // when psuedo editable element is resized, avoid infinite loops\n } else if (editableElement) {\n this.handlePositionChange(editableElement);\n }\n\n // update the overlay if field is disabled\n const cslpData =\n editableElement && editableElement.getAttribute(\"data-cslp\");\n\n if (!editableElement || !isValidCslp(cslpData)) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n ).then((fieldSchema) => {\n if (!fieldSchema) {\n return;\n }\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement,\n fieldMetadata,\n });\n if (isDisabled) {\n addFocusOverlay(\n editableElement,\n this.overlayWrapper as HTMLDivElement,\n isDisabled\n );\n }\n });\n });\n\n private mutationObserver = new MutationObserver(\n debounce(\n async () => {\n updateFocussedStateOnMutation(\n this.overlayWrapper,\n this.focusedToolbar,\n this.visualBuilderContainer,\n this.resizeObserver\n );\n\n const emptyBlockParents = Array.from(\n document.querySelectorAll(`.${VB_EmptyBlockParentClass}`)\n );\n\n const previousEmptyBlockParents = VisualBuilder\n .VisualBuilderGlobalState.value\n .previousEmptyBlockParents as Element[];\n\n if (!isEqual(emptyBlockParents, previousEmptyBlockParents)) {\n const noMoreEmptyBlockParent =\n previousEmptyBlockParents.filter(\n (x) => !emptyBlockParents.includes(x)\n );\n const newEmptyBlockParent = emptyBlockParents.filter(\n (x) => !previousEmptyBlockParents.includes(x)\n );\n\n removeEmptyBlocks(noMoreEmptyBlockParent);\n await generateEmptyBlocks(newEmptyBlockParent);\n\n VisualBuilder.VisualBuilderGlobalState.value = {\n ...VisualBuilder.VisualBuilderGlobalState.value,\n previousEmptyBlockParents: emptyBlockParents,\n };\n }\n if (VisualBuilder.VisualBuilderGlobalState.value.variant && VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields) {\n debounceAddVariantFieldClass(VisualBuilder.VisualBuilderGlobalState.value.variant);\n }\n },\n 100,\n { trailing: true }\n )\n );\n\n private threadMutationObserver = new MutationObserver(\n debounce(() => {\n const container = document.querySelector(\n \".visual-builder__container\"\n );\n if (container && threadsPayload) {\n const unrenderedThreads =\n filterUnrenderedThreads(threadsPayload);\n\n if (unrenderedThreads.length > 0) {\n processThreadsBatch(threadsPayload).then(\n (missingThreadIds) => {\n missingThreadIds.forEach(clearThreadStatus);\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n }\n\n threadsPayload = [];\n }\n }, 1000)\n );\n\n constructor() {\n // Handles changes in element positions due to sidebar toggling or window resizing,\n // triggering a redraw of the visual builder\n window.addEventListener(\"resize\", this.resizeEventHandler);\n window.addEventListener(\"scroll\", this.scrollEventHandler);\n initUI({\n resizeObserver: this.resizeObserver,\n });\n\n // Initializing goober for css-in-js\n setup(h);\n\n this.visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n this.overlayWrapper = document.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n this.customCursor = document.querySelector(\".visual-builder__cursor\");\n this.focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const config = Config.get();\n\n if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {\n return;\n }\n\n const { entryUid, contentTypeUid } = resolvePageContext();\n const initPayload: any = {\n isSSR: config.ssr,\n href: window.location.href,\n entry_uid: entryUid,\n content_type_uid: contentTypeUid,\n };\n\n visualBuilderPostMessage\n ?.send<IVisualBuilderInitEvent>(\"init\", initPayload)\n .then((data) => {\n const {\n windowType = ILivePreviewWindowType.BUILDER,\n stackDetails,\n collab,\n } = data || {};\n Config.set(\"windowType\", windowType);\n Config.set(\n \"stackDetails.masterLocale\",\n stackDetails?.masterLocale || \"en-us\"\n );\n\n if (collab) {\n Config.set(\"collab.enable\", collab.enable);\n Config.set(\"collab.isFeedbackMode\", collab.isFeedbackMode);\n Config.set(\"collab.inviteMetadata\", collab.inviteMetadata);\n }\n\n if (collab?.payload) {\n threadsPayload = collab?.payload;\n }\n\n addEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n this.threadMutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n });\n\n useHistoryPostMessageEvent();\n useCollab();\n\n if (windowType === ILivePreviewWindowType.BUILDER) {\n addKeyboardShortcuts({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n useScrollToField();\n useHighlightCommentIcon();\n\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n getHighlightVariantFieldsStatus().then((result) => {\n setHighlightVariantFields(result.highlightVariantFields);\n });\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_ALL_ENTRIES_IN_CURRENT_PAGE,\n getEntryIdentifiersInCurrentPage\n );\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.SEND_VARIANT_AND_LOCALE\n );\n\n visualBuilderPostMessage?.on<{\n scroll: boolean;\n }>(\n VisualBuilderPostMessageEvents.TOGGLE_SCROLL,\n (event) => {\n if (!event.data.scroll) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n\n }\n }\n );\n\n\n \n useHideFocusOverlayPostMessageEvent({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n\n // These events are used to sync the data when we made some changes in the entry without invoking live preview module.\n useOnEntryUpdatePostMessageEvent();\n useRecalculateVariantDataCSLPValues();\n useDraftFieldsPostMessageEvent();\n useVariantFieldsPostMessageEvent({ isSSR: config.ssr ?? false });\n }\n })\n .catch(() => {\n if (!inIframe()) {\n generateStartEditingButton();\n }\n });\n }\n\n // TODO: write test cases\n destroy = (): void => {\n // Remove event listeners\n window.removeEventListener(\"resize\", this.resizeEventHandler);\n window.removeEventListener(\"scroll\", this.scrollEventHandler);\n\n // Remove custom event listeners\n removeEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n // Disconnect observers\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n this.threadMutationObserver.disconnect();\n\n // Clear global state\n VisualBuilder.VisualBuilderGlobalState.value = {\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: \"en-us\",\n variant: null,\n highlightVariantFields: false,\n variantOrder: [],\n focusElementObserver: null,\n referenceParentMap: {},\n isFocussed: false,\n };\n\n // Remove DOM elements\n if (this.visualBuilderContainer) {\n window.document.body.removeChild(this.visualBuilderContainer);\n }\n if (this.customCursor) {\n this.customCursor.remove();\n }\n if (this.overlayWrapper) {\n this.overlayWrapper.remove();\n }\n if (this.focusedToolbar) {\n this.focusedToolbar.remove();\n }\n\n // Nullify references\n this.customCursor = null;\n this.overlayWrapper = null;\n this.visualBuilderContainer = null;\n this.focusedToolbar = null;\n };\n}\n"],"mappings":"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","names":["import_generateThread","initUI","Config","visualBuilderPostMessage"]}
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
import { generateStartEditingButton } from "./generators/generateStartEditingButton.js";
|
|
16
16
|
import { addFocusOverlay } from "./generators/generateOverlay.js";
|
|
17
17
|
import { getEntryIdentifiersInCurrentPage } from "./utils/getEntryIdentifiersInCurrentPage.js";
|
|
18
|
+
import { resolvePageContext } from "./utils/resolvePageContext.js";
|
|
18
19
|
import visualBuilderPostMessage from "./utils/visualBuilderPostMessage.js";
|
|
19
20
|
import { VisualBuilderPostMessageEvents } from "./utils/types/postMessage.types.js";
|
|
20
21
|
import { setup } from "goober";
|
|
@@ -249,10 +250,14 @@ var _VisualBuilder = class _VisualBuilder {
|
|
|
249
250
|
if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {
|
|
250
251
|
return;
|
|
251
252
|
}
|
|
252
|
-
|
|
253
|
+
const { entryUid, contentTypeUid } = resolvePageContext();
|
|
254
|
+
const initPayload = {
|
|
253
255
|
isSSR: config.ssr,
|
|
254
|
-
href: window.location.href
|
|
255
|
-
|
|
256
|
+
href: window.location.href,
|
|
257
|
+
entry_uid: entryUid,
|
|
258
|
+
content_type_uid: contentTypeUid
|
|
259
|
+
};
|
|
260
|
+
visualBuilderPostMessage?.send("init", initPayload).then((data) => {
|
|
256
261
|
const {
|
|
257
262
|
windowType = ILivePreviewWindowType.BUILDER,
|
|
258
263
|
stackDetails,
|