@contentstack/live-preview-utils 4.2.0 → 4.3.0
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 +1 -1
- package/dist/legacy/configManager/config.default.cjs +4 -2
- package/dist/legacy/configManager/config.default.cjs.map +1 -1
- package/dist/legacy/configManager/config.default.d.cts +1 -1
- package/dist/legacy/configManager/config.default.d.ts +1 -1
- package/dist/legacy/configManager/config.default.js +4 -2
- package/dist/legacy/configManager/config.default.js.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.cjs +4 -0
- package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
- package/dist/legacy/configManager/handleUserConfig.js +4 -0
- package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
- package/dist/legacy/cslp/cslpdata.cjs +28 -3
- package/dist/legacy/cslp/cslpdata.cjs.map +1 -1
- package/dist/legacy/cslp/cslpdata.d.cts +27 -1
- package/dist/legacy/cslp/cslpdata.d.ts +27 -1
- package/dist/legacy/cslp/cslpdata.js +26 -2
- package/dist/legacy/cslp/cslpdata.js.map +1 -1
- package/dist/legacy/cslp/index.d.cts +1 -1
- package/dist/legacy/cslp/index.d.ts +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 +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.js +2 -2
- package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +11 -6
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +11 -6
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/legacy/timeline/compare/compare.cjs +3 -1
- package/dist/legacy/timeline/compare/compare.cjs.map +1 -1
- package/dist/legacy/timeline/compare/compare.js +3 -1
- package/dist/legacy/timeline/compare/compare.js.map +1 -1
- package/dist/legacy/types/types.cjs.map +1 -1
- package/dist/legacy/types/types.d.cts +2 -0
- package/dist/legacy/types/types.d.ts +2 -0
- package/dist/legacy/types/types.js.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +2 -2
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +19 -22
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.d.cts +2 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.d.ts +2 -1
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +18 -22
- package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs +2 -2
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js +3 -3
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +63 -13
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +12 -3
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +12 -3
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js +60 -14
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateEmptyBlock.cjs +1 -1
- package/dist/legacy/visualBuilder/generators/generateEmptyBlock.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateEmptyBlock.js +2 -2
- package/dist/legacy/visualBuilder/generators/generateEmptyBlock.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateHighlightedComment.cjs +2 -1
- package/dist/legacy/visualBuilder/generators/generateHighlightedComment.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateHighlightedComment.js +2 -1
- package/dist/legacy/visualBuilder/generators/generateHighlightedComment.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.js +2 -2
- package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateThread.d.cts +1 -1
- package/dist/legacy/visualBuilder/generators/generateThread.d.ts +1 -1
- package/dist/legacy/visualBuilder/index.cjs +12 -2
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.d.cts +2 -0
- package/dist/legacy/visualBuilder/index.d.ts +2 -0
- package/dist/legacy/visualBuilder/index.js +14 -4
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +14 -10
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +14 -10
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.d.cts +1 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.d.ts +1 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs +3 -3
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js +4 -4
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js +2 -2
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs +2 -2
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.js +3 -3
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.js.map +1 -1
- 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 +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +1 -0
- 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/utils/updateFocussedState.cjs +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js +2 -2
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +2 -1
- 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 +2 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/configManager/config.default.cjs +4 -2
- package/dist/modern/configManager/config.default.cjs.map +1 -1
- package/dist/modern/configManager/config.default.d.cts +1 -1
- package/dist/modern/configManager/config.default.d.ts +1 -1
- package/dist/modern/configManager/config.default.js +4 -2
- 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/cslp/cslpdata.cjs +28 -3
- package/dist/modern/cslp/cslpdata.cjs.map +1 -1
- package/dist/modern/cslp/cslpdata.d.cts +27 -1
- package/dist/modern/cslp/cslpdata.d.ts +27 -1
- package/dist/modern/cslp/cslpdata.js +26 -2
- package/dist/modern/cslp/cslpdata.js.map +1 -1
- package/dist/modern/cslp/index.d.cts +1 -1
- package/dist/modern/cslp/index.d.ts +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 +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.js +2 -2
- package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +11 -6
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +11 -6
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/modern/timeline/compare/compare.cjs +3 -1
- package/dist/modern/timeline/compare/compare.cjs.map +1 -1
- package/dist/modern/timeline/compare/compare.js +3 -1
- package/dist/modern/timeline/compare/compare.js.map +1 -1
- package/dist/modern/types/types.cjs.map +1 -1
- package/dist/modern/types/types.d.cts +2 -0
- package/dist/modern/types/types.d.ts +2 -0
- package/dist/modern/types/types.js.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +2 -2
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +19 -22
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.d.cts +2 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.d.ts +2 -1
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +18 -22
- package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs +2 -2
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js +3 -3
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +62 -13
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +12 -3
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +12 -3
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js +59 -14
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateEmptyBlock.cjs +1 -1
- package/dist/modern/visualBuilder/generators/generateEmptyBlock.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateEmptyBlock.js +2 -2
- package/dist/modern/visualBuilder/generators/generateEmptyBlock.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateHighlightedComment.cjs +2 -1
- package/dist/modern/visualBuilder/generators/generateHighlightedComment.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateHighlightedComment.js +2 -1
- package/dist/modern/visualBuilder/generators/generateHighlightedComment.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.js +2 -2
- package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateThread.d.cts +1 -1
- package/dist/modern/visualBuilder/generators/generateThread.d.ts +1 -1
- package/dist/modern/visualBuilder/index.cjs +12 -2
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.d.cts +2 -0
- package/dist/modern/visualBuilder/index.d.ts +2 -0
- package/dist/modern/visualBuilder/index.js +14 -4
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +14 -10
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +14 -10
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/utils/collabUtils.d.cts +1 -1
- package/dist/modern/visualBuilder/utils/collabUtils.d.ts +1 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs +3 -3
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.js +4 -4
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs +1 -1
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js +2 -2
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs +2 -2
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.js +3 -3
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.js.map +1 -1
- 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 +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +1 -0
- 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/utils/updateFocussedState.cjs +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.js +2 -2
- package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +2 -1
- 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 +2 -1
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +8 -8
|
@@ -31,10 +31,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var useVariantsPostMessageEvent_exports = {};
|
|
32
32
|
__export(useVariantsPostMessageEvent_exports, {
|
|
33
33
|
addVariantFieldClass: () => addVariantFieldClass,
|
|
34
|
+
debounceAddVariantFieldClass: () => debounceAddVariantFieldClass,
|
|
35
|
+
getHighlightVariantFieldsStatus: () => getHighlightVariantFieldsStatus,
|
|
34
36
|
removeVariantFieldClass: () => removeVariantFieldClass,
|
|
35
37
|
setAudienceMode: () => setAudienceMode,
|
|
38
|
+
setHighlightVariantFields: () => setHighlightVariantFields,
|
|
36
39
|
setLocale: () => setLocale,
|
|
37
40
|
setVariant: () => setVariant,
|
|
41
|
+
setVariantOrder: () => setVariantOrder,
|
|
38
42
|
useVariantFieldsPostMessageEvent: () => useVariantFieldsPostMessageEvent
|
|
39
43
|
});
|
|
40
44
|
module.exports = __toCommonJS(useVariantsPostMessageEvent_exports);
|
|
@@ -43,6 +47,8 @@ var import_visualBuilder = require("../visualBuilder.style.cjs");
|
|
|
43
47
|
var import_visualBuilderPostMessage = __toESM(require("../utils/visualBuilderPostMessage.cjs"), 1);
|
|
44
48
|
var import_postMessage = require("../utils/types/postMessage.types.cjs");
|
|
45
49
|
var import_fieldSchemaMap = require("../utils/fieldSchemaMap.cjs");
|
|
50
|
+
var import_useRecalculateVariantDataCSLPValues = require("./useRecalculateVariantDataCSLPValues.cjs");
|
|
51
|
+
var import_lodash_es = require("lodash-es");
|
|
46
52
|
var import_cslpdata = require("../../cslp/cslpdata.cjs");
|
|
47
53
|
function isLowerOrderVariant(variant_uid, dataCslp, variantOrder) {
|
|
48
54
|
if (!variantOrder || variantOrder.length === 0) {
|
|
@@ -56,16 +62,20 @@ function isLowerOrderVariant(variant_uid, dataCslp, variantOrder) {
|
|
|
56
62
|
}
|
|
57
63
|
return indexOfCslpVariant < indexOfCmsVariant;
|
|
58
64
|
}
|
|
59
|
-
function addVariantFieldClass(variant_uid
|
|
65
|
+
function addVariantFieldClass(variant_uid) {
|
|
66
|
+
const variantOrder = import__.VisualBuilder.VisualBuilderGlobalState.value.variantOrder;
|
|
67
|
+
const highlightVariantFields = import__.VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields;
|
|
60
68
|
const elements = document.querySelectorAll(`[data-cslp]`);
|
|
61
69
|
elements.forEach((element) => {
|
|
62
70
|
const dataCslp = element.getAttribute("data-cslp");
|
|
63
|
-
if (!dataCslp) return;
|
|
71
|
+
if (!(0, import_cslpdata.isValidCslp)(dataCslp)) return;
|
|
64
72
|
if (dataCslp?.includes(variant_uid)) {
|
|
65
|
-
highlightVariantFields && element.classList.add(
|
|
66
|
-
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"]
|
|
67
|
-
);
|
|
68
73
|
element.classList.add("visual-builder__variant-field");
|
|
74
|
+
if (highlightVariantFields) {
|
|
75
|
+
element.classList.add(
|
|
76
|
+
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field-outline"]
|
|
77
|
+
);
|
|
78
|
+
}
|
|
69
79
|
} else if (!dataCslp.startsWith("v2:")) {
|
|
70
80
|
element.classList.add("visual-builder__base-field");
|
|
71
81
|
} else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {
|
|
@@ -75,14 +85,19 @@ function addVariantFieldClass(variant_uid, highlightVariantFields, variantOrder)
|
|
|
75
85
|
}
|
|
76
86
|
});
|
|
77
87
|
}
|
|
88
|
+
var debounceAddVariantFieldClass = (0, import_lodash_es.debounce)(
|
|
89
|
+
addVariantFieldClass,
|
|
90
|
+
1e3,
|
|
91
|
+
{ trailing: true }
|
|
92
|
+
);
|
|
78
93
|
function removeVariantFieldClass(onlyHighlighted = false) {
|
|
79
94
|
if (onlyHighlighted) {
|
|
80
95
|
const variantElements = document.querySelectorAll(
|
|
81
|
-
`.${(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"]}`
|
|
96
|
+
`.${(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field-outline"]}`
|
|
82
97
|
);
|
|
83
98
|
variantElements.forEach((element) => {
|
|
84
99
|
element.classList.remove(
|
|
85
|
-
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"]
|
|
100
|
+
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field-outline"]
|
|
86
101
|
);
|
|
87
102
|
});
|
|
88
103
|
} else {
|
|
@@ -93,7 +108,7 @@ function removeVariantFieldClass(onlyHighlighted = false) {
|
|
|
93
108
|
element.classList.remove(
|
|
94
109
|
"visual-builder__disabled-variant-field",
|
|
95
110
|
"visual-builder__variant-field",
|
|
96
|
-
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
|
|
111
|
+
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field-outline"],
|
|
97
112
|
"visual-builder__base-field",
|
|
98
113
|
"visual-builder__lower-order-variant-field"
|
|
99
114
|
);
|
|
@@ -109,12 +124,41 @@ function setVariant(uid) {
|
|
|
109
124
|
function setLocale(locale) {
|
|
110
125
|
import__.VisualBuilder.VisualBuilderGlobalState.value.locale = locale;
|
|
111
126
|
}
|
|
112
|
-
function
|
|
127
|
+
function setHighlightVariantFields(highlight) {
|
|
128
|
+
import__.VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields = highlight;
|
|
129
|
+
}
|
|
130
|
+
function setVariantOrder(variantOrder) {
|
|
131
|
+
import__.VisualBuilder.VisualBuilderGlobalState.value.variantOrder = variantOrder;
|
|
132
|
+
}
|
|
133
|
+
async function getHighlightVariantFieldsStatus() {
|
|
134
|
+
try {
|
|
135
|
+
const result = await import_visualBuilderPostMessage.default?.send(
|
|
136
|
+
import_postMessage.VisualBuilderPostMessageEvents.GET_HIGHLIGHT_VARIANT_FIELDS_STATUS
|
|
137
|
+
);
|
|
138
|
+
return result ?? {
|
|
139
|
+
highlightVariantFields: false
|
|
140
|
+
};
|
|
141
|
+
} catch (error) {
|
|
142
|
+
console.error("Failed to get highlight variant fields status:", error);
|
|
143
|
+
return {
|
|
144
|
+
highlightVariantFields: false
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function useVariantFieldsPostMessageEvent({ isSSR }) {
|
|
113
149
|
import_visualBuilderPostMessage.default?.on(
|
|
114
150
|
import_postMessage.VisualBuilderPostMessageEvents.GET_VARIANT_ID,
|
|
115
151
|
(event) => {
|
|
116
|
-
|
|
152
|
+
const selectedVariant = event.data.variant;
|
|
153
|
+
setVariant(selectedVariant);
|
|
117
154
|
import_fieldSchemaMap.FieldSchemaMap.clear();
|
|
155
|
+
if (isSSR) {
|
|
156
|
+
if (selectedVariant) {
|
|
157
|
+
addVariantFieldClass(selectedVariant);
|
|
158
|
+
}
|
|
159
|
+
} else {
|
|
160
|
+
(0, import_useRecalculateVariantDataCSLPValues.updateVariantClasses)();
|
|
161
|
+
}
|
|
118
162
|
}
|
|
119
163
|
);
|
|
120
164
|
import_visualBuilderPostMessage.default?.on(
|
|
@@ -132,17 +176,18 @@ function useVariantFieldsPostMessageEvent() {
|
|
|
132
176
|
import_visualBuilderPostMessage.default?.on(
|
|
133
177
|
import_postMessage.VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,
|
|
134
178
|
(event) => {
|
|
179
|
+
setHighlightVariantFields(event.data.variant_data.highlightVariantFields);
|
|
180
|
+
setVariantOrder(event.data.variant_data.variantOrder || []);
|
|
135
181
|
removeVariantFieldClass();
|
|
136
182
|
addVariantFieldClass(
|
|
137
|
-
event.data.variant_data.variant
|
|
138
|
-
event.data.variant_data.highlightVariantFields,
|
|
139
|
-
event.data.variant_data.variantOrder
|
|
183
|
+
event.data.variant_data.variant
|
|
140
184
|
);
|
|
141
185
|
}
|
|
142
186
|
);
|
|
143
187
|
import_visualBuilderPostMessage.default?.on(
|
|
144
188
|
import_postMessage.VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,
|
|
145
189
|
(event) => {
|
|
190
|
+
setHighlightVariantFields(false);
|
|
146
191
|
removeVariantFieldClass(event?.data?.onlyHighlighted);
|
|
147
192
|
}
|
|
148
193
|
);
|
|
@@ -150,10 +195,14 @@ function useVariantFieldsPostMessageEvent() {
|
|
|
150
195
|
// Annotate the CommonJS export names for ESM import in node:
|
|
151
196
|
0 && (module.exports = {
|
|
152
197
|
addVariantFieldClass,
|
|
198
|
+
debounceAddVariantFieldClass,
|
|
199
|
+
getHighlightVariantFieldsStatus,
|
|
153
200
|
removeVariantFieldClass,
|
|
154
201
|
setAudienceMode,
|
|
202
|
+
setHighlightVariantFields,
|
|
155
203
|
setLocale,
|
|
156
204
|
setVariant,
|
|
205
|
+
setVariantOrder,
|
|
157
206
|
useVariantFieldsPostMessageEvent
|
|
158
207
|
});
|
|
159
208
|
//# sourceMappingURL=useVariantsPostMessageEvent.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n variantOrder: string[];\n };\n };\n}\ninterface RemoveVariantFieldsEvent {\n data: {\n onlyHighlighted?: boolean;\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\n\nfunction isLowerOrderVariant(variant_uid: string, dataCslp: string, variantOrder: string[]): boolean {\n if(!variantOrder || variantOrder.length === 0) {\n return false;\n }\n const {variant: cslpVariant} = extractDetailsFromCslp(dataCslp);\n const indexOfCmsVariant = variantOrder.lastIndexOf(variant_uid);\n const indexOfCslpVariant = variantOrder.lastIndexOf(cslpVariant || \"\");\n if(indexOfCslpVariant < 0) {\n return false;\n }\n return indexOfCslpVariant < indexOfCmsVariant;\n}\n\nexport function addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean,\n variantOrder: string[]\n): void {\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!dataCslp) return;\n\n if (dataCslp?.includes(variant_uid)) {\n highlightVariantFields &&\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n element.classList.add(\"visual-builder__variant-field\");\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } \n else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {\n element.classList.add(\"visual-builder__variant-field\", \"visual-builder__lower-order-variant-field\");\n }\n else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nexport function removeVariantFieldClass(\n onlyHighlighted: boolean = false\n): void {\n if (onlyHighlighted) {\n const variantElements = document.querySelectorAll(\n `.${visualBuilderStyles()[\"visual-builder__variant-field\"]}`\n );\n variantElements.forEach((element) => {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n });\n } else {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field, .visual-builder__lower-order-variant-field\" \n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__base-field\",\n \"visual-builder__lower-order-variant-field\"\n );\n });\n }\n}\n\nexport function setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nexport function setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nexport function setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\n\nexport function useVariantFieldsPostMessageEvent(): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n setVariant(event.data.variant);\n // clear field schema when variant is changed.\n // this is required as we cache field schema\n // which contain a key isUnlinkedVariant.\n // This key can change when variant is changed,\n // so clear the field schema cache\n FieldSchemaMap.clear();\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant,\n event.data.variant_data.highlightVariantFields,\n event.data.variant_data.variantOrder\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":"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","names":["visualBuilderPostMessage"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { updateVariantClasses } from \"./useRecalculateVariantDataCSLPValues\";\nimport { debounce } from \"lodash-es\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp/cslpdata\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n variantOrder: string[];\n };\n };\n}\ninterface RemoveVariantFieldsEvent {\n data: {\n onlyHighlighted?: boolean;\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\n\nfunction isLowerOrderVariant(variant_uid: string, dataCslp: string, variantOrder: string[]): boolean {\n if(!variantOrder || variantOrder.length === 0) {\n return false;\n }\n const {variant: cslpVariant} = extractDetailsFromCslp(dataCslp);\n const indexOfCmsVariant = variantOrder.lastIndexOf(variant_uid);\n const indexOfCslpVariant = variantOrder.lastIndexOf(cslpVariant || \"\");\n if(indexOfCslpVariant < 0) {\n return false;\n }\n return indexOfCslpVariant < indexOfCmsVariant;\n}\n\n\nexport function addVariantFieldClass(\n variant_uid: string\n): void {\n const variantOrder = VisualBuilder.VisualBuilderGlobalState.value.variantOrder;\n const highlightVariantFields = VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields;\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!isValidCslp(dataCslp)) return;\n\n if (dataCslp?.includes(variant_uid)) {\n element.classList.add(\"visual-builder__variant-field\");\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field-outline\"]\n );\n }\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } \n else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {\n element.classList.add(\"visual-builder__variant-field\", \"visual-builder__lower-order-variant-field\");\n }\n else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nexport const debounceAddVariantFieldClass = debounce(\n addVariantFieldClass,\n 1000,\n { trailing: true }\n) as (variant_uid: string) => void;\n\nexport function removeVariantFieldClass(\n onlyHighlighted: boolean = false\n): void {\n if (onlyHighlighted) {\n const variantElements = document.querySelectorAll(\n `.${visualBuilderStyles()[\"visual-builder__variant-field-outline\"]}`\n );\n variantElements.forEach((element) => {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field-outline\"]\n );\n });\n } else {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field, .visual-builder__lower-order-variant-field\" \n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field-outline\"],\n \"visual-builder__base-field\",\n \"visual-builder__lower-order-variant-field\"\n );\n });\n }\n}\n\nexport function setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nexport function setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nexport function setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\nexport function setHighlightVariantFields(highlight: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields = highlight;\n}\nexport function setVariantOrder(variantOrder: string[]): void {\n VisualBuilder.VisualBuilderGlobalState.value.variantOrder = variantOrder;\n}\n\ninterface GetHighlightVariantFieldsStatusResponse {\n highlightVariantFields: boolean;\n}\nexport async function getHighlightVariantFieldsStatus(): Promise<GetHighlightVariantFieldsStatusResponse> {\n try {\n const result = await visualBuilderPostMessage?.send<GetHighlightVariantFieldsStatusResponse>(\n VisualBuilderPostMessageEvents.GET_HIGHLIGHT_VARIANT_FIELDS_STATUS\n ); \n return result ?? {\n highlightVariantFields: false,\n };\n } catch (error) {\n console.error(\"Failed to get highlight variant fields status:\", error);\n return {\n highlightVariantFields: false,\n };\n }\n}\n\nexport function useVariantFieldsPostMessageEvent({ isSSR }: { isSSR: boolean }): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n const selectedVariant = event.data.variant;\n setVariant(selectedVariant);\n // clear field schema when variant is changed.\n // this is required as we cache field schema\n // which contain a key isUnlinkedVariant.\n // This key can change when variant is changed,\n // so clear the field schema cache\n FieldSchemaMap.clear();\n if (isSSR) {\n if (selectedVariant) {\n addVariantFieldClass(selectedVariant);\n }\n } else {\n // recalculate and apply classes\n updateVariantClasses();\n }\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n setHighlightVariantFields(event.data.variant_data.highlightVariantFields);\n setVariantOrder(event.data.variant_data.variantOrder || []);\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n setHighlightVariantFields(false);\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":"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","names":["visualBuilderPostMessage"]}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
declare function addVariantFieldClass(variant_uid: string
|
|
1
|
+
declare function addVariantFieldClass(variant_uid: string): void;
|
|
2
|
+
declare const debounceAddVariantFieldClass: (variant_uid: string) => void;
|
|
2
3
|
declare function removeVariantFieldClass(onlyHighlighted?: boolean): void;
|
|
3
4
|
declare function setAudienceMode(mode: boolean): void;
|
|
4
5
|
declare function setVariant(uid: string | null): void;
|
|
5
6
|
declare function setLocale(locale: string): void;
|
|
6
|
-
declare function
|
|
7
|
+
declare function setHighlightVariantFields(highlight: boolean): void;
|
|
8
|
+
declare function setVariantOrder(variantOrder: string[]): void;
|
|
9
|
+
interface GetHighlightVariantFieldsStatusResponse {
|
|
10
|
+
highlightVariantFields: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare function getHighlightVariantFieldsStatus(): Promise<GetHighlightVariantFieldsStatusResponse>;
|
|
13
|
+
declare function useVariantFieldsPostMessageEvent({ isSSR }: {
|
|
14
|
+
isSSR: boolean;
|
|
15
|
+
}): void;
|
|
7
16
|
|
|
8
|
-
export { addVariantFieldClass, removeVariantFieldClass, setAudienceMode, setLocale, setVariant, useVariantFieldsPostMessageEvent };
|
|
17
|
+
export { addVariantFieldClass, debounceAddVariantFieldClass, getHighlightVariantFieldsStatus, removeVariantFieldClass, setAudienceMode, setHighlightVariantFields, setLocale, setVariant, setVariantOrder, useVariantFieldsPostMessageEvent };
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
declare function addVariantFieldClass(variant_uid: string
|
|
1
|
+
declare function addVariantFieldClass(variant_uid: string): void;
|
|
2
|
+
declare const debounceAddVariantFieldClass: (variant_uid: string) => void;
|
|
2
3
|
declare function removeVariantFieldClass(onlyHighlighted?: boolean): void;
|
|
3
4
|
declare function setAudienceMode(mode: boolean): void;
|
|
4
5
|
declare function setVariant(uid: string | null): void;
|
|
5
6
|
declare function setLocale(locale: string): void;
|
|
6
|
-
declare function
|
|
7
|
+
declare function setHighlightVariantFields(highlight: boolean): void;
|
|
8
|
+
declare function setVariantOrder(variantOrder: string[]): void;
|
|
9
|
+
interface GetHighlightVariantFieldsStatusResponse {
|
|
10
|
+
highlightVariantFields: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare function getHighlightVariantFieldsStatus(): Promise<GetHighlightVariantFieldsStatusResponse>;
|
|
13
|
+
declare function useVariantFieldsPostMessageEvent({ isSSR }: {
|
|
14
|
+
isSSR: boolean;
|
|
15
|
+
}): void;
|
|
7
16
|
|
|
8
|
-
export { addVariantFieldClass, removeVariantFieldClass, setAudienceMode, setLocale, setVariant, useVariantFieldsPostMessageEvent };
|
|
17
|
+
export { addVariantFieldClass, debounceAddVariantFieldClass, getHighlightVariantFieldsStatus, removeVariantFieldClass, setAudienceMode, setHighlightVariantFields, setLocale, setVariant, setVariantOrder, useVariantFieldsPostMessageEvent };
|
|
@@ -6,7 +6,9 @@ import { visualBuilderStyles } from "../visualBuilder.style.js";
|
|
|
6
6
|
import visualBuilderPostMessage from "../utils/visualBuilderPostMessage.js";
|
|
7
7
|
import { VisualBuilderPostMessageEvents } from "../utils/types/postMessage.types.js";
|
|
8
8
|
import { FieldSchemaMap } from "../utils/fieldSchemaMap.js";
|
|
9
|
-
import {
|
|
9
|
+
import { updateVariantClasses } from "./useRecalculateVariantDataCSLPValues.js";
|
|
10
|
+
import { debounce } from "lodash-es";
|
|
11
|
+
import { extractDetailsFromCslp, isValidCslp } from "../../cslp/cslpdata.js";
|
|
10
12
|
function isLowerOrderVariant(variant_uid, dataCslp, variantOrder) {
|
|
11
13
|
if (!variantOrder || variantOrder.length === 0) {
|
|
12
14
|
return false;
|
|
@@ -19,16 +21,20 @@ function isLowerOrderVariant(variant_uid, dataCslp, variantOrder) {
|
|
|
19
21
|
}
|
|
20
22
|
return indexOfCslpVariant < indexOfCmsVariant;
|
|
21
23
|
}
|
|
22
|
-
function addVariantFieldClass(variant_uid
|
|
24
|
+
function addVariantFieldClass(variant_uid) {
|
|
25
|
+
const variantOrder = VisualBuilder.VisualBuilderGlobalState.value.variantOrder;
|
|
26
|
+
const highlightVariantFields = VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields;
|
|
23
27
|
const elements = document.querySelectorAll(`[data-cslp]`);
|
|
24
28
|
elements.forEach((element) => {
|
|
25
29
|
const dataCslp = element.getAttribute("data-cslp");
|
|
26
|
-
if (!dataCslp) return;
|
|
30
|
+
if (!isValidCslp(dataCslp)) return;
|
|
27
31
|
if (dataCslp?.includes(variant_uid)) {
|
|
28
|
-
highlightVariantFields && element.classList.add(
|
|
29
|
-
visualBuilderStyles()["visual-builder__variant-field"]
|
|
30
|
-
);
|
|
31
32
|
element.classList.add("visual-builder__variant-field");
|
|
33
|
+
if (highlightVariantFields) {
|
|
34
|
+
element.classList.add(
|
|
35
|
+
visualBuilderStyles()["visual-builder__variant-field-outline"]
|
|
36
|
+
);
|
|
37
|
+
}
|
|
32
38
|
} else if (!dataCslp.startsWith("v2:")) {
|
|
33
39
|
element.classList.add("visual-builder__base-field");
|
|
34
40
|
} else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {
|
|
@@ -38,14 +44,19 @@ function addVariantFieldClass(variant_uid, highlightVariantFields, variantOrder)
|
|
|
38
44
|
}
|
|
39
45
|
});
|
|
40
46
|
}
|
|
47
|
+
var debounceAddVariantFieldClass = debounce(
|
|
48
|
+
addVariantFieldClass,
|
|
49
|
+
1e3,
|
|
50
|
+
{ trailing: true }
|
|
51
|
+
);
|
|
41
52
|
function removeVariantFieldClass(onlyHighlighted = false) {
|
|
42
53
|
if (onlyHighlighted) {
|
|
43
54
|
const variantElements = document.querySelectorAll(
|
|
44
|
-
`.${visualBuilderStyles()["visual-builder__variant-field"]}`
|
|
55
|
+
`.${visualBuilderStyles()["visual-builder__variant-field-outline"]}`
|
|
45
56
|
);
|
|
46
57
|
variantElements.forEach((element) => {
|
|
47
58
|
element.classList.remove(
|
|
48
|
-
visualBuilderStyles()["visual-builder__variant-field"]
|
|
59
|
+
visualBuilderStyles()["visual-builder__variant-field-outline"]
|
|
49
60
|
);
|
|
50
61
|
});
|
|
51
62
|
} else {
|
|
@@ -56,7 +67,7 @@ function removeVariantFieldClass(onlyHighlighted = false) {
|
|
|
56
67
|
element.classList.remove(
|
|
57
68
|
"visual-builder__disabled-variant-field",
|
|
58
69
|
"visual-builder__variant-field",
|
|
59
|
-
visualBuilderStyles()["visual-builder__variant-field"],
|
|
70
|
+
visualBuilderStyles()["visual-builder__variant-field-outline"],
|
|
60
71
|
"visual-builder__base-field",
|
|
61
72
|
"visual-builder__lower-order-variant-field"
|
|
62
73
|
);
|
|
@@ -72,12 +83,41 @@ function setVariant(uid) {
|
|
|
72
83
|
function setLocale(locale) {
|
|
73
84
|
VisualBuilder.VisualBuilderGlobalState.value.locale = locale;
|
|
74
85
|
}
|
|
75
|
-
function
|
|
86
|
+
function setHighlightVariantFields(highlight) {
|
|
87
|
+
VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields = highlight;
|
|
88
|
+
}
|
|
89
|
+
function setVariantOrder(variantOrder) {
|
|
90
|
+
VisualBuilder.VisualBuilderGlobalState.value.variantOrder = variantOrder;
|
|
91
|
+
}
|
|
92
|
+
async function getHighlightVariantFieldsStatus() {
|
|
93
|
+
try {
|
|
94
|
+
const result = await visualBuilderPostMessage?.send(
|
|
95
|
+
VisualBuilderPostMessageEvents.GET_HIGHLIGHT_VARIANT_FIELDS_STATUS
|
|
96
|
+
);
|
|
97
|
+
return result ?? {
|
|
98
|
+
highlightVariantFields: false
|
|
99
|
+
};
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error("Failed to get highlight variant fields status:", error);
|
|
102
|
+
return {
|
|
103
|
+
highlightVariantFields: false
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function useVariantFieldsPostMessageEvent({ isSSR }) {
|
|
76
108
|
visualBuilderPostMessage?.on(
|
|
77
109
|
VisualBuilderPostMessageEvents.GET_VARIANT_ID,
|
|
78
110
|
(event) => {
|
|
79
|
-
|
|
111
|
+
const selectedVariant = event.data.variant;
|
|
112
|
+
setVariant(selectedVariant);
|
|
80
113
|
FieldSchemaMap.clear();
|
|
114
|
+
if (isSSR) {
|
|
115
|
+
if (selectedVariant) {
|
|
116
|
+
addVariantFieldClass(selectedVariant);
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
updateVariantClasses();
|
|
120
|
+
}
|
|
81
121
|
}
|
|
82
122
|
);
|
|
83
123
|
visualBuilderPostMessage?.on(
|
|
@@ -95,27 +135,32 @@ function useVariantFieldsPostMessageEvent() {
|
|
|
95
135
|
visualBuilderPostMessage?.on(
|
|
96
136
|
VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,
|
|
97
137
|
(event) => {
|
|
138
|
+
setHighlightVariantFields(event.data.variant_data.highlightVariantFields);
|
|
139
|
+
setVariantOrder(event.data.variant_data.variantOrder || []);
|
|
98
140
|
removeVariantFieldClass();
|
|
99
141
|
addVariantFieldClass(
|
|
100
|
-
event.data.variant_data.variant
|
|
101
|
-
event.data.variant_data.highlightVariantFields,
|
|
102
|
-
event.data.variant_data.variantOrder
|
|
142
|
+
event.data.variant_data.variant
|
|
103
143
|
);
|
|
104
144
|
}
|
|
105
145
|
);
|
|
106
146
|
visualBuilderPostMessage?.on(
|
|
107
147
|
VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,
|
|
108
148
|
(event) => {
|
|
149
|
+
setHighlightVariantFields(false);
|
|
109
150
|
removeVariantFieldClass(event?.data?.onlyHighlighted);
|
|
110
151
|
}
|
|
111
152
|
);
|
|
112
153
|
}
|
|
113
154
|
export {
|
|
114
155
|
addVariantFieldClass,
|
|
156
|
+
debounceAddVariantFieldClass,
|
|
157
|
+
getHighlightVariantFieldsStatus,
|
|
115
158
|
removeVariantFieldClass,
|
|
116
159
|
setAudienceMode,
|
|
160
|
+
setHighlightVariantFields,
|
|
117
161
|
setLocale,
|
|
118
162
|
setVariant,
|
|
163
|
+
setVariantOrder,
|
|
119
164
|
useVariantFieldsPostMessageEvent
|
|
120
165
|
};
|
|
121
166
|
//# sourceMappingURL=useVariantsPostMessageEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n variantOrder: string[];\n };\n };\n}\ninterface RemoveVariantFieldsEvent {\n data: {\n onlyHighlighted?: boolean;\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\n\nfunction isLowerOrderVariant(variant_uid: string, dataCslp: string, variantOrder: string[]): boolean {\n if(!variantOrder || variantOrder.length === 0) {\n return false;\n }\n const {variant: cslpVariant} = extractDetailsFromCslp(dataCslp);\n const indexOfCmsVariant = variantOrder.lastIndexOf(variant_uid);\n const indexOfCslpVariant = variantOrder.lastIndexOf(cslpVariant || \"\");\n if(indexOfCslpVariant < 0) {\n return false;\n }\n return indexOfCslpVariant < indexOfCmsVariant;\n}\n\nexport function addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean,\n variantOrder: string[]\n): void {\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!dataCslp) return;\n\n if (dataCslp?.includes(variant_uid)) {\n highlightVariantFields &&\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n element.classList.add(\"visual-builder__variant-field\");\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } \n else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {\n element.classList.add(\"visual-builder__variant-field\", \"visual-builder__lower-order-variant-field\");\n }\n else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nexport function removeVariantFieldClass(\n onlyHighlighted: boolean = false\n): void {\n if (onlyHighlighted) {\n const variantElements = document.querySelectorAll(\n `.${visualBuilderStyles()[\"visual-builder__variant-field\"]}`\n );\n variantElements.forEach((element) => {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n });\n } else {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field, .visual-builder__lower-order-variant-field\" \n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__base-field\",\n \"visual-builder__lower-order-variant-field\"\n );\n });\n }\n}\n\nexport function setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nexport function setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nexport function setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\n\nexport function useVariantFieldsPostMessageEvent(): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n setVariant(event.data.variant);\n // clear field schema when variant is changed.\n // this is required as we cache field schema\n // which contain a key isUnlinkedVariant.\n // This key can change when variant is changed,\n // so clear the field schema cache\n FieldSchemaMap.clear();\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant,\n event.data.variant_data.highlightVariantFields,\n event.data.variant_data.variantOrder\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { updateVariantClasses } from \"./useRecalculateVariantDataCSLPValues\";\nimport { debounce } from \"lodash-es\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp/cslpdata\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n variantOrder: string[];\n };\n };\n}\ninterface RemoveVariantFieldsEvent {\n data: {\n onlyHighlighted?: boolean;\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\n\nfunction isLowerOrderVariant(variant_uid: string, dataCslp: string, variantOrder: string[]): boolean {\n if(!variantOrder || variantOrder.length === 0) {\n return false;\n }\n const {variant: cslpVariant} = extractDetailsFromCslp(dataCslp);\n const indexOfCmsVariant = variantOrder.lastIndexOf(variant_uid);\n const indexOfCslpVariant = variantOrder.lastIndexOf(cslpVariant || \"\");\n if(indexOfCslpVariant < 0) {\n return false;\n }\n return indexOfCslpVariant < indexOfCmsVariant;\n}\n\n\nexport function addVariantFieldClass(\n variant_uid: string\n): void {\n const variantOrder = VisualBuilder.VisualBuilderGlobalState.value.variantOrder;\n const highlightVariantFields = VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields;\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!isValidCslp(dataCslp)) return;\n\n if (dataCslp?.includes(variant_uid)) {\n element.classList.add(\"visual-builder__variant-field\");\n if (highlightVariantFields) {\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field-outline\"]\n );\n }\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } \n else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {\n element.classList.add(\"visual-builder__variant-field\", \"visual-builder__lower-order-variant-field\");\n }\n else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nexport const debounceAddVariantFieldClass = debounce(\n addVariantFieldClass,\n 1000,\n { trailing: true }\n) as (variant_uid: string) => void;\n\nexport function removeVariantFieldClass(\n onlyHighlighted: boolean = false\n): void {\n if (onlyHighlighted) {\n const variantElements = document.querySelectorAll(\n `.${visualBuilderStyles()[\"visual-builder__variant-field-outline\"]}`\n );\n variantElements.forEach((element) => {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field-outline\"]\n );\n });\n } else {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field, .visual-builder__lower-order-variant-field\" \n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field-outline\"],\n \"visual-builder__base-field\",\n \"visual-builder__lower-order-variant-field\"\n );\n });\n }\n}\n\nexport function setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nexport function setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nexport function setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\nexport function setHighlightVariantFields(highlight: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.highlightVariantFields = highlight;\n}\nexport function setVariantOrder(variantOrder: string[]): void {\n VisualBuilder.VisualBuilderGlobalState.value.variantOrder = variantOrder;\n}\n\ninterface GetHighlightVariantFieldsStatusResponse {\n highlightVariantFields: boolean;\n}\nexport async function getHighlightVariantFieldsStatus(): Promise<GetHighlightVariantFieldsStatusResponse> {\n try {\n const result = await visualBuilderPostMessage?.send<GetHighlightVariantFieldsStatusResponse>(\n VisualBuilderPostMessageEvents.GET_HIGHLIGHT_VARIANT_FIELDS_STATUS\n ); \n return result ?? {\n highlightVariantFields: false,\n };\n } catch (error) {\n console.error(\"Failed to get highlight variant fields status:\", error);\n return {\n highlightVariantFields: false,\n };\n }\n}\n\nexport function useVariantFieldsPostMessageEvent({ isSSR }: { isSSR: boolean }): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n const selectedVariant = event.data.variant;\n setVariant(selectedVariant);\n // clear field schema when variant is changed.\n // this is required as we cache field schema\n // which contain a key isUnlinkedVariant.\n // This key can change when variant is changed,\n // so clear the field schema cache\n FieldSchemaMap.clear();\n if (isSSR) {\n if (selectedVariant) {\n addVariantFieldClass(selectedVariant);\n }\n } else {\n // recalculate and apply classes\n updateVariantClasses();\n }\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n setHighlightVariantFields(event.data.variant_data.highlightVariantFields);\n setVariantOrder(event.data.variant_data.variantOrder || []);\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n setHighlightVariantFields(false);\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -32,7 +32,7 @@ var import_jsx_runtime = require("preact/jsx-runtime");
|
|
|
32
32
|
async function generateEmptyBlocks(emptyBlockParents) {
|
|
33
33
|
for (const emptyBlockParent of emptyBlockParents) {
|
|
34
34
|
const cslpData = emptyBlockParent.getAttribute("data-cslp");
|
|
35
|
-
if (!cslpData) {
|
|
35
|
+
if (!(0, import_cslp.isValidCslp)(cslpData)) {
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
38
|
const fieldMetadata = (0, import_cslp.extractDetailsFromCslp)(cslpData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateEmptyBlock.tsx"],"sourcesContent":["import { hydrate } from \"preact\";\nimport { EmptyBlock } from \"../components/emptyBlock\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\n\nexport async function generateEmptyBlocks(\n emptyBlockParents: Element[] | []\n): Promise<void> {\n for (const emptyBlockParent of emptyBlockParents) {\n const cslpData = emptyBlockParent.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n \n if(!fieldSchema){\n return;\n }\n\n hydrate(\n <EmptyBlock\n details={{\n fieldSchema,\n fieldMetadata,\n }}\n />,\n emptyBlockParent\n );\n }\n}\n\nexport function removeEmptyBlocks(emptyBlockParents: Element[] | []): void {\n emptyBlockParents?.forEach((emptyBlockParent) => {\n const emptyBlock = emptyBlockParent.querySelector(\n \".visual-builder__empty-block\"\n );\n\n if (emptyBlock) {\n emptyBlock.remove();\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateEmptyBlock.tsx"],"sourcesContent":["import { hydrate } from \"preact\";\nimport React from \"preact/compat\";\nimport { EmptyBlock } from \"../components/emptyBlock\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\n\nexport async function generateEmptyBlocks(\n emptyBlockParents: Element[] | []\n): Promise<void> {\n for (const emptyBlockParent of emptyBlockParents) {\n const cslpData = emptyBlockParent.getAttribute(\"data-cslp\");\n if (!isValidCslp(cslpData)) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n \n if(!fieldSchema){\n return;\n }\n\n hydrate(\n <EmptyBlock\n details={{\n fieldSchema,\n fieldMetadata,\n }}\n />,\n emptyBlockParent\n );\n }\n}\n\nexport function removeEmptyBlocks(emptyBlockParents: Element[] | []): void {\n emptyBlockParents?.forEach((emptyBlockParent) => {\n const emptyBlock = emptyBlockParent.querySelector(\n \".visual-builder__empty-block\"\n );\n\n if (emptyBlock) {\n emptyBlock.remove();\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AAExB,wBAA2B;AAC3B,kBAAoD;AACpD,4BAA+B;AAsBnB;AApBZ,eAAsB,oBAClB,mBACa;AACb,aAAW,oBAAoB,mBAAmB;AAC9C,UAAM,WAAW,iBAAiB,aAAa,WAAW;AAC1D,QAAI,KAAC,yBAAY,QAAQ,GAAG;AACxB;AAAA,IACJ;AACA,UAAM,oBAAgB,oCAAuB,QAAQ;AAErD,UAAM,cAAc,MAAM,qCAAe;AAAA,MACrC,cAAc;AAAA,MACd,cAAc;AAAA,IAClB;AAEA,QAAG,CAAC,aAAY;AACZ;AAAA,IACJ;AAEA;AAAA,MACI;AAAA,QAAC;AAAA;AAAA,UACG,SAAS;AAAA,YACL;AAAA,YACA;AAAA,UACJ;AAAA;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;AAEO,SAAS,kBAAkB,mBAAyC;AACvE,qBAAmB,QAAQ,CAAC,qBAAqB;AAC7C,UAAM,aAAa,iBAAiB;AAAA,MAChC;AAAA,IACJ;AAEA,QAAI,YAAY;AACZ,iBAAW,OAAO;AAAA,IACtB;AAAA,EACJ,CAAC;AACL;","names":[]}
|
|
@@ -3,13 +3,13 @@ import "../../chunk-5WRI5ZAA.js";
|
|
|
3
3
|
// src/visualBuilder/generators/generateEmptyBlock.tsx
|
|
4
4
|
import { hydrate } from "preact";
|
|
5
5
|
import { EmptyBlock } from "../components/emptyBlock.js";
|
|
6
|
-
import { extractDetailsFromCslp } from "../../cslp/index.js";
|
|
6
|
+
import { extractDetailsFromCslp, isValidCslp } from "../../cslp/index.js";
|
|
7
7
|
import { FieldSchemaMap } from "../utils/fieldSchemaMap.js";
|
|
8
8
|
import { jsx } from "preact/jsx-runtime";
|
|
9
9
|
async function generateEmptyBlocks(emptyBlockParents) {
|
|
10
10
|
for (const emptyBlockParent of emptyBlockParents) {
|
|
11
11
|
const cslpData = emptyBlockParent.getAttribute("data-cslp");
|
|
12
|
-
if (!cslpData) {
|
|
12
|
+
if (!isValidCslp(cslpData)) {
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
const fieldMetadata = extractDetailsFromCslp(cslpData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateEmptyBlock.tsx"],"sourcesContent":["import { hydrate } from \"preact\";\nimport { EmptyBlock } from \"../components/emptyBlock\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\n\nexport async function generateEmptyBlocks(\n emptyBlockParents: Element[] | []\n): Promise<void> {\n for (const emptyBlockParent of emptyBlockParents) {\n const cslpData = emptyBlockParent.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n \n if(!fieldSchema){\n return;\n }\n\n hydrate(\n <EmptyBlock\n details={{\n fieldSchema,\n fieldMetadata,\n }}\n />,\n emptyBlockParent\n );\n }\n}\n\nexport function removeEmptyBlocks(emptyBlockParents: Element[] | []): void {\n emptyBlockParents?.forEach((emptyBlockParent) => {\n const emptyBlock = emptyBlockParent.querySelector(\n \".visual-builder__empty-block\"\n );\n\n if (emptyBlock) {\n emptyBlock.remove();\n }\n });\n}\n"],"mappings":";;;AAAA,SAAS,eAAe;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateEmptyBlock.tsx"],"sourcesContent":["import { hydrate } from \"preact\";\nimport React from \"preact/compat\";\nimport { EmptyBlock } from \"../components/emptyBlock\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\n\nexport async function generateEmptyBlocks(\n emptyBlockParents: Element[] | []\n): Promise<void> {\n for (const emptyBlockParent of emptyBlockParents) {\n const cslpData = emptyBlockParent.getAttribute(\"data-cslp\");\n if (!isValidCslp(cslpData)) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n \n if(!fieldSchema){\n return;\n }\n\n hydrate(\n <EmptyBlock\n details={{\n fieldSchema,\n fieldMetadata,\n }}\n />,\n emptyBlockParent\n );\n }\n}\n\nexport function removeEmptyBlocks(emptyBlockParents: Element[] | []): void {\n emptyBlockParents?.forEach((emptyBlockParent) => {\n const emptyBlock = emptyBlockParent.querySelector(\n \".visual-builder__empty-block\"\n );\n\n if (emptyBlock) {\n emptyBlock.remove();\n }\n });\n}\n"],"mappings":";;;AAAA,SAAS,eAAe;AAExB,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB,mBAAmB;AACpD,SAAS,sBAAsB;AAsBnB;AApBZ,eAAsB,oBAClB,mBACa;AACb,aAAW,oBAAoB,mBAAmB;AAC9C,UAAM,WAAW,iBAAiB,aAAa,WAAW;AAC1D,QAAI,CAAC,YAAY,QAAQ,GAAG;AACxB;AAAA,IACJ;AACA,UAAM,gBAAgB,uBAAuB,QAAQ;AAErD,UAAM,cAAc,MAAM,eAAe;AAAA,MACrC,cAAc;AAAA,MACd,cAAc;AAAA,IAClB;AAEA,QAAG,CAAC,aAAY;AACZ;AAAA,IACJ;AAEA;AAAA,MACI;AAAA,QAAC;AAAA;AAAA,UACG,SAAS;AAAA,YACL;AAAA,YACA;AAAA,UACJ;AAAA;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;AAEO,SAAS,kBAAkB,mBAAyC;AACvE,qBAAmB,QAAQ,CAAC,qBAAqB;AAC7C,UAAM,aAAa,iBAAiB;AAAA,MAChC;AAAA,IACJ;AAEA,QAAI,YAAY;AACZ,iBAAW,OAAO;AAAA,IACtB;AAAA,EACJ,CAAC;AACL;","names":[]}
|
|
@@ -42,12 +42,13 @@ var import_preact = require("preact");
|
|
|
42
42
|
var import_preact2 = require("preact");
|
|
43
43
|
var import_HighlightedCommentIcon = __toESM(require("../components/HighlightedCommentIcon.cjs"), 1);
|
|
44
44
|
var import_goober = require("goober");
|
|
45
|
+
var import_cslp = require("../../cslp/index.cjs");
|
|
45
46
|
var highlighCommentOffset = 25;
|
|
46
47
|
function highlightCommentIconOnCanvas(payload) {
|
|
47
48
|
const uniquePaths = {};
|
|
48
49
|
payload.forEach((data) => {
|
|
49
50
|
const cslpValue = data?.fieldMetadata?.cslpValue;
|
|
50
|
-
if (!cslpValue || uniquePaths[cslpValue]) {
|
|
51
|
+
if (!(0, import_cslp.isValidCslp)(cslpValue) || uniquePaths[cslpValue]) {
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
54
|
uniquePaths[cslpValue] = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateHighlightedComment.tsx"],"sourcesContent":["import { h, VNode } from \"preact\"; // Explicitly import VNode from Preact\nimport { render } from \"preact\";\nimport HighlightedCommentIcon from \"../components/HighlightedCommentIcon\";\nimport { css } from \"goober\";\nimport React from \"preact/compat\";\nimport { IHighlightCommentData } from \"../eventManager/useHighlightCommentIcon\";\n\n/**\n * Inserts highlighted comment icons based on an array of paths.\n *\n * This function locates elements in the DOM based on the `fieldMetadata.cslpValue`,\n * and appends a comment icon near each matching element.\n *\n * @param payload - Array of comment data with field metadata, schema, absolutePath and discussion ID.\n */\nconst highlighCommentOffset = 25;\n\nexport function highlightCommentIconOnCanvas(\n payload: IHighlightCommentData[]\n): void {\n const uniquePaths: { [key: string]: boolean } = {}; // Using object for uniqueness\n\n payload.forEach((data) => {\n const cslpValue = data?.fieldMetadata?.cslpValue;\n\n // Check if the cslpValue is already in the Object\n if (!cslpValue || uniquePaths[cslpValue]) {\n return; // Skip if the value is not unique\n }\n\n uniquePaths[cslpValue] = true; // Mark it as processed\n\n const element = document.querySelector(`[data-cslp=\"${cslpValue}\"]`);\n if (element && element instanceof HTMLElement) {\n const { top, left } = element.getBoundingClientRect();\n\n const iconContainer = document.createElement(\"div\");\n iconContainer.setAttribute(\"field-path\", cslpValue);\n\n iconContainer.style.position = \"fixed\";\n iconContainer.style.top = `${top - highlighCommentOffset}px`;\n iconContainer.style.left = `${left - highlighCommentOffset}px`;\n iconContainer.style.zIndex = \"900\";\n iconContainer.style.cursor = \"pointer\";\n iconContainer.className = \"highlighted-comment collab-icon\";\n\n // Render the HighlightedCommentIcon using Preact's render method\n render(\n h(HighlightedCommentIcon, { data }), // Use h directly with Preact\n iconContainer\n );\n\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n if (visualBuilderContainer) {\n let highlightCommentWrapper =\n visualBuilderContainer.querySelector(\n \".visual-builder__highlighted-comment-wrapper\"\n );\n if (!highlightCommentWrapper) {\n highlightCommentWrapper = document.createElement(\"div\");\n highlightCommentWrapper.className =\n \"visual-builder__highlighted-comment-wrapper\";\n visualBuilderContainer.appendChild(highlightCommentWrapper);\n }\n highlightCommentWrapper.appendChild(iconContainer);\n }\n }\n });\n}\n\n/**\n * Update Highlighted comment position , whenever scroll or resize happen.\n */\n\nexport function updateHighlightedCommentIconPosition() {\n // Query all elements with the .highlighted-comment class\n const icons = document.querySelectorAll(\".highlighted-comment\");\n\n icons.forEach((icon) => {\n if (icon && icon instanceof HTMLElement) {\n // Get the field-path attribute from the icon container\n const path = icon.getAttribute(\"field-path\");\n if (path) {\n // Query the target element using the path\n const targetElement = document.querySelector(\n `[data-cslp=\"${path}\"]`\n );\n if (targetElement && targetElement instanceof HTMLElement) {\n // Get the target element's position relative to the viewport\n const { top, left } = targetElement.getBoundingClientRect();\n\n // Update the position of the icon container\n icon.style.top = `${top - highlighCommentOffset}px`; // Adjust based on the target element's top\n icon.style.left = `${left - highlighCommentOffset}px`; // Adjust based on the target element's left\n }\n }\n }\n });\n}\n\n/**\n * Removes the first highlighted comment icon based on an array of paths.\n *\n * @param pathsToRemove - Array of field-paths to remove.\n */\nexport function removeHighlightedCommentIcon(pathToRemove: string): void {\n // Loop through each path in the array\n const iconToRemove = document.querySelectorAll(\n `.highlighted-comment[field-path=\"${pathToRemove}\"]`\n );\n iconToRemove?.forEach((icon) => icon?.remove());\n}\n\nexport function removeAllHighlightedCommentIcons(): void {\n const icons = document.querySelectorAll(\".highlighted-comment\");\n icons?.forEach((icon) => icon?.remove());\n}\n\n// Define a hidden class in goober\nconst hiddenClass = css`\n display: none;\n`;\n\n/**\n * Toggle display style of a specific highlighted comment icon.\n *\n * @param path - The data-cslp attribute of the element whose corresponding highlighted comment icon should be toggled.\n * @param shouldShow - Boolean value to determine whether to show or hide the icon.\n * If true, the icon will be displayed. If false, the icon will be hidden.\n */\nexport function toggleHighlightedCommentIconDisplay(\n path: string,\n shouldShow: boolean\n): void {\n const icons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment[field-path=\"${path}\"]`\n );\n\n icons.forEach((icon) => {\n if (shouldShow) {\n icon.classList.remove(hiddenClass); // Show the element\n } else {\n icon.classList.add(hiddenClass); // Hide the element using goober's hidden class\n }\n });\n}\n\n/**\n * Show all .highlighted-comment icons that have the hiddenClass applied.\n */\nexport function showAllHiddenHighlightedCommentIcons(): void {\n // Query all elements that have both .highlighted-comment and hiddenClass\n const hiddenIcons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment.${hiddenClass}`\n );\n\n // Loop through each hidden icon and remove the hiddenClass\n hiddenIcons.forEach((icon) => {\n icon.classList.remove(hiddenClass); // Remove the hiddenClass to show the icon\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AACzB,IAAAA,iBAAuB;AACvB,oCAAmC;AACnC,oBAAoB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateHighlightedComment.tsx"],"sourcesContent":["import { h, VNode } from \"preact\"; // Explicitly import VNode from Preact\nimport { render } from \"preact\";\nimport HighlightedCommentIcon from \"../components/HighlightedCommentIcon\";\nimport { css } from \"goober\";\nimport React from \"preact/compat\";\nimport { IHighlightCommentData } from \"../eventManager/useHighlightCommentIcon\";\nimport { isValidCslp } from \"../../cslp\";\n\n/**\n * Inserts highlighted comment icons based on an array of paths.\n *\n * This function locates elements in the DOM based on the `fieldMetadata.cslpValue`,\n * and appends a comment icon near each matching element.\n *\n * @param payload - Array of comment data with field metadata, schema, absolutePath and discussion ID.\n */\nconst highlighCommentOffset = 25;\n\nexport function highlightCommentIconOnCanvas(\n payload: IHighlightCommentData[]\n): void {\n const uniquePaths: { [key: string]: boolean } = {}; // Using object for uniqueness\n\n payload.forEach((data) => {\n const cslpValue = data?.fieldMetadata?.cslpValue;\n\n // Check if the cslpValue is already in the Object\n if (!isValidCslp(cslpValue) || uniquePaths[cslpValue]) {\n return; // Skip if the value is not unique\n }\n\n uniquePaths[cslpValue] = true; // Mark it as processed\n\n const element = document.querySelector(`[data-cslp=\"${cslpValue}\"]`);\n if (element && element instanceof HTMLElement) {\n const { top, left } = element.getBoundingClientRect();\n\n const iconContainer = document.createElement(\"div\");\n iconContainer.setAttribute(\"field-path\", cslpValue);\n\n iconContainer.style.position = \"fixed\";\n iconContainer.style.top = `${top - highlighCommentOffset}px`;\n iconContainer.style.left = `${left - highlighCommentOffset}px`;\n iconContainer.style.zIndex = \"900\";\n iconContainer.style.cursor = \"pointer\";\n iconContainer.className = \"highlighted-comment collab-icon\";\n\n // Render the HighlightedCommentIcon using Preact's render method\n render(\n h(HighlightedCommentIcon, { data }), // Use h directly with Preact\n iconContainer\n );\n\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n if (visualBuilderContainer) {\n let highlightCommentWrapper =\n visualBuilderContainer.querySelector(\n \".visual-builder__highlighted-comment-wrapper\"\n );\n if (!highlightCommentWrapper) {\n highlightCommentWrapper = document.createElement(\"div\");\n highlightCommentWrapper.className =\n \"visual-builder__highlighted-comment-wrapper\";\n visualBuilderContainer.appendChild(highlightCommentWrapper);\n }\n highlightCommentWrapper.appendChild(iconContainer);\n }\n }\n });\n}\n\n/**\n * Update Highlighted comment position , whenever scroll or resize happen.\n */\n\nexport function updateHighlightedCommentIconPosition() {\n // Query all elements with the .highlighted-comment class\n const icons = document.querySelectorAll(\".highlighted-comment\");\n\n icons.forEach((icon) => {\n if (icon && icon instanceof HTMLElement) {\n // Get the field-path attribute from the icon container\n const path = icon.getAttribute(\"field-path\");\n if (path) {\n // Query the target element using the path\n const targetElement = document.querySelector(\n `[data-cslp=\"${path}\"]`\n );\n if (targetElement && targetElement instanceof HTMLElement) {\n // Get the target element's position relative to the viewport\n const { top, left } = targetElement.getBoundingClientRect();\n\n // Update the position of the icon container\n icon.style.top = `${top - highlighCommentOffset}px`; // Adjust based on the target element's top\n icon.style.left = `${left - highlighCommentOffset}px`; // Adjust based on the target element's left\n }\n }\n }\n });\n}\n\n/**\n * Removes the first highlighted comment icon based on an array of paths.\n *\n * @param pathsToRemove - Array of field-paths to remove.\n */\nexport function removeHighlightedCommentIcon(pathToRemove: string): void {\n // Loop through each path in the array\n const iconToRemove = document.querySelectorAll(\n `.highlighted-comment[field-path=\"${pathToRemove}\"]`\n );\n iconToRemove?.forEach((icon) => icon?.remove());\n}\n\nexport function removeAllHighlightedCommentIcons(): void {\n const icons = document.querySelectorAll(\".highlighted-comment\");\n icons?.forEach((icon) => icon?.remove());\n}\n\n// Define a hidden class in goober\nconst hiddenClass = css`\n display: none;\n`;\n\n/**\n * Toggle display style of a specific highlighted comment icon.\n *\n * @param path - The data-cslp attribute of the element whose corresponding highlighted comment icon should be toggled.\n * @param shouldShow - Boolean value to determine whether to show or hide the icon.\n * If true, the icon will be displayed. If false, the icon will be hidden.\n */\nexport function toggleHighlightedCommentIconDisplay(\n path: string,\n shouldShow: boolean\n): void {\n const icons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment[field-path=\"${path}\"]`\n );\n\n icons.forEach((icon) => {\n if (shouldShow) {\n icon.classList.remove(hiddenClass); // Show the element\n } else {\n icon.classList.add(hiddenClass); // Hide the element using goober's hidden class\n }\n });\n}\n\n/**\n * Show all .highlighted-comment icons that have the hiddenClass applied.\n */\nexport function showAllHiddenHighlightedCommentIcons(): void {\n // Query all elements that have both .highlighted-comment and hiddenClass\n const hiddenIcons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment.${hiddenClass}`\n );\n\n // Loop through each hidden icon and remove the hiddenClass\n hiddenIcons.forEach((icon) => {\n icon.classList.remove(hiddenClass); // Remove the hiddenClass to show the icon\n });\n}\n"],"mappings":"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","names":["import_preact","HighlightedCommentIcon"]}
|
|
@@ -5,12 +5,13 @@ import { h } from "preact";
|
|
|
5
5
|
import { render } from "preact";
|
|
6
6
|
import HighlightedCommentIcon from "../components/HighlightedCommentIcon.js";
|
|
7
7
|
import { css } from "goober";
|
|
8
|
+
import { isValidCslp } from "../../cslp/index.js";
|
|
8
9
|
var highlighCommentOffset = 25;
|
|
9
10
|
function highlightCommentIconOnCanvas(payload) {
|
|
10
11
|
const uniquePaths = {};
|
|
11
12
|
payload.forEach((data) => {
|
|
12
13
|
const cslpValue = data?.fieldMetadata?.cslpValue;
|
|
13
|
-
if (!cslpValue || uniquePaths[cslpValue]) {
|
|
14
|
+
if (!isValidCslp(cslpValue) || uniquePaths[cslpValue]) {
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
uniquePaths[cslpValue] = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateHighlightedComment.tsx"],"sourcesContent":["import { h, VNode } from \"preact\"; // Explicitly import VNode from Preact\nimport { render } from \"preact\";\nimport HighlightedCommentIcon from \"../components/HighlightedCommentIcon\";\nimport { css } from \"goober\";\nimport React from \"preact/compat\";\nimport { IHighlightCommentData } from \"../eventManager/useHighlightCommentIcon\";\n\n/**\n * Inserts highlighted comment icons based on an array of paths.\n *\n * This function locates elements in the DOM based on the `fieldMetadata.cslpValue`,\n * and appends a comment icon near each matching element.\n *\n * @param payload - Array of comment data with field metadata, schema, absolutePath and discussion ID.\n */\nconst highlighCommentOffset = 25;\n\nexport function highlightCommentIconOnCanvas(\n payload: IHighlightCommentData[]\n): void {\n const uniquePaths: { [key: string]: boolean } = {}; // Using object for uniqueness\n\n payload.forEach((data) => {\n const cslpValue = data?.fieldMetadata?.cslpValue;\n\n // Check if the cslpValue is already in the Object\n if (!cslpValue || uniquePaths[cslpValue]) {\n return; // Skip if the value is not unique\n }\n\n uniquePaths[cslpValue] = true; // Mark it as processed\n\n const element = document.querySelector(`[data-cslp=\"${cslpValue}\"]`);\n if (element && element instanceof HTMLElement) {\n const { top, left } = element.getBoundingClientRect();\n\n const iconContainer = document.createElement(\"div\");\n iconContainer.setAttribute(\"field-path\", cslpValue);\n\n iconContainer.style.position = \"fixed\";\n iconContainer.style.top = `${top - highlighCommentOffset}px`;\n iconContainer.style.left = `${left - highlighCommentOffset}px`;\n iconContainer.style.zIndex = \"900\";\n iconContainer.style.cursor = \"pointer\";\n iconContainer.className = \"highlighted-comment collab-icon\";\n\n // Render the HighlightedCommentIcon using Preact's render method\n render(\n h(HighlightedCommentIcon, { data }), // Use h directly with Preact\n iconContainer\n );\n\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n if (visualBuilderContainer) {\n let highlightCommentWrapper =\n visualBuilderContainer.querySelector(\n \".visual-builder__highlighted-comment-wrapper\"\n );\n if (!highlightCommentWrapper) {\n highlightCommentWrapper = document.createElement(\"div\");\n highlightCommentWrapper.className =\n \"visual-builder__highlighted-comment-wrapper\";\n visualBuilderContainer.appendChild(highlightCommentWrapper);\n }\n highlightCommentWrapper.appendChild(iconContainer);\n }\n }\n });\n}\n\n/**\n * Update Highlighted comment position , whenever scroll or resize happen.\n */\n\nexport function updateHighlightedCommentIconPosition() {\n // Query all elements with the .highlighted-comment class\n const icons = document.querySelectorAll(\".highlighted-comment\");\n\n icons.forEach((icon) => {\n if (icon && icon instanceof HTMLElement) {\n // Get the field-path attribute from the icon container\n const path = icon.getAttribute(\"field-path\");\n if (path) {\n // Query the target element using the path\n const targetElement = document.querySelector(\n `[data-cslp=\"${path}\"]`\n );\n if (targetElement && targetElement instanceof HTMLElement) {\n // Get the target element's position relative to the viewport\n const { top, left } = targetElement.getBoundingClientRect();\n\n // Update the position of the icon container\n icon.style.top = `${top - highlighCommentOffset}px`; // Adjust based on the target element's top\n icon.style.left = `${left - highlighCommentOffset}px`; // Adjust based on the target element's left\n }\n }\n }\n });\n}\n\n/**\n * Removes the first highlighted comment icon based on an array of paths.\n *\n * @param pathsToRemove - Array of field-paths to remove.\n */\nexport function removeHighlightedCommentIcon(pathToRemove: string): void {\n // Loop through each path in the array\n const iconToRemove = document.querySelectorAll(\n `.highlighted-comment[field-path=\"${pathToRemove}\"]`\n );\n iconToRemove?.forEach((icon) => icon?.remove());\n}\n\nexport function removeAllHighlightedCommentIcons(): void {\n const icons = document.querySelectorAll(\".highlighted-comment\");\n icons?.forEach((icon) => icon?.remove());\n}\n\n// Define a hidden class in goober\nconst hiddenClass = css`\n display: none;\n`;\n\n/**\n * Toggle display style of a specific highlighted comment icon.\n *\n * @param path - The data-cslp attribute of the element whose corresponding highlighted comment icon should be toggled.\n * @param shouldShow - Boolean value to determine whether to show or hide the icon.\n * If true, the icon will be displayed. If false, the icon will be hidden.\n */\nexport function toggleHighlightedCommentIconDisplay(\n path: string,\n shouldShow: boolean\n): void {\n const icons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment[field-path=\"${path}\"]`\n );\n\n icons.forEach((icon) => {\n if (shouldShow) {\n icon.classList.remove(hiddenClass); // Show the element\n } else {\n icon.classList.add(hiddenClass); // Hide the element using goober's hidden class\n }\n });\n}\n\n/**\n * Show all .highlighted-comment icons that have the hiddenClass applied.\n */\nexport function showAllHiddenHighlightedCommentIcons(): void {\n // Query all elements that have both .highlighted-comment and hiddenClass\n const hiddenIcons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment.${hiddenClass}`\n );\n\n // Loop through each hidden icon and remove the hiddenClass\n hiddenIcons.forEach((icon) => {\n icon.classList.remove(hiddenClass); // Remove the hiddenClass to show the icon\n });\n}\n"],"mappings":";;;AAAA,SAAS,SAAgB;AACzB,SAAS,cAAc;AACvB,OAAO,4BAA4B;AACnC,SAAS,WAAW;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateHighlightedComment.tsx"],"sourcesContent":["import { h, VNode } from \"preact\"; // Explicitly import VNode from Preact\nimport { render } from \"preact\";\nimport HighlightedCommentIcon from \"../components/HighlightedCommentIcon\";\nimport { css } from \"goober\";\nimport React from \"preact/compat\";\nimport { IHighlightCommentData } from \"../eventManager/useHighlightCommentIcon\";\nimport { isValidCslp } from \"../../cslp\";\n\n/**\n * Inserts highlighted comment icons based on an array of paths.\n *\n * This function locates elements in the DOM based on the `fieldMetadata.cslpValue`,\n * and appends a comment icon near each matching element.\n *\n * @param payload - Array of comment data with field metadata, schema, absolutePath and discussion ID.\n */\nconst highlighCommentOffset = 25;\n\nexport function highlightCommentIconOnCanvas(\n payload: IHighlightCommentData[]\n): void {\n const uniquePaths: { [key: string]: boolean } = {}; // Using object for uniqueness\n\n payload.forEach((data) => {\n const cslpValue = data?.fieldMetadata?.cslpValue;\n\n // Check if the cslpValue is already in the Object\n if (!isValidCslp(cslpValue) || uniquePaths[cslpValue]) {\n return; // Skip if the value is not unique\n }\n\n uniquePaths[cslpValue] = true; // Mark it as processed\n\n const element = document.querySelector(`[data-cslp=\"${cslpValue}\"]`);\n if (element && element instanceof HTMLElement) {\n const { top, left } = element.getBoundingClientRect();\n\n const iconContainer = document.createElement(\"div\");\n iconContainer.setAttribute(\"field-path\", cslpValue);\n\n iconContainer.style.position = \"fixed\";\n iconContainer.style.top = `${top - highlighCommentOffset}px`;\n iconContainer.style.left = `${left - highlighCommentOffset}px`;\n iconContainer.style.zIndex = \"900\";\n iconContainer.style.cursor = \"pointer\";\n iconContainer.className = \"highlighted-comment collab-icon\";\n\n // Render the HighlightedCommentIcon using Preact's render method\n render(\n h(HighlightedCommentIcon, { data }), // Use h directly with Preact\n iconContainer\n );\n\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n if (visualBuilderContainer) {\n let highlightCommentWrapper =\n visualBuilderContainer.querySelector(\n \".visual-builder__highlighted-comment-wrapper\"\n );\n if (!highlightCommentWrapper) {\n highlightCommentWrapper = document.createElement(\"div\");\n highlightCommentWrapper.className =\n \"visual-builder__highlighted-comment-wrapper\";\n visualBuilderContainer.appendChild(highlightCommentWrapper);\n }\n highlightCommentWrapper.appendChild(iconContainer);\n }\n }\n });\n}\n\n/**\n * Update Highlighted comment position , whenever scroll or resize happen.\n */\n\nexport function updateHighlightedCommentIconPosition() {\n // Query all elements with the .highlighted-comment class\n const icons = document.querySelectorAll(\".highlighted-comment\");\n\n icons.forEach((icon) => {\n if (icon && icon instanceof HTMLElement) {\n // Get the field-path attribute from the icon container\n const path = icon.getAttribute(\"field-path\");\n if (path) {\n // Query the target element using the path\n const targetElement = document.querySelector(\n `[data-cslp=\"${path}\"]`\n );\n if (targetElement && targetElement instanceof HTMLElement) {\n // Get the target element's position relative to the viewport\n const { top, left } = targetElement.getBoundingClientRect();\n\n // Update the position of the icon container\n icon.style.top = `${top - highlighCommentOffset}px`; // Adjust based on the target element's top\n icon.style.left = `${left - highlighCommentOffset}px`; // Adjust based on the target element's left\n }\n }\n }\n });\n}\n\n/**\n * Removes the first highlighted comment icon based on an array of paths.\n *\n * @param pathsToRemove - Array of field-paths to remove.\n */\nexport function removeHighlightedCommentIcon(pathToRemove: string): void {\n // Loop through each path in the array\n const iconToRemove = document.querySelectorAll(\n `.highlighted-comment[field-path=\"${pathToRemove}\"]`\n );\n iconToRemove?.forEach((icon) => icon?.remove());\n}\n\nexport function removeAllHighlightedCommentIcons(): void {\n const icons = document.querySelectorAll(\".highlighted-comment\");\n icons?.forEach((icon) => icon?.remove());\n}\n\n// Define a hidden class in goober\nconst hiddenClass = css`\n display: none;\n`;\n\n/**\n * Toggle display style of a specific highlighted comment icon.\n *\n * @param path - The data-cslp attribute of the element whose corresponding highlighted comment icon should be toggled.\n * @param shouldShow - Boolean value to determine whether to show or hide the icon.\n * If true, the icon will be displayed. If false, the icon will be hidden.\n */\nexport function toggleHighlightedCommentIconDisplay(\n path: string,\n shouldShow: boolean\n): void {\n const icons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment[field-path=\"${path}\"]`\n );\n\n icons.forEach((icon) => {\n if (shouldShow) {\n icon.classList.remove(hiddenClass); // Show the element\n } else {\n icon.classList.add(hiddenClass); // Hide the element using goober's hidden class\n }\n });\n}\n\n/**\n * Show all .highlighted-comment icons that have the hiddenClass applied.\n */\nexport function showAllHiddenHighlightedCommentIcons(): void {\n // Query all elements that have both .highlighted-comment and hiddenClass\n const hiddenIcons = document.querySelectorAll<HTMLElement>(\n `.highlighted-comment.${hiddenClass}`\n );\n\n // Loop through each hidden icon and remove the hiddenClass\n hiddenIcons.forEach((icon) => {\n icon.classList.remove(hiddenClass); // Remove the hiddenClass to show the icon\n });\n}\n"],"mappings":";;;AAAA,SAAS,SAAgB;AACzB,SAAS,cAAc;AACvB,OAAO,4BAA4B;AACnC,SAAS,WAAW;AAGpB,SAAS,mBAAmB;AAU5B,IAAM,wBAAwB;AAEvB,SAAS,6BACZ,SACI;AACJ,QAAM,cAA0C,CAAC;AAEjD,UAAQ,QAAQ,CAAC,SAAS;AACtB,UAAM,YAAY,MAAM,eAAe;AAGvC,QAAI,CAAC,YAAY,SAAS,KAAK,YAAY,SAAS,GAAG;AACnD;AAAA,IACJ;AAEA,gBAAY,SAAS,IAAI;AAEzB,UAAM,UAAU,SAAS,cAAc,eAAe,SAAS,IAAI;AACnE,QAAI,WAAW,mBAAmB,aAAa;AAC3C,YAAM,EAAE,KAAK,KAAK,IAAI,QAAQ,sBAAsB;AAEpD,YAAM,gBAAgB,SAAS,cAAc,KAAK;AAClD,oBAAc,aAAa,cAAc,SAAS;AAElD,oBAAc,MAAM,WAAW;AAC/B,oBAAc,MAAM,MAAM,GAAG,MAAM,qBAAqB;AACxD,oBAAc,MAAM,OAAO,GAAG,OAAO,qBAAqB;AAC1D,oBAAc,MAAM,SAAS;AAC7B,oBAAc,MAAM,SAAS;AAC7B,oBAAc,YAAY;AAG1B;AAAA,QACI,EAAE,wBAAwB,EAAE,KAAK,CAAC;AAAA;AAAA,QAClC;AAAA,MACJ;AAEA,YAAM,yBAAyB,SAAS;AAAA,QACpC;AAAA,MACJ;AACA,UAAI,wBAAwB;AACxB,YAAI,0BACA,uBAAuB;AAAA,UACnB;AAAA,QACJ;AACJ,YAAI,CAAC,yBAAyB;AAC1B,oCAA0B,SAAS,cAAc,KAAK;AACtD,kCAAwB,YACpB;AACJ,iCAAuB,YAAY,uBAAuB;AAAA,QAC9D;AACA,gCAAwB,YAAY,aAAa;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAMO,SAAS,uCAAuC;AAEnD,QAAM,QAAQ,SAAS,iBAAiB,sBAAsB;AAE9D,QAAM,QAAQ,CAAC,SAAS;AACpB,QAAI,QAAQ,gBAAgB,aAAa;AAErC,YAAM,OAAO,KAAK,aAAa,YAAY;AAC3C,UAAI,MAAM;AAEN,cAAM,gBAAgB,SAAS;AAAA,UAC3B,eAAe,IAAI;AAAA,QACvB;AACA,YAAI,iBAAiB,yBAAyB,aAAa;AAEvD,gBAAM,EAAE,KAAK,KAAK,IAAI,cAAc,sBAAsB;AAG1D,eAAK,MAAM,MAAM,GAAG,MAAM,qBAAqB;AAC/C,eAAK,MAAM,OAAO,GAAG,OAAO,qBAAqB;AAAA,QACrD;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAOO,SAAS,6BAA6B,cAA4B;AAErE,QAAM,eAAe,SAAS;AAAA,IAC1B,oCAAoC,YAAY;AAAA,EACpD;AACA,gBAAc,QAAQ,CAAC,SAAS,MAAM,OAAO,CAAC;AAClD;AAEO,SAAS,mCAAyC;AACrD,QAAM,QAAQ,SAAS,iBAAiB,sBAAsB;AAC9D,SAAO,QAAQ,CAAC,SAAS,MAAM,OAAO,CAAC;AAC3C;AAGA,IAAM,cAAc;AAAA;AAAA;AAWb,SAAS,oCACZ,MACA,YACI;AACJ,QAAM,QAAQ,SAAS;AAAA,IACnB,oCAAoC,IAAI;AAAA,EAC5C;AAEA,QAAM,QAAQ,CAAC,SAAS;AACpB,QAAI,YAAY;AACZ,WAAK,UAAU,OAAO,WAAW;AAAA,IACrC,OAAO;AACH,WAAK,UAAU,IAAI,WAAW;AAAA,IAClC;AAAA,EACJ,CAAC;AACL;AAKO,SAAS,uCAA6C;AAEzD,QAAM,cAAc,SAAS;AAAA,IACzB,wBAAwB,WAAW;AAAA,EACvC;AAGA,cAAY,QAAQ,CAAC,SAAS;AAC1B,SAAK,UAAU,OAAO,WAAW;AAAA,EACrC,CAAC;AACL;","names":[]}
|