@contentstack/live-preview-utils 4.1.1 → 4.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/legacy/light-sdk.cjs +1 -1
- package/dist/legacy/light-sdk.js +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/legacy/visualBuilder/collab.style.cjs +2 -2
- package/dist/legacy/visualBuilder/collab.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/collab.style.js +2 -2
- package/dist/legacy/visualBuilder/collab.style.js.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +3 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +3 -1
- package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +3 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +2 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +2 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.js +3 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +61 -12
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +62 -13
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs +122 -0
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs.map +1 -0
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.d.cts +7 -0
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.d.ts +7 -0
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js +99 -0
- package/dist/legacy/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js.map +1 -0
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +21 -4
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js +21 -4
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +5 -3
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.js +5 -3
- package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +5 -3
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.js +5 -3
- package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/hooks/useCollabIndicator.d.cts +4 -4
- package/dist/legacy/visualBuilder/hooks/useCollabIndicator.d.ts +4 -4
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.cts +3 -3
- package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.ts +3 -3
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/index.cjs +8 -0
- package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/index.js +11 -0
- package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +6 -3
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +6 -3
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +20 -5
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.d.cts +4 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.d.ts +4 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.js +17 -5
- package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/constants.cjs +13 -0
- package/dist/legacy/visualBuilder/utils/constants.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/constants.d.cts +10 -1
- package/dist/legacy/visualBuilder/utils/constants.d.ts +10 -1
- package/dist/legacy/visualBuilder/utils/constants.js +11 -0
- package/dist/legacy/visualBuilder/utils/constants.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs +21 -3
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.cts +5 -1
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.ts +5 -1
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js +21 -3
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.cjs +8 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.d.cts +5 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.d.ts +5 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.js +8 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs +7 -3
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js +7 -3
- package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs +3 -3
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js +3 -3
- package/dist/legacy/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getResolvedVariantPermissions.cjs +58 -0
- package/dist/legacy/visualBuilder/utils/getResolvedVariantPermissions.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/getResolvedVariantPermissions.d.cts +10 -0
- package/dist/legacy/visualBuilder/utils/getResolvedVariantPermissions.d.ts +10 -0
- package/dist/legacy/visualBuilder/utils/getResolvedVariantPermissions.js +25 -0
- package/dist/legacy/visualBuilder/utils/getResolvedVariantPermissions.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs +9 -7
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.js +9 -7
- package/dist/legacy/visualBuilder/utils/getVisualBuilderRedirectionUrl.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +6 -2
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +6 -2
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +23 -6
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +23 -2
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +23 -2
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +22 -6
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/index.types.d.cts +1 -0
- package/dist/legacy/visualBuilder/utils/types/index.types.d.ts +1 -0
- package/dist/legacy/visualBuilder/utils/types/index.types.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +9 -4
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js +10 -5
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +36 -6
- 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 +36 -6
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/light-sdk.cjs +1 -1
- package/dist/modern/light-sdk.js +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/modern/visualBuilder/collab.style.cjs +2 -2
- package/dist/modern/visualBuilder/collab.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/collab.style.js +2 -2
- package/dist/modern/visualBuilder/collab.style.js.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +3 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +3 -1
- package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs +3 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +2 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +2 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.js +3 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +60 -12
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +61 -13
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs +122 -0
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.cjs.map +1 -0
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.d.cts +7 -0
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.d.ts +7 -0
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js +99 -0
- package/dist/modern/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.js.map +1 -0
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +21 -4
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js +21 -4
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs +5 -3
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.js +5 -3
- package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs +5 -3
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.js +5 -3
- package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/hooks/useCollabIndicator.d.cts +4 -4
- package/dist/modern/visualBuilder/hooks/useCollabIndicator.d.ts +4 -4
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.cts +3 -3
- package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.ts +3 -3
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/index.cjs +7 -0
- package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/index.js +10 -0
- package/dist/modern/visualBuilder/listeners/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +6 -3
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +6 -3
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs +20 -5
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.d.cts +4 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.d.ts +4 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.js +17 -5
- package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/modern/visualBuilder/utils/constants.cjs +13 -0
- package/dist/modern/visualBuilder/utils/constants.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/constants.d.cts +10 -1
- package/dist/modern/visualBuilder/utils/constants.d.ts +10 -1
- package/dist/modern/visualBuilder/utils/constants.js +11 -0
- package/dist/modern/visualBuilder/utils/constants.js.map +1 -1
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs +21 -3
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.cts +5 -1
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.ts +5 -1
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js +21 -3
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js.map +1 -1
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.cjs +8 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.d.cts +5 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.d.ts +5 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.js +8 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs +5 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.js +5 -1
- package/dist/modern/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs +3 -3
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js +3 -3
- package/dist/modern/visualBuilder/utils/getEntryIdentifiersInCurrentPage.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getResolvedVariantPermissions.cjs +57 -0
- package/dist/modern/visualBuilder/utils/getResolvedVariantPermissions.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/getResolvedVariantPermissions.d.cts +10 -0
- package/dist/modern/visualBuilder/utils/getResolvedVariantPermissions.d.ts +10 -0
- package/dist/modern/visualBuilder/utils/getResolvedVariantPermissions.js +24 -0
- package/dist/modern/visualBuilder/utils/getResolvedVariantPermissions.js.map +1 -0
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs +9 -7
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.js +9 -7
- package/dist/modern/visualBuilder/utils/getVisualBuilderRedirectionUrl.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +6 -2
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js +6 -2
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +21 -4
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +23 -2
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +23 -2
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js +20 -4
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/modern/visualBuilder/utils/types/index.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/index.types.d.cts +1 -0
- package/dist/modern/visualBuilder/utils/types/index.types.d.ts +1 -0
- package/dist/modern/visualBuilder/utils/types/index.types.js.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +9 -4
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.js +10 -5
- package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +36 -6
- 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 +36 -6
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +8 -7
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.ts
|
|
4
|
+
import { VisualBuilder } from "../index.js";
|
|
5
|
+
import { extractDetailsFromCslp } from "../../cslp/index.js";
|
|
6
|
+
import { FieldSchemaMap } from "../utils/fieldSchemaMap.js";
|
|
7
|
+
import { hideFocusOverlay } from "../generators/generateOverlay.js";
|
|
8
|
+
import { handleBuilderInteraction } from "../listeners/mouseClick.js";
|
|
9
|
+
async function handleRevalidateFieldData() {
|
|
10
|
+
const focusedElement = VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM;
|
|
11
|
+
const hoveredElement = VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM;
|
|
12
|
+
const elementCslp = focusedElement == null ? void 0 : focusedElement.getAttribute("data-cslp");
|
|
13
|
+
const elementCslpUniqueId = (focusedElement == null ? void 0 : focusedElement.getAttribute("data-cslp-unique-id")) || null;
|
|
14
|
+
const shouldRefocus = !!focusedElement;
|
|
15
|
+
try {
|
|
16
|
+
if (shouldRefocus) {
|
|
17
|
+
await unfocusElement();
|
|
18
|
+
}
|
|
19
|
+
const targetElement = hoveredElement || focusedElement;
|
|
20
|
+
if (targetElement) {
|
|
21
|
+
const cslp = targetElement.getAttribute("data-cslp");
|
|
22
|
+
if (cslp) {
|
|
23
|
+
const fieldMetadata = extractDetailsFromCslp(cslp);
|
|
24
|
+
FieldSchemaMap.clearContentTypeSchema(
|
|
25
|
+
fieldMetadata.content_type_uid
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
FieldSchemaMap.clear();
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error("Error handling revalidate field data:", error);
|
|
32
|
+
window.location.reload();
|
|
33
|
+
} finally {
|
|
34
|
+
if (shouldRefocus && elementCslp) {
|
|
35
|
+
await refocusElement(elementCslp, elementCslpUniqueId);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function unfocusElement() {
|
|
40
|
+
const { visualBuilderContainer, overlayWrapper, focusedToolbar } = getVisualBuilderElements();
|
|
41
|
+
if (!visualBuilderContainer || !overlayWrapper) return;
|
|
42
|
+
const dummyResizeObserver = new ResizeObserver(() => {
|
|
43
|
+
});
|
|
44
|
+
hideFocusOverlay({
|
|
45
|
+
visualBuilderContainer,
|
|
46
|
+
visualBuilderOverlayWrapper: overlayWrapper,
|
|
47
|
+
focusedToolbar,
|
|
48
|
+
resizeObserver: dummyResizeObserver,
|
|
49
|
+
noTrigger: true
|
|
50
|
+
});
|
|
51
|
+
VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM = null;
|
|
52
|
+
VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false;
|
|
53
|
+
}
|
|
54
|
+
async function refocusElement(cslp, uniqueId) {
|
|
55
|
+
try {
|
|
56
|
+
const elementToRefocus = uniqueId && document.querySelector(
|
|
57
|
+
`[data-cslp-unique-id="${uniqueId}"]`
|
|
58
|
+
) || document.querySelector(`[data-cslp="${cslp}"]`);
|
|
59
|
+
if (!elementToRefocus) return;
|
|
60
|
+
const { visualBuilderContainer, overlayWrapper, focusedToolbar } = getVisualBuilderElements();
|
|
61
|
+
if (!visualBuilderContainer || !overlayWrapper) return;
|
|
62
|
+
const syntheticEvent = new MouseEvent("click", {
|
|
63
|
+
bubbles: true,
|
|
64
|
+
cancelable: true
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(syntheticEvent, "target", {
|
|
67
|
+
value: elementToRefocus,
|
|
68
|
+
enumerable: true
|
|
69
|
+
});
|
|
70
|
+
await handleBuilderInteraction({
|
|
71
|
+
event: syntheticEvent,
|
|
72
|
+
previousSelectedEditableDOM: null,
|
|
73
|
+
visualBuilderContainer,
|
|
74
|
+
overlayWrapper,
|
|
75
|
+
focusedToolbar,
|
|
76
|
+
resizeObserver: new ResizeObserver(() => {
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.warn("Could not refocus element after revalidation:", error);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function getVisualBuilderElements() {
|
|
84
|
+
return {
|
|
85
|
+
visualBuilderContainer: document.querySelector(
|
|
86
|
+
".visual-builder__container"
|
|
87
|
+
),
|
|
88
|
+
overlayWrapper: document.querySelector(
|
|
89
|
+
".visual-builder__overlay__wrapper"
|
|
90
|
+
),
|
|
91
|
+
focusedToolbar: document.querySelector(
|
|
92
|
+
".visual-builder__focused-toolbar"
|
|
93
|
+
)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export {
|
|
97
|
+
handleRevalidateFieldData
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=useRevalidateFieldDataPostMessageEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { hideFocusOverlay } from \"../generators/generateOverlay\";\nimport { handleBuilderInteraction } from \"../listeners/mouseClick\";\n\n/**\n * Revalidates field data and schema after variant linking operations.\n * Unfocuses the selected element, revalidates data, and then reselects it.\n */\nexport async function handleRevalidateFieldData(): Promise<void> {\n const focusedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n const hoveredElement =\n VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM;\n\n // Store element identifiers for refocusing\n const elementCslp = focusedElement?.getAttribute(\"data-cslp\");\n const elementCslpUniqueId =\n focusedElement?.getAttribute(\"data-cslp-unique-id\") || null;\n const shouldRefocus = !!focusedElement;\n\n try {\n // Step 1: Unfocus the current element\n if (shouldRefocus) {\n await unfocusElement();\n }\n\n // Step 2: Revalidate field data\n const targetElement = hoveredElement || focusedElement;\n\n if (targetElement) {\n const cslp = targetElement.getAttribute(\"data-cslp\");\n if (cslp) {\n const fieldMetadata = extractDetailsFromCslp(cslp);\n\n // Try to revalidate specific field schema and data\n // Clear the entire content type schema from cache to force fresh fetch\n FieldSchemaMap.clearContentTypeSchema(\n fieldMetadata.content_type_uid\n );\n }\n }\n\n // Fallback 1: Clear all field schema cache\n FieldSchemaMap.clear();\n } catch (error) {\n console.error(\"Error handling revalidate field data:\", error);\n // Final fallback - refresh the page\n window.location.reload();\n } finally {\n // Step 3: Refocus the element if we had one focused before\n if (shouldRefocus && elementCslp) {\n await refocusElement(elementCslp, elementCslpUniqueId);\n }\n }\n}\n\n/**\n * Unfocuses the currently selected element and clears focus state\n */\nasync function unfocusElement(): Promise<void> {\n const { visualBuilderContainer, overlayWrapper, focusedToolbar } =\n getVisualBuilderElements();\n\n if (!visualBuilderContainer || !overlayWrapper) return;\n\n const dummyResizeObserver = new ResizeObserver(() => {});\n\n // Hide focus overlay (cleanIndividualFieldResidual needs previousSelectedEditableDOM)\n hideFocusOverlay({\n visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper,\n focusedToolbar,\n resizeObserver: dummyResizeObserver,\n noTrigger: true,\n });\n\n // Clear global state after cleanup\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n null;\n VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false;\n}\n\n/**\n * Refocuses an element by its CSLP identifier\n */\nasync function refocusElement(\n cslp: string,\n uniqueId: string | null\n): Promise<void> {\n try {\n // Find the element (prefer unique ID, fallback to CSLP)\n const elementToRefocus =\n (uniqueId &&\n document.querySelector(\n `[data-cslp-unique-id=\"${uniqueId}\"]`\n )) ||\n document.querySelector(`[data-cslp=\"${cslp}\"]`);\n\n if (!elementToRefocus) return;\n\n const { visualBuilderContainer, overlayWrapper, focusedToolbar } =\n getVisualBuilderElements();\n\n if (!visualBuilderContainer || !overlayWrapper) return;\n\n // Create synthetic click event\n const syntheticEvent = new MouseEvent(\"click\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(syntheticEvent, \"target\", {\n value: elementToRefocus,\n enumerable: true,\n });\n\n // Refocus using handleBuilderInteraction\n await handleBuilderInteraction({\n event: syntheticEvent,\n previousSelectedEditableDOM: null,\n visualBuilderContainer,\n overlayWrapper,\n focusedToolbar,\n resizeObserver: new ResizeObserver(() => {}),\n });\n } catch (error) {\n console.warn(\"Could not refocus element after revalidation:\", error);\n }\n}\n\n/**\n * Gets the main visual builder DOM elements\n */\nfunction getVisualBuilderElements() {\n return {\n visualBuilderContainer: document.querySelector(\n \".visual-builder__container\"\n ) as HTMLDivElement | null,\n overlayWrapper: document.querySelector(\n \".visual-builder__overlay__wrapper\"\n ) as HTMLDivElement | null,\n focusedToolbar: document.querySelector(\n \".visual-builder__focused-toolbar\"\n ) as HTMLDivElement | null,\n };\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AACvC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,gCAAgC;AAMzC,eAAsB,4BAA2C;AAC7D,QAAM,iBACF,cAAc,yBAAyB,MAClC;AACT,QAAM,iBACF,cAAc,yBAAyB,MAAM;AAGjD,QAAM,cAAc,iDAAgB,aAAa;AACjD,QAAM,uBACF,iDAAgB,aAAa,2BAA0B;AAC3D,QAAM,gBAAgB,CAAC,CAAC;AAExB,MAAI;AAEA,QAAI,eAAe;AACf,YAAM,eAAe;AAAA,IACzB;AAGA,UAAM,gBAAgB,kBAAkB;AAExC,QAAI,eAAe;AACf,YAAM,OAAO,cAAc,aAAa,WAAW;AACnD,UAAI,MAAM;AACN,cAAM,gBAAgB,uBAAuB,IAAI;AAIjD,uBAAe;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAGA,mBAAe,MAAM;AAAA,EACzB,SAAS,OAAO;AACZ,YAAQ,MAAM,yCAAyC,KAAK;AAE5D,WAAO,SAAS,OAAO;AAAA,EAC3B,UAAE;AAEE,QAAI,iBAAiB,aAAa;AAC9B,YAAM,eAAe,aAAa,mBAAmB;AAAA,IACzD;AAAA,EACJ;AACJ;AAKA,eAAe,iBAAgC;AAC3C,QAAM,EAAE,wBAAwB,gBAAgB,eAAe,IAC3D,yBAAyB;AAE7B,MAAI,CAAC,0BAA0B,CAAC,eAAgB;AAEhD,QAAM,sBAAsB,IAAI,eAAe,MAAM;AAAA,EAAC,CAAC;AAGvD,mBAAiB;AAAA,IACb;AAAA,IACA,6BAA6B;AAAA,IAC7B;AAAA,IACA,gBAAgB;AAAA,IAChB,WAAW;AAAA,EACf,CAAC;AAGD,gBAAc,yBAAyB,MAAM,8BACzC;AACJ,gBAAc,yBAAyB,MAAM,aAAa;AAC9D;AAKA,eAAe,eACX,MACA,UACa;AACb,MAAI;AAEA,UAAM,mBACD,YACG,SAAS;AAAA,MACL,yBAAyB,QAAQ;AAAA,IACrC,KACJ,SAAS,cAAc,eAAe,IAAI,IAAI;AAElD,QAAI,CAAC,iBAAkB;AAEvB,UAAM,EAAE,wBAAwB,gBAAgB,eAAe,IAC3D,yBAAyB;AAE7B,QAAI,CAAC,0BAA0B,CAAC,eAAgB;AAGhD,UAAM,iBAAiB,IAAI,WAAW,SAAS;AAAA,MAC3C,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC;AACD,WAAO,eAAe,gBAAgB,UAAU;AAAA,MAC5C,OAAO;AAAA,MACP,YAAY;AAAA,IAChB,CAAC;AAGD,UAAM,yBAAyB;AAAA,MAC3B,OAAO;AAAA,MACP,6BAA6B;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB,IAAI,eAAe,MAAM;AAAA,MAAC,CAAC;AAAA,IAC/C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,KAAK,iDAAiD,KAAK;AAAA,EACvE;AACJ;AAKA,SAAS,2BAA2B;AAChC,SAAO;AAAA,IACH,wBAAwB,SAAS;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,gBAAgB,SAAS;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,gBAAgB,SAAS;AAAA,MACrB;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -43,7 +43,20 @@ var import_visualBuilder = require("../visualBuilder.style.cjs");
|
|
|
43
43
|
var import_visualBuilderPostMessage = __toESM(require("../utils/visualBuilderPostMessage.cjs"), 1);
|
|
44
44
|
var import_postMessage = require("../utils/types/postMessage.types.cjs");
|
|
45
45
|
var import_fieldSchemaMap = require("../utils/fieldSchemaMap.cjs");
|
|
46
|
-
|
|
46
|
+
var import_cslpdata = require("../../cslp/cslpdata.cjs");
|
|
47
|
+
function isLowerOrderVariant(variant_uid, dataCslp, variantOrder) {
|
|
48
|
+
if (!variantOrder || variantOrder.length === 0) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const { variant: cslpVariant } = (0, import_cslpdata.extractDetailsFromCslp)(dataCslp);
|
|
52
|
+
const indexOfCmsVariant = variantOrder.lastIndexOf(variant_uid);
|
|
53
|
+
const indexOfCslpVariant = variantOrder.lastIndexOf(cslpVariant || "");
|
|
54
|
+
if (indexOfCslpVariant < 0) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return indexOfCslpVariant < indexOfCmsVariant;
|
|
58
|
+
}
|
|
59
|
+
function addVariantFieldClass(variant_uid, highlightVariantFields, variantOrder) {
|
|
47
60
|
const elements = document.querySelectorAll(`[data-cslp]`);
|
|
48
61
|
elements.forEach((element) => {
|
|
49
62
|
const dataCslp = element.getAttribute("data-cslp");
|
|
@@ -55,6 +68,8 @@ function addVariantFieldClass(variant_uid, highlightVariantFields) {
|
|
|
55
68
|
element.classList.add("visual-builder__variant-field");
|
|
56
69
|
} else if (!dataCslp.startsWith("v2:")) {
|
|
57
70
|
element.classList.add("visual-builder__base-field");
|
|
71
|
+
} else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {
|
|
72
|
+
element.classList.add("visual-builder__variant-field", "visual-builder__lower-order-variant-field");
|
|
58
73
|
} else {
|
|
59
74
|
element.classList.add("visual-builder__disabled-variant-field");
|
|
60
75
|
}
|
|
@@ -72,14 +87,15 @@ function removeVariantFieldClass(onlyHighlighted = false) {
|
|
|
72
87
|
});
|
|
73
88
|
} else {
|
|
74
89
|
const variantAndBaseFieldElements = document.querySelectorAll(
|
|
75
|
-
".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field"
|
|
90
|
+
".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field, .visual-builder__lower-order-variant-field"
|
|
76
91
|
);
|
|
77
92
|
variantAndBaseFieldElements.forEach((element) => {
|
|
78
93
|
element.classList.remove(
|
|
79
94
|
"visual-builder__disabled-variant-field",
|
|
80
95
|
"visual-builder__variant-field",
|
|
81
96
|
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
|
|
82
|
-
"visual-builder__base-field"
|
|
97
|
+
"visual-builder__base-field",
|
|
98
|
+
"visual-builder__lower-order-variant-field"
|
|
83
99
|
);
|
|
84
100
|
});
|
|
85
101
|
}
|
|
@@ -120,7 +136,8 @@ function useVariantFieldsPostMessageEvent() {
|
|
|
120
136
|
removeVariantFieldClass();
|
|
121
137
|
addVariantFieldClass(
|
|
122
138
|
event.data.variant_data.variant,
|
|
123
|
-
event.data.variant_data.highlightVariantFields
|
|
139
|
+
event.data.variant_data.highlightVariantFields,
|
|
140
|
+
event.data.variant_data.variantOrder
|
|
124
141
|
);
|
|
125
142
|
}
|
|
126
143
|
);
|
|
@@ -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\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\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}\nexport function addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean\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 } 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\"\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 );\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 );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAC9B,2BAAoC;AACpC,sCAAqC;AACrC,yBAA+C;AAC/C,4BAA+B;
|
|
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","_a"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare function addVariantFieldClass(variant_uid: string, highlightVariantFields: boolean): void;
|
|
1
|
+
declare function addVariantFieldClass(variant_uid: string, highlightVariantFields: boolean, variantOrder: string[]): void;
|
|
2
2
|
declare function removeVariantFieldClass(onlyHighlighted?: boolean): void;
|
|
3
3
|
declare function setAudienceMode(mode: boolean): void;
|
|
4
4
|
declare function setVariant(uid: string | null): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare function addVariantFieldClass(variant_uid: string, highlightVariantFields: boolean): void;
|
|
1
|
+
declare function addVariantFieldClass(variant_uid: string, highlightVariantFields: boolean, variantOrder: string[]): void;
|
|
2
2
|
declare function removeVariantFieldClass(onlyHighlighted?: boolean): void;
|
|
3
3
|
declare function setAudienceMode(mode: boolean): void;
|
|
4
4
|
declare function setVariant(uid: string | null): void;
|
|
@@ -6,7 +6,20 @@ 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
|
-
|
|
9
|
+
import { extractDetailsFromCslp } from "../../cslp/cslpdata.js";
|
|
10
|
+
function isLowerOrderVariant(variant_uid, dataCslp, variantOrder) {
|
|
11
|
+
if (!variantOrder || variantOrder.length === 0) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
const { variant: cslpVariant } = extractDetailsFromCslp(dataCslp);
|
|
15
|
+
const indexOfCmsVariant = variantOrder.lastIndexOf(variant_uid);
|
|
16
|
+
const indexOfCslpVariant = variantOrder.lastIndexOf(cslpVariant || "");
|
|
17
|
+
if (indexOfCslpVariant < 0) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return indexOfCslpVariant < indexOfCmsVariant;
|
|
21
|
+
}
|
|
22
|
+
function addVariantFieldClass(variant_uid, highlightVariantFields, variantOrder) {
|
|
10
23
|
const elements = document.querySelectorAll(`[data-cslp]`);
|
|
11
24
|
elements.forEach((element) => {
|
|
12
25
|
const dataCslp = element.getAttribute("data-cslp");
|
|
@@ -18,6 +31,8 @@ function addVariantFieldClass(variant_uid, highlightVariantFields) {
|
|
|
18
31
|
element.classList.add("visual-builder__variant-field");
|
|
19
32
|
} else if (!dataCslp.startsWith("v2:")) {
|
|
20
33
|
element.classList.add("visual-builder__base-field");
|
|
34
|
+
} else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {
|
|
35
|
+
element.classList.add("visual-builder__variant-field", "visual-builder__lower-order-variant-field");
|
|
21
36
|
} else {
|
|
22
37
|
element.classList.add("visual-builder__disabled-variant-field");
|
|
23
38
|
}
|
|
@@ -35,14 +50,15 @@ function removeVariantFieldClass(onlyHighlighted = false) {
|
|
|
35
50
|
});
|
|
36
51
|
} else {
|
|
37
52
|
const variantAndBaseFieldElements = document.querySelectorAll(
|
|
38
|
-
".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field"
|
|
53
|
+
".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field, .visual-builder__lower-order-variant-field"
|
|
39
54
|
);
|
|
40
55
|
variantAndBaseFieldElements.forEach((element) => {
|
|
41
56
|
element.classList.remove(
|
|
42
57
|
"visual-builder__disabled-variant-field",
|
|
43
58
|
"visual-builder__variant-field",
|
|
44
59
|
visualBuilderStyles()["visual-builder__variant-field"],
|
|
45
|
-
"visual-builder__base-field"
|
|
60
|
+
"visual-builder__base-field",
|
|
61
|
+
"visual-builder__lower-order-variant-field"
|
|
46
62
|
);
|
|
47
63
|
});
|
|
48
64
|
}
|
|
@@ -83,7 +99,8 @@ function useVariantFieldsPostMessageEvent() {
|
|
|
83
99
|
removeVariantFieldClass();
|
|
84
100
|
addVariantFieldClass(
|
|
85
101
|
event.data.variant_data.variant,
|
|
86
|
-
event.data.variant_data.highlightVariantFields
|
|
102
|
+
event.data.variant_data.highlightVariantFields,
|
|
103
|
+
event.data.variant_data.variantOrder
|
|
87
104
|
);
|
|
88
105
|
}
|
|
89
106
|
);
|
|
@@ -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\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\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}\nexport function addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean\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 } 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\"\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 );\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 );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AAC/C,SAAS,sBAAsB;
|
|
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":["_a"]}
|
|
@@ -145,9 +145,11 @@ function sendFieldEvent(options) {
|
|
|
145
145
|
if (previousSelectedEditableDOM && (previousSelectedEditableDOM.hasAttribute("contenteditable") || pseudoEditableElement)) {
|
|
146
146
|
const actualEditedElement = pseudoEditableElement || previousSelectedEditableDOM;
|
|
147
147
|
let data = "innerText" in actualEditedElement ? actualEditedElement.innerText : actualEditedElement.textContent;
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
const cslpData = previousSelectedEditableDOM.getAttribute("data-cslp");
|
|
149
|
+
if (!cslpData) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const fieldMetadata = (0, import_cslpdata.extractDetailsFromCslp)(cslpData);
|
|
151
153
|
import_fieldSchemaMap.FieldSchemaMap.getFieldSchema(
|
|
152
154
|
fieldMetadata.content_type_uid,
|
|
153
155
|
fieldMetadata.fieldPath
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateOverlay.tsx"],"sourcesContent":["import { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { cleanIndividualFieldResidual } from \"../utils/handleIndividualFields\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\nimport { VisualBuilder } from \"..\";\nimport EventListenerHandlerParams from \"../listeners/types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { FieldDataType } from \"../utils/types/index.types\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport { getMultilinePlaintext } from \"../utils/getMultilinePlaintext\";\nimport { showAllHiddenHighlightedCommentIcons } from \"./generateHighlightedComment\";\n\n/**\n * Adds a focus overlay to the target element.\n * @param targetElement - The element to add the focus overlay to.\n * @param focusOverlayWrapper - The HTMLDivElement that contains the focus overlay.\n * @returns void\n */\nexport function addFocusOverlay(\n targetElement: Element,\n focusOverlayWrapper: HTMLDivElement,\n disabled?: boolean\n): void {\n const targetElementDimension = targetElement.getBoundingClientRect();\n if (\n targetElementDimension.width === 0 ||\n targetElementDimension.height === 0\n )\n return;\n focusOverlayWrapper.classList.add(\"visible\");\n\n const distanceFromTop = targetElementDimension.top + window.scrollY;\n const topOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n\n if (topOverlayDOM) {\n topOverlayDOM.style.top = \"0\";\n topOverlayDOM.style.left = \"0\";\n topOverlayDOM.style.width = \"100%\";\n topOverlayDOM.style.height = `calc(${distanceFromTop}px)`;\n }\n\n const bottomOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n if (bottomOverlayDOM) {\n bottomOverlayDOM.style.top = `${\n targetElementDimension.bottom + window.scrollY\n }px`;\n bottomOverlayDOM.style.height = `${\n window.document.body.scrollHeight -\n targetElementDimension.bottom -\n window.scrollY\n }px`;\n bottomOverlayDOM.style.left = \"0\";\n bottomOverlayDOM.style.width = \"100%\";\n }\n\n const leftOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n if (leftOverlayDOM) {\n leftOverlayDOM.style.left = \"0\";\n leftOverlayDOM.style.top = `${distanceFromTop}px`;\n leftOverlayDOM.style.height = `${targetElementDimension.height}px`;\n leftOverlayDOM.style.width = `${targetElementDimension.left}px`;\n }\n\n const rightOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n if (rightOverlayDOM) {\n rightOverlayDOM.style.left = `${targetElementDimension.right}px`;\n rightOverlayDOM.style.top = `${distanceFromTop}px`;\n rightOverlayDOM.style.height = `${targetElementDimension.height}px`;\n rightOverlayDOM.style.width = `${\n document.documentElement.clientWidth - targetElementDimension.right\n }px`;\n }\n\n const outlineDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n if (outlineDOM) {\n outlineDOM.style.top = `${\n targetElementDimension.top + window.scrollY\n }px`;\n outlineDOM.style.height = `${targetElementDimension.height}px`;\n outlineDOM.style.width = `${targetElementDimension.width}px`;\n outlineDOM.style.left = `${targetElementDimension.left}px`;\n outlineDOM.style.outlineColor = disabled ? \"#909090\" : \"#715cdd\";\n }\n}\n\n/**\n * Hides the focus overlay and performs necessary cleanup actions when the user clicks outside of the focused element.\n * @param event - The mouse event that triggered the function.\n * @param elements - An object containing references to the focus overlay wrapper, the previously selected editable DOM element, and the visual builder wrapper.\n */\nexport function hideFocusOverlay(elements: HideOverlayParams): void {\n const {\n visualBuilderContainer,\n visualBuilderOverlayWrapper,\n focusedToolbar,\n resizeObserver,\n noTrigger,\n } = elements;\n\n if (visualBuilderOverlayWrapper) {\n visualBuilderOverlayWrapper.classList.remove(\"visible\");\n\n // Cleanup overlay styles: Top, Right, Bottom, Left & Outline\n visualBuilderOverlayWrapper.childNodes.forEach((childNode) => {\n if (childNode instanceof Element) {\n childNode.removeAttribute(\"style\");\n }\n });\n\n if (\n !noTrigger &&\n // send update when focussed field has received input\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput\n ) {\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.UPDATE_FIELD,\n });\n } else if (noTrigger) {\n const { previousSelectedEditableDOM, focusFieldValue } =\n VisualBuilder.VisualBuilderGlobalState.value || {};\n if (\n previousSelectedEditableDOM &&\n \"innerText\" in previousSelectedEditableDOM &&\n focusFieldValue != null\n ) {\n previousSelectedEditableDOM.innerText = focusFieldValue;\n }\n }\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldValue = null;\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput =\n false;\n cleanIndividualFieldResidual({\n overlayWrapper: visualBuilderOverlayWrapper,\n visualBuilderContainer: visualBuilderContainer,\n focusedToolbar: focusedToolbar,\n resizeObserver: resizeObserver,\n });\n }\n}\ninterface ISendFieldEventParams {\n visualBuilderContainer: HTMLElement | null;\n eventType:\n | VisualBuilderPostMessageEvents.UPDATE_FIELD\n | VisualBuilderPostMessageEvents.SYNC_FIELD;\n}\nexport function sendFieldEvent(options: ISendFieldEventParams): void {\n const { visualBuilderContainer, eventType } = options;\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \"div.visual-builder__pseudo-editable-element\"\n );\n if (\n previousSelectedEditableDOM &&\n (previousSelectedEditableDOM.hasAttribute(\"contenteditable\") ||\n pseudoEditableElement)\n ) {\n const actualEditedElement =\n pseudoEditableElement ||\n (previousSelectedEditableDOM as HTMLElement);\n\n let data =\n \"innerText\" in actualEditedElement\n ? actualEditedElement.innerText\n : actualEditedElement.textContent;\n\n const fieldMetadata = extractDetailsFromCslp(\n previousSelectedEditableDOM.getAttribute(\"data-cslp\") as string\n );\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n )\n .then((fieldSchema) => {\n if (\n fieldSchema &&\n eventType === VisualBuilderPostMessageEvents.UPDATE_FIELD\n ) {\n const fieldType = getFieldType(fieldSchema);\n if (fieldType && fieldType === FieldDataType.MULTILINE) {\n data = getMultilinePlaintext(actualEditedElement);\n (actualEditedElement as HTMLElement).innerText =\n data as string;\n }\n }\n })\n .finally(() => {\n visualBuilderPostMessage?.send(eventType, {\n data,\n fieldMetadata,\n });\n });\n }\n}\ninterface HideOverlayParams\n extends Pick<\n EventListenerHandlerParams,\n \"visualBuilderContainer\" | \"focusedToolbar\" | \"resizeObserver\"\n > {\n visualBuilderOverlayWrapper: HTMLDivElement | null;\n noTrigger?: boolean;\n}\n\nexport function hideOverlay(params: HideOverlayParams): void {\n VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false;\n const focusElementObserver =\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver;\n if (focusElementObserver) {\n focusElementObserver.disconnect();\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver =\n null;\n }\n hideFocusOverlay({\n visualBuilderContainer: params.visualBuilderContainer,\n visualBuilderOverlayWrapper: params.visualBuilderOverlayWrapper,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n noTrigger: Boolean(params.noTrigger),\n });\n showAllHiddenHighlightedCommentIcons();\n if (\n !VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM\n )\n return;\n params.resizeObserver.unobserve(\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM\n );\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n null;\n}\n"],"mappings":"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","names":["visualBuilderPostMessage"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateOverlay.tsx"],"sourcesContent":["import { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { cleanIndividualFieldResidual } from \"../utils/handleIndividualFields\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\nimport { VisualBuilder } from \"..\";\nimport EventListenerHandlerParams from \"../listeners/types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { FieldDataType } from \"../utils/types/index.types\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport { getMultilinePlaintext } from \"../utils/getMultilinePlaintext\";\nimport { showAllHiddenHighlightedCommentIcons } from \"./generateHighlightedComment\";\n\n/**\n * Adds a focus overlay to the target element.\n * @param targetElement - The element to add the focus overlay to.\n * @param focusOverlayWrapper - The HTMLDivElement that contains the focus overlay.\n * @returns void\n */\nexport function addFocusOverlay(\n targetElement: Element,\n focusOverlayWrapper: HTMLDivElement,\n disabled?: boolean\n): void {\n const targetElementDimension = targetElement.getBoundingClientRect();\n if (\n targetElementDimension.width === 0 ||\n targetElementDimension.height === 0\n )\n return;\n focusOverlayWrapper.classList.add(\"visible\");\n\n const distanceFromTop = targetElementDimension.top + window.scrollY;\n const topOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n\n if (topOverlayDOM) {\n topOverlayDOM.style.top = \"0\";\n topOverlayDOM.style.left = \"0\";\n topOverlayDOM.style.width = \"100%\";\n topOverlayDOM.style.height = `calc(${distanceFromTop}px)`;\n }\n\n const bottomOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n if (bottomOverlayDOM) {\n bottomOverlayDOM.style.top = `${\n targetElementDimension.bottom + window.scrollY\n }px`;\n bottomOverlayDOM.style.height = `${\n window.document.body.scrollHeight -\n targetElementDimension.bottom -\n window.scrollY\n }px`;\n bottomOverlayDOM.style.left = \"0\";\n bottomOverlayDOM.style.width = \"100%\";\n }\n\n const leftOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n if (leftOverlayDOM) {\n leftOverlayDOM.style.left = \"0\";\n leftOverlayDOM.style.top = `${distanceFromTop}px`;\n leftOverlayDOM.style.height = `${targetElementDimension.height}px`;\n leftOverlayDOM.style.width = `${targetElementDimension.left}px`;\n }\n\n const rightOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n if (rightOverlayDOM) {\n rightOverlayDOM.style.left = `${targetElementDimension.right}px`;\n rightOverlayDOM.style.top = `${distanceFromTop}px`;\n rightOverlayDOM.style.height = `${targetElementDimension.height}px`;\n rightOverlayDOM.style.width = `${\n document.documentElement.clientWidth - targetElementDimension.right\n }px`;\n }\n\n const outlineDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n if (outlineDOM) {\n outlineDOM.style.top = `${\n targetElementDimension.top + window.scrollY\n }px`;\n outlineDOM.style.height = `${targetElementDimension.height}px`;\n outlineDOM.style.width = `${targetElementDimension.width}px`;\n outlineDOM.style.left = `${targetElementDimension.left}px`;\n outlineDOM.style.outlineColor = disabled ? \"#909090\" : \"#715cdd\";\n }\n}\n\n/**\n * Hides the focus overlay and performs necessary cleanup actions when the user clicks outside of the focused element.\n * @param event - The mouse event that triggered the function.\n * @param elements - An object containing references to the focus overlay wrapper, the previously selected editable DOM element, and the visual builder wrapper.\n */\nexport function hideFocusOverlay(elements: HideOverlayParams): void {\n const {\n visualBuilderContainer,\n visualBuilderOverlayWrapper,\n focusedToolbar,\n resizeObserver,\n noTrigger,\n } = elements;\n\n if (visualBuilderOverlayWrapper) {\n visualBuilderOverlayWrapper.classList.remove(\"visible\");\n\n // Cleanup overlay styles: Top, Right, Bottom, Left & Outline\n visualBuilderOverlayWrapper.childNodes.forEach((childNode) => {\n if (childNode instanceof Element) {\n childNode.removeAttribute(\"style\");\n }\n });\n\n if (\n !noTrigger &&\n // send update when focussed field has received input\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput\n ) {\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.UPDATE_FIELD,\n });\n } else if (noTrigger) {\n const { previousSelectedEditableDOM, focusFieldValue } =\n VisualBuilder.VisualBuilderGlobalState.value || {};\n if (\n previousSelectedEditableDOM &&\n \"innerText\" in previousSelectedEditableDOM &&\n focusFieldValue != null\n ) {\n previousSelectedEditableDOM.innerText = focusFieldValue;\n }\n }\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldValue = null;\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput =\n false;\n cleanIndividualFieldResidual({\n overlayWrapper: visualBuilderOverlayWrapper,\n visualBuilderContainer: visualBuilderContainer,\n focusedToolbar: focusedToolbar,\n resizeObserver: resizeObserver,\n });\n }\n}\ninterface ISendFieldEventParams {\n visualBuilderContainer: HTMLElement | null;\n eventType:\n | VisualBuilderPostMessageEvents.UPDATE_FIELD\n | VisualBuilderPostMessageEvents.SYNC_FIELD;\n}\nexport function sendFieldEvent(options: ISendFieldEventParams): void {\n const { visualBuilderContainer, eventType } = options;\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \"div.visual-builder__pseudo-editable-element\"\n );\n if (\n previousSelectedEditableDOM &&\n (previousSelectedEditableDOM.hasAttribute(\"contenteditable\") ||\n pseudoEditableElement)\n ) {\n const actualEditedElement =\n pseudoEditableElement ||\n (previousSelectedEditableDOM as HTMLElement);\n\n let data =\n \"innerText\" in actualEditedElement\n ? actualEditedElement.innerText\n : actualEditedElement.textContent;\n\n const cslpData = previousSelectedEditableDOM.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n )\n .then((fieldSchema) => {\n if (\n fieldSchema &&\n eventType === VisualBuilderPostMessageEvents.UPDATE_FIELD\n ) {\n const fieldType = getFieldType(fieldSchema);\n if (fieldType && fieldType === FieldDataType.MULTILINE) {\n data = getMultilinePlaintext(actualEditedElement);\n (actualEditedElement as HTMLElement).innerText =\n data as string;\n }\n }\n })\n .finally(() => {\n visualBuilderPostMessage?.send(eventType, {\n data,\n fieldMetadata,\n });\n });\n }\n}\ninterface HideOverlayParams\n extends Pick<\n EventListenerHandlerParams,\n \"visualBuilderContainer\" | \"focusedToolbar\" | \"resizeObserver\"\n > {\n visualBuilderOverlayWrapper: HTMLDivElement | null;\n noTrigger?: boolean;\n}\n\nexport function hideOverlay(params: HideOverlayParams): void {\n VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false;\n const focusElementObserver =\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver;\n if (focusElementObserver) {\n focusElementObserver.disconnect();\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver =\n null;\n }\n hideFocusOverlay({\n visualBuilderContainer: params.visualBuilderContainer,\n visualBuilderOverlayWrapper: params.visualBuilderOverlayWrapper,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n noTrigger: Boolean(params.noTrigger),\n });\n showAllHiddenHighlightedCommentIcons();\n if (\n !VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM\n )\n return;\n params.resizeObserver.unobserve(\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM\n );\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n null;\n}\n"],"mappings":"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","names":["visualBuilderPostMessage"]}
|
|
@@ -110,9 +110,11 @@ function sendFieldEvent(options) {
|
|
|
110
110
|
if (previousSelectedEditableDOM && (previousSelectedEditableDOM.hasAttribute("contenteditable") || pseudoEditableElement)) {
|
|
111
111
|
const actualEditedElement = pseudoEditableElement || previousSelectedEditableDOM;
|
|
112
112
|
let data = "innerText" in actualEditedElement ? actualEditedElement.innerText : actualEditedElement.textContent;
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
const cslpData = previousSelectedEditableDOM.getAttribute("data-cslp");
|
|
114
|
+
if (!cslpData) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const fieldMetadata = extractDetailsFromCslp(cslpData);
|
|
116
118
|
FieldSchemaMap.getFieldSchema(
|
|
117
119
|
fieldMetadata.content_type_uid,
|
|
118
120
|
fieldMetadata.fieldPath
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateOverlay.tsx"],"sourcesContent":["import { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { cleanIndividualFieldResidual } from \"../utils/handleIndividualFields\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\nimport { VisualBuilder } from \"..\";\nimport EventListenerHandlerParams from \"../listeners/types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { FieldDataType } from \"../utils/types/index.types\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport { getMultilinePlaintext } from \"../utils/getMultilinePlaintext\";\nimport { showAllHiddenHighlightedCommentIcons } from \"./generateHighlightedComment\";\n\n/**\n * Adds a focus overlay to the target element.\n * @param targetElement - The element to add the focus overlay to.\n * @param focusOverlayWrapper - The HTMLDivElement that contains the focus overlay.\n * @returns void\n */\nexport function addFocusOverlay(\n targetElement: Element,\n focusOverlayWrapper: HTMLDivElement,\n disabled?: boolean\n): void {\n const targetElementDimension = targetElement.getBoundingClientRect();\n if (\n targetElementDimension.width === 0 ||\n targetElementDimension.height === 0\n )\n return;\n focusOverlayWrapper.classList.add(\"visible\");\n\n const distanceFromTop = targetElementDimension.top + window.scrollY;\n const topOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n\n if (topOverlayDOM) {\n topOverlayDOM.style.top = \"0\";\n topOverlayDOM.style.left = \"0\";\n topOverlayDOM.style.width = \"100%\";\n topOverlayDOM.style.height = `calc(${distanceFromTop}px)`;\n }\n\n const bottomOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n if (bottomOverlayDOM) {\n bottomOverlayDOM.style.top = `${\n targetElementDimension.bottom + window.scrollY\n }px`;\n bottomOverlayDOM.style.height = `${\n window.document.body.scrollHeight -\n targetElementDimension.bottom -\n window.scrollY\n }px`;\n bottomOverlayDOM.style.left = \"0\";\n bottomOverlayDOM.style.width = \"100%\";\n }\n\n const leftOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n if (leftOverlayDOM) {\n leftOverlayDOM.style.left = \"0\";\n leftOverlayDOM.style.top = `${distanceFromTop}px`;\n leftOverlayDOM.style.height = `${targetElementDimension.height}px`;\n leftOverlayDOM.style.width = `${targetElementDimension.left}px`;\n }\n\n const rightOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n if (rightOverlayDOM) {\n rightOverlayDOM.style.left = `${targetElementDimension.right}px`;\n rightOverlayDOM.style.top = `${distanceFromTop}px`;\n rightOverlayDOM.style.height = `${targetElementDimension.height}px`;\n rightOverlayDOM.style.width = `${\n document.documentElement.clientWidth - targetElementDimension.right\n }px`;\n }\n\n const outlineDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n if (outlineDOM) {\n outlineDOM.style.top = `${\n targetElementDimension.top + window.scrollY\n }px`;\n outlineDOM.style.height = `${targetElementDimension.height}px`;\n outlineDOM.style.width = `${targetElementDimension.width}px`;\n outlineDOM.style.left = `${targetElementDimension.left}px`;\n outlineDOM.style.outlineColor = disabled ? \"#909090\" : \"#715cdd\";\n }\n}\n\n/**\n * Hides the focus overlay and performs necessary cleanup actions when the user clicks outside of the focused element.\n * @param event - The mouse event that triggered the function.\n * @param elements - An object containing references to the focus overlay wrapper, the previously selected editable DOM element, and the visual builder wrapper.\n */\nexport function hideFocusOverlay(elements: HideOverlayParams): void {\n const {\n visualBuilderContainer,\n visualBuilderOverlayWrapper,\n focusedToolbar,\n resizeObserver,\n noTrigger,\n } = elements;\n\n if (visualBuilderOverlayWrapper) {\n visualBuilderOverlayWrapper.classList.remove(\"visible\");\n\n // Cleanup overlay styles: Top, Right, Bottom, Left & Outline\n visualBuilderOverlayWrapper.childNodes.forEach((childNode) => {\n if (childNode instanceof Element) {\n childNode.removeAttribute(\"style\");\n }\n });\n\n if (\n !noTrigger &&\n // send update when focussed field has received input\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput\n ) {\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.UPDATE_FIELD,\n });\n } else if (noTrigger) {\n const { previousSelectedEditableDOM, focusFieldValue } =\n VisualBuilder.VisualBuilderGlobalState.value || {};\n if (\n previousSelectedEditableDOM &&\n \"innerText\" in previousSelectedEditableDOM &&\n focusFieldValue != null\n ) {\n previousSelectedEditableDOM.innerText = focusFieldValue;\n }\n }\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldValue = null;\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput =\n false;\n cleanIndividualFieldResidual({\n overlayWrapper: visualBuilderOverlayWrapper,\n visualBuilderContainer: visualBuilderContainer,\n focusedToolbar: focusedToolbar,\n resizeObserver: resizeObserver,\n });\n }\n}\ninterface ISendFieldEventParams {\n visualBuilderContainer: HTMLElement | null;\n eventType:\n | VisualBuilderPostMessageEvents.UPDATE_FIELD\n | VisualBuilderPostMessageEvents.SYNC_FIELD;\n}\nexport function sendFieldEvent(options: ISendFieldEventParams): void {\n const { visualBuilderContainer, eventType } = options;\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \"div.visual-builder__pseudo-editable-element\"\n );\n if (\n previousSelectedEditableDOM &&\n (previousSelectedEditableDOM.hasAttribute(\"contenteditable\") ||\n pseudoEditableElement)\n ) {\n const actualEditedElement =\n pseudoEditableElement ||\n (previousSelectedEditableDOM as HTMLElement);\n\n let data =\n \"innerText\" in actualEditedElement\n ? actualEditedElement.innerText\n : actualEditedElement.textContent;\n\n const fieldMetadata = extractDetailsFromCslp(\n previousSelectedEditableDOM.getAttribute(\"data-cslp\") as string\n );\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n )\n .then((fieldSchema) => {\n if (\n fieldSchema &&\n eventType === VisualBuilderPostMessageEvents.UPDATE_FIELD\n ) {\n const fieldType = getFieldType(fieldSchema);\n if (fieldType && fieldType === FieldDataType.MULTILINE) {\n data = getMultilinePlaintext(actualEditedElement);\n (actualEditedElement as HTMLElement).innerText =\n data as string;\n }\n }\n })\n .finally(() => {\n visualBuilderPostMessage?.send(eventType, {\n data,\n fieldMetadata,\n });\n });\n }\n}\ninterface HideOverlayParams\n extends Pick<\n EventListenerHandlerParams,\n \"visualBuilderContainer\" | \"focusedToolbar\" | \"resizeObserver\"\n > {\n visualBuilderOverlayWrapper: HTMLDivElement | null;\n noTrigger?: boolean;\n}\n\nexport function hideOverlay(params: HideOverlayParams): void {\n VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false;\n const focusElementObserver =\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver;\n if (focusElementObserver) {\n focusElementObserver.disconnect();\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver =\n null;\n }\n hideFocusOverlay({\n visualBuilderContainer: params.visualBuilderContainer,\n visualBuilderOverlayWrapper: params.visualBuilderOverlayWrapper,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n noTrigger: Boolean(params.noTrigger),\n });\n showAllHiddenHighlightedCommentIcons();\n if (\n !VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM\n )\n return;\n params.resizeObserver.unobserve(\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM\n );\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n null;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateOverlay.tsx"],"sourcesContent":["import { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { cleanIndividualFieldResidual } from \"../utils/handleIndividualFields\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\nimport { VisualBuilder } from \"..\";\nimport EventListenerHandlerParams from \"../listeners/types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { FieldDataType } from \"../utils/types/index.types\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport { getMultilinePlaintext } from \"../utils/getMultilinePlaintext\";\nimport { showAllHiddenHighlightedCommentIcons } from \"./generateHighlightedComment\";\n\n/**\n * Adds a focus overlay to the target element.\n * @param targetElement - The element to add the focus overlay to.\n * @param focusOverlayWrapper - The HTMLDivElement that contains the focus overlay.\n * @returns void\n */\nexport function addFocusOverlay(\n targetElement: Element,\n focusOverlayWrapper: HTMLDivElement,\n disabled?: boolean\n): void {\n const targetElementDimension = targetElement.getBoundingClientRect();\n if (\n targetElementDimension.width === 0 ||\n targetElementDimension.height === 0\n )\n return;\n focusOverlayWrapper.classList.add(\"visible\");\n\n const distanceFromTop = targetElementDimension.top + window.scrollY;\n const topOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n\n if (topOverlayDOM) {\n topOverlayDOM.style.top = \"0\";\n topOverlayDOM.style.left = \"0\";\n topOverlayDOM.style.width = \"100%\";\n topOverlayDOM.style.height = `calc(${distanceFromTop}px)`;\n }\n\n const bottomOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n if (bottomOverlayDOM) {\n bottomOverlayDOM.style.top = `${\n targetElementDimension.bottom + window.scrollY\n }px`;\n bottomOverlayDOM.style.height = `${\n window.document.body.scrollHeight -\n targetElementDimension.bottom -\n window.scrollY\n }px`;\n bottomOverlayDOM.style.left = \"0\";\n bottomOverlayDOM.style.width = \"100%\";\n }\n\n const leftOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n if (leftOverlayDOM) {\n leftOverlayDOM.style.left = \"0\";\n leftOverlayDOM.style.top = `${distanceFromTop}px`;\n leftOverlayDOM.style.height = `${targetElementDimension.height}px`;\n leftOverlayDOM.style.width = `${targetElementDimension.left}px`;\n }\n\n const rightOverlayDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n if (rightOverlayDOM) {\n rightOverlayDOM.style.left = `${targetElementDimension.right}px`;\n rightOverlayDOM.style.top = `${distanceFromTop}px`;\n rightOverlayDOM.style.height = `${targetElementDimension.height}px`;\n rightOverlayDOM.style.width = `${\n document.documentElement.clientWidth - targetElementDimension.right\n }px`;\n }\n\n const outlineDOM = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n if (outlineDOM) {\n outlineDOM.style.top = `${\n targetElementDimension.top + window.scrollY\n }px`;\n outlineDOM.style.height = `${targetElementDimension.height}px`;\n outlineDOM.style.width = `${targetElementDimension.width}px`;\n outlineDOM.style.left = `${targetElementDimension.left}px`;\n outlineDOM.style.outlineColor = disabled ? \"#909090\" : \"#715cdd\";\n }\n}\n\n/**\n * Hides the focus overlay and performs necessary cleanup actions when the user clicks outside of the focused element.\n * @param event - The mouse event that triggered the function.\n * @param elements - An object containing references to the focus overlay wrapper, the previously selected editable DOM element, and the visual builder wrapper.\n */\nexport function hideFocusOverlay(elements: HideOverlayParams): void {\n const {\n visualBuilderContainer,\n visualBuilderOverlayWrapper,\n focusedToolbar,\n resizeObserver,\n noTrigger,\n } = elements;\n\n if (visualBuilderOverlayWrapper) {\n visualBuilderOverlayWrapper.classList.remove(\"visible\");\n\n // Cleanup overlay styles: Top, Right, Bottom, Left & Outline\n visualBuilderOverlayWrapper.childNodes.forEach((childNode) => {\n if (childNode instanceof Element) {\n childNode.removeAttribute(\"style\");\n }\n });\n\n if (\n !noTrigger &&\n // send update when focussed field has received input\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput\n ) {\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.UPDATE_FIELD,\n });\n } else if (noTrigger) {\n const { previousSelectedEditableDOM, focusFieldValue } =\n VisualBuilder.VisualBuilderGlobalState.value || {};\n if (\n previousSelectedEditableDOM &&\n \"innerText\" in previousSelectedEditableDOM &&\n focusFieldValue != null\n ) {\n previousSelectedEditableDOM.innerText = focusFieldValue;\n }\n }\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldValue = null;\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput =\n false;\n cleanIndividualFieldResidual({\n overlayWrapper: visualBuilderOverlayWrapper,\n visualBuilderContainer: visualBuilderContainer,\n focusedToolbar: focusedToolbar,\n resizeObserver: resizeObserver,\n });\n }\n}\ninterface ISendFieldEventParams {\n visualBuilderContainer: HTMLElement | null;\n eventType:\n | VisualBuilderPostMessageEvents.UPDATE_FIELD\n | VisualBuilderPostMessageEvents.SYNC_FIELD;\n}\nexport function sendFieldEvent(options: ISendFieldEventParams): void {\n const { visualBuilderContainer, eventType } = options;\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \"div.visual-builder__pseudo-editable-element\"\n );\n if (\n previousSelectedEditableDOM &&\n (previousSelectedEditableDOM.hasAttribute(\"contenteditable\") ||\n pseudoEditableElement)\n ) {\n const actualEditedElement =\n pseudoEditableElement ||\n (previousSelectedEditableDOM as HTMLElement);\n\n let data =\n \"innerText\" in actualEditedElement\n ? actualEditedElement.innerText\n : actualEditedElement.textContent;\n\n const cslpData = previousSelectedEditableDOM.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n )\n .then((fieldSchema) => {\n if (\n fieldSchema &&\n eventType === VisualBuilderPostMessageEvents.UPDATE_FIELD\n ) {\n const fieldType = getFieldType(fieldSchema);\n if (fieldType && fieldType === FieldDataType.MULTILINE) {\n data = getMultilinePlaintext(actualEditedElement);\n (actualEditedElement as HTMLElement).innerText =\n data as string;\n }\n }\n })\n .finally(() => {\n visualBuilderPostMessage?.send(eventType, {\n data,\n fieldMetadata,\n });\n });\n }\n}\ninterface HideOverlayParams\n extends Pick<\n EventListenerHandlerParams,\n \"visualBuilderContainer\" | \"focusedToolbar\" | \"resizeObserver\"\n > {\n visualBuilderOverlayWrapper: HTMLDivElement | null;\n noTrigger?: boolean;\n}\n\nexport function hideOverlay(params: HideOverlayParams): void {\n VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false;\n const focusElementObserver =\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver;\n if (focusElementObserver) {\n focusElementObserver.disconnect();\n VisualBuilder.VisualBuilderGlobalState.value.focusElementObserver =\n null;\n }\n hideFocusOverlay({\n visualBuilderContainer: params.visualBuilderContainer,\n visualBuilderOverlayWrapper: params.visualBuilderOverlayWrapper,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n noTrigger: Boolean(params.noTrigger),\n });\n showAllHiddenHighlightedCommentIcons();\n if (\n !VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM\n )\n return;\n params.resizeObserver.unobserve(\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM\n );\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -62,11 +62,12 @@ async function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverl
|
|
|
62
62
|
".visual-builder__focused-toolbar__multiple-field-toolbar"
|
|
63
63
|
) && !isHover)
|
|
64
64
|
return;
|
|
65
|
-
const { acl: entryPermissions, workflowStage: entryWorkflowStageDetails } = await (0, import_fetchEntryPermissionsAndStageDetails.fetchEntryPermissionsAndStageDetails)({
|
|
65
|
+
const { acl: entryPermissions, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } = await (0, import_fetchEntryPermissionsAndStageDetails.fetchEntryPermissionsAndStageDetails)({
|
|
66
66
|
entryUid: eventDetails.fieldMetadata.entry_uid,
|
|
67
67
|
contentTypeUid: eventDetails.fieldMetadata.content_type_uid,
|
|
68
68
|
locale: eventDetails.fieldMetadata.locale,
|
|
69
|
-
variantUid: eventDetails.fieldMetadata.variant
|
|
69
|
+
variantUid: eventDetails.fieldMetadata.variant,
|
|
70
|
+
fieldPathWithIndex: eventDetails.fieldMetadata.fieldPathWithIndex
|
|
70
71
|
});
|
|
71
72
|
const wrapper = document.createDocumentFragment();
|
|
72
73
|
(0, import_preact.render)(
|
|
@@ -77,7 +78,8 @@ async function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverl
|
|
|
77
78
|
hideOverlay,
|
|
78
79
|
isVariant,
|
|
79
80
|
entryPermissions,
|
|
80
|
-
entryWorkflowStageDetails
|
|
81
|
+
entryWorkflowStageDetails,
|
|
82
|
+
resolvedVariantPermissions
|
|
81
83
|
}
|
|
82
84
|
),
|
|
83
85
|
wrapper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateToolbar.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n DATA_CSLP_ATTR_SELECTOR,\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"../utils/constants\";\nimport FieldToolbarComponent from \"../components/FieldToolbar\";\nimport { render } from \"preact\";\nimport FieldLabelWrapperComponent from \"../components/fieldLabelWrapper\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\n\nexport function appendFocusedToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void,\n isVariant: boolean = false,\n options?: {\n isHover?: boolean;\n }\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement, options);\n if(options?.isHover) {\n return;\n }\n appendFieldToolbar(\n eventDetails,\n focusedToolbarElement,\n hideOverlay,\n isVariant\n );\n}\n\nexport async function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void,\n isVariant: boolean = false,\n options?: {\n isHover?: boolean;\n }\n): Promise<void> {\n const { isHover } = options || {};\n if (\n focusedToolbarElement.querySelector(\n \".visual-builder__focused-toolbar__multiple-field-toolbar\"\n ) && !isHover\n )\n return;\n const { acl: entryPermissions, workflowStage: entryWorkflowStageDetails } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: eventDetails.fieldMetadata.entry_uid,\n contentTypeUid: eventDetails.fieldMetadata.content_type_uid,\n locale: eventDetails.fieldMetadata.locale,\n variantUid: eventDetails.fieldMetadata.variant,\n });\n const wrapper = document.createDocumentFragment();\n render(\n <FieldToolbarComponent\n eventDetails={eventDetails}\n hideOverlay={hideOverlay}\n isVariant={isVariant}\n entryPermissions={entryPermissions}\n entryWorkflowStageDetails={entryWorkflowStageDetails}\n />,\n wrapper\n );\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n options?: {\n isHover?: boolean;\n }\n): void {\n const { isHover } = options || {};\n const fieldLabelWrapper = document.querySelector(\n \".visual-builder__focused-toolbar__field-label-wrapper\"\n ) as HTMLDivElement | null;\n const { editableElement: targetElement, fieldMetadata } = eventDetails;\n\n if (fieldLabelWrapper) {\n if(isHover) {\n const fieldCslp = fieldLabelWrapper.getAttribute(\"data-hovered-cslp\");\n if(fieldCslp === fieldMetadata.cslpValue) {\n return;\n } else {\n removeFieldToolbar(focusedToolbarElement);\n }\n } else {\n return;\n }\n }\n \n const targetElementDimension = targetElement.getBoundingClientRect();\n\n const distanceFromTop =\n targetElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n targetElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop + targetElementDimension.height + TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n targetElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - targetElementDimension.left;\n\n if (targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER) {\n // Overflow / Cutoff on right edge\n focusedToolbarElement.style.justifyContent = \"flex-end\";\n focusedToolbarElement.style.left = `${\n targetElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else {\n focusedToolbarElement.style.justifyContent = \"flex-start\"; // default\n focusedToolbarElement.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n focusedToolbarElement.style.top = `${adjustedDistanceFromTop}px`;\n\n const parentPaths = collectParentCSLPPaths(targetElement, 2);\n\n const wrapper = document.createDocumentFragment();\n render(\n <FieldLabelWrapperComponent\n fieldMetadata={fieldMetadata}\n eventDetails={eventDetails}\n parentPaths={parentPaths}\n getParentEditableElement={(cslp: string) => {\n const parentElement = targetElement.closest(\n `[${DATA_CSLP_ATTR_SELECTOR}=\"${cslp}\"]`\n ) as HTMLElement | null;\n return parentElement;\n }}\n />,\n wrapper\n );\n\n focusedToolbarElement.appendChild(wrapper);\n}\n\nfunction collectParentCSLPPaths(\n targetElement: Element,\n count: number\n): Array<string> {\n const cslpPaths: Array<string> = [];\n let currentElement = targetElement.parentElement;\n\n while (count > 0 || currentElement === window.document.body) {\n if (!currentElement) {\n return cslpPaths;\n }\n\n if (currentElement.hasAttribute(DATA_CSLP_ATTR_SELECTOR)) {\n cslpPaths.push(\n currentElement.getAttribute(DATA_CSLP_ATTR_SELECTOR) as string\n );\n count--;\n }\n currentElement = currentElement.parentElement;\n }\n\n return cslpPaths;\n}\n\nexport function removeFieldToolbar(toolbar: Element) {\n toolbar.innerHTML = \"\";\n const toolbarEvents = [\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n VisualBuilderPostMessageEvents.UPDATE_DISCUSSION_ID,\n VisualBuilderPostMessageEvents.FIELD_LOCATION_DATA\n ];\n toolbarEvents.forEach((event) => {\n //@ts-expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.\n if (visualBuilderPostMessage?.requestMessageHandlers?.has(event)) {\n //@ts-expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.\n visualBuilderPostMessage?.unregisterEvent?.(event);\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAMO;AACP,0BAAkC;AAClC,oBAAuB;AACvB,+BAAuC;AACvC,yBAA+C;AAC/C,sCAAqC;AACrC,kDAAqD;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateToolbar.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n DATA_CSLP_ATTR_SELECTOR,\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"../utils/constants\";\nimport FieldToolbarComponent from \"../components/FieldToolbar\";\nimport { render } from \"preact\";\nimport FieldLabelWrapperComponent from \"../components/fieldLabelWrapper\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\n\nexport function appendFocusedToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void,\n isVariant: boolean = false,\n options?: {\n isHover?: boolean;\n }\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement, options);\n if(options?.isHover) {\n return;\n }\n appendFieldToolbar(\n eventDetails,\n focusedToolbarElement,\n hideOverlay,\n isVariant\n );\n}\n\nexport async function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void,\n isVariant: boolean = false,\n options?: {\n isHover?: boolean;\n }\n): Promise<void> {\n const { isHover } = options || {};\n if (\n focusedToolbarElement.querySelector(\n \".visual-builder__focused-toolbar__multiple-field-toolbar\"\n ) && !isHover\n )\n return;\n const { acl: entryPermissions, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: eventDetails.fieldMetadata.entry_uid,\n contentTypeUid: eventDetails.fieldMetadata.content_type_uid,\n locale: eventDetails.fieldMetadata.locale,\n variantUid: eventDetails.fieldMetadata.variant,\n fieldPathWithIndex: eventDetails.fieldMetadata.fieldPathWithIndex,\n });\n const wrapper = document.createDocumentFragment();\n render(\n <FieldToolbarComponent\n eventDetails={eventDetails}\n hideOverlay={hideOverlay}\n isVariant={isVariant}\n entryPermissions={entryPermissions}\n entryWorkflowStageDetails={entryWorkflowStageDetails}\n resolvedVariantPermissions={resolvedVariantPermissions}\n />,\n wrapper\n );\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n options?: {\n isHover?: boolean;\n }\n): void {\n const { isHover } = options || {};\n const fieldLabelWrapper = document.querySelector(\n \".visual-builder__focused-toolbar__field-label-wrapper\"\n ) as HTMLDivElement | null;\n const { editableElement: targetElement, fieldMetadata } = eventDetails;\n\n if (fieldLabelWrapper) {\n if(isHover) {\n const fieldCslp = fieldLabelWrapper.getAttribute(\"data-hovered-cslp\");\n if(fieldCslp === fieldMetadata.cslpValue) {\n return;\n } else {\n removeFieldToolbar(focusedToolbarElement);\n }\n } else {\n return;\n }\n }\n \n const targetElementDimension = targetElement.getBoundingClientRect();\n\n const distanceFromTop =\n targetElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n targetElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop + targetElementDimension.height + TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n targetElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - targetElementDimension.left;\n\n if (targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER) {\n // Overflow / Cutoff on right edge\n focusedToolbarElement.style.justifyContent = \"flex-end\";\n focusedToolbarElement.style.left = `${\n targetElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else {\n focusedToolbarElement.style.justifyContent = \"flex-start\"; // default\n focusedToolbarElement.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n focusedToolbarElement.style.top = `${adjustedDistanceFromTop}px`;\n\n const parentPaths = collectParentCSLPPaths(targetElement, 2);\n\n const wrapper = document.createDocumentFragment();\n render(\n <FieldLabelWrapperComponent\n fieldMetadata={fieldMetadata}\n eventDetails={eventDetails}\n parentPaths={parentPaths}\n getParentEditableElement={(cslp: string) => {\n const parentElement = targetElement.closest(\n `[${DATA_CSLP_ATTR_SELECTOR}=\"${cslp}\"]`\n ) as HTMLElement | null;\n return parentElement;\n }}\n />,\n wrapper\n );\n\n focusedToolbarElement.appendChild(wrapper);\n}\n\nfunction collectParentCSLPPaths(\n targetElement: Element,\n count: number\n): Array<string> {\n const cslpPaths: Array<string> = [];\n let currentElement = targetElement.parentElement;\n\n while (count > 0 || currentElement === window.document.body) {\n if (!currentElement) {\n return cslpPaths;\n }\n\n if (currentElement.hasAttribute(DATA_CSLP_ATTR_SELECTOR)) {\n cslpPaths.push(\n currentElement.getAttribute(DATA_CSLP_ATTR_SELECTOR) as string\n );\n count--;\n }\n currentElement = currentElement.parentElement;\n }\n\n return cslpPaths;\n}\n\nexport function removeFieldToolbar(toolbar: Element) {\n toolbar.innerHTML = \"\";\n const toolbarEvents = [\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n VisualBuilderPostMessageEvents.UPDATE_DISCUSSION_ID,\n VisualBuilderPostMessageEvents.FIELD_LOCATION_DATA\n ];\n toolbarEvents.forEach((event) => {\n //@ts-expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.\n if (visualBuilderPostMessage?.requestMessageHandlers?.has(event)) {\n //@ts-expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.\n visualBuilderPostMessage?.unregisterEvent?.(event);\n }\n });\n}\n"],"mappings":"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","names":["FieldToolbarComponent","FieldLabelWrapperComponent","visualBuilderPostMessage"]}
|
|
@@ -33,11 +33,12 @@ async function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverl
|
|
|
33
33
|
".visual-builder__focused-toolbar__multiple-field-toolbar"
|
|
34
34
|
) && !isHover)
|
|
35
35
|
return;
|
|
36
|
-
const { acl: entryPermissions, workflowStage: entryWorkflowStageDetails } = await fetchEntryPermissionsAndStageDetails({
|
|
36
|
+
const { acl: entryPermissions, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } = await fetchEntryPermissionsAndStageDetails({
|
|
37
37
|
entryUid: eventDetails.fieldMetadata.entry_uid,
|
|
38
38
|
contentTypeUid: eventDetails.fieldMetadata.content_type_uid,
|
|
39
39
|
locale: eventDetails.fieldMetadata.locale,
|
|
40
|
-
variantUid: eventDetails.fieldMetadata.variant
|
|
40
|
+
variantUid: eventDetails.fieldMetadata.variant,
|
|
41
|
+
fieldPathWithIndex: eventDetails.fieldMetadata.fieldPathWithIndex
|
|
41
42
|
});
|
|
42
43
|
const wrapper = document.createDocumentFragment();
|
|
43
44
|
render(
|
|
@@ -48,7 +49,8 @@ async function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverl
|
|
|
48
49
|
hideOverlay,
|
|
49
50
|
isVariant,
|
|
50
51
|
entryPermissions,
|
|
51
|
-
entryWorkflowStageDetails
|
|
52
|
+
entryWorkflowStageDetails,
|
|
53
|
+
resolvedVariantPermissions
|
|
52
54
|
}
|
|
53
55
|
),
|
|
54
56
|
wrapper
|