@contentstack/live-preview-utils 3.2.4 → 3.2.5
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/index.d.cts +1 -1
- package/dist/legacy/index.d.ts +1 -1
- package/dist/legacy/light-sdk.cjs +1 -1
- package/dist/legacy/light-sdk.js +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/legacy/livePreview/live-preview.cjs +6 -2
- package/dist/legacy/livePreview/live-preview.cjs.map +1 -1
- package/dist/legacy/livePreview/live-preview.js +6 -2
- package/dist/legacy/livePreview/live-preview.js.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/legacy/utils/index.cjs +10 -0
- package/dist/legacy/utils/index.cjs.map +1 -1
- package/dist/legacy/utils/index.d.cts +2 -1
- package/dist/legacy/utils/index.d.ts +2 -1
- package/dist/legacy/utils/index.js +9 -0
- package/dist/legacy/utils/index.js.map +1 -1
- package/dist/legacy/visualBuilder/components/VisualBuilder.cjs +4 -0
- package/dist/legacy/visualBuilder/components/VisualBuilder.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/VisualBuilder.d.cts +1 -1
- package/dist/legacy/visualBuilder/components/VisualBuilder.d.ts +1 -1
- package/dist/legacy/visualBuilder/components/VisualBuilder.js +4 -0
- package/dist/legacy/visualBuilder/components/VisualBuilder.js.map +1 -1
- package/dist/legacy/visualBuilder/components/index.cjs +3 -1
- package/dist/legacy/visualBuilder/components/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/index.js +3 -1
- package/dist/legacy/visualBuilder/components/index.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateStartEditingButton.cjs +10 -6
- package/dist/legacy/visualBuilder/generators/generateStartEditingButton.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateStartEditingButton.d.cts +2 -3
- package/dist/legacy/visualBuilder/generators/generateStartEditingButton.d.ts +2 -3
- package/dist/legacy/visualBuilder/generators/generateStartEditingButton.js +10 -6
- package/dist/legacy/visualBuilder/generators/generateStartEditingButton.js.map +1 -1
- package/dist/legacy/visualBuilder/index.cjs +1 -1
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.js +1 -1
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs +58 -0
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.cts +18 -0
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.ts +18 -0
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.js +25 -0
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +4 -8
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js +4 -8
- package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.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/livePreview/live-preview.cjs +6 -2
- package/dist/modern/livePreview/live-preview.cjs.map +1 -1
- package/dist/modern/livePreview/live-preview.js +6 -2
- package/dist/modern/livePreview/live-preview.js.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/modern/utils/index.cjs +10 -0
- package/dist/modern/utils/index.cjs.map +1 -1
- package/dist/modern/utils/index.d.cts +2 -1
- package/dist/modern/utils/index.d.ts +2 -1
- package/dist/modern/utils/index.js +9 -0
- package/dist/modern/utils/index.js.map +1 -1
- package/dist/modern/visualBuilder/components/VisualBuilder.cjs +4 -0
- package/dist/modern/visualBuilder/components/VisualBuilder.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/VisualBuilder.d.cts +1 -1
- package/dist/modern/visualBuilder/components/VisualBuilder.d.ts +1 -1
- package/dist/modern/visualBuilder/components/VisualBuilder.js +4 -0
- package/dist/modern/visualBuilder/components/VisualBuilder.js.map +1 -1
- package/dist/modern/visualBuilder/components/index.cjs +3 -1
- package/dist/modern/visualBuilder/components/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/index.js +3 -1
- package/dist/modern/visualBuilder/components/index.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateStartEditingButton.cjs +10 -6
- package/dist/modern/visualBuilder/generators/generateStartEditingButton.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateStartEditingButton.d.cts +2 -3
- package/dist/modern/visualBuilder/generators/generateStartEditingButton.d.ts +2 -3
- package/dist/modern/visualBuilder/generators/generateStartEditingButton.js +10 -6
- package/dist/modern/visualBuilder/generators/generateStartEditingButton.js.map +1 -1
- package/dist/modern/visualBuilder/index.cjs +1 -1
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.js +1 -1
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs +58 -0
- package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.cts +18 -0
- package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.ts +18 -0
- package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.js +25 -0
- package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.js.map +1 -0
- package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +4 -8
- package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js +4 -8
- package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -1
- package/package.json +1 -1
|
@@ -23,6 +23,7 @@ __export(utils_exports, {
|
|
|
23
23
|
addLivePreviewQueryTags: () => import_addLivePreviewQueryTags.addLivePreviewQueryTags,
|
|
24
24
|
addParamsToUrl: () => addParamsToUrl,
|
|
25
25
|
hasWindow: () => hasWindow,
|
|
26
|
+
isOpenInBuilder: () => isOpenInBuilder,
|
|
26
27
|
isOpeningInTimeline: () => isOpeningInTimeline
|
|
27
28
|
});
|
|
28
29
|
module.exports = __toCommonJS(utils_exports);
|
|
@@ -49,11 +50,20 @@ function isOpeningInTimeline() {
|
|
|
49
50
|
}
|
|
50
51
|
return false;
|
|
51
52
|
}
|
|
53
|
+
function isOpenInBuilder() {
|
|
54
|
+
if (hasWindow()) {
|
|
55
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
56
|
+
const builder = urlParams.get("builder");
|
|
57
|
+
return !!builder;
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
52
61
|
// Annotate the CommonJS export names for ESM import in node:
|
|
53
62
|
0 && (module.exports = {
|
|
54
63
|
addLivePreviewQueryTags,
|
|
55
64
|
addParamsToUrl,
|
|
56
65
|
hasWindow,
|
|
66
|
+
isOpenInBuilder,
|
|
57
67
|
isOpeningInTimeline
|
|
58
68
|
});
|
|
59
69
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qCAAwC;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,aAAS,wDAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}\n\nexport function isOpenInBuilder(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const builder = urlParams.get(\"builder\");\n return !!builder;\n }\n return false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qCAAwC;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,aAAS,wDAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;AAEO,SAAS,kBAA2B;AACvC,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,UAAU,UAAU,IAAI,SAAS;AACvC,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
|
|
@@ -4,5 +4,6 @@ declare function hasWindow(): boolean;
|
|
|
4
4
|
|
|
5
5
|
declare function addParamsToUrl(): void;
|
|
6
6
|
declare function isOpeningInTimeline(): boolean;
|
|
7
|
+
declare function isOpenInBuilder(): boolean;
|
|
7
8
|
|
|
8
|
-
export { addParamsToUrl, hasWindow, isOpeningInTimeline };
|
|
9
|
+
export { addParamsToUrl, hasWindow, isOpenInBuilder, isOpeningInTimeline };
|
|
@@ -4,5 +4,6 @@ declare function hasWindow(): boolean;
|
|
|
4
4
|
|
|
5
5
|
declare function addParamsToUrl(): void;
|
|
6
6
|
declare function isOpeningInTimeline(): boolean;
|
|
7
|
+
declare function isOpenInBuilder(): boolean;
|
|
7
8
|
|
|
8
|
-
export { addParamsToUrl, hasWindow, isOpeningInTimeline };
|
|
9
|
+
export { addParamsToUrl, hasWindow, isOpenInBuilder, isOpeningInTimeline };
|
|
@@ -24,10 +24,19 @@ function isOpeningInTimeline() {
|
|
|
24
24
|
}
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
|
+
function isOpenInBuilder() {
|
|
28
|
+
if (hasWindow()) {
|
|
29
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
30
|
+
const builder = urlParams.get("builder");
|
|
31
|
+
return !!builder;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
27
35
|
export {
|
|
28
36
|
addLivePreviewQueryTags,
|
|
29
37
|
addParamsToUrl,
|
|
30
38
|
hasWindow,
|
|
39
|
+
isOpenInBuilder,
|
|
31
40
|
isOpeningInTimeline
|
|
32
41
|
};
|
|
33
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}"],"mappings":";;;AACA,SAAS,+BAA+B;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,SAAS,wBAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}\n\nexport function isOpenInBuilder(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const builder = urlParams.get(\"builder\");\n return !!builder;\n }\n return false;\n}\n"],"mappings":";;;AACA,SAAS,+BAA+B;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,SAAS,wBAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;AAEO,SAAS,kBAA2B;AACvC,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,UAAU,UAAU,IAAI,SAAS;AACvC,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
|
|
@@ -36,8 +36,12 @@ module.exports = __toCommonJS(VisualBuilder_exports);
|
|
|
36
36
|
var import_classnames = __toESM(require("classnames"), 1);
|
|
37
37
|
var import_generateOverlay = require("../generators/generateOverlay.cjs");
|
|
38
38
|
var import_visualBuilder = require("../visualBuilder.style.cjs");
|
|
39
|
+
var import_utils = require("../../utils/index.cjs");
|
|
39
40
|
var import_jsx_runtime = require("preact/jsx-runtime");
|
|
40
41
|
function VisualBuilderComponent(props) {
|
|
42
|
+
if (!(0, import_utils.isOpenInBuilder)()) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
41
45
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
42
46
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
43
47
|
"style",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/VisualBuilder.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport {\n visualBuilderStyles,\n VisualBuilderGlobalStyles,\n} from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\ninterface VisualBuilderProps {\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}\n\nfunction VisualBuilderComponent(props: VisualBuilderProps): JSX.Element {\n return (\n <>\n {/* For some reason, goober's glob and createGlobalStyle were not working in this case. */}\n {/* glob also does not work when called in visualBuilder's constructor */}\n <style\n dangerouslySetInnerHTML={{\n __html: VisualBuilderGlobalStyles,\n }}\n />\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__cursor\"],\n \"visual-builder__cursor\"\n )}\n data-testid=\"visual-builder__cursor\"\n ></div>\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__overlay__wrapper\"],\n \"visual-builder__overlay__wrapper\"\n )}\n data-testid=\"visual-builder__overlay__wrapper\"\n onClick={(event) => {\n const targetElement = event.currentTarget as HTMLDivElement;\n\n const focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n ) as HTMLDivElement;\n\n hideOverlay({\n visualBuilderContainer: props.visualBuilderContainer,\n visualBuilderOverlayWrapper: targetElement,\n focusedToolbar: focusedToolbar,\n resizeObserver: props.resizeObserver,\n });\n }}\n >\n <div\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--top\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n data-testid=\"visual-builder__overlay--top\"\n ></div>\n <div\n data-testid=\"visual-builder__overlay--left\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--left\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--right\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--right\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--bottom\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--bottom\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--outline\"\n className={classNames(\n \"visual-builder__overlay--outline\",\n visualBuilderStyles()[\n \"visual-builder__overlay--outline\"\n ]\n )}\n ></div>\n </div>\n\n <div\n className={classNames(\n \"visual-builder__hover-outline visual-builder__hover-outline--unclickable\",\n visualBuilderStyles()[\"visual-builder__hover-outline\"],\n visualBuilderStyles()[\n \"visual-builder__hover-outline--unclickable\"\n ]\n )}\n data-testid=\"visual-builder__hover-outline\"\n ></div>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar\",\n visualBuilderStyles()[\"visual-builder__focused-toolbar\"]\n )}\n data-testid=\"visual-builder__focused-toolbar\"\n ></div>\n </>\n );\n}\n\nexport default VisualBuilderComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,6BAA4B;AAC5B,2BAGO;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/VisualBuilder.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport {\n visualBuilderStyles,\n VisualBuilderGlobalStyles,\n} from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport { isOpenInBuilder } from \"../../utils\";\n\ninterface VisualBuilderProps {\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}\n\nfunction VisualBuilderComponent(props: VisualBuilderProps): JSX.Element | null {\n if (!isOpenInBuilder()) {\n return null;\n }\n\n return (\n <>\n {/* For some reason, goober's glob and createGlobalStyle were not working in this case. */}\n {/* glob also does not work when called in visualBuilder's constructor */}\n <style\n dangerouslySetInnerHTML={{\n __html: VisualBuilderGlobalStyles,\n }}\n />\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__cursor\"],\n \"visual-builder__cursor\"\n )}\n data-testid=\"visual-builder__cursor\"\n ></div>\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__overlay__wrapper\"],\n \"visual-builder__overlay__wrapper\"\n )}\n data-testid=\"visual-builder__overlay__wrapper\"\n onClick={(event) => {\n const targetElement = event.currentTarget as HTMLDivElement;\n\n const focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n ) as HTMLDivElement;\n\n hideOverlay({\n visualBuilderContainer: props.visualBuilderContainer,\n visualBuilderOverlayWrapper: targetElement,\n focusedToolbar: focusedToolbar,\n resizeObserver: props.resizeObserver,\n });\n }}\n >\n <div\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--top\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n data-testid=\"visual-builder__overlay--top\"\n ></div>\n <div\n data-testid=\"visual-builder__overlay--left\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--left\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--right\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--right\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--bottom\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--bottom\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--outline\"\n className={classNames(\n \"visual-builder__overlay--outline\",\n visualBuilderStyles()[\n \"visual-builder__overlay--outline\"\n ]\n )}\n ></div>\n </div>\n\n <div\n className={classNames(\n \"visual-builder__hover-outline visual-builder__hover-outline--unclickable\",\n visualBuilderStyles()[\"visual-builder__hover-outline\"],\n visualBuilderStyles()[\n \"visual-builder__hover-outline--unclickable\"\n ]\n )}\n data-testid=\"visual-builder__hover-outline\"\n ></div>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar\",\n visualBuilderStyles()[\"visual-builder__focused-toolbar\"]\n )}\n data-testid=\"visual-builder__focused-toolbar\"\n ></div>\n </>\n );\n}\n\nexport default VisualBuilderComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,6BAA4B;AAC5B,2BAGO;AAEP,mBAAgC;AAaxB;AANR,SAAS,uBAAuB,OAA+C;AAC3E,MAAI,KAAC,8BAAgB,GAAG;AACpB,WAAO;AAAA,EACX;AAEA,SACI,4EAGI;AAAA;AAAA,MAAC;AAAA;AAAA,QACG,yBAAyB;AAAA,UACrB,QAAQ;AAAA,QACZ;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACG,eAAW,kBAAAA;AAAA,cACP,0CAAoB,EAAE,wBAAwB;AAAA,UAC9C;AAAA,QACJ;AAAA,QACA,eAAY;AAAA;AAAA,IACf;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACG,eAAW,kBAAAA;AAAA,cACP,0CAAoB,EAAE,kCAAkC;AAAA,UACxD;AAAA,QACJ;AAAA,QACA,eAAY;AAAA,QACZ,SAAS,CAAC,UAAU;AAChB,gBAAM,gBAAgB,MAAM;AAE5B,gBAAM,iBAAiB,SAAS;AAAA,YAC5B;AAAA,UACJ;AAEA,kDAAY;AAAA,YACR,wBAAwB,MAAM;AAAA,YAC9B,6BAA6B;AAAA,YAC7B;AAAA,YACA,gBAAgB,MAAM;AAAA,UAC1B,CAAC;AAAA,QACL;AAAA,QAEA;AAAA;AAAA,YAAC;AAAA;AAAA,cACG,eAAW,kBAAAA;AAAA,gBACP;AAAA,oBACA,0CAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA,cACA,eAAY;AAAA;AAAA,UACf;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,eAAW,kBAAAA;AAAA,gBACP;AAAA,oBACA,0CAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA;AAAA,UACH;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,eAAW,kBAAAA;AAAA,gBACP;AAAA,oBACA,0CAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA;AAAA,UACH;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,eAAW,kBAAAA;AAAA,gBACP;AAAA,oBACA,0CAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA;AAAA,UACH;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,eAAW,kBAAAA;AAAA,gBACP;AAAA,oBACA,0CAAoB,EAChB,kCACJ;AAAA,cACJ;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACL;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,eAAW,kBAAAA;AAAA,UACP;AAAA,cACA,0CAAoB,EAAE,+BAA+B;AAAA,cACrD,0CAAoB,EAChB,4CACJ;AAAA,QACJ;AAAA,QACA,eAAY;AAAA;AAAA,IACf;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACG,eAAW,kBAAAA;AAAA,UACP;AAAA,cACA,0CAAoB,EAAE,iCAAiC;AAAA,QAC3D;AAAA,QACA,eAAY;AAAA;AAAA,IACf;AAAA,KACL;AAER;AAEA,IAAO,wBAAQ;","names":["classNames"]}
|
|
@@ -2,6 +2,6 @@ interface VisualBuilderProps {
|
|
|
2
2
|
visualBuilderContainer: HTMLDivElement | null;
|
|
3
3
|
resizeObserver: ResizeObserver;
|
|
4
4
|
}
|
|
5
|
-
declare function VisualBuilderComponent(props: VisualBuilderProps): JSX.Element;
|
|
5
|
+
declare function VisualBuilderComponent(props: VisualBuilderProps): JSX.Element | null;
|
|
6
6
|
|
|
7
7
|
export { VisualBuilderComponent as default };
|
|
@@ -2,6 +2,6 @@ interface VisualBuilderProps {
|
|
|
2
2
|
visualBuilderContainer: HTMLDivElement | null;
|
|
3
3
|
resizeObserver: ResizeObserver;
|
|
4
4
|
}
|
|
5
|
-
declare function VisualBuilderComponent(props: VisualBuilderProps): JSX.Element;
|
|
5
|
+
declare function VisualBuilderComponent(props: VisualBuilderProps): JSX.Element | null;
|
|
6
6
|
|
|
7
7
|
export { VisualBuilderComponent as default };
|
|
@@ -7,8 +7,12 @@ import {
|
|
|
7
7
|
visualBuilderStyles,
|
|
8
8
|
VisualBuilderGlobalStyles
|
|
9
9
|
} from "../visualBuilder.style.js";
|
|
10
|
+
import { isOpenInBuilder } from "../../utils/index.js";
|
|
10
11
|
import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
|
|
11
12
|
function VisualBuilderComponent(props) {
|
|
13
|
+
if (!isOpenInBuilder()) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
12
16
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
13
17
|
/* @__PURE__ */ jsx(
|
|
14
18
|
"style",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/VisualBuilder.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport {\n visualBuilderStyles,\n VisualBuilderGlobalStyles,\n} from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\ninterface VisualBuilderProps {\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}\n\nfunction VisualBuilderComponent(props: VisualBuilderProps): JSX.Element {\n return (\n <>\n {/* For some reason, goober's glob and createGlobalStyle were not working in this case. */}\n {/* glob also does not work when called in visualBuilder's constructor */}\n <style\n dangerouslySetInnerHTML={{\n __html: VisualBuilderGlobalStyles,\n }}\n />\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__cursor\"],\n \"visual-builder__cursor\"\n )}\n data-testid=\"visual-builder__cursor\"\n ></div>\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__overlay__wrapper\"],\n \"visual-builder__overlay__wrapper\"\n )}\n data-testid=\"visual-builder__overlay__wrapper\"\n onClick={(event) => {\n const targetElement = event.currentTarget as HTMLDivElement;\n\n const focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n ) as HTMLDivElement;\n\n hideOverlay({\n visualBuilderContainer: props.visualBuilderContainer,\n visualBuilderOverlayWrapper: targetElement,\n focusedToolbar: focusedToolbar,\n resizeObserver: props.resizeObserver,\n });\n }}\n >\n <div\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--top\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n data-testid=\"visual-builder__overlay--top\"\n ></div>\n <div\n data-testid=\"visual-builder__overlay--left\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--left\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--right\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--right\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--bottom\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--bottom\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--outline\"\n className={classNames(\n \"visual-builder__overlay--outline\",\n visualBuilderStyles()[\n \"visual-builder__overlay--outline\"\n ]\n )}\n ></div>\n </div>\n\n <div\n className={classNames(\n \"visual-builder__hover-outline visual-builder__hover-outline--unclickable\",\n visualBuilderStyles()[\"visual-builder__hover-outline\"],\n visualBuilderStyles()[\n \"visual-builder__hover-outline--unclickable\"\n ]\n )}\n data-testid=\"visual-builder__hover-outline\"\n ></div>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar\",\n visualBuilderStyles()[\"visual-builder__focused-toolbar\"]\n )}\n data-testid=\"visual-builder__focused-toolbar\"\n ></div>\n </>\n );\n}\n\nexport default VisualBuilderComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AACvB,SAAS,mBAAmB;AAC5B;AAAA,EACI;AAAA,EACA;AAAA,OACG;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/VisualBuilder.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport {\n visualBuilderStyles,\n VisualBuilderGlobalStyles,\n} from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport { isOpenInBuilder } from \"../../utils\";\n\ninterface VisualBuilderProps {\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}\n\nfunction VisualBuilderComponent(props: VisualBuilderProps): JSX.Element | null {\n if (!isOpenInBuilder()) {\n return null;\n }\n\n return (\n <>\n {/* For some reason, goober's glob and createGlobalStyle were not working in this case. */}\n {/* glob also does not work when called in visualBuilder's constructor */}\n <style\n dangerouslySetInnerHTML={{\n __html: VisualBuilderGlobalStyles,\n }}\n />\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__cursor\"],\n \"visual-builder__cursor\"\n )}\n data-testid=\"visual-builder__cursor\"\n ></div>\n <div\n className={classNames(\n visualBuilderStyles()[\"visual-builder__overlay__wrapper\"],\n \"visual-builder__overlay__wrapper\"\n )}\n data-testid=\"visual-builder__overlay__wrapper\"\n onClick={(event) => {\n const targetElement = event.currentTarget as HTMLDivElement;\n\n const focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n ) as HTMLDivElement;\n\n hideOverlay({\n visualBuilderContainer: props.visualBuilderContainer,\n visualBuilderOverlayWrapper: targetElement,\n focusedToolbar: focusedToolbar,\n resizeObserver: props.resizeObserver,\n });\n }}\n >\n <div\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--top\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n data-testid=\"visual-builder__overlay--top\"\n ></div>\n <div\n data-testid=\"visual-builder__overlay--left\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--left\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--right\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--right\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--bottom\"\n className={classNames(\n \"visual-builder__overlay visual-builder__overlay--bottom\",\n visualBuilderStyles()[\"visual-builder__overlay\"]\n )}\n ></div>\n <div\n data-testid=\"visual-builder__overlay--outline\"\n className={classNames(\n \"visual-builder__overlay--outline\",\n visualBuilderStyles()[\n \"visual-builder__overlay--outline\"\n ]\n )}\n ></div>\n </div>\n\n <div\n className={classNames(\n \"visual-builder__hover-outline visual-builder__hover-outline--unclickable\",\n visualBuilderStyles()[\"visual-builder__hover-outline\"],\n visualBuilderStyles()[\n \"visual-builder__hover-outline--unclickable\"\n ]\n )}\n data-testid=\"visual-builder__hover-outline\"\n ></div>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar\",\n visualBuilderStyles()[\"visual-builder__focused-toolbar\"]\n )}\n data-testid=\"visual-builder__focused-toolbar\"\n ></div>\n </>\n );\n}\n\nexport default VisualBuilderComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AACvB,SAAS,mBAAmB;AAC5B;AAAA,EACI;AAAA,EACA;AAAA,OACG;AAEP,SAAS,uBAAuB;AAaxB,mBAGI,KAYA,YAfJ;AANR,SAAS,uBAAuB,OAA+C;AAC3E,MAAI,CAAC,gBAAgB,GAAG;AACpB,WAAO;AAAA,EACX;AAEA,SACI,iCAGI;AAAA;AAAA,MAAC;AAAA;AAAA,QACG,yBAAyB;AAAA,UACrB,QAAQ;AAAA,QACZ;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACG,WAAW;AAAA,UACP,oBAAoB,EAAE,wBAAwB;AAAA,UAC9C;AAAA,QACJ;AAAA,QACA,eAAY;AAAA;AAAA,IACf;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACG,WAAW;AAAA,UACP,oBAAoB,EAAE,kCAAkC;AAAA,UACxD;AAAA,QACJ;AAAA,QACA,eAAY;AAAA,QACZ,SAAS,CAAC,UAAU;AAChB,gBAAM,gBAAgB,MAAM;AAE5B,gBAAM,iBAAiB,SAAS;AAAA,YAC5B;AAAA,UACJ;AAEA,sBAAY;AAAA,YACR,wBAAwB,MAAM;AAAA,YAC9B,6BAA6B;AAAA,YAC7B;AAAA,YACA,gBAAgB,MAAM;AAAA,UAC1B,CAAC;AAAA,QACL;AAAA,QAEA;AAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAW;AAAA,gBACP;AAAA,gBACA,oBAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA,cACA,eAAY;AAAA;AAAA,UACf;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,WAAW;AAAA,gBACP;AAAA,gBACA,oBAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA;AAAA,UACH;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,WAAW;AAAA,gBACP;AAAA,gBACA,oBAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA;AAAA,UACH;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,WAAW;AAAA,gBACP;AAAA,gBACA,oBAAoB,EAAE,yBAAyB;AAAA,cACnD;AAAA;AAAA,UACH;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACG,eAAY;AAAA,cACZ,WAAW;AAAA,gBACP;AAAA,gBACA,oBAAoB,EAChB,kCACJ;AAAA,cACJ;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACL;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,WAAW;AAAA,UACP;AAAA,UACA,oBAAoB,EAAE,+BAA+B;AAAA,UACrD,oBAAoB,EAChB,4CACJ;AAAA,QACJ;AAAA,QACA,eAAY;AAAA;AAAA,IACf;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACG,WAAW;AAAA,UACP;AAAA,UACA,oBAAoB,EAAE,iCAAiC;AAAA,QAC3D;AAAA,QACA,eAAY;AAAA;AAAA,IACf;AAAA,KACL;AAER;AAEA,IAAO,wBAAQ;","names":[]}
|
|
@@ -36,12 +36,14 @@ module.exports = __toCommonJS(components_exports);
|
|
|
36
36
|
var import_preact = require("preact");
|
|
37
37
|
var import_VisualBuilder = __toESM(require("./VisualBuilder.cjs"), 1);
|
|
38
38
|
var import_visualBuilder = require("../visualBuilder.style.cjs");
|
|
39
|
+
var import_utils = require("../../utils/index.cjs");
|
|
39
40
|
var import_jsx_runtime = require("preact/jsx-runtime");
|
|
40
41
|
function initUI(props) {
|
|
41
42
|
const visualBuilderDOM = document.querySelector(
|
|
42
43
|
`.visual-builder__container`
|
|
43
44
|
);
|
|
44
|
-
|
|
45
|
+
const isInBuilder = (0, import_utils.isOpenInBuilder)();
|
|
46
|
+
if (!visualBuilderDOM && isInBuilder) {
|
|
45
47
|
const visualBuilderContainer = document.createElement("div");
|
|
46
48
|
visualBuilderContainer.classList.add(
|
|
47
49
|
(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__container"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/index.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport VisualBuilderComponent from \"./VisualBuilder\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\ninterface InitUIParams {\n resizeObserver: ResizeObserver;\n}\n\nfunction initUI(props: InitUIParams): void {\n const visualBuilderDOM = document.querySelector(\n `.visual-builder__container`\n );\n if (!visualBuilderDOM) {\n const visualBuilderContainer = document.createElement(\"div\");\n visualBuilderContainer.classList.add(\n visualBuilderStyles()[\"visual-builder__container\"],\n \"visual-builder__container\"\n );\n visualBuilderContainer.setAttribute(\n \"data-testid\",\n \"visual-builder__container\"\n );\n\n document.body.appendChild(visualBuilderContainer);\n\n render(\n <VisualBuilderComponent\n visualBuilderContainer={visualBuilderContainer}\n resizeObserver={props.resizeObserver}\n />,\n visualBuilderContainer\n );\n }\n\n return;\n}\n\nexport default initUI;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AACvB,2BAAmC;AACnC,2BAAoC;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/index.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport VisualBuilderComponent from \"./VisualBuilder\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport { isOpenInBuilder } from \"../../utils\";\n\ninterface InitUIParams {\n resizeObserver: ResizeObserver;\n}\n\nfunction initUI(props: InitUIParams): void {\n const visualBuilderDOM = document.querySelector(\n `.visual-builder__container`\n );\n\n const isInBuilder = isOpenInBuilder();\n\n if (!visualBuilderDOM && isInBuilder) {\n const visualBuilderContainer = document.createElement(\"div\");\n visualBuilderContainer.classList.add(\n visualBuilderStyles()[\"visual-builder__container\"],\n \"visual-builder__container\"\n );\n visualBuilderContainer.setAttribute(\n \"data-testid\",\n \"visual-builder__container\"\n );\n\n document.body.appendChild(visualBuilderContainer);\n\n render(\n <VisualBuilderComponent\n visualBuilderContainer={visualBuilderContainer}\n resizeObserver={props.resizeObserver}\n />,\n visualBuilderContainer\n );\n }\n\n return;\n}\n\nexport default initUI;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AACvB,2BAAmC;AACnC,2BAAoC;AAEpC,mBAAgC;AA2BpB;AArBZ,SAAS,OAAO,OAA2B;AACvC,QAAM,mBAAmB,SAAS;AAAA,IAC9B;AAAA,EACJ;AAEA,QAAM,kBAAc,8BAAgB;AAEpC,MAAI,CAAC,oBAAoB,aAAa;AAClC,UAAM,yBAAyB,SAAS,cAAc,KAAK;AAC3D,2BAAuB,UAAU;AAAA,UAC7B,0CAAoB,EAAE,2BAA2B;AAAA,MACjD;AAAA,IACJ;AACA,2BAAuB;AAAA,MACnB;AAAA,MACA;AAAA,IACJ;AAEA,aAAS,KAAK,YAAY,sBAAsB;AAEhD;AAAA,MACI;AAAA,QAAC,qBAAAA;AAAA,QAAA;AAAA,UACG;AAAA,UACA,gBAAgB,MAAM;AAAA;AAAA,MAC1B;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA;AACJ;AAEA,IAAO,qBAAQ;","names":["VisualBuilderComponent"]}
|
|
@@ -4,12 +4,14 @@ import "../../chunk-5WRI5ZAA.js";
|
|
|
4
4
|
import { render } from "preact";
|
|
5
5
|
import VisualBuilderComponent from "./VisualBuilder.js";
|
|
6
6
|
import { visualBuilderStyles } from "../visualBuilder.style.js";
|
|
7
|
+
import { isOpenInBuilder } from "../../utils/index.js";
|
|
7
8
|
import { jsx } from "preact/jsx-runtime";
|
|
8
9
|
function initUI(props) {
|
|
9
10
|
const visualBuilderDOM = document.querySelector(
|
|
10
11
|
`.visual-builder__container`
|
|
11
12
|
);
|
|
12
|
-
|
|
13
|
+
const isInBuilder = isOpenInBuilder();
|
|
14
|
+
if (!visualBuilderDOM && isInBuilder) {
|
|
13
15
|
const visualBuilderContainer = document.createElement("div");
|
|
14
16
|
visualBuilderContainer.classList.add(
|
|
15
17
|
visualBuilderStyles()["visual-builder__container"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/index.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport VisualBuilderComponent from \"./VisualBuilder\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\n\ninterface InitUIParams {\n resizeObserver: ResizeObserver;\n}\n\nfunction initUI(props: InitUIParams): void {\n const visualBuilderDOM = document.querySelector(\n `.visual-builder__container`\n );\n if (!visualBuilderDOM) {\n const visualBuilderContainer = document.createElement(\"div\");\n visualBuilderContainer.classList.add(\n visualBuilderStyles()[\"visual-builder__container\"],\n \"visual-builder__container\"\n );\n visualBuilderContainer.setAttribute(\n \"data-testid\",\n \"visual-builder__container\"\n );\n\n document.body.appendChild(visualBuilderContainer);\n\n render(\n <VisualBuilderComponent\n visualBuilderContainer={visualBuilderContainer}\n resizeObserver={props.resizeObserver}\n />,\n visualBuilderContainer\n );\n }\n\n return;\n}\n\nexport default initUI;\n"],"mappings":";;;AAAA,SAAS,cAAc;AACvB,OAAO,4BAA4B;AACnC,SAAS,2BAA2B;
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/index.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport VisualBuilderComponent from \"./VisualBuilder\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport React from \"preact/compat\";\nimport { isOpenInBuilder } from \"../../utils\";\n\ninterface InitUIParams {\n resizeObserver: ResizeObserver;\n}\n\nfunction initUI(props: InitUIParams): void {\n const visualBuilderDOM = document.querySelector(\n `.visual-builder__container`\n );\n\n const isInBuilder = isOpenInBuilder();\n\n if (!visualBuilderDOM && isInBuilder) {\n const visualBuilderContainer = document.createElement(\"div\");\n visualBuilderContainer.classList.add(\n visualBuilderStyles()[\"visual-builder__container\"],\n \"visual-builder__container\"\n );\n visualBuilderContainer.setAttribute(\n \"data-testid\",\n \"visual-builder__container\"\n );\n\n document.body.appendChild(visualBuilderContainer);\n\n render(\n <VisualBuilderComponent\n visualBuilderContainer={visualBuilderContainer}\n resizeObserver={props.resizeObserver}\n />,\n visualBuilderContainer\n );\n }\n\n return;\n}\n\nexport default initUI;\n"],"mappings":";;;AAAA,SAAS,cAAc;AACvB,OAAO,4BAA4B;AACnC,SAAS,2BAA2B;AAEpC,SAAS,uBAAuB;AA2BpB;AArBZ,SAAS,OAAO,OAA2B;AACvC,QAAM,mBAAmB,SAAS;AAAA,IAC9B;AAAA,EACJ;AAEA,QAAM,cAAc,gBAAgB;AAEpC,MAAI,CAAC,oBAAoB,aAAa;AAClC,UAAM,yBAAyB,SAAS,cAAc,KAAK;AAC3D,2BAAuB,UAAU;AAAA,MAC7B,oBAAoB,EAAE,2BAA2B;AAAA,MACjD;AAAA,IACJ;AACA,2BAAuB;AAAA,MACnB;AAAA,MACA;AAAA,IACJ;AAEA,aAAS,KAAK,YAAY,sBAAsB;AAEhD;AAAA,MACI;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA,gBAAgB,MAAM;AAAA;AAAA,MAC1B;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA;AACJ;AAEA,IAAO,qBAAQ;","names":[]}
|
|
@@ -34,17 +34,21 @@ __export(generateStartEditingButton_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(generateStartEditingButton_exports);
|
|
36
36
|
var import_preact = require("preact");
|
|
37
|
-
var import_logger = require("../../logger/logger.cjs");
|
|
38
37
|
var import_startEditingButton = __toESM(require("../components/startEditingButton.cjs"), 1);
|
|
39
38
|
var import_jsx_runtime = require("preact/jsx-runtime");
|
|
40
|
-
function generateStartEditingButton(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
function generateStartEditingButton() {
|
|
40
|
+
const existingButton = document.querySelector(
|
|
41
|
+
".visual-builder__start-editing-btn"
|
|
42
|
+
);
|
|
43
|
+
if (existingButton) {
|
|
44
|
+
return existingButton;
|
|
44
45
|
}
|
|
45
46
|
const wrapper = document.createDocumentFragment();
|
|
46
47
|
(0, import_preact.render)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_startEditingButton.default, {}), wrapper);
|
|
47
|
-
|
|
48
|
+
if (wrapper.children.length === 0) {
|
|
49
|
+
return void 0;
|
|
50
|
+
}
|
|
51
|
+
document.body.appendChild(wrapper);
|
|
48
52
|
const startEditingButton = document.querySelector(
|
|
49
53
|
".visual-builder__start-editing-btn"
|
|
50
54
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateStartEditingButton.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport { PublicLogger } from \"../../logger/logger\";\nimport StartEditingButtonComponent from \"../components/startEditingButton\";\n\n/**\n * Generates a start editing button for the visual builder.\n *\n * @
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateStartEditingButton.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport { PublicLogger } from \"../../logger/logger\";\nimport StartEditingButtonComponent from \"../components/startEditingButton\";\n\n/**\n * Generates a start editing button for the visual builder.\n *\n * @returns The generated HTMLAnchorElement representing the start editing button, or undefined if the button cannot be created.\n */\nexport function generateStartEditingButton(): HTMLAnchorElement | undefined {\n const existingButton = document.querySelector(\n \".visual-builder__start-editing-btn\"\n ) as HTMLAnchorElement;\n\n if (existingButton) {\n return existingButton;\n }\n\n const wrapper = document.createDocumentFragment();\n render(<StartEditingButtonComponent />, wrapper);\n\n if (wrapper.children.length === 0) {\n return undefined;\n }\n\n document.body.appendChild(wrapper);\n\n const startEditingButton = document.querySelector(\n \".visual-builder__start-editing-btn\"\n ) as HTMLAnchorElement;\n\n return startEditingButton;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AAEvB,gCAAwC;AAiB7B;AAVJ,SAAS,6BAA4D;AACxE,QAAM,iBAAiB,SAAS;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,WAAO;AAAA,EACX;AAEA,QAAM,UAAU,SAAS,uBAAuB;AAChD,4BAAO,4CAAC,0BAAAA,SAAA,EAA4B,GAAI,OAAO;AAE/C,MAAI,QAAQ,SAAS,WAAW,GAAG;AAC/B,WAAO;AAAA,EACX;AAEA,WAAS,KAAK,YAAY,OAAO;AAEjC,QAAM,qBAAqB,SAAS;AAAA,IAChC;AAAA,EACJ;AAEA,SAAO;AACX;","names":["StartEditingButtonComponent"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generates a start editing button for the visual builder.
|
|
3
3
|
*
|
|
4
|
-
* @
|
|
5
|
-
* @returns The generated HTMLAnchorElement representing the start editing button, or undefined if the visualBuilderContainer is null.
|
|
4
|
+
* @returns The generated HTMLAnchorElement representing the start editing button, or undefined if the button cannot be created.
|
|
6
5
|
*/
|
|
7
|
-
declare function generateStartEditingButton(
|
|
6
|
+
declare function generateStartEditingButton(): HTMLAnchorElement | undefined;
|
|
8
7
|
|
|
9
8
|
export { generateStartEditingButton };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generates a start editing button for the visual builder.
|
|
3
3
|
*
|
|
4
|
-
* @
|
|
5
|
-
* @returns The generated HTMLAnchorElement representing the start editing button, or undefined if the visualBuilderContainer is null.
|
|
4
|
+
* @returns The generated HTMLAnchorElement representing the start editing button, or undefined if the button cannot be created.
|
|
6
5
|
*/
|
|
7
|
-
declare function generateStartEditingButton(
|
|
6
|
+
declare function generateStartEditingButton(): HTMLAnchorElement | undefined;
|
|
8
7
|
|
|
9
8
|
export { generateStartEditingButton };
|
|
@@ -2,17 +2,21 @@ import "../../chunk-5WRI5ZAA.js";
|
|
|
2
2
|
|
|
3
3
|
// src/visualBuilder/generators/generateStartEditingButton.tsx
|
|
4
4
|
import { render } from "preact";
|
|
5
|
-
import { PublicLogger } from "../../logger/logger.js";
|
|
6
5
|
import StartEditingButtonComponent from "../components/startEditingButton.js";
|
|
7
6
|
import { jsx } from "preact/jsx-runtime";
|
|
8
|
-
function generateStartEditingButton(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
function generateStartEditingButton() {
|
|
8
|
+
const existingButton = document.querySelector(
|
|
9
|
+
".visual-builder__start-editing-btn"
|
|
10
|
+
);
|
|
11
|
+
if (existingButton) {
|
|
12
|
+
return existingButton;
|
|
12
13
|
}
|
|
13
14
|
const wrapper = document.createDocumentFragment();
|
|
14
15
|
render(/* @__PURE__ */ jsx(StartEditingButtonComponent, {}), wrapper);
|
|
15
|
-
|
|
16
|
+
if (wrapper.children.length === 0) {
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
document.body.appendChild(wrapper);
|
|
16
20
|
const startEditingButton = document.querySelector(
|
|
17
21
|
".visual-builder__start-editing-btn"
|
|
18
22
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateStartEditingButton.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport { PublicLogger } from \"../../logger/logger\";\nimport StartEditingButtonComponent from \"../components/startEditingButton\";\n\n/**\n * Generates a start editing button for the visual builder.\n *\n * @
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/generators/generateStartEditingButton.tsx"],"sourcesContent":["import { render } from \"preact\";\nimport { PublicLogger } from \"../../logger/logger\";\nimport StartEditingButtonComponent from \"../components/startEditingButton\";\n\n/**\n * Generates a start editing button for the visual builder.\n *\n * @returns The generated HTMLAnchorElement representing the start editing button, or undefined if the button cannot be created.\n */\nexport function generateStartEditingButton(): HTMLAnchorElement | undefined {\n const existingButton = document.querySelector(\n \".visual-builder__start-editing-btn\"\n ) as HTMLAnchorElement;\n\n if (existingButton) {\n return existingButton;\n }\n\n const wrapper = document.createDocumentFragment();\n render(<StartEditingButtonComponent />, wrapper);\n\n if (wrapper.children.length === 0) {\n return undefined;\n }\n\n document.body.appendChild(wrapper);\n\n const startEditingButton = document.querySelector(\n \".visual-builder__start-editing-btn\"\n ) as HTMLAnchorElement;\n\n return startEditingButton;\n}\n"],"mappings":";;;AAAA,SAAS,cAAc;AAEvB,OAAO,iCAAiC;AAiB7B;AAVJ,SAAS,6BAA4D;AACxE,QAAM,iBAAiB,SAAS;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,WAAO;AAAA,EACX;AAEA,QAAM,UAAU,SAAS,uBAAuB;AAChD,SAAO,oBAAC,+BAA4B,GAAI,OAAO;AAE/C,MAAI,QAAQ,SAAS,WAAW,GAAG;AAC/B,WAAO;AAAA,EACX;AAEA,WAAS,KAAK,YAAY,OAAO;AAEjC,QAAM,qBAAqB,SAAS;AAAA,IAChC;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
|
|
@@ -323,7 +323,7 @@ var _VisualBuilder = class _VisualBuilder {
|
|
|
323
323
|
}
|
|
324
324
|
}).catch(() => {
|
|
325
325
|
if (!(0, import_inIframe.inIframe)()) {
|
|
326
|
-
(0, import_generateStartEditingButton.generateStartEditingButton)(
|
|
326
|
+
(0, import_generateStartEditingButton.generateStartEditingButton)();
|
|
327
327
|
}
|
|
328
328
|
});
|
|
329
329
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/visualBuilder/index.ts"],"sourcesContent":["import { Signal, signal } from \"@preact/signals\";\n\nimport { inIframe } from \"../common/inIframe\";\nimport Config from \"../configManager/configManager\";\nimport {\n useHistoryPostMessageEvent,\n useOnEntryUpdatePostMessageEvent,\n} from \"../livePreview/eventManager/postMessageEvent.hooks\";\nimport {\n ILivePreviewModeConfig,\n ILivePreviewWindowType,\n IVisualBuilderInitEvent,\n} from \"../types/types\";\nimport { generateStartEditingButton } from \"./generators/generateStartEditingButton\";\n\nimport { addFocusOverlay } from \"./generators/generateOverlay\";\nimport { getEntryIdentifiersInCurrentPage } from \"./utils/getEntryIdentifiersInCurrentPage\";\nimport visualBuilderPostMessage from \"./utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./utils/types/postMessage.types\";\n\nimport { setup } from \"goober\";\nimport { debounce, isEqual } from \"lodash-es\";\nimport { h } from \"preact\";\nimport { extractDetailsFromCslp } from \"../cslp\";\nimport initUI from \"./components\";\nimport { useDraftFieldsPostMessageEvent } from \"./eventManager/useDraftFieldsPostMessageEvent\";\nimport { useHideFocusOverlayPostMessageEvent } from \"./eventManager/useHideFocusOverlayPostMessageEvent\";\nimport { useScrollToField } from \"./eventManager/useScrollToField\";\nimport { useVariantFieldsPostMessageEvent } from \"./eventManager/useVariantsPostMessageEvent\";\nimport {\n generateEmptyBlocks,\n removeEmptyBlocks,\n} from \"./generators/generateEmptyBlock\";\nimport { addEventListeners, removeEventListeners } from \"./listeners\";\nimport { addKeyboardShortcuts } from \"./listeners/keyboardShortcuts\";\nimport { FieldSchemaMap } from \"./utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"./utils/isFieldDisabled\";\nimport {\n updateFocussedState,\n updateFocussedStateOnMutation,\n} from \"./utils/updateFocussedState\";\nimport { useHighlightCommentIcon } from \"./eventManager/useHighlightCommentIcon\";\nimport { updateHighlightedCommentIconPosition } from \"./generators/generateHighlightedComment\";\nimport {\n updateCollabIconPosition,\n updatePopupPositions,\n updateSuggestionListPosition,\n} from \"./generators/generateThread\";\nimport { useRecalculateVariantDataCSLPValues } from \"./eventManager/useRecalculateVariantDataCSLPValues\";\nimport { VB_EmptyBlockParentClass } from \"..\";\nimport { useCollab } from \"./eventManager/useCollab\";\nimport {\n handleMissingThreads,\n processThreadsBatch,\n filterUnrenderedThreads,\n clearThreadStatus,\n} from \"./generators/generateThread\";\nimport { IThreadDTO } from \"./types/collab.types\";\n\ninterface VisualBuilderGlobalStateImpl {\n previousSelectedEditableDOM: HTMLElement | Element | null;\n previousHoveredTargetDOM: Element | null;\n previousEmptyBlockParents: Element[] | [];\n focusFieldValue: string | null;\n focusFieldReceivedInput: boolean;\n audienceMode: boolean;\n locale: string;\n variant: string | null;\n focusElementObserver: MutationObserver | null;\n}\n\nlet threadsPayload: IThreadDTO[] = [];\n\nexport class VisualBuilder {\n private customCursor: HTMLDivElement | null = null;\n private overlayWrapper: HTMLDivElement | null = null;\n private visualBuilderContainer: HTMLDivElement | null = null;\n private focusedToolbar: HTMLDivElement | null = null;\n\n static VisualBuilderGlobalState: Signal<VisualBuilderGlobalStateImpl> =\n signal({\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: Config.get().stackDetails.masterLocale || \"en-us\",\n variant: null,\n focusElementObserver: null,\n });\n\n private handlePositionChange(editableElement: HTMLElement) {\n updateFocussedState({\n editableElement,\n visualBuilderContainer: this.visualBuilderContainer,\n overlayWrapper: this.overlayWrapper,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n }\n\n private scrollEventHandler = () => {\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n updateHighlightedCommentIconPosition(); // Update icons position\n };\n\n private resizeEventHandler = () => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n updateHighlightedCommentIconPosition();\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n if (previousSelectedEditableDOM) {\n this.handlePositionChange(\n previousSelectedEditableDOM as HTMLElement\n );\n }\n };\n\n private resizeObserver = new ResizeObserver(([entry]) => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!this.overlayWrapper || !previousSelectedEditableDOM) {\n return;\n }\n\n // if previous selected editable element is not same as the current\n // target and the target is also not psuedo-editable then return\n if (\n !entry.target.isSameNode(previousSelectedEditableDOM) &&\n !entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n )\n ) {\n return;\n }\n\n const isPsuedoEditableElement = entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n );\n\n // the \"actual\" editable element when the current target is psuedo-editable\n // is the previous selected editable element instead of the closest data-cslp element\n // (cant use closest because the psuedo editable is absolute positioned)\n // (Note - why do we even need the closest? we do an early exit if entry.target\n // is not the previous selected editable element, needs more investigation)\n const editableElement = (\n isPsuedoEditableElement\n ? previousSelectedEditableDOM\n : entry.target.closest(\"[data-cslp]\")\n ) as HTMLElement | null;\n\n if (isPsuedoEditableElement) {\n // if the current target is psuedo-editable, then the resizing occurred by typing\n // into the psuedo editable, simply update the focus overlay\n addFocusOverlay(entry.target, this.overlayWrapper);\n\n // TODO check if we can now resize the actual editable element\n // when psuedo editable element is resized, avoid infinite loops\n } else if (editableElement) {\n this.handlePositionChange(editableElement);\n }\n\n // update the overlay if field is disabled\n const cslpData =\n editableElement && editableElement.getAttribute(\"data-cslp\");\n\n if (!editableElement || !cslpData) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n ).then((fieldSchema) => {\n if (!fieldSchema) {\n return;\n }\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement,\n fieldMetadata,\n });\n if (isDisabled) {\n addFocusOverlay(\n editableElement,\n this.overlayWrapper as HTMLDivElement,\n isDisabled\n );\n }\n });\n });\n\n private mutationObserver = new MutationObserver(\n debounce(\n async () => {\n updateFocussedStateOnMutation(\n this.overlayWrapper,\n this.focusedToolbar,\n this.visualBuilderContainer,\n this.resizeObserver\n );\n\n const emptyBlockParents = Array.from(\n document.querySelectorAll(`.${VB_EmptyBlockParentClass}`)\n );\n\n const previousEmptyBlockParents = VisualBuilder\n .VisualBuilderGlobalState.value\n .previousEmptyBlockParents as Element[];\n\n if (!isEqual(emptyBlockParents, previousEmptyBlockParents)) {\n const noMoreEmptyBlockParent =\n previousEmptyBlockParents.filter(\n (x) => !emptyBlockParents.includes(x)\n );\n const newEmptyBlockParent = emptyBlockParents.filter(\n (x) => !previousEmptyBlockParents.includes(x)\n );\n\n removeEmptyBlocks(noMoreEmptyBlockParent);\n await generateEmptyBlocks(newEmptyBlockParent);\n\n VisualBuilder.VisualBuilderGlobalState.value = {\n ...VisualBuilder.VisualBuilderGlobalState.value,\n previousEmptyBlockParents: emptyBlockParents,\n };\n }\n },\n 100,\n { trailing: true }\n )\n );\n\n private threadMutationObserver = new MutationObserver(\n debounce(() => {\n const container = document.querySelector(\n \".visual-builder__container\"\n );\n if (container && threadsPayload) {\n const unrenderedThreads =\n filterUnrenderedThreads(threadsPayload);\n\n if (unrenderedThreads.length > 0) {\n processThreadsBatch(threadsPayload).then(\n (missingThreadIds) => {\n missingThreadIds.forEach(clearThreadStatus);\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n }\n\n threadsPayload = [];\n }\n }, 1000)\n );\n\n constructor() {\n // Handles changes in element positions due to sidebar toggling or window resizing,\n // triggering a redraw of the visual builder\n window.addEventListener(\"resize\", this.resizeEventHandler);\n window.addEventListener(\"scroll\", this.scrollEventHandler);\n initUI({\n resizeObserver: this.resizeObserver,\n });\n\n // Initializing goober for css-in-js\n setup(h);\n\n this.visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n this.overlayWrapper = document.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n this.customCursor = document.querySelector(\".visual-builder__cursor\");\n this.focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const config = Config.get();\n\n if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {\n return;\n }\n\n visualBuilderPostMessage\n ?.send<IVisualBuilderInitEvent>(\"init\", {\n isSSR: config.ssr,\n href: window.location.href,\n })\n .then((data) => {\n const {\n windowType = ILivePreviewWindowType.BUILDER,\n stackDetails,\n collab,\n } = data || {};\n Config.set(\"windowType\", windowType);\n Config.set(\n \"stackDetails.masterLocale\",\n stackDetails?.masterLocale || \"en-us\"\n );\n\n if (collab) {\n Config.set(\"collab.enable\", collab.enable);\n Config.set(\"collab.isFeedbackMode\", collab.isFeedbackMode);\n Config.set(\"collab.inviteMetadata\", collab.inviteMetadata);\n }\n\n if (collab?.payload) {\n threadsPayload = collab?.payload;\n }\n\n addEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n this.threadMutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n });\n\n useHistoryPostMessageEvent();\n useCollab();\n\n if (windowType === ILivePreviewWindowType.BUILDER) {\n addKeyboardShortcuts({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n useScrollToField();\n useHighlightCommentIcon();\n\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_ALL_ENTRIES_IN_CURRENT_PAGE,\n getEntryIdentifiersInCurrentPage\n );\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.SEND_VARIANT_AND_LOCALE\n );\n\n useHideFocusOverlayPostMessageEvent({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n\n // These events are used to sync the data when we made some changes in the entry without invoking live preview module.\n useOnEntryUpdatePostMessageEvent();\n useRecalculateVariantDataCSLPValues();\n useDraftFieldsPostMessageEvent();\n useVariantFieldsPostMessageEvent();\n }\n })\n .catch(() => {\n if (!inIframe()) {\n generateStartEditingButton(this.visualBuilderContainer);\n }\n });\n }\n\n // TODO: write test cases\n destroy = (): void => {\n // Remove event listeners\n window.removeEventListener(\"resize\", this.resizeEventHandler);\n window.removeEventListener(\"scroll\", this.scrollEventHandler);\n\n // Remove custom event listeners\n removeEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n // Disconnect observers\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n this.threadMutationObserver.disconnect();\n\n // Clear global state\n VisualBuilder.VisualBuilderGlobalState.value = {\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: \"en-us\",\n variant: null,\n focusElementObserver: null,\n };\n\n // Remove DOM elements\n if (this.visualBuilderContainer) {\n window.document.body.removeChild(this.visualBuilderContainer);\n }\n if (this.customCursor) {\n this.customCursor.remove();\n }\n if (this.overlayWrapper) {\n this.overlayWrapper.remove();\n }\n if (this.focusedToolbar) {\n this.focusedToolbar.remove();\n }\n\n // Nullify references\n this.customCursor = null;\n this.overlayWrapper = null;\n this.visualBuilderContainer = null;\n this.focusedToolbar = null;\n };\n}\n"],"mappings":"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","names":["import_generateThread","initUI","Config","visualBuilderPostMessage"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/visualBuilder/index.ts"],"sourcesContent":["import { Signal, signal } from \"@preact/signals\";\n\nimport { inIframe } from \"../common/inIframe\";\nimport Config from \"../configManager/configManager\";\nimport {\n useHistoryPostMessageEvent,\n useOnEntryUpdatePostMessageEvent,\n} from \"../livePreview/eventManager/postMessageEvent.hooks\";\nimport {\n ILivePreviewModeConfig,\n ILivePreviewWindowType,\n IVisualBuilderInitEvent,\n} from \"../types/types\";\nimport { generateStartEditingButton } from \"./generators/generateStartEditingButton\";\n\nimport { addFocusOverlay } from \"./generators/generateOverlay\";\nimport { getEntryIdentifiersInCurrentPage } from \"./utils/getEntryIdentifiersInCurrentPage\";\nimport visualBuilderPostMessage from \"./utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./utils/types/postMessage.types\";\n\nimport { setup } from \"goober\";\nimport { debounce, isEqual } from \"lodash-es\";\nimport { h } from \"preact\";\nimport { extractDetailsFromCslp } from \"../cslp\";\nimport initUI from \"./components\";\nimport { useDraftFieldsPostMessageEvent } from \"./eventManager/useDraftFieldsPostMessageEvent\";\nimport { useHideFocusOverlayPostMessageEvent } from \"./eventManager/useHideFocusOverlayPostMessageEvent\";\nimport { useScrollToField } from \"./eventManager/useScrollToField\";\nimport { useVariantFieldsPostMessageEvent } from \"./eventManager/useVariantsPostMessageEvent\";\nimport {\n generateEmptyBlocks,\n removeEmptyBlocks,\n} from \"./generators/generateEmptyBlock\";\nimport { addEventListeners, removeEventListeners } from \"./listeners\";\nimport { addKeyboardShortcuts } from \"./listeners/keyboardShortcuts\";\nimport { FieldSchemaMap } from \"./utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"./utils/isFieldDisabled\";\nimport {\n updateFocussedState,\n updateFocussedStateOnMutation,\n} from \"./utils/updateFocussedState\";\nimport { useHighlightCommentIcon } from \"./eventManager/useHighlightCommentIcon\";\nimport { updateHighlightedCommentIconPosition } from \"./generators/generateHighlightedComment\";\nimport {\n updateCollabIconPosition,\n updatePopupPositions,\n updateSuggestionListPosition,\n} from \"./generators/generateThread\";\nimport { useRecalculateVariantDataCSLPValues } from \"./eventManager/useRecalculateVariantDataCSLPValues\";\nimport { VB_EmptyBlockParentClass } from \"..\";\nimport { useCollab } from \"./eventManager/useCollab\";\nimport {\n handleMissingThreads,\n processThreadsBatch,\n filterUnrenderedThreads,\n clearThreadStatus,\n} from \"./generators/generateThread\";\nimport { IThreadDTO } from \"./types/collab.types\";\n\ninterface VisualBuilderGlobalStateImpl {\n previousSelectedEditableDOM: HTMLElement | Element | null;\n previousHoveredTargetDOM: Element | null;\n previousEmptyBlockParents: Element[] | [];\n focusFieldValue: string | null;\n focusFieldReceivedInput: boolean;\n audienceMode: boolean;\n locale: string;\n variant: string | null;\n focusElementObserver: MutationObserver | null;\n}\n\nlet threadsPayload: IThreadDTO[] = [];\n\nexport class VisualBuilder {\n private customCursor: HTMLDivElement | null = null;\n private overlayWrapper: HTMLDivElement | null = null;\n private visualBuilderContainer: HTMLDivElement | null = null;\n private focusedToolbar: HTMLDivElement | null = null;\n\n static VisualBuilderGlobalState: Signal<VisualBuilderGlobalStateImpl> =\n signal({\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: Config.get().stackDetails.masterLocale || \"en-us\",\n variant: null,\n focusElementObserver: null,\n });\n\n private handlePositionChange(editableElement: HTMLElement) {\n updateFocussedState({\n editableElement,\n visualBuilderContainer: this.visualBuilderContainer,\n overlayWrapper: this.overlayWrapper,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n }\n\n private scrollEventHandler = () => {\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n updateHighlightedCommentIconPosition(); // Update icons position\n };\n\n private resizeEventHandler = () => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n updateHighlightedCommentIconPosition();\n updateCollabIconPosition();\n updatePopupPositions();\n updateSuggestionListPosition();\n if (previousSelectedEditableDOM) {\n this.handlePositionChange(\n previousSelectedEditableDOM as HTMLElement\n );\n }\n };\n\n private resizeObserver = new ResizeObserver(([entry]) => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!this.overlayWrapper || !previousSelectedEditableDOM) {\n return;\n }\n\n // if previous selected editable element is not same as the current\n // target and the target is also not psuedo-editable then return\n if (\n !entry.target.isSameNode(previousSelectedEditableDOM) &&\n !entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n )\n ) {\n return;\n }\n\n const isPsuedoEditableElement = entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n );\n\n // the \"actual\" editable element when the current target is psuedo-editable\n // is the previous selected editable element instead of the closest data-cslp element\n // (cant use closest because the psuedo editable is absolute positioned)\n // (Note - why do we even need the closest? we do an early exit if entry.target\n // is not the previous selected editable element, needs more investigation)\n const editableElement = (\n isPsuedoEditableElement\n ? previousSelectedEditableDOM\n : entry.target.closest(\"[data-cslp]\")\n ) as HTMLElement | null;\n\n if (isPsuedoEditableElement) {\n // if the current target is psuedo-editable, then the resizing occurred by typing\n // into the psuedo editable, simply update the focus overlay\n addFocusOverlay(entry.target, this.overlayWrapper);\n\n // TODO check if we can now resize the actual editable element\n // when psuedo editable element is resized, avoid infinite loops\n } else if (editableElement) {\n this.handlePositionChange(editableElement);\n }\n\n // update the overlay if field is disabled\n const cslpData =\n editableElement && editableElement.getAttribute(\"data-cslp\");\n\n if (!editableElement || !cslpData) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n ).then((fieldSchema) => {\n if (!fieldSchema) {\n return;\n }\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement,\n fieldMetadata,\n });\n if (isDisabled) {\n addFocusOverlay(\n editableElement,\n this.overlayWrapper as HTMLDivElement,\n isDisabled\n );\n }\n });\n });\n\n private mutationObserver = new MutationObserver(\n debounce(\n async () => {\n updateFocussedStateOnMutation(\n this.overlayWrapper,\n this.focusedToolbar,\n this.visualBuilderContainer,\n this.resizeObserver\n );\n\n const emptyBlockParents = Array.from(\n document.querySelectorAll(`.${VB_EmptyBlockParentClass}`)\n );\n\n const previousEmptyBlockParents = VisualBuilder\n .VisualBuilderGlobalState.value\n .previousEmptyBlockParents as Element[];\n\n if (!isEqual(emptyBlockParents, previousEmptyBlockParents)) {\n const noMoreEmptyBlockParent =\n previousEmptyBlockParents.filter(\n (x) => !emptyBlockParents.includes(x)\n );\n const newEmptyBlockParent = emptyBlockParents.filter(\n (x) => !previousEmptyBlockParents.includes(x)\n );\n\n removeEmptyBlocks(noMoreEmptyBlockParent);\n await generateEmptyBlocks(newEmptyBlockParent);\n\n VisualBuilder.VisualBuilderGlobalState.value = {\n ...VisualBuilder.VisualBuilderGlobalState.value,\n previousEmptyBlockParents: emptyBlockParents,\n };\n }\n },\n 100,\n { trailing: true }\n )\n );\n\n private threadMutationObserver = new MutationObserver(\n debounce(() => {\n const container = document.querySelector(\n \".visual-builder__container\"\n );\n if (container && threadsPayload) {\n const unrenderedThreads =\n filterUnrenderedThreads(threadsPayload);\n\n if (unrenderedThreads.length > 0) {\n processThreadsBatch(threadsPayload).then(\n (missingThreadIds) => {\n missingThreadIds.forEach(clearThreadStatus);\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n }\n\n threadsPayload = [];\n }\n }, 1000)\n );\n\n constructor() {\n // Handles changes in element positions due to sidebar toggling or window resizing,\n // triggering a redraw of the visual builder\n window.addEventListener(\"resize\", this.resizeEventHandler);\n window.addEventListener(\"scroll\", this.scrollEventHandler);\n initUI({\n resizeObserver: this.resizeObserver,\n });\n\n // Initializing goober for css-in-js\n setup(h);\n\n this.visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n this.overlayWrapper = document.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n this.customCursor = document.querySelector(\".visual-builder__cursor\");\n this.focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const config = Config.get();\n\n if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {\n return;\n }\n\n visualBuilderPostMessage\n ?.send<IVisualBuilderInitEvent>(\"init\", {\n isSSR: config.ssr,\n href: window.location.href,\n })\n .then((data) => {\n const {\n windowType = ILivePreviewWindowType.BUILDER,\n stackDetails,\n collab,\n } = data || {};\n Config.set(\"windowType\", windowType);\n Config.set(\n \"stackDetails.masterLocale\",\n stackDetails?.masterLocale || \"en-us\"\n );\n\n if (collab) {\n Config.set(\"collab.enable\", collab.enable);\n Config.set(\"collab.isFeedbackMode\", collab.isFeedbackMode);\n Config.set(\"collab.inviteMetadata\", collab.inviteMetadata);\n }\n\n if (collab?.payload) {\n threadsPayload = collab?.payload;\n }\n\n addEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n this.threadMutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n });\n\n useHistoryPostMessageEvent();\n useCollab();\n\n if (windowType === ILivePreviewWindowType.BUILDER) {\n addKeyboardShortcuts({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n useScrollToField();\n useHighlightCommentIcon();\n\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_ALL_ENTRIES_IN_CURRENT_PAGE,\n getEntryIdentifiersInCurrentPage\n );\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.SEND_VARIANT_AND_LOCALE\n );\n\n useHideFocusOverlayPostMessageEvent({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n\n // These events are used to sync the data when we made some changes in the entry without invoking live preview module.\n useOnEntryUpdatePostMessageEvent();\n useRecalculateVariantDataCSLPValues();\n useDraftFieldsPostMessageEvent();\n useVariantFieldsPostMessageEvent();\n }\n })\n .catch(() => {\n if (!inIframe()) {\n generateStartEditingButton();\n }\n });\n }\n\n // TODO: write test cases\n destroy = (): void => {\n // Remove event listeners\n window.removeEventListener(\"resize\", this.resizeEventHandler);\n window.removeEventListener(\"scroll\", this.scrollEventHandler);\n\n // Remove custom event listeners\n removeEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n // Disconnect observers\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n this.threadMutationObserver.disconnect();\n\n // Clear global state\n VisualBuilder.VisualBuilderGlobalState.value = {\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n focusFieldReceivedInput: false,\n audienceMode: false,\n locale: \"en-us\",\n variant: null,\n focusElementObserver: null,\n };\n\n // Remove DOM elements\n if (this.visualBuilderContainer) {\n window.document.body.removeChild(this.visualBuilderContainer);\n }\n if (this.customCursor) {\n this.customCursor.remove();\n }\n if (this.overlayWrapper) {\n this.overlayWrapper.remove();\n }\n if (this.focusedToolbar) {\n this.focusedToolbar.remove();\n }\n\n // Nullify references\n this.customCursor = null;\n this.overlayWrapper = null;\n this.visualBuilderContainer = null;\n this.focusedToolbar = null;\n };\n}\n"],"mappings":"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","names":["import_generateThread","initUI","Config","visualBuilderPostMessage"]}
|