@contentstack/live-preview-utils 3.1.1 → 3.1.3
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 +2 -2
- package/dist/legacy/configManager/config.default.cjs +8 -0
- package/dist/legacy/configManager/config.default.cjs.map +1 -1
- package/dist/legacy/configManager/config.default.js +8 -0
- package/dist/legacy/configManager/config.default.js.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.cjs +7 -3
- package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.js +7 -3
- package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs +86 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.d.cts +14 -1
- package/dist/legacy/livePreview/editButton/editButton.d.ts +14 -1
- package/dist/legacy/livePreview/editButton/editButton.js +85 -1
- package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +6 -2
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +6 -2
- package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
- package/dist/legacy/types/types.cjs.map +1 -1
- package/dist/legacy/types/types.d.cts +7 -1
- package/dist/legacy/types/types.d.ts +7 -1
- package/dist/legacy/types/types.js.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +28 -22
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +1 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +1 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.js +29 -24
- package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/components/addInstanceButton.cjs +39 -11
- package/dist/legacy/visualBuilder/components/addInstanceButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/addInstanceButton.d.cts +5 -0
- package/dist/legacy/visualBuilder/components/addInstanceButton.d.ts +5 -0
- package/dist/legacy/visualBuilder/components/addInstanceButton.js +39 -11
- package/dist/legacy/visualBuilder/components/addInstanceButton.js.map +1 -1
- package/dist/legacy/visualBuilder/components/startEditingButton.cjs +38 -11
- package/dist/legacy/visualBuilder/components/startEditingButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/startEditingButton.d.cts +6 -2
- package/dist/legacy/visualBuilder/components/startEditingButton.d.ts +6 -2
- package/dist/legacy/visualBuilder/components/startEditingButton.js +34 -11
- package/dist/legacy/visualBuilder/components/startEditingButton.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
- package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +5 -0
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.js +5 -0
- package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +13 -5
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +2 -2
- package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +2 -2
- package/dist/legacy/visualBuilder/generators/generateToolbar.js +13 -5
- package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/index.cjs +4 -2
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.d.cts +1 -0
- package/dist/legacy/visualBuilder/index.d.ts +1 -0
- package/dist/legacy/visualBuilder/index.js +4 -2
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +79 -21
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +79 -21
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs +94 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.js +74 -0
- package/dist/legacy/visualBuilder/utils/enableInlineEditing.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs +8 -0
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.js +8 -0
- package/dist/legacy/visualBuilder/utils/getChildrenDirection.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +24 -112
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +22 -116
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js +58 -0
- package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs +35 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.js +12 -0
- package/dist/legacy/visualBuilder/utils/isFieldMultiple.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +14 -20
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +14 -20
- package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js +21 -0
- package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/types/index.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.d.cts +6 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.d.ts +6 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +27 -5
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +6 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +6 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.js +27 -5
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/configManager/config.default.cjs +8 -0
- package/dist/modern/configManager/config.default.cjs.map +1 -1
- package/dist/modern/configManager/config.default.js +8 -0
- package/dist/modern/configManager/config.default.js.map +1 -1
- package/dist/modern/configManager/handleUserConfig.cjs +4 -0
- package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/modern/configManager/handleUserConfig.js +4 -0
- package/dist/modern/configManager/handleUserConfig.js.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs +85 -1
- package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.d.cts +14 -1
- package/dist/modern/livePreview/editButton/editButton.d.ts +14 -1
- package/dist/modern/livePreview/editButton/editButton.js +84 -1
- package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +6 -2
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +6 -2
- package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
- package/dist/modern/types/types.cjs.map +1 -1
- package/dist/modern/types/types.d.cts +7 -1
- package/dist/modern/types/types.d.ts +7 -1
- package/dist/modern/types/types.js.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs +28 -21
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +1 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +1 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.js +29 -23
- package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/components/addInstanceButton.cjs +38 -11
- package/dist/modern/visualBuilder/components/addInstanceButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/addInstanceButton.d.cts +5 -0
- package/dist/modern/visualBuilder/components/addInstanceButton.d.ts +5 -0
- package/dist/modern/visualBuilder/components/addInstanceButton.js +38 -11
- package/dist/modern/visualBuilder/components/addInstanceButton.js.map +1 -1
- package/dist/modern/visualBuilder/components/startEditingButton.cjs +38 -11
- package/dist/modern/visualBuilder/components/startEditingButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/startEditingButton.d.cts +6 -2
- package/dist/modern/visualBuilder/components/startEditingButton.d.ts +6 -2
- package/dist/modern/visualBuilder/components/startEditingButton.js +34 -11
- package/dist/modern/visualBuilder/components/startEditingButton.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
- package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs +5 -0
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.js +5 -0
- package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs +13 -5
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +2 -2
- package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +2 -2
- package/dist/modern/visualBuilder/generators/generateToolbar.js +13 -5
- package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/index.cjs +4 -2
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.d.cts +1 -0
- package/dist/modern/visualBuilder/index.d.ts +1 -0
- package/dist/modern/visualBuilder/index.js +4 -2
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +76 -19
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +76 -19
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs +94 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.js +74 -0
- package/dist/modern/visualBuilder/utils/enableInlineEditing.js.map +1 -0
- package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs +8 -0
- package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
- package/dist/modern/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
- package/dist/modern/visualBuilder/utils/getChildrenDirection.js +8 -0
- package/dist/modern/visualBuilder/utils/getChildrenDirection.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +23 -111
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
- package/dist/modern/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js +21 -115
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.js +58 -0
- package/dist/modern/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs +35 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.js +12 -0
- package/dist/modern/visualBuilder/utils/isFieldMultiple.js.map +1 -0
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +14 -18
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +14 -18
- package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.js +21 -0
- package/dist/modern/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
- package/dist/modern/visualBuilder/utils/types/index.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/index.types.d.cts +6 -1
- package/dist/modern/visualBuilder/utils/types/index.types.d.ts +6 -1
- package/dist/modern/visualBuilder/utils/types/index.types.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +27 -5
- package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.cts +6 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.ts +6 -1
- package/dist/modern/visualBuilder/visualBuilder.style.js +27 -5
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\n\ninterface AddInstanceButtonProps {\n value: any;\n onClick: (event: MouseEvent) => void;\n label?: string | undefined;\n fieldSchema: ISchemaFieldMap | undefined;\n}\n\nfunction AddInstanceButtonComponent(\n props: AddInstanceButtonProps\n): JSX.Element {\n const fieldSchema = props.fieldSchema;\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { Signal } from \"@preact/signals\";\n\ninterface AddInstanceButtonProps {\n value: any;\n onClick: (event: MouseEvent) => void;\n label?: string | undefined;\n fieldSchema: ISchemaFieldMap | undefined;\n fieldMetadata: CslpData;\n index: number;\n loading: Signal<boolean>;\n}\n\nfunction AddInstanceButtonComponent(\n props: AddInstanceButtonProps\n): JSX.Element {\n const fieldSchema = props.fieldSchema;\n const fieldMetadata = props.fieldMetadata;\n const index = props.index;\n const loading = props.loading;\n\n const onClick = async (event: MouseEvent) => {\n loading.value = true;\n try {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata,\n index,\n }\n );\n } catch (error) {\n console.error(\"Visual Builder: Failed to add instance\", error);\n }\n loading.value = false;\n props.onClick(event);\n };\n\n const buttonClassName = classNames(\n \"visual-builder__add-button\",\n visualBuilderStyles()[\"visual-builder__add-button\"],\n {\n \"visual-builder__add-button--with-label\": props.label,\n },\n {\n [visualBuilderStyles()[\"visual-builder__add-button--loading\"]]:\n loading.value,\n },\n visualBuilderStyles()[\"visual-builder__tooltip\"]\n );\n\n const maxInstances =\n fieldSchema && fieldSchema.data_type !== \"block\"\n ? fieldSchema.max_instance\n : undefined;\n const isMaxInstances = maxInstances\n ? props.value.length >= maxInstances\n : false;\n const disabled = loading.value || isMaxInstances;\n\n return (\n <button\n className={buttonClassName}\n data-tooltip={\"Add section\"}\n data-testid=\"visual-builder-add-instance-button\"\n disabled={disabled}\n title={\n maxInstances && isMaxInstances\n ? `Max ${maxInstances} instances allowed`\n : undefined\n }\n onClick={(e) => {\n const event = e as unknown as MouseEvent;\n onClick(event);\n }}\n >\n <PlusIcon />\n {props.label ? (\n <span\n title={props.label}\n className={classNames(\n \"visual-builder__add-button-label\",\n visualBuilderStyles()[\n \"visual-builder__add-button-label\"\n ]\n )}\n >\n {props.label}\n </span>\n ) : null}\n </button>\n );\n}\n\nexport default AddInstanceButtonComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAuB;AACvB,2BAAoC;AACpC,mBAAyB;AAGzB,sCAAqC;AACrC,yBAA+C;AA6DvC;AAhDR,SAAS,2BACL,OACW;AACX,QAAM,cAAc,MAAM;AAC1B,QAAM,gBAAgB,MAAM;AAC5B,QAAM,QAAQ,MAAM;AACpB,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,OAAO,UAAsB;AACzC,YAAQ,QAAQ;AAChB,QAAI;AACA,YAAM,gCAAAA,SAA0B;AAAA,QAC5B,kDAA+B;AAAA,QAC/B;AAAA,UACI;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,SAAS,OAAO;AACZ,cAAQ,MAAM,0CAA0C,KAAK;AAAA,IACjE;AACA,YAAQ,QAAQ;AAChB,UAAM,QAAQ,KAAK;AAAA,EACvB;AAEA,QAAM,sBAAkB,kBAAAC;AAAA,IACpB;AAAA,QACA,0CAAoB,EAAE,4BAA4B;AAAA,IAClD;AAAA,MACI,0CAA0C,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,MACI,KAAC,0CAAoB,EAAE,qCAAqC,CAAC,GACzD,QAAQ;AAAA,IAChB;AAAA,QACA,0CAAoB,EAAE,yBAAyB;AAAA,EACnD;AAEA,QAAM,eACF,eAAe,YAAY,cAAc,UACnC,YAAY,eACZ;AACV,QAAM,iBAAiB,eACjB,MAAM,MAAM,UAAU,eACtB;AACN,QAAM,WAAW,QAAQ,SAAS;AAElC,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX,gBAAc;AAAA,MACd,eAAY;AAAA,MACZ;AAAA,MACA,OACI,gBAAgB,iBACV,OAAO,YAAY,uBACnB;AAAA,MAEV,SAAS,CAAC,MAAM;AACZ,cAAM,QAAQ;AACd,gBAAQ,KAAK;AAAA,MACjB;AAAA,MAEA;AAAA,oDAAC,yBAAS;AAAA,QACT,MAAM,QACH;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,MAAM;AAAA,YACb,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,0CAAoB,EAChB,kCACJ;AAAA,YACJ;AAAA,YAEC,gBAAM;AAAA;AAAA,QACX,IACA;AAAA;AAAA;AAAA,EACR;AAER;AAEA,IAAO,4BAAQ;","names":["visualBuilderPostMessage","classNames"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ISchemaFieldMap } from '../utils/types/index.types.cjs';
|
|
2
|
+
import { CslpData } from '../../cslp/types/cslp.types.cjs';
|
|
3
|
+
import { Signal } from '@preact/signals';
|
|
2
4
|
import '../../cms/types/contentTypeSchema.types.cjs';
|
|
3
5
|
|
|
4
6
|
interface AddInstanceButtonProps {
|
|
@@ -6,6 +8,9 @@ interface AddInstanceButtonProps {
|
|
|
6
8
|
onClick: (event: MouseEvent) => void;
|
|
7
9
|
label?: string | undefined;
|
|
8
10
|
fieldSchema: ISchemaFieldMap | undefined;
|
|
11
|
+
fieldMetadata: CslpData;
|
|
12
|
+
index: number;
|
|
13
|
+
loading: Signal<boolean>;
|
|
9
14
|
}
|
|
10
15
|
declare function AddInstanceButtonComponent(props: AddInstanceButtonProps): JSX.Element;
|
|
11
16
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ISchemaFieldMap } from '../utils/types/index.types.js';
|
|
2
|
+
import { CslpData } from '../../cslp/types/cslp.types.js';
|
|
3
|
+
import { Signal } from '@preact/signals';
|
|
2
4
|
import '../../cms/types/contentTypeSchema.types.js';
|
|
3
5
|
|
|
4
6
|
interface AddInstanceButtonProps {
|
|
@@ -6,6 +8,9 @@ interface AddInstanceButtonProps {
|
|
|
6
8
|
onClick: (event: MouseEvent) => void;
|
|
7
9
|
label?: string | undefined;
|
|
8
10
|
fieldSchema: ISchemaFieldMap | undefined;
|
|
11
|
+
fieldMetadata: CslpData;
|
|
12
|
+
index: number;
|
|
13
|
+
loading: Signal<boolean>;
|
|
9
14
|
}
|
|
10
15
|
declare function AddInstanceButtonComponent(props: AddInstanceButtonProps): JSX.Element;
|
|
11
16
|
|
|
@@ -4,28 +4,55 @@ import "../../chunk-5WRI5ZAA.js";
|
|
|
4
4
|
import classNames from "classnames";
|
|
5
5
|
import { visualBuilderStyles } from "../visualBuilder.style.js";
|
|
6
6
|
import { PlusIcon } from "./icons/index.js";
|
|
7
|
+
import visualBuilderPostMessage from "../utils/visualBuilderPostMessage.js";
|
|
8
|
+
import { VisualBuilderPostMessageEvents } from "../utils/types/postMessage.types.js";
|
|
7
9
|
import { jsx, jsxs } from "preact/jsx-runtime";
|
|
8
10
|
function AddInstanceButtonComponent(props) {
|
|
9
11
|
const fieldSchema = props.fieldSchema;
|
|
10
|
-
const
|
|
12
|
+
const fieldMetadata = props.fieldMetadata;
|
|
13
|
+
const index = props.index;
|
|
14
|
+
const loading = props.loading;
|
|
15
|
+
const onClick = async (event) => {
|
|
16
|
+
loading.value = true;
|
|
17
|
+
try {
|
|
18
|
+
await visualBuilderPostMessage?.send(
|
|
19
|
+
VisualBuilderPostMessageEvents.ADD_INSTANCE,
|
|
20
|
+
{
|
|
21
|
+
fieldMetadata,
|
|
22
|
+
index
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
} catch (error) {
|
|
26
|
+
console.error("Visual Builder: Failed to add instance", error);
|
|
27
|
+
}
|
|
28
|
+
loading.value = false;
|
|
29
|
+
props.onClick(event);
|
|
30
|
+
};
|
|
31
|
+
const buttonClassName = classNames(
|
|
32
|
+
"visual-builder__add-button",
|
|
33
|
+
visualBuilderStyles()["visual-builder__add-button"],
|
|
34
|
+
{
|
|
35
|
+
"visual-builder__add-button--with-label": props.label
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
[visualBuilderStyles()["visual-builder__add-button--loading"]]: loading.value
|
|
39
|
+
},
|
|
40
|
+
visualBuilderStyles()["visual-builder__tooltip"]
|
|
41
|
+
);
|
|
42
|
+
const maxInstances = fieldSchema && fieldSchema.data_type !== "block" ? fieldSchema.max_instance : void 0;
|
|
43
|
+
const isMaxInstances = maxInstances ? props.value.length >= maxInstances : false;
|
|
44
|
+
const disabled = loading.value || isMaxInstances;
|
|
11
45
|
return /* @__PURE__ */ jsxs(
|
|
12
46
|
"button",
|
|
13
47
|
{
|
|
14
|
-
className:
|
|
15
|
-
"visual-builder__add-button",
|
|
16
|
-
visualBuilderStyles()["visual-builder__add-button"],
|
|
17
|
-
{
|
|
18
|
-
"visual-builder__add-button--with-label": props.label
|
|
19
|
-
},
|
|
20
|
-
visualBuilderStyles()["visual-builder__tooltip"]
|
|
21
|
-
),
|
|
48
|
+
className: buttonClassName,
|
|
22
49
|
"data-tooltip": "Add section",
|
|
23
50
|
"data-testid": "visual-builder-add-instance-button",
|
|
24
51
|
disabled,
|
|
25
|
-
title:
|
|
52
|
+
title: maxInstances && isMaxInstances ? `Max ${maxInstances} instances allowed` : void 0,
|
|
26
53
|
onClick: (e) => {
|
|
27
54
|
const event = e;
|
|
28
|
-
|
|
55
|
+
onClick(event);
|
|
29
56
|
},
|
|
30
57
|
children: [
|
|
31
58
|
/* @__PURE__ */ jsx(PlusIcon, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\n\ninterface AddInstanceButtonProps {\n value: any;\n onClick: (event: MouseEvent) => void;\n label?: string | undefined;\n fieldSchema: ISchemaFieldMap | undefined;\n}\n\nfunction AddInstanceButtonComponent(\n props: AddInstanceButtonProps\n): JSX.Element {\n const fieldSchema = props.fieldSchema;\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { Signal } from \"@preact/signals\";\n\ninterface AddInstanceButtonProps {\n value: any;\n onClick: (event: MouseEvent) => void;\n label?: string | undefined;\n fieldSchema: ISchemaFieldMap | undefined;\n fieldMetadata: CslpData;\n index: number;\n loading: Signal<boolean>;\n}\n\nfunction AddInstanceButtonComponent(\n props: AddInstanceButtonProps\n): JSX.Element {\n const fieldSchema = props.fieldSchema;\n const fieldMetadata = props.fieldMetadata;\n const index = props.index;\n const loading = props.loading;\n\n const onClick = async (event: MouseEvent) => {\n loading.value = true;\n try {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata,\n index,\n }\n );\n } catch (error) {\n console.error(\"Visual Builder: Failed to add instance\", error);\n }\n loading.value = false;\n props.onClick(event);\n };\n\n const buttonClassName = classNames(\n \"visual-builder__add-button\",\n visualBuilderStyles()[\"visual-builder__add-button\"],\n {\n \"visual-builder__add-button--with-label\": props.label,\n },\n {\n [visualBuilderStyles()[\"visual-builder__add-button--loading\"]]:\n loading.value,\n },\n visualBuilderStyles()[\"visual-builder__tooltip\"]\n );\n\n const maxInstances =\n fieldSchema && fieldSchema.data_type !== \"block\"\n ? fieldSchema.max_instance\n : undefined;\n const isMaxInstances = maxInstances\n ? props.value.length >= maxInstances\n : false;\n const disabled = loading.value || isMaxInstances;\n\n return (\n <button\n className={buttonClassName}\n data-tooltip={\"Add section\"}\n data-testid=\"visual-builder-add-instance-button\"\n disabled={disabled}\n title={\n maxInstances && isMaxInstances\n ? `Max ${maxInstances} instances allowed`\n : undefined\n }\n onClick={(e) => {\n const event = e as unknown as MouseEvent;\n onClick(event);\n }}\n >\n <PlusIcon />\n {props.label ? (\n <span\n title={props.label}\n className={classNames(\n \"visual-builder__add-button-label\",\n visualBuilderStyles()[\n \"visual-builder__add-button-label\"\n ]\n )}\n >\n {props.label}\n </span>\n ) : null}\n </button>\n );\n}\n\nexport default AddInstanceButtonComponent;\n"],"mappings":";;;AACA,OAAO,gBAAgB;AACvB,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AAGzB,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AA6DvC,SAeI,KAfJ;AAhDR,SAAS,2BACL,OACW;AACX,QAAM,cAAc,MAAM;AAC1B,QAAM,gBAAgB,MAAM;AAC5B,QAAM,QAAQ,MAAM;AACpB,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,OAAO,UAAsB;AACzC,YAAQ,QAAQ;AAChB,QAAI;AACA,YAAM,0BAA0B;AAAA,QAC5B,+BAA+B;AAAA,QAC/B;AAAA,UACI;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,SAAS,OAAO;AACZ,cAAQ,MAAM,0CAA0C,KAAK;AAAA,IACjE;AACA,YAAQ,QAAQ;AAChB,UAAM,QAAQ,KAAK;AAAA,EACvB;AAEA,QAAM,kBAAkB;AAAA,IACpB;AAAA,IACA,oBAAoB,EAAE,4BAA4B;AAAA,IAClD;AAAA,MACI,0CAA0C,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,MACI,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,GACzD,QAAQ;AAAA,IAChB;AAAA,IACA,oBAAoB,EAAE,yBAAyB;AAAA,EACnD;AAEA,QAAM,eACF,eAAe,YAAY,cAAc,UACnC,YAAY,eACZ;AACV,QAAM,iBAAiB,eACjB,MAAM,MAAM,UAAU,eACtB;AACN,QAAM,WAAW,QAAQ,SAAS;AAElC,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX,gBAAc;AAAA,MACd,eAAY;AAAA,MACZ;AAAA,MACA,OACI,gBAAgB,iBACV,OAAO,YAAY,uBACnB;AAAA,MAEV,SAAS,CAAC,MAAM;AACZ,cAAM,QAAQ;AACd,gBAAQ,KAAK;AAAA,MACjB;AAAA,MAEA;AAAA,4BAAC,YAAS;AAAA,QACT,MAAM,QACH;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,MAAM;AAAA,YACb,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAChB,kCACJ;AAAA,YACJ;AAAA,YAEC,gBAAM;AAAA;AAAA,QACX,IACA;AAAA;AAAA;AAAA,EACR;AAER;AAEA,IAAO,4BAAQ;","names":[]}
|
|
@@ -30,37 +30,64 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/visualBuilder/components/startEditingButton.tsx
|
|
31
31
|
var startEditingButton_exports = {};
|
|
32
32
|
__export(startEditingButton_exports, {
|
|
33
|
-
default: () => startEditingButton_default
|
|
33
|
+
default: () => startEditingButton_default,
|
|
34
|
+
getEditButtonPosition: () => getEditButtonPosition
|
|
34
35
|
});
|
|
35
36
|
module.exports = __toCommonJS(startEditingButton_exports);
|
|
36
37
|
var import_classnames = __toESM(require("classnames"), 1);
|
|
37
38
|
var import_getVisualBuilderRedirectionUrl = __toESM(require("../utils/getVisualBuilderRedirectionUrl.cjs"), 1);
|
|
38
39
|
var import_icons = require("./icons/index.cjs");
|
|
39
40
|
var import_visualBuilder = require("../visualBuilder.style.cjs");
|
|
41
|
+
var import_configManager = __toESM(require("../../configManager/configManager.cjs"), 1);
|
|
40
42
|
var import_jsx_runtime = require("preact/jsx-runtime");
|
|
43
|
+
var positionStyles = {
|
|
44
|
+
"bottom-right": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__bottom-right"],
|
|
45
|
+
"bottom-left": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__bottom-left"],
|
|
46
|
+
"top-left": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__top-left"],
|
|
47
|
+
"top-right": (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn__top-right"]
|
|
48
|
+
};
|
|
49
|
+
function getEditButtonPosition(position) {
|
|
50
|
+
const validPositions = ["bottom-left", "bottom-right", "top-left", "top-right"];
|
|
51
|
+
if (validPositions.includes(position)) {
|
|
52
|
+
return position;
|
|
53
|
+
} else {
|
|
54
|
+
return "bottom-right";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
41
57
|
function StartEditingButtonComponent() {
|
|
42
|
-
|
|
58
|
+
const config = import_configManager.default.get();
|
|
59
|
+
const enable = config.editInVisualBuilderButton.enable;
|
|
60
|
+
const position = config.editInVisualBuilderButton.position || "bottom-right";
|
|
61
|
+
function updateTargetUrl(e) {
|
|
62
|
+
const targetElement = e.target;
|
|
63
|
+
targetElement.setAttribute(
|
|
64
|
+
"href",
|
|
65
|
+
(0, import_getVisualBuilderRedirectionUrl.default)().toString()
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
return enable ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
43
69
|
"a",
|
|
44
70
|
{
|
|
45
71
|
href: (0, import_getVisualBuilderRedirectionUrl.default)().toString(),
|
|
46
72
|
className: (0, import_classnames.default)(
|
|
47
73
|
"visual-builder__start-editing-btn",
|
|
48
|
-
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn"]
|
|
74
|
+
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__start-editing-btn"],
|
|
75
|
+
positionStyles[getEditButtonPosition(position)]
|
|
49
76
|
),
|
|
50
77
|
"data-testid": "vcms-start-editing-btn",
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"href",
|
|
55
|
-
(0, import_getVisualBuilderRedirectionUrl.default)().toString()
|
|
56
|
-
);
|
|
57
|
-
},
|
|
78
|
+
onMouseEnter: (e) => updateTargetUrl(e),
|
|
79
|
+
onFocus: (e) => updateTargetUrl(e),
|
|
80
|
+
onClick: (e) => updateTargetUrl(e),
|
|
58
81
|
children: [
|
|
59
82
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.EditIcon, {}),
|
|
60
83
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Start Editing" })
|
|
61
84
|
]
|
|
62
85
|
}
|
|
63
|
-
);
|
|
86
|
+
) : null;
|
|
64
87
|
}
|
|
65
88
|
var startEditingButton_default = StartEditingButtonComponent;
|
|
89
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
90
|
+
0 && (module.exports = {
|
|
91
|
+
getEditButtonPosition
|
|
92
|
+
});
|
|
66
93
|
//# sourceMappingURL=startEditingButton.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\nfunction StartEditingButtonComponent(): JSX.Element {\n return (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"]\n )}\n data-testid=\"vcms-start-editing-btn\"\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport Config from \"../../configManager/configManager\";\nimport { IConfigEditInVisualBuilderButton } from \"../../types/types\";\n\n\ntype Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;\n\nconst positionStyles: Record<Position, string> = {\n \"bottom-right\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-right'],\n \"bottom-left\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-left'],\n \"top-left\": visualBuilderStyles()['visual-builder__start-editing-btn__top-left'],\n \"top-right\": visualBuilderStyles()['visual-builder__start-editing-btn__top-right'],\n}\n\nexport function getEditButtonPosition(position: any): Position {\n const validPositions: Position[] = ['bottom-left', 'bottom-right', 'top-left', 'top-right']\n if(validPositions.includes(position)){\n return position\n } else {\n return \"bottom-right\"\n }\n}\n\nfunction StartEditingButtonComponent(): JSX.Element | null {\n const config = Config.get()\n const enable = config.editInVisualBuilderButton.enable;\n const position = config.editInVisualBuilderButton.position || \"bottom-right\";\n \n function updateTargetUrl(e: any){\n const targetElement = e.target as HTMLAnchorElement;\n targetElement.setAttribute(\n \"href\",\n getVisualBuilderRedirectionUrl().toString()\n );\n }\n\n return enable ? (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"],\n positionStyles[getEditButtonPosition(position)]\n )}\n data-testid=\"vcms-start-editing-btn\"\n onMouseEnter={(e) => updateTargetUrl(e)}\n onFocus={(e) => updateTargetUrl(e)}\n onClick={(e) => updateTargetUrl(e)}\n >\n <EditIcon />\n <span>Start Editing</span>\n </a>\n ) : null;\n}\n\nexport default StartEditingButtonComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,4CAA2C;AAC3C,mBAAyB;AACzB,2BAAoC;AAEpC,2BAAmB;AAoCX;AA9BR,IAAM,iBAA2C;AAAA,EAC7C,oBAAgB,0CAAoB,EAAE,iDAAiD;AAAA,EACvF,mBAAe,0CAAoB,EAAE,gDAAgD;AAAA,EACrF,gBAAY,0CAAoB,EAAE,6CAA6C;AAAA,EAC/E,iBAAa,0CAAoB,EAAE,8CAA8C;AACrF;AAEO,SAAS,sBAAsB,UAAyB;AAC3D,QAAM,iBAA6B,CAAC,eAAe,gBAAgB,YAAY,WAAW;AAC1F,MAAG,eAAe,SAAS,QAAQ,GAAE;AACjC,WAAO;AAAA,EACX,OAAO;AACH,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,8BAAkD;AACvD,QAAM,SAAS,qBAAAA,QAAO,IAAI;AAC1B,QAAM,SAAS,OAAO,0BAA0B;AAChD,QAAM,WAAW,OAAO,0BAA0B,YAAY;AAE9D,WAAS,gBAAgB,GAAO;AAC5B,UAAM,gBAAgB,EAAE;AACxB,kBAAc;AAAA,MACV;AAAA,UACA,sCAAAC,SAA+B,EAAE,SAAS;AAAA,IAC9C;AAAA,EACJ;AAEA,SAAO,SACH;AAAA,IAAC;AAAA;AAAA,MACG,UAAM,sCAAAA,SAA+B,EAAE,SAAS;AAAA,MAChD,eAAW,kBAAAC;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,mCAAmC;AAAA,QACzD,eAAe,sBAAsB,QAAQ,CAAC;AAAA,MAClD;AAAA,MACA,eAAY;AAAA,MACZ,cAAc,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACtC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACjC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MAEjC;AAAA,oDAAC,yBAAS;AAAA,QACV,4CAAC,UAAK,2BAAa;AAAA;AAAA;AAAA,EACvB,IACA;AACR;AAEA,IAAO,6BAAQ;","names":["Config","getVisualBuilderRedirectionUrl","classNames"]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { IConfigEditInVisualBuilderButton } from '../../types/types.cjs';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
type Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;
|
|
4
|
+
declare function getEditButtonPosition(position: any): Position;
|
|
5
|
+
declare function StartEditingButtonComponent(): JSX.Element | null;
|
|
6
|
+
|
|
7
|
+
export { StartEditingButtonComponent as default, getEditButtonPosition };
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { IConfigEditInVisualBuilderButton } from '../../types/types.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
type Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;
|
|
4
|
+
declare function getEditButtonPosition(position: any): Position;
|
|
5
|
+
declare function StartEditingButtonComponent(): JSX.Element | null;
|
|
6
|
+
|
|
7
|
+
export { StartEditingButtonComponent as default, getEditButtonPosition };
|
|
@@ -5,33 +5,56 @@ import classNames from "classnames";
|
|
|
5
5
|
import getVisualBuilderRedirectionUrl from "../utils/getVisualBuilderRedirectionUrl.js";
|
|
6
6
|
import { EditIcon } from "./icons/index.js";
|
|
7
7
|
import { visualBuilderStyles } from "../visualBuilder.style.js";
|
|
8
|
+
import Config from "../../configManager/configManager.js";
|
|
8
9
|
import { jsx, jsxs } from "preact/jsx-runtime";
|
|
10
|
+
var positionStyles = {
|
|
11
|
+
"bottom-right": visualBuilderStyles()["visual-builder__start-editing-btn__bottom-right"],
|
|
12
|
+
"bottom-left": visualBuilderStyles()["visual-builder__start-editing-btn__bottom-left"],
|
|
13
|
+
"top-left": visualBuilderStyles()["visual-builder__start-editing-btn__top-left"],
|
|
14
|
+
"top-right": visualBuilderStyles()["visual-builder__start-editing-btn__top-right"]
|
|
15
|
+
};
|
|
16
|
+
function getEditButtonPosition(position) {
|
|
17
|
+
const validPositions = ["bottom-left", "bottom-right", "top-left", "top-right"];
|
|
18
|
+
if (validPositions.includes(position)) {
|
|
19
|
+
return position;
|
|
20
|
+
} else {
|
|
21
|
+
return "bottom-right";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
9
24
|
function StartEditingButtonComponent() {
|
|
10
|
-
|
|
25
|
+
const config = Config.get();
|
|
26
|
+
const enable = config.editInVisualBuilderButton.enable;
|
|
27
|
+
const position = config.editInVisualBuilderButton.position || "bottom-right";
|
|
28
|
+
function updateTargetUrl(e) {
|
|
29
|
+
const targetElement = e.target;
|
|
30
|
+
targetElement.setAttribute(
|
|
31
|
+
"href",
|
|
32
|
+
getVisualBuilderRedirectionUrl().toString()
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
return enable ? /* @__PURE__ */ jsxs(
|
|
11
36
|
"a",
|
|
12
37
|
{
|
|
13
38
|
href: getVisualBuilderRedirectionUrl().toString(),
|
|
14
39
|
className: classNames(
|
|
15
40
|
"visual-builder__start-editing-btn",
|
|
16
|
-
visualBuilderStyles()["visual-builder__start-editing-btn"]
|
|
41
|
+
visualBuilderStyles()["visual-builder__start-editing-btn"],
|
|
42
|
+
positionStyles[getEditButtonPosition(position)]
|
|
17
43
|
),
|
|
18
44
|
"data-testid": "vcms-start-editing-btn",
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"href",
|
|
23
|
-
getVisualBuilderRedirectionUrl().toString()
|
|
24
|
-
);
|
|
25
|
-
},
|
|
45
|
+
onMouseEnter: (e) => updateTargetUrl(e),
|
|
46
|
+
onFocus: (e) => updateTargetUrl(e),
|
|
47
|
+
onClick: (e) => updateTargetUrl(e),
|
|
26
48
|
children: [
|
|
27
49
|
/* @__PURE__ */ jsx(EditIcon, {}),
|
|
28
50
|
/* @__PURE__ */ jsx("span", { children: "Start Editing" })
|
|
29
51
|
]
|
|
30
52
|
}
|
|
31
|
-
);
|
|
53
|
+
) : null;
|
|
32
54
|
}
|
|
33
55
|
var startEditingButton_default = StartEditingButtonComponent;
|
|
34
56
|
export {
|
|
35
|
-
startEditingButton_default as default
|
|
57
|
+
startEditingButton_default as default,
|
|
58
|
+
getEditButtonPosition
|
|
36
59
|
};
|
|
37
60
|
//# sourceMappingURL=startEditingButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\nfunction StartEditingButtonComponent(): JSX.Element {\n return (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"]\n )}\n data-testid=\"vcms-start-editing-btn\"\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/startEditingButton.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getVisualBuilderRedirectionUrl from \"../utils/getVisualBuilderRedirectionUrl\";\nimport { EditIcon } from \"./icons\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport Config from \"../../configManager/configManager\";\nimport { IConfigEditInVisualBuilderButton } from \"../../types/types\";\n\n\ntype Position = NonNullable<IConfigEditInVisualBuilderButton['position']>;\n\nconst positionStyles: Record<Position, string> = {\n \"bottom-right\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-right'],\n \"bottom-left\": visualBuilderStyles()['visual-builder__start-editing-btn__bottom-left'],\n \"top-left\": visualBuilderStyles()['visual-builder__start-editing-btn__top-left'],\n \"top-right\": visualBuilderStyles()['visual-builder__start-editing-btn__top-right'],\n}\n\nexport function getEditButtonPosition(position: any): Position {\n const validPositions: Position[] = ['bottom-left', 'bottom-right', 'top-left', 'top-right']\n if(validPositions.includes(position)){\n return position\n } else {\n return \"bottom-right\"\n }\n}\n\nfunction StartEditingButtonComponent(): JSX.Element | null {\n const config = Config.get()\n const enable = config.editInVisualBuilderButton.enable;\n const position = config.editInVisualBuilderButton.position || \"bottom-right\";\n \n function updateTargetUrl(e: any){\n const targetElement = e.target as HTMLAnchorElement;\n targetElement.setAttribute(\n \"href\",\n getVisualBuilderRedirectionUrl().toString()\n );\n }\n\n return enable ? (\n <a\n href={getVisualBuilderRedirectionUrl().toString()}\n className={classNames(\n \"visual-builder__start-editing-btn\",\n visualBuilderStyles()[\"visual-builder__start-editing-btn\"],\n positionStyles[getEditButtonPosition(position)]\n )}\n data-testid=\"vcms-start-editing-btn\"\n onMouseEnter={(e) => updateTargetUrl(e)}\n onFocus={(e) => updateTargetUrl(e)}\n onClick={(e) => updateTargetUrl(e)}\n >\n <EditIcon />\n <span>Start Editing</span>\n </a>\n ) : null;\n}\n\nexport default StartEditingButtonComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AACvB,OAAO,oCAAoC;AAC3C,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AAoCX,SAYI,KAZJ;AA9BR,IAAM,iBAA2C;AAAA,EAC7C,gBAAgB,oBAAoB,EAAE,iDAAiD;AAAA,EACvF,eAAe,oBAAoB,EAAE,gDAAgD;AAAA,EACrF,YAAY,oBAAoB,EAAE,6CAA6C;AAAA,EAC/E,aAAa,oBAAoB,EAAE,8CAA8C;AACrF;AAEO,SAAS,sBAAsB,UAAyB;AAC3D,QAAM,iBAA6B,CAAC,eAAe,gBAAgB,YAAY,WAAW;AAC1F,MAAG,eAAe,SAAS,QAAQ,GAAE;AACjC,WAAO;AAAA,EACX,OAAO;AACH,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,8BAAkD;AACvD,QAAM,SAAS,OAAO,IAAI;AAC1B,QAAM,SAAS,OAAO,0BAA0B;AAChD,QAAM,WAAW,OAAO,0BAA0B,YAAY;AAE9D,WAAS,gBAAgB,GAAO;AAC5B,UAAM,gBAAgB,EAAE;AACxB,kBAAc;AAAA,MACV;AAAA,MACA,+BAA+B,EAAE,SAAS;AAAA,IAC9C;AAAA,EACJ;AAEA,SAAO,SACH;AAAA,IAAC;AAAA;AAAA,MACG,MAAM,+BAA+B,EAAE,SAAS;AAAA,MAChD,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,mCAAmC;AAAA,QACzD,eAAe,sBAAsB,QAAQ,CAAC;AAAA,MAClD;AAAA,MACA,eAAY;AAAA,MACZ,cAAc,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACtC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MACjC,SAAS,CAAC,MAAM,gBAAgB,CAAC;AAAA,MAEjC;AAAA,4BAAC,YAAS;AAAA,QACV,oBAAC,UAAK,2BAAa;AAAA;AAAA;AAAA,EACvB,IACA;AACR;AAEA,IAAO,6BAAQ;","names":[]}
|
|
@@ -57,8 +57,10 @@ function updateVariantClasses({
|
|
|
57
57
|
const observers = [];
|
|
58
58
|
const updateElementClasses = (element, dataCslp, observer) => {
|
|
59
59
|
if (!dataCslp) return;
|
|
60
|
-
if (dataCslp.startsWith("v2:") && element.classList.contains("visual-
|
|
61
|
-
element.classList.
|
|
60
|
+
if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
|
|
61
|
+
if (element.classList.contains("visual-builder__base-field")) {
|
|
62
|
+
element.classList.remove("visual-builder__base-field");
|
|
63
|
+
}
|
|
62
64
|
if (highlightVariantFields) {
|
|
63
65
|
element.classList.add(
|
|
64
66
|
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
|
|
@@ -80,12 +82,53 @@ function updateVariantClasses({
|
|
|
80
82
|
);
|
|
81
83
|
element.classList.add("visual-builder__disabled-variant-field");
|
|
82
84
|
}
|
|
85
|
+
if (!observer) return;
|
|
83
86
|
observer.disconnect();
|
|
84
87
|
const index = observers.indexOf(observer);
|
|
85
88
|
if (index > -1) {
|
|
86
89
|
observers.splice(index, 1);
|
|
87
90
|
}
|
|
88
91
|
};
|
|
92
|
+
const addElementClasses = (element) => {
|
|
93
|
+
const dataCslp = element.getAttribute(import_constants.DATA_CSLP_ATTR_SELECTOR);
|
|
94
|
+
if (!dataCslp) {
|
|
95
|
+
element.childNodes.forEach((child) => {
|
|
96
|
+
if (child instanceof HTMLElement) {
|
|
97
|
+
addElementClasses(child);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (dataCslp.startsWith("v2:") && element.classList.contains("visual-builder__variant-field")) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
|
|
106
|
+
if (element.classList.contains("visual-builder__base-field")) {
|
|
107
|
+
element.classList.remove("visual-builder__base-field");
|
|
108
|
+
}
|
|
109
|
+
if (highlightVariantFields) {
|
|
110
|
+
element.classList.add(
|
|
111
|
+
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
|
|
112
|
+
"visual-builder__variant-field"
|
|
113
|
+
);
|
|
114
|
+
} else {
|
|
115
|
+
element.classList.add("visual-builder__variant-field");
|
|
116
|
+
}
|
|
117
|
+
} else if (!dataCslp.startsWith("v2:")) {
|
|
118
|
+
if (element.classList.contains("visual-builder__variant-field")) {
|
|
119
|
+
element.classList.remove(
|
|
120
|
+
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
|
|
121
|
+
"visual-builder__variant-field"
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
element.classList.add("visual-builder__base-field");
|
|
125
|
+
}
|
|
126
|
+
element.childNodes.forEach((child) => {
|
|
127
|
+
if (child instanceof HTMLElement) {
|
|
128
|
+
addElementClasses(child);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
};
|
|
89
132
|
const elementsWithCslp = document.querySelectorAll(
|
|
90
133
|
`[${import_constants.DATA_CSLP_ATTR_SELECTOR}]`
|
|
91
134
|
);
|
|
@@ -93,7 +136,14 @@ function updateVariantClasses({
|
|
|
93
136
|
const element = elementNode;
|
|
94
137
|
const observer = new MutationObserver((mutations) => {
|
|
95
138
|
mutations.forEach((mutation) => {
|
|
96
|
-
if (mutation.type === "attributes" && mutation.attributeName === import_constants.DATA_CSLP_ATTR_SELECTOR) {
|
|
139
|
+
if (mutation.type === "attributes" && mutation.attributeName === import_constants.DATA_CSLP_ATTR_SELECTOR || mutation.type === "childList") {
|
|
140
|
+
if (mutation.addedNodes.length > 0) {
|
|
141
|
+
mutation.addedNodes.forEach((node) => {
|
|
142
|
+
if (node instanceof HTMLElement) {
|
|
143
|
+
addElementClasses(node);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
97
147
|
const dataCslp = element.getAttribute(
|
|
98
148
|
import_constants.DATA_CSLP_ATTR_SELECTOR
|
|
99
149
|
);
|
|
@@ -102,7 +152,12 @@ function updateVariantClasses({
|
|
|
102
152
|
});
|
|
103
153
|
});
|
|
104
154
|
observers.push(observer);
|
|
105
|
-
observer.observe(element, {
|
|
155
|
+
observer.observe(element, {
|
|
156
|
+
attributes: true,
|
|
157
|
+
childList: true,
|
|
158
|
+
// Observe direct children
|
|
159
|
+
subtree: true
|
|
160
|
+
});
|
|
106
161
|
});
|
|
107
162
|
setTimeout(() => {
|
|
108
163
|
if (observers.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__base-field\")\n ) {\n element.classList.remove(\"visual-builder__base-field\");\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR\n ) {\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, { attributes: true });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAC9B,qCAAmC;AACnC,IAAAA,kCAAiD;AACjD,uBAAwC;AACxC,2BAAoC;AAEpC,IAAM,0BAA4C;AAU3C,SAAS,sCAA4C;AACxD,iCAAAC,SAAwB;AAAA,IACpB,iEAAiC;AAAA,IACjC,CAAC,UAAU;AACP,UAAI,uBAAc,yBAAyB,MAAM,cAAc;AAC3D,6BAAqB,MAAM,IAAI;AAAA,MACnC;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,qBAAqB;AAAA,EAC1B;AAAA,EACA;AACJ,GAA2C;AACvC,QAAM,UAAU,uBAAc,yBAAyB,MAAM;AAC7D,QAAM,YAAgC,CAAC;AAGvC,QAAM,uBAAuB,CACzB,SACA,UACA,aACC;AACD,QAAI,CAAC,SAAU;AAEf,QACI,SAAS,WAAW,KAAK,KACzB,QAAQ,UAAU,SAAS,4BAA4B,GACzD;AACE,cAAQ,UAAU,OAAO,4BAA4B;AACrD,UAAI,wBAAwB;AACxB,gBAAQ,UAAU;AAAA,cACd,0CAAoB,EAAE,+BAA+B;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,gBAAQ,UAAU,IAAI,+BAA+B;AAAA,MACzD;AAAA,IACJ,WACI,CAAC,SAAS,WAAW,KAAK,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,WACI,SAAS,WAAW,KAAK,KACzB,WACA,CAAC,SAAS,SAAS,OAAO,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAGA,aAAS,WAAW;AACpB,UAAM,QAAQ,UAAU,QAAQ,QAAQ;AACxC,QAAI,QAAQ,IAAI;AACZ,gBAAU,OAAO,OAAO,CAAC;AAAA,IAC7B;AAAA,EACJ;AAGA,QAAM,mBAAmB,SAAS;AAAA,IAC9B,IAAI,wCAAuB;AAAA,EAC/B;AAEA,mBAAiB,QAAQ,CAAC,gBAAgB;AACtC,UAAM,UAAU;AAEhB,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACjD,gBAAU,QAAQ,CAAC,aAAa;AAC5B,YACI,SAAS,SAAS,gBAClB,SAAS,kBAAkB,0CAC7B;AACE,gBAAM,WAAW,QAAQ;AAAA,YACrB;AAAA,UACJ;AACA,+BAAqB,SAAS,YAAY,IAAI,QAAQ;AAAA,QAC1D;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,cAAU,KAAK,QAAQ;AACvB,aAAS,QAAQ,SAAS,EAAE,YAAY,KAAK,CAAC;AAAA,EAClD,CAAC;AAED,aAAW,MAAM;AACb,QAAI,UAAU,SAAS,GAAG;AACtB,gBAAU,QAAQ,CAAC,aAAa,SAAS,WAAW,CAAC;AACrD,gBAAU,SAAS;AAAA,IACvB;AAAA,EACJ,GAAG,uBAAuB;AAC9B;","names":["import_livePreviewEventManager","livePreviewPostMessage"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer?: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n if (!observer) return;\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n const addElementClasses = (element: HTMLElement) => {\n const dataCslp = element.getAttribute(DATA_CSLP_ATTR_SELECTOR);\n\n if (!dataCslp) {\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n return;\n }\n //if element might have been updated by another observer\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n return;\n }\n // if element has not given variant/base class\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (!dataCslp.startsWith(\"v2:\")) {\n if (element.classList.contains(\"visual-builder__variant-field\")) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n }\n element.classList.add(\"visual-builder__base-field\");\n }\n\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n (mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR) ||\n mutation.type === \"childList\"\n ) {\n if (mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n addElementClasses(node);\n }\n });\n }\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, {\n attributes: true,\n childList: true, // Observe direct children\n subtree: true,\n });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":"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","names":["import_livePreviewEventManager","livePreviewPostMessage"]}
|
|
@@ -25,8 +25,10 @@ function updateVariantClasses({
|
|
|
25
25
|
const observers = [];
|
|
26
26
|
const updateElementClasses = (element, dataCslp, observer) => {
|
|
27
27
|
if (!dataCslp) return;
|
|
28
|
-
if (dataCslp.startsWith("v2:") && element.classList.contains("visual-
|
|
29
|
-
element.classList.
|
|
28
|
+
if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
|
|
29
|
+
if (element.classList.contains("visual-builder__base-field")) {
|
|
30
|
+
element.classList.remove("visual-builder__base-field");
|
|
31
|
+
}
|
|
30
32
|
if (highlightVariantFields) {
|
|
31
33
|
element.classList.add(
|
|
32
34
|
visualBuilderStyles()["visual-builder__variant-field"],
|
|
@@ -48,12 +50,53 @@ function updateVariantClasses({
|
|
|
48
50
|
);
|
|
49
51
|
element.classList.add("visual-builder__disabled-variant-field");
|
|
50
52
|
}
|
|
53
|
+
if (!observer) return;
|
|
51
54
|
observer.disconnect();
|
|
52
55
|
const index = observers.indexOf(observer);
|
|
53
56
|
if (index > -1) {
|
|
54
57
|
observers.splice(index, 1);
|
|
55
58
|
}
|
|
56
59
|
};
|
|
60
|
+
const addElementClasses = (element) => {
|
|
61
|
+
const dataCslp = element.getAttribute(DATA_CSLP_ATTR_SELECTOR);
|
|
62
|
+
if (!dataCslp) {
|
|
63
|
+
element.childNodes.forEach((child) => {
|
|
64
|
+
if (child instanceof HTMLElement) {
|
|
65
|
+
addElementClasses(child);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (dataCslp.startsWith("v2:") && element.classList.contains("visual-builder__variant-field")) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (dataCslp.startsWith("v2:") && !element.classList.contains("visual-builder__variant-field")) {
|
|
74
|
+
if (element.classList.contains("visual-builder__base-field")) {
|
|
75
|
+
element.classList.remove("visual-builder__base-field");
|
|
76
|
+
}
|
|
77
|
+
if (highlightVariantFields) {
|
|
78
|
+
element.classList.add(
|
|
79
|
+
visualBuilderStyles()["visual-builder__variant-field"],
|
|
80
|
+
"visual-builder__variant-field"
|
|
81
|
+
);
|
|
82
|
+
} else {
|
|
83
|
+
element.classList.add("visual-builder__variant-field");
|
|
84
|
+
}
|
|
85
|
+
} else if (!dataCslp.startsWith("v2:")) {
|
|
86
|
+
if (element.classList.contains("visual-builder__variant-field")) {
|
|
87
|
+
element.classList.remove(
|
|
88
|
+
visualBuilderStyles()["visual-builder__variant-field"],
|
|
89
|
+
"visual-builder__variant-field"
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
element.classList.add("visual-builder__base-field");
|
|
93
|
+
}
|
|
94
|
+
element.childNodes.forEach((child) => {
|
|
95
|
+
if (child instanceof HTMLElement) {
|
|
96
|
+
addElementClasses(child);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
};
|
|
57
100
|
const elementsWithCslp = document.querySelectorAll(
|
|
58
101
|
`[${DATA_CSLP_ATTR_SELECTOR}]`
|
|
59
102
|
);
|
|
@@ -61,7 +104,14 @@ function updateVariantClasses({
|
|
|
61
104
|
const element = elementNode;
|
|
62
105
|
const observer = new MutationObserver((mutations) => {
|
|
63
106
|
mutations.forEach((mutation) => {
|
|
64
|
-
if (mutation.type === "attributes" && mutation.attributeName === DATA_CSLP_ATTR_SELECTOR) {
|
|
107
|
+
if (mutation.type === "attributes" && mutation.attributeName === DATA_CSLP_ATTR_SELECTOR || mutation.type === "childList") {
|
|
108
|
+
if (mutation.addedNodes.length > 0) {
|
|
109
|
+
mutation.addedNodes.forEach((node) => {
|
|
110
|
+
if (node instanceof HTMLElement) {
|
|
111
|
+
addElementClasses(node);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
65
115
|
const dataCslp = element.getAttribute(
|
|
66
116
|
DATA_CSLP_ATTR_SELECTOR
|
|
67
117
|
);
|
|
@@ -70,7 +120,12 @@ function updateVariantClasses({
|
|
|
70
120
|
});
|
|
71
121
|
});
|
|
72
122
|
observers.push(observer);
|
|
73
|
-
observer.observe(element, {
|
|
123
|
+
observer.observe(element, {
|
|
124
|
+
attributes: true,
|
|
125
|
+
childList: true,
|
|
126
|
+
// Observe direct children
|
|
127
|
+
subtree: true
|
|
128
|
+
});
|
|
74
129
|
});
|
|
75
130
|
setTimeout(() => {
|
|
76
131
|
if (observers.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__base-field\")\n ) {\n element.classList.remove(\"visual-builder__base-field\");\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR\n ) {\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, { attributes: true });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,OAAO,4BAA4B;AACnC,SAAS,wCAAwC;AACjD,SAAS,+BAA+B;AACxC,SAAS,2BAA2B;AAEpC,IAAM,0BAA4C;AAU3C,SAAS,sCAA4C;AACxD,0BAAwB;AAAA,IACpB,iCAAiC;AAAA,IACjC,CAAC,UAAU;AACP,UAAI,cAAc,yBAAyB,MAAM,cAAc;AAC3D,6BAAqB,MAAM,IAAI;AAAA,MACnC;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,qBAAqB;AAAA,EAC1B;AAAA,EACA;AACJ,GAA2C;AACvC,QAAM,UAAU,cAAc,yBAAyB,MAAM;AAC7D,QAAM,YAAgC,CAAC;AAGvC,QAAM,uBAAuB,CACzB,SACA,UACA,aACC;AACD,QAAI,CAAC,SAAU;AAEf,QACI,SAAS,WAAW,KAAK,KACzB,QAAQ,UAAU,SAAS,4BAA4B,GACzD;AACE,cAAQ,UAAU,OAAO,4BAA4B;AACrD,UAAI,wBAAwB;AACxB,gBAAQ,UAAU;AAAA,UACd,oBAAoB,EAAE,+BAA+B;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,gBAAQ,UAAU,IAAI,+BAA+B;AAAA,MACzD;AAAA,IACJ,WACI,CAAC,SAAS,WAAW,KAAK,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,WACI,SAAS,WAAW,KAAK,KACzB,WACA,CAAC,SAAS,SAAS,OAAO,KAC1B,QAAQ,UAAU,SAAS,+BAA+B,GAC5D;AACE,cAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AACA,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAGA,aAAS,WAAW;AACpB,UAAM,QAAQ,UAAU,QAAQ,QAAQ;AACxC,QAAI,QAAQ,IAAI;AACZ,gBAAU,OAAO,OAAO,CAAC;AAAA,IAC7B;AAAA,EACJ;AAGA,QAAM,mBAAmB,SAAS;AAAA,IAC9B,IAAI,uBAAuB;AAAA,EAC/B;AAEA,mBAAiB,QAAQ,CAAC,gBAAgB;AACtC,UAAM,UAAU;AAEhB,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACjD,gBAAU,QAAQ,CAAC,aAAa;AAC5B,YACI,SAAS,SAAS,gBAClB,SAAS,kBAAkB,yBAC7B;AACE,gBAAM,WAAW,QAAQ;AAAA,YACrB;AAAA,UACJ;AACA,+BAAqB,SAAS,YAAY,IAAI,QAAQ;AAAA,QAC1D;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,cAAU,KAAK,QAAQ;AACvB,aAAS,QAAQ,SAAS,EAAE,YAAY,KAAK,CAAC;AAAA,EAClD,CAAC;AAED,aAAW,MAAM;AACb,QAAI,UAAU,SAAS,GAAG;AACtB,gBAAU,QAAQ,CAAC,aAAa,SAAS,WAAW,CAAC;AACrD,gBAAU,SAAS;AAAA,IACvB;AAAA,EACJ,GAAG,uBAAuB;AAC9B;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport livePreviewPostMessage from \"../../livePreview/eventManager/livePreviewEventManager\";\nimport { LIVE_PREVIEW_POST_MESSAGE_EVENTS } from \"../../livePreview/eventManager/livePreviewEventManager.constant\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"../utils/constants\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\nconst VARIANT_UPDATE_DELAY_MS: Readonly<number> = 8000;\n\ntype OnAudienceModeVariantPatchUpdate = {\n highlightVariantFields: boolean;\n expectedCSLPValues: Record<\"variant\" | \"base\", string>;\n};\n\n/**\n * Registers a post message event listener for updating the variant / base classes in the live preview for audience mode.\n */\nexport function useRecalculateVariantDataCSLPValues(): void {\n livePreviewPostMessage?.on<OnAudienceModeVariantPatchUpdate>(\n LIVE_PREVIEW_POST_MESSAGE_EVENTS.VARIANT_PATCH,\n (event) => {\n if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode) {\n updateVariantClasses(event.data);\n }\n }\n );\n}\nfunction updateVariantClasses({\n highlightVariantFields,\n expectedCSLPValues,\n}: OnAudienceModeVariantPatchUpdate): void {\n const variant = VisualBuilder.VisualBuilderGlobalState.value.variant;\n const observers: MutationObserver[] = [];\n\n // Helper function to update element classes\n const updateElementClasses = (\n element: HTMLElement,\n dataCslp: string,\n observer?: MutationObserver\n ) => {\n if (!dataCslp) return;\n\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (\n !dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__base-field\");\n } else if (\n dataCslp.startsWith(\"v2:\") &&\n variant &&\n !dataCslp.includes(variant) &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n if (!observer) return;\n // Disconnect this observer after processing\n observer.disconnect();\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n };\n\n const addElementClasses = (element: HTMLElement) => {\n const dataCslp = element.getAttribute(DATA_CSLP_ATTR_SELECTOR);\n\n if (!dataCslp) {\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n return;\n }\n //if element might have been updated by another observer\n if (\n dataCslp.startsWith(\"v2:\") &&\n element.classList.contains(\"visual-builder__variant-field\")\n ) {\n return;\n }\n // if element has not given variant/base class\n if (\n dataCslp.startsWith(\"v2:\") &&\n !element.classList.contains(\"visual-builder__variant-field\")\n ) {\n if (element.classList.contains(\"visual-builder__base-field\")) {\n element.classList.remove(\"visual-builder__base-field\");\n }\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n } else {\n element.classList.add(\"visual-builder__variant-field\");\n }\n } else if (!dataCslp.startsWith(\"v2:\")) {\n if (element.classList.contains(\"visual-builder__variant-field\")) {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__variant-field\"\n );\n }\n element.classList.add(\"visual-builder__base-field\");\n }\n\n //recursive call for child nodes\n element.childNodes.forEach((child) => {\n if (child instanceof HTMLElement) {\n addElementClasses(child);\n }\n });\n };\n\n // Create a separate observer for each element\n const elementsWithCslp = document.querySelectorAll(\n `[${DATA_CSLP_ATTR_SELECTOR}]`\n );\n elementsWithCslp.forEach((elementNode) => {\n const element = elementNode as HTMLElement;\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n (mutation.type === \"attributes\" &&\n mutation.attributeName === DATA_CSLP_ATTR_SELECTOR) ||\n mutation.type === \"childList\"\n ) {\n if (mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n addElementClasses(node);\n }\n });\n }\n const dataCslp = element.getAttribute(\n DATA_CSLP_ATTR_SELECTOR\n );\n updateElementClasses(element, dataCslp || \"\", observer);\n }\n });\n });\n\n observers.push(observer);\n observer.observe(element, {\n attributes: true,\n childList: true, // Observe direct children\n subtree: true,\n });\n });\n\n setTimeout(() => {\n if (observers.length > 0) {\n observers.forEach((observer) => observer.disconnect());\n observers.length = 0;\n }\n }, VARIANT_UPDATE_DELAY_MS);\n}\n"],"mappings":"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","names":[]}
|