@contentstack/live-preview-utils 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +2 -2
  2. package/dist/legacy/compare.cjs +72 -66
  3. package/dist/legacy/compare.cjs.map +1 -1
  4. package/dist/legacy/compare.js +72 -66
  5. package/dist/legacy/compare.js.map +1 -1
  6. package/dist/legacy/contentstack-live-preview-HOC.cjs +1 -1
  7. package/dist/legacy/contentstack-live-preview-HOC.js +1 -1
  8. package/dist/legacy/index.cjs.map +1 -1
  9. package/dist/legacy/index.d.cts +3 -2
  10. package/dist/legacy/index.d.ts +3 -2
  11. package/dist/legacy/index.js.map +1 -1
  12. package/dist/legacy/live-preview.cjs +20 -6
  13. package/dist/legacy/live-preview.cjs.map +1 -1
  14. package/dist/legacy/live-preview.js +20 -6
  15. package/dist/legacy/live-preview.js.map +1 -1
  16. package/dist/legacy/utils/cslpdata.cjs +62 -0
  17. package/dist/legacy/utils/cslpdata.cjs.map +1 -0
  18. package/dist/legacy/utils/cslpdata.d.cts +16 -0
  19. package/dist/legacy/utils/cslpdata.d.ts +16 -0
  20. package/dist/legacy/utils/cslpdata.js +37 -0
  21. package/dist/legacy/utils/cslpdata.js.map +1 -0
  22. package/dist/modern/compare.cjs +72 -66
  23. package/dist/modern/compare.cjs.map +1 -1
  24. package/dist/modern/compare.js +72 -66
  25. package/dist/modern/compare.js.map +1 -1
  26. package/dist/modern/contentstack-live-preview-HOC.cjs +1 -1
  27. package/dist/modern/contentstack-live-preview-HOC.js +1 -1
  28. package/dist/modern/index.cjs.map +1 -1
  29. package/dist/modern/index.d.cts +3 -2
  30. package/dist/modern/index.d.ts +3 -2
  31. package/dist/modern/index.js.map +1 -1
  32. package/dist/modern/live-preview.cjs +20 -6
  33. package/dist/modern/live-preview.cjs.map +1 -1
  34. package/dist/modern/live-preview.js +20 -6
  35. package/dist/modern/live-preview.js.map +1 -1
  36. package/dist/modern/utils/cslpdata.cjs +62 -0
  37. package/dist/modern/utils/cslpdata.cjs.map +1 -0
  38. package/dist/modern/utils/cslpdata.d.cts +16 -0
  39. package/dist/modern/utils/cslpdata.d.ts +16 -0
  40. package/dist/modern/utils/cslpdata.js +37 -0
  41. package/dist/modern/utils/cslpdata.js.map +1 -0
  42. package/package.json +5 -2
package/README.md CHANGED
@@ -15,8 +15,8 @@ npm install @contentstack/live-preview-utils
15
15
  Alternatively, if you want to include the package directly in your website HTML code, use the following command:
16
16
 
17
17
  ```html
18
- <script type='module'>
19
- import ContentstackLivePreview from 'https://esm.sh/@contentstack/live-preview-utils@2.0.3';
18
+ <script type='module' integrity='sha384-lCmcVfWM6NvgMmsDlPZYYJ9MwFk9oDU3WhsJ3KmUJPWa7iKvIuYl+XzTl+cOCuim' crossorigin="anonymous">
19
+ import ContentstackLivePreview from 'https://esm.sh/@contentstack/live-preview-utils@2.0.4';
20
20
 
21
21
  ContentstackLivePreview.init({
22
22
  stackDetails: {
@@ -33,7 +33,6 @@ __export(compare_exports, {
33
33
  handleWebCompare: () => handleWebCompare
34
34
  });
35
35
  module.exports = __toCommonJS(compare_exports);
36
- var import_post_robot = __toESM(require("post-robot"), 1);
37
36
  var import_compare = require("./styles/compare.cjs");
38
37
  var import_compare2 = require("./utils/compare.cjs");
39
38
  var voidElements = /* @__PURE__ */ new Set([
@@ -55,76 +54,83 @@ var voidElements = /* @__PURE__ */ new Set([
55
54
  ]);
56
55
  var LEAF_CSLP_SELECTOR = "[data-cslp]:not(:has([data-cslp]))";
57
56
  function handleWebCompare() {
58
- (0, import_compare.loadCompareGlobalStyle)();
59
- (0, import_compare2.registerCompareElement)();
60
- import_post_robot.default.on("send-current-base-route", async () => {
61
- return { url: window.location.href.split("?")[0] };
62
- });
63
- import_post_robot.default.on("send-cslp-data", async () => {
64
- const elements = Array.from(
65
- document.querySelectorAll(LEAF_CSLP_SELECTOR)
66
- );
67
- const map = {};
68
- for (const element of elements) {
69
- const cslp = element.getAttribute("data-cslp");
70
- if (element.hasAttributes() && voidElements.has(element.tagName.toLowerCase())) {
71
- let attributes = "";
72
- for (const attr of element.attributes) {
73
- attributes += `${attr.name} -> ${attr.value}
57
+ if (typeof window === "undefined" || typeof document === "undefined") {
58
+ return;
59
+ }
60
+ import("post-robot").then((postRobot) => {
61
+ (0, import_compare.loadCompareGlobalStyle)();
62
+ (0, import_compare2.registerCompareElement)();
63
+ postRobot.on("send-current-base-route", async () => {
64
+ return { url: window.location.href.split("?")[0] };
65
+ });
66
+ postRobot.on("send-cslp-data", async () => {
67
+ const elements = Array.from(
68
+ document.querySelectorAll(LEAF_CSLP_SELECTOR)
69
+ );
70
+ const map = {};
71
+ for (const element of elements) {
72
+ const cslp = element.getAttribute("data-cslp");
73
+ if (element.hasAttributes() && voidElements.has(element.tagName.toLowerCase())) {
74
+ let attributes = "";
75
+ for (const attr of element.attributes) {
76
+ attributes += `${attr.name} -> ${attr.value}
74
77
  `;
78
+ }
79
+ map[cslp] = attributes;
80
+ } else {
81
+ map[cslp] = element.innerHTML;
75
82
  }
76
- map[cslp] = attributes;
77
- } else {
78
- map[cslp] = element.innerHTML;
79
83
  }
80
- }
81
- return map;
82
- });
83
- const mergeColors = (className = ".cs-compare--added") => {
84
- const elements = Array.from(document.querySelectorAll(className));
85
- for (let i = 1; i < elements.length; i++) {
86
- const prev = elements[i - 1];
87
- const next = elements[i];
88
- if (prev.nextElementSibling === next)
89
- prev.appendChild(prev.nextSibling);
90
- }
91
- };
92
- import_post_robot.default.on("diff-value", async ({ data }) => {
93
- const { diff, type } = data;
94
- const operation = type === "base" ? "removed" : "added";
95
- const elements = Array.from(
96
- document.querySelectorAll(LEAF_CSLP_SELECTOR)
97
- );
98
- for (const element of elements) {
99
- const path = element.getAttribute("data-cslp");
100
- if (!diff[path])
101
- continue;
102
- if (voidElements.has(element.tagName.toLowerCase())) {
103
- element.classList.add(`cs-compare__void--${operation}`);
104
- } else {
105
- element.innerHTML = diff[path];
84
+ return map;
85
+ });
86
+ const mergeColors = (className = ".cs-compare--added") => {
87
+ const elements = Array.from(document.querySelectorAll(className));
88
+ for (let i = 1; i < elements.length; i++) {
89
+ const prev = elements[i - 1];
90
+ const next = elements[i];
91
+ if (prev.nextElementSibling === next)
92
+ prev.appendChild(prev.nextSibling);
106
93
  }
107
- }
108
- mergeColors(`.cs-compare--${operation}`);
109
- });
110
- import_post_robot.default.on("remove-diff", async () => {
111
- const elements = Array.from(document.querySelectorAll("cs-compare"));
112
- for (const element of elements) {
113
- const parent = element.parentElement;
114
- while (element.firstChild) {
115
- parent.insertBefore(element.firstChild, element);
94
+ };
95
+ postRobot.on("diff-value", async ({ data }) => {
96
+ const { diff, type } = data;
97
+ const operation = type === "base" ? "removed" : "added";
98
+ const elements = Array.from(
99
+ document.querySelectorAll(LEAF_CSLP_SELECTOR)
100
+ );
101
+ for (const element of elements) {
102
+ const path = element.getAttribute("data-cslp");
103
+ if (!diff[path])
104
+ continue;
105
+ if (voidElements.has(element.tagName.toLowerCase())) {
106
+ element.classList.add(`cs-compare__void--${operation}`);
107
+ } else {
108
+ element.innerHTML = diff[path];
109
+ }
110
+ }
111
+ mergeColors(`.cs-compare--${operation}`);
112
+ });
113
+ postRobot.on("remove-diff", async () => {
114
+ const elements = Array.from(
115
+ document.querySelectorAll("cs-compare")
116
+ );
117
+ for (const element of elements) {
118
+ const parent = element.parentElement;
119
+ while (element.firstChild) {
120
+ parent.insertBefore(element.firstChild, element);
121
+ }
122
+ parent.removeChild(element);
123
+ }
124
+ const voidElements2 = Array.from(
125
+ document.querySelectorAll(
126
+ ".cs-compare__void--added, .cs-compare__void--removed"
127
+ )
128
+ );
129
+ for (const element of voidElements2) {
130
+ element.classList.remove("cs-compare__void--added");
131
+ element.classList.remove("cs-compare__void--removed");
116
132
  }
117
- parent.removeChild(element);
118
- }
119
- const voidElements2 = Array.from(
120
- document.querySelectorAll(
121
- ".cs-compare__void--added, .cs-compare__void--removed"
122
- )
123
- );
124
- for (const element of voidElements2) {
125
- element.classList.remove("cs-compare__void--added");
126
- element.classList.remove("cs-compare__void--removed");
127
- }
133
+ });
128
134
  });
129
135
  }
130
136
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/compare.ts"],"sourcesContent":["import postRobot from \"post-robot\";\nimport { loadCompareGlobalStyle } from \"./styles/compare\";\nimport { registerCompareElement } from \"./utils/compare\";\n\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst LEAF_CSLP_SELECTOR = \"[data-cslp]:not(:has([data-cslp]))\";\n\nexport function handleWebCompare() {\n loadCompareGlobalStyle();\n registerCompareElement();\n postRobot.on(\"send-current-base-route\", async () => {\n return { url: window.location.href.split(\"?\")[0] };\n });\n\n postRobot.on(\"send-cslp-data\", async () => {\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n const map: Record<string, string> = {};\n for (const element of elements) {\n const cslp = element.getAttribute(\"data-cslp\")!;\n if (\n element.hasAttributes() &&\n voidElements.has(element.tagName.toLowerCase())\n ) {\n let attributes = \"\";\n for (const attr of element.attributes) {\n attributes += `${attr.name} -> ${attr.value}\\n`;\n }\n map[cslp] = attributes;\n } else {\n map[cslp] = element.innerHTML;\n }\n }\n return map;\n });\n\n const mergeColors = (className = \".cs-compare--added\") => {\n const elements = Array.from(document.querySelectorAll(className));\n for (let i = 1; i < elements.length; i++) {\n const prev = elements[i - 1];\n const next = elements[i];\n if (prev.nextElementSibling === next)\n prev.appendChild(prev.nextSibling!);\n }\n };\n\n postRobot.on(\"diff-value\", async ({ data }) => {\n const { diff, type } = data;\n const operation = type === \"base\" ? \"removed\" : \"added\";\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n for (const element of elements) {\n const path = element.getAttribute(\"data-cslp\")!;\n if (!diff[path]) continue;\n\n if (voidElements.has(element.tagName.toLowerCase())) {\n element.classList.add(`cs-compare__void--${operation}`);\n } else {\n element.innerHTML = diff[path];\n }\n }\n\n mergeColors(`.cs-compare--${operation}`);\n });\n\n postRobot.on(\"remove-diff\", async () => {\n // unwrap the cs-compare tags\n const elements = Array.from(document.querySelectorAll(\"cs-compare\"));\n for (const element of elements) {\n const parent = element.parentElement!;\n while (element.firstChild) {\n parent.insertBefore(element.firstChild, element);\n }\n parent.removeChild(element);\n }\n // remove classes cs-compare__void--added and cs-compare__void--removed\n const voidElements = Array.from(\n document.querySelectorAll(\n \".cs-compare__void--added, .cs-compare__void--removed\"\n )\n );\n for (const element of voidElements) {\n element.classList.remove(\"cs-compare__void--added\");\n element.classList.remove(\"cs-compare__void--removed\");\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAsB;AACtB,qBAAuC;AACvC,IAAAA,kBAAuC;AAEvC,IAAM,eAAe,oBAAI,IAAI;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAED,IAAM,qBAAqB;AAEpB,SAAS,mBAAmB;AAC/B,6CAAuB;AACvB,8CAAuB;AACvB,oBAAAC,QAAU,GAAG,2BAA2B,YAAY;AAChD,WAAO,EAAE,KAAK,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE;AAAA,EACrD,CAAC;AAED,oBAAAA,QAAU,GAAG,kBAAkB,YAAY;AACvC,UAAM,WAAW,MAAM;AAAA,MACnB,SAAS,iBAAiB,kBAAkB;AAAA,IAChD;AACA,UAAM,MAA8B,CAAC;AACrC,eAAW,WAAW,UAAU;AAC5B,YAAM,OAAO,QAAQ,aAAa,WAAW;AAC7C,UACI,QAAQ,cAAc,KACtB,aAAa,IAAI,QAAQ,QAAQ,YAAY,CAAC,GAChD;AACE,YAAI,aAAa;AACjB,mBAAW,QAAQ,QAAQ,YAAY;AACnC,wBAAc,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA;AAAA,QAC/C;AACA,YAAI,IAAI,IAAI;AAAA,MAChB,OAAO;AACH,YAAI,IAAI,IAAI,QAAQ;AAAA,MACxB;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AAED,QAAM,cAAc,CAAC,YAAY,yBAAyB;AACtD,UAAM,WAAW,MAAM,KAAK,SAAS,iBAAiB,SAAS,CAAC;AAChE,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,YAAM,OAAO,SAAS,IAAI,CAAC;AAC3B,YAAM,OAAO,SAAS,CAAC;AACvB,UAAI,KAAK,uBAAuB;AAC5B,aAAK,YAAY,KAAK,WAAY;AAAA,IAC1C;AAAA,EACJ;AAEA,oBAAAA,QAAU,GAAG,cAAc,OAAO,EAAE,KAAK,MAAM;AAC3C,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,YAAY,SAAS,SAAS,YAAY;AAChD,UAAM,WAAW,MAAM;AAAA,MACnB,SAAS,iBAAiB,kBAAkB;AAAA,IAChD;AACA,eAAW,WAAW,UAAU;AAC5B,YAAM,OAAO,QAAQ,aAAa,WAAW;AAC7C,UAAI,CAAC,KAAK,IAAI;AAAG;AAEjB,UAAI,aAAa,IAAI,QAAQ,QAAQ,YAAY,CAAC,GAAG;AACjD,gBAAQ,UAAU,IAAI,qBAAqB,SAAS,EAAE;AAAA,MAC1D,OAAO;AACH,gBAAQ,YAAY,KAAK,IAAI;AAAA,MACjC;AAAA,IACJ;AAEA,gBAAY,gBAAgB,SAAS,EAAE;AAAA,EAC3C,CAAC;AAED,oBAAAA,QAAU,GAAG,eAAe,YAAY;AAEpC,UAAM,WAAW,MAAM,KAAK,SAAS,iBAAiB,YAAY,CAAC;AACnE,eAAW,WAAW,UAAU;AAC5B,YAAM,SAAS,QAAQ;AACvB,aAAO,QAAQ,YAAY;AACvB,eAAO,aAAa,QAAQ,YAAY,OAAO;AAAA,MACnD;AACA,aAAO,YAAY,OAAO;AAAA,IAC9B;AAEA,UAAMC,gBAAe,MAAM;AAAA,MACvB,SAAS;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AACA,eAAW,WAAWA,eAAc;AAChC,cAAQ,UAAU,OAAO,yBAAyB;AAClD,cAAQ,UAAU,OAAO,2BAA2B;AAAA,IACxD;AAAA,EACJ,CAAC;AACL;","names":["import_compare","postRobot","voidElements"]}
1
+ {"version":3,"sources":["../../src/compare.ts"],"sourcesContent":["import { loadCompareGlobalStyle } from \"./styles/compare\";\nimport { registerCompareElement } from \"./utils/compare\";\n\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst LEAF_CSLP_SELECTOR = \"[data-cslp]:not(:has([data-cslp]))\";\n\nexport function handleWebCompare() {\n // Check if window and document are available\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n // Server-side, don't execute client-specific logic\n return;\n }\n\n // Client-side logic\n import(\"post-robot\").then((postRobot) => {\n loadCompareGlobalStyle();\n registerCompareElement();\n\n postRobot.on(\"send-current-base-route\", async () => {\n return { url: window.location.href.split(\"?\")[0] };\n });\n\n postRobot.on(\"send-cslp-data\", async () => {\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n const map: Record<string, string> = {};\n for (const element of elements) {\n const cslp = element.getAttribute(\"data-cslp\")!;\n if (\n element.hasAttributes() &&\n voidElements.has(element.tagName.toLowerCase())\n ) {\n let attributes = \"\";\n for (const attr of element.attributes) {\n attributes += `${attr.name} -> ${attr.value}\\n`;\n }\n map[cslp] = attributes;\n } else {\n map[cslp] = element.innerHTML;\n }\n }\n return map;\n });\n\n const mergeColors = (className = \".cs-compare--added\") => {\n const elements = Array.from(document.querySelectorAll(className));\n for (let i = 1; i < elements.length; i++) {\n const prev = elements[i - 1];\n const next = elements[i];\n if (prev.nextElementSibling === next)\n prev.appendChild(prev.nextSibling!);\n }\n };\n\n postRobot.on(\"diff-value\", async ({ data }) => {\n const { diff, type } = data;\n const operation = type === \"base\" ? \"removed\" : \"added\";\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n for (const element of elements) {\n const path = element.getAttribute(\"data-cslp\")!;\n if (!diff[path]) continue;\n\n if (voidElements.has(element.tagName.toLowerCase())) {\n element.classList.add(`cs-compare__void--${operation}`);\n } else {\n element.innerHTML = diff[path];\n }\n }\n\n mergeColors(`.cs-compare--${operation}`);\n });\n\n postRobot.on(\"remove-diff\", async () => {\n // unwrap the cs-compare tags\n const elements = Array.from(\n document.querySelectorAll(\"cs-compare\")\n );\n for (const element of elements) {\n const parent = element.parentElement!;\n while (element.firstChild) {\n parent.insertBefore(element.firstChild, element);\n }\n parent.removeChild(element);\n }\n // remove classes cs-compare__void--added and cs-compare__void--removed\n const voidElements = Array.from(\n document.querySelectorAll(\n \".cs-compare__void--added, .cs-compare__void--removed\"\n )\n );\n for (const element of voidElements) {\n element.classList.remove(\"cs-compare__void--added\");\n element.classList.remove(\"cs-compare__void--removed\");\n }\n });\n });\n}\n"],"mappings":"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","names":["import_compare","voidElements"]}
@@ -1,5 +1,4 @@
1
1
  // src/compare.ts
2
- import postRobot from "post-robot";
3
2
  import { loadCompareGlobalStyle } from "./styles/compare.js";
4
3
  import { registerCompareElement } from "./utils/compare.js";
5
4
  var voidElements = /* @__PURE__ */ new Set([
@@ -21,76 +20,83 @@ var voidElements = /* @__PURE__ */ new Set([
21
20
  ]);
22
21
  var LEAF_CSLP_SELECTOR = "[data-cslp]:not(:has([data-cslp]))";
23
22
  function handleWebCompare() {
24
- loadCompareGlobalStyle();
25
- registerCompareElement();
26
- postRobot.on("send-current-base-route", async () => {
27
- return { url: window.location.href.split("?")[0] };
28
- });
29
- postRobot.on("send-cslp-data", async () => {
30
- const elements = Array.from(
31
- document.querySelectorAll(LEAF_CSLP_SELECTOR)
32
- );
33
- const map = {};
34
- for (const element of elements) {
35
- const cslp = element.getAttribute("data-cslp");
36
- if (element.hasAttributes() && voidElements.has(element.tagName.toLowerCase())) {
37
- let attributes = "";
38
- for (const attr of element.attributes) {
39
- attributes += `${attr.name} -> ${attr.value}
23
+ if (typeof window === "undefined" || typeof document === "undefined") {
24
+ return;
25
+ }
26
+ import("post-robot").then((postRobot) => {
27
+ loadCompareGlobalStyle();
28
+ registerCompareElement();
29
+ postRobot.on("send-current-base-route", async () => {
30
+ return { url: window.location.href.split("?")[0] };
31
+ });
32
+ postRobot.on("send-cslp-data", async () => {
33
+ const elements = Array.from(
34
+ document.querySelectorAll(LEAF_CSLP_SELECTOR)
35
+ );
36
+ const map = {};
37
+ for (const element of elements) {
38
+ const cslp = element.getAttribute("data-cslp");
39
+ if (element.hasAttributes() && voidElements.has(element.tagName.toLowerCase())) {
40
+ let attributes = "";
41
+ for (const attr of element.attributes) {
42
+ attributes += `${attr.name} -> ${attr.value}
40
43
  `;
44
+ }
45
+ map[cslp] = attributes;
46
+ } else {
47
+ map[cslp] = element.innerHTML;
41
48
  }
42
- map[cslp] = attributes;
43
- } else {
44
- map[cslp] = element.innerHTML;
45
49
  }
46
- }
47
- return map;
48
- });
49
- const mergeColors = (className = ".cs-compare--added") => {
50
- const elements = Array.from(document.querySelectorAll(className));
51
- for (let i = 1; i < elements.length; i++) {
52
- const prev = elements[i - 1];
53
- const next = elements[i];
54
- if (prev.nextElementSibling === next)
55
- prev.appendChild(prev.nextSibling);
56
- }
57
- };
58
- postRobot.on("diff-value", async ({ data }) => {
59
- const { diff, type } = data;
60
- const operation = type === "base" ? "removed" : "added";
61
- const elements = Array.from(
62
- document.querySelectorAll(LEAF_CSLP_SELECTOR)
63
- );
64
- for (const element of elements) {
65
- const path = element.getAttribute("data-cslp");
66
- if (!diff[path])
67
- continue;
68
- if (voidElements.has(element.tagName.toLowerCase())) {
69
- element.classList.add(`cs-compare__void--${operation}`);
70
- } else {
71
- element.innerHTML = diff[path];
50
+ return map;
51
+ });
52
+ const mergeColors = (className = ".cs-compare--added") => {
53
+ const elements = Array.from(document.querySelectorAll(className));
54
+ for (let i = 1; i < elements.length; i++) {
55
+ const prev = elements[i - 1];
56
+ const next = elements[i];
57
+ if (prev.nextElementSibling === next)
58
+ prev.appendChild(prev.nextSibling);
72
59
  }
73
- }
74
- mergeColors(`.cs-compare--${operation}`);
75
- });
76
- postRobot.on("remove-diff", async () => {
77
- const elements = Array.from(document.querySelectorAll("cs-compare"));
78
- for (const element of elements) {
79
- const parent = element.parentElement;
80
- while (element.firstChild) {
81
- parent.insertBefore(element.firstChild, element);
60
+ };
61
+ postRobot.on("diff-value", async ({ data }) => {
62
+ const { diff, type } = data;
63
+ const operation = type === "base" ? "removed" : "added";
64
+ const elements = Array.from(
65
+ document.querySelectorAll(LEAF_CSLP_SELECTOR)
66
+ );
67
+ for (const element of elements) {
68
+ const path = element.getAttribute("data-cslp");
69
+ if (!diff[path])
70
+ continue;
71
+ if (voidElements.has(element.tagName.toLowerCase())) {
72
+ element.classList.add(`cs-compare__void--${operation}`);
73
+ } else {
74
+ element.innerHTML = diff[path];
75
+ }
76
+ }
77
+ mergeColors(`.cs-compare--${operation}`);
78
+ });
79
+ postRobot.on("remove-diff", async () => {
80
+ const elements = Array.from(
81
+ document.querySelectorAll("cs-compare")
82
+ );
83
+ for (const element of elements) {
84
+ const parent = element.parentElement;
85
+ while (element.firstChild) {
86
+ parent.insertBefore(element.firstChild, element);
87
+ }
88
+ parent.removeChild(element);
89
+ }
90
+ const voidElements2 = Array.from(
91
+ document.querySelectorAll(
92
+ ".cs-compare__void--added, .cs-compare__void--removed"
93
+ )
94
+ );
95
+ for (const element of voidElements2) {
96
+ element.classList.remove("cs-compare__void--added");
97
+ element.classList.remove("cs-compare__void--removed");
82
98
  }
83
- parent.removeChild(element);
84
- }
85
- const voidElements2 = Array.from(
86
- document.querySelectorAll(
87
- ".cs-compare__void--added, .cs-compare__void--removed"
88
- )
89
- );
90
- for (const element of voidElements2) {
91
- element.classList.remove("cs-compare__void--added");
92
- element.classList.remove("cs-compare__void--removed");
93
- }
99
+ });
94
100
  });
95
101
  }
96
102
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/compare.ts"],"sourcesContent":["import postRobot from \"post-robot\";\nimport { loadCompareGlobalStyle } from \"./styles/compare\";\nimport { registerCompareElement } from \"./utils/compare\";\n\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst LEAF_CSLP_SELECTOR = \"[data-cslp]:not(:has([data-cslp]))\";\n\nexport function handleWebCompare() {\n loadCompareGlobalStyle();\n registerCompareElement();\n postRobot.on(\"send-current-base-route\", async () => {\n return { url: window.location.href.split(\"?\")[0] };\n });\n\n postRobot.on(\"send-cslp-data\", async () => {\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n const map: Record<string, string> = {};\n for (const element of elements) {\n const cslp = element.getAttribute(\"data-cslp\")!;\n if (\n element.hasAttributes() &&\n voidElements.has(element.tagName.toLowerCase())\n ) {\n let attributes = \"\";\n for (const attr of element.attributes) {\n attributes += `${attr.name} -> ${attr.value}\\n`;\n }\n map[cslp] = attributes;\n } else {\n map[cslp] = element.innerHTML;\n }\n }\n return map;\n });\n\n const mergeColors = (className = \".cs-compare--added\") => {\n const elements = Array.from(document.querySelectorAll(className));\n for (let i = 1; i < elements.length; i++) {\n const prev = elements[i - 1];\n const next = elements[i];\n if (prev.nextElementSibling === next)\n prev.appendChild(prev.nextSibling!);\n }\n };\n\n postRobot.on(\"diff-value\", async ({ data }) => {\n const { diff, type } = data;\n const operation = type === \"base\" ? \"removed\" : \"added\";\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n for (const element of elements) {\n const path = element.getAttribute(\"data-cslp\")!;\n if (!diff[path]) continue;\n\n if (voidElements.has(element.tagName.toLowerCase())) {\n element.classList.add(`cs-compare__void--${operation}`);\n } else {\n element.innerHTML = diff[path];\n }\n }\n\n mergeColors(`.cs-compare--${operation}`);\n });\n\n postRobot.on(\"remove-diff\", async () => {\n // unwrap the cs-compare tags\n const elements = Array.from(document.querySelectorAll(\"cs-compare\"));\n for (const element of elements) {\n const parent = element.parentElement!;\n while (element.firstChild) {\n parent.insertBefore(element.firstChild, element);\n }\n parent.removeChild(element);\n }\n // remove classes cs-compare__void--added and cs-compare__void--removed\n const voidElements = Array.from(\n document.querySelectorAll(\n \".cs-compare__void--added, .cs-compare__void--removed\"\n )\n );\n for (const element of voidElements) {\n element.classList.remove(\"cs-compare__void--added\");\n element.classList.remove(\"cs-compare__void--removed\");\n }\n });\n}\n"],"mappings":";AAAA,OAAO,eAAe;AACtB,SAAS,8BAA8B;AACvC,SAAS,8BAA8B;AAEvC,IAAM,eAAe,oBAAI,IAAI;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAED,IAAM,qBAAqB;AAEpB,SAAS,mBAAmB;AAC/B,yBAAuB;AACvB,yBAAuB;AACvB,YAAU,GAAG,2BAA2B,YAAY;AAChD,WAAO,EAAE,KAAK,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE;AAAA,EACrD,CAAC;AAED,YAAU,GAAG,kBAAkB,YAAY;AACvC,UAAM,WAAW,MAAM;AAAA,MACnB,SAAS,iBAAiB,kBAAkB;AAAA,IAChD;AACA,UAAM,MAA8B,CAAC;AACrC,eAAW,WAAW,UAAU;AAC5B,YAAM,OAAO,QAAQ,aAAa,WAAW;AAC7C,UACI,QAAQ,cAAc,KACtB,aAAa,IAAI,QAAQ,QAAQ,YAAY,CAAC,GAChD;AACE,YAAI,aAAa;AACjB,mBAAW,QAAQ,QAAQ,YAAY;AACnC,wBAAc,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA;AAAA,QAC/C;AACA,YAAI,IAAI,IAAI;AAAA,MAChB,OAAO;AACH,YAAI,IAAI,IAAI,QAAQ;AAAA,MACxB;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AAED,QAAM,cAAc,CAAC,YAAY,yBAAyB;AACtD,UAAM,WAAW,MAAM,KAAK,SAAS,iBAAiB,SAAS,CAAC;AAChE,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,YAAM,OAAO,SAAS,IAAI,CAAC;AAC3B,YAAM,OAAO,SAAS,CAAC;AACvB,UAAI,KAAK,uBAAuB;AAC5B,aAAK,YAAY,KAAK,WAAY;AAAA,IAC1C;AAAA,EACJ;AAEA,YAAU,GAAG,cAAc,OAAO,EAAE,KAAK,MAAM;AAC3C,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,YAAY,SAAS,SAAS,YAAY;AAChD,UAAM,WAAW,MAAM;AAAA,MACnB,SAAS,iBAAiB,kBAAkB;AAAA,IAChD;AACA,eAAW,WAAW,UAAU;AAC5B,YAAM,OAAO,QAAQ,aAAa,WAAW;AAC7C,UAAI,CAAC,KAAK,IAAI;AAAG;AAEjB,UAAI,aAAa,IAAI,QAAQ,QAAQ,YAAY,CAAC,GAAG;AACjD,gBAAQ,UAAU,IAAI,qBAAqB,SAAS,EAAE;AAAA,MAC1D,OAAO;AACH,gBAAQ,YAAY,KAAK,IAAI;AAAA,MACjC;AAAA,IACJ;AAEA,gBAAY,gBAAgB,SAAS,EAAE;AAAA,EAC3C,CAAC;AAED,YAAU,GAAG,eAAe,YAAY;AAEpC,UAAM,WAAW,MAAM,KAAK,SAAS,iBAAiB,YAAY,CAAC;AACnE,eAAW,WAAW,UAAU;AAC5B,YAAM,SAAS,QAAQ;AACvB,aAAO,QAAQ,YAAY;AACvB,eAAO,aAAa,QAAQ,YAAY,OAAO;AAAA,MACnD;AACA,aAAO,YAAY,OAAO;AAAA,IAC9B;AAEA,UAAMA,gBAAe,MAAM;AAAA,MACvB,SAAS;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AACA,eAAW,WAAWA,eAAc;AAChC,cAAQ,UAAU,OAAO,yBAAyB;AAClD,cAAQ,UAAU,OAAO,2BAA2B;AAAA,IACxD;AAAA,EACJ,CAAC;AACL;","names":["voidElements"]}
1
+ {"version":3,"sources":["../../src/compare.ts"],"sourcesContent":["import { loadCompareGlobalStyle } from \"./styles/compare\";\nimport { registerCompareElement } from \"./utils/compare\";\n\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst LEAF_CSLP_SELECTOR = \"[data-cslp]:not(:has([data-cslp]))\";\n\nexport function handleWebCompare() {\n // Check if window and document are available\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n // Server-side, don't execute client-specific logic\n return;\n }\n\n // Client-side logic\n import(\"post-robot\").then((postRobot) => {\n loadCompareGlobalStyle();\n registerCompareElement();\n\n postRobot.on(\"send-current-base-route\", async () => {\n return { url: window.location.href.split(\"?\")[0] };\n });\n\n postRobot.on(\"send-cslp-data\", async () => {\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n const map: Record<string, string> = {};\n for (const element of elements) {\n const cslp = element.getAttribute(\"data-cslp\")!;\n if (\n element.hasAttributes() &&\n voidElements.has(element.tagName.toLowerCase())\n ) {\n let attributes = \"\";\n for (const attr of element.attributes) {\n attributes += `${attr.name} -> ${attr.value}\\n`;\n }\n map[cslp] = attributes;\n } else {\n map[cslp] = element.innerHTML;\n }\n }\n return map;\n });\n\n const mergeColors = (className = \".cs-compare--added\") => {\n const elements = Array.from(document.querySelectorAll(className));\n for (let i = 1; i < elements.length; i++) {\n const prev = elements[i - 1];\n const next = elements[i];\n if (prev.nextElementSibling === next)\n prev.appendChild(prev.nextSibling!);\n }\n };\n\n postRobot.on(\"diff-value\", async ({ data }) => {\n const { diff, type } = data;\n const operation = type === \"base\" ? \"removed\" : \"added\";\n const elements = Array.from(\n document.querySelectorAll(LEAF_CSLP_SELECTOR)\n );\n for (const element of elements) {\n const path = element.getAttribute(\"data-cslp\")!;\n if (!diff[path]) continue;\n\n if (voidElements.has(element.tagName.toLowerCase())) {\n element.classList.add(`cs-compare__void--${operation}`);\n } else {\n element.innerHTML = diff[path];\n }\n }\n\n mergeColors(`.cs-compare--${operation}`);\n });\n\n postRobot.on(\"remove-diff\", async () => {\n // unwrap the cs-compare tags\n const elements = Array.from(\n document.querySelectorAll(\"cs-compare\")\n );\n for (const element of elements) {\n const parent = element.parentElement!;\n while (element.firstChild) {\n parent.insertBefore(element.firstChild, element);\n }\n parent.removeChild(element);\n }\n // remove classes cs-compare__void--added and cs-compare__void--removed\n const voidElements = Array.from(\n document.querySelectorAll(\n \".cs-compare__void--added, .cs-compare__void--removed\"\n )\n );\n for (const element of voidElements) {\n element.classList.remove(\"cs-compare__void--added\");\n element.classList.remove(\"cs-compare__void--removed\");\n }\n });\n });\n}\n"],"mappings":"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","names":["voidElements"]}
@@ -193,7 +193,7 @@ var ContentstackLivePreview = {
193
193
  }
194
194
  },
195
195
  getSdkVersion() {
196
- return "2.0.3";
196
+ return "2.0.4";
197
197
  }
198
198
  };
199
199
  var contentstack_live_preview_HOC_default = ContentstackLivePreview;
@@ -159,7 +159,7 @@ var ContentstackLivePreview = {
159
159
  }
160
160
  },
161
161
  getSdkVersion() {
162
- return "2.0.3";
162
+ return "2.0.4";
163
163
  }
164
164
  };
165
165
  var contentstack_live_preview_HOC_default = ContentstackLivePreview;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import ContentstackLivePreviewHOC, {\n ICSLivePreview,\n} from \"./contentstack-live-preview-HOC\";\n\nconst LightLivePreviewHoC = {\n init() {},\n onLiveEdit() {},\n onEntryChange(callback: () => void) {\n return callback();\n },\n get hash(): string {\n return \"\";\n },\n setConfigFromParams() {},\n};\n\nexport const ContentstackLivePreview =\n process.env.PURGE_PREVIEW_SDK || process.env.REACT_APP_PURGE_PREVIEW_SDK\n ? (LightLivePreviewHoC as unknown as ICSLivePreview)\n : ContentstackLivePreviewHOC;\n\nexport default ContentstackLivePreview;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2CAEO;AAEP,IAAM,sBAAsB;AAAA,EACxB,OAAO;AAAA,EAAC;AAAA,EACR,aAAa;AAAA,EAAC;AAAA,EACd,cAAc,UAAsB;AAChC,WAAO,SAAS;AAAA,EACpB;AAAA,EACA,IAAI,OAAe;AACf,WAAO;AAAA,EACX;AAAA,EACA,sBAAsB;AAAA,EAAC;AAC3B;AAEO,IAAM,0BACT,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,8BACtC,sBACD,qCAAAA;AAEV,IAAO,cAAQ;","names":["ContentstackLivePreviewHOC"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import ContentstackLivePreviewHOC, {\n ICSLivePreview,\n} from \"./contentstack-live-preview-HOC\";\n\nimport { IStackSdk as ExternalStackSdkType } from \"./utils/types\";\nexport type IStackSdk = ExternalStackSdkType;\n\nconst LightLivePreviewHoC = {\n init() {},\n onLiveEdit() {},\n onEntryChange(callback: () => void) {\n return callback();\n },\n get hash(): string {\n return \"\";\n },\n setConfigFromParams() {},\n};\n\nexport const ContentstackLivePreview =\n process.env.PURGE_PREVIEW_SDK || process.env.REACT_APP_PURGE_PREVIEW_SDK\n ? (LightLivePreviewHoC as unknown as ICSLivePreview)\n : ContentstackLivePreviewHOC;\n\nexport default ContentstackLivePreview;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2CAEO;AAKP,IAAM,sBAAsB;AAAA,EACxB,OAAO;AAAA,EAAC;AAAA,EACR,aAAa;AAAA,EAAC;AAAA,EACd,cAAc,UAAsB;AAChC,WAAO,SAAS;AAAA,EACpB;AAAA,EACA,IAAI,OAAe;AACf,WAAO;AAAA,EACX;AAAA,EACA,sBAAsB;AAAA,EAAC;AAC3B;AAEO,IAAM,0BACT,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,8BACtC,sBACD,qCAAAA;AAEV,IAAO,cAAQ;","names":["ContentstackLivePreviewHOC"]}
@@ -1,7 +1,8 @@
1
1
  import { ICSLivePreview } from './contentstack-live-preview-HOC.cjs';
2
- import './utils/types.cjs';
2
+ import { IStackSdk as IStackSdk$1 } from './utils/types.cjs';
3
3
  import './live-preview.cjs';
4
4
 
5
+ type IStackSdk = IStackSdk$1;
5
6
  declare const ContentstackLivePreview: ICSLivePreview;
6
7
 
7
- export { ContentstackLivePreview, ContentstackLivePreview as default };
8
+ export { ContentstackLivePreview, type IStackSdk, ContentstackLivePreview as default };
@@ -1,7 +1,8 @@
1
1
  import { ICSLivePreview } from './contentstack-live-preview-HOC.js';
2
- import './utils/types.js';
2
+ import { IStackSdk as IStackSdk$1 } from './utils/types.js';
3
3
  import './live-preview.js';
4
4
 
5
+ type IStackSdk = IStackSdk$1;
5
6
  declare const ContentstackLivePreview: ICSLivePreview;
6
7
 
7
- export { ContentstackLivePreview, ContentstackLivePreview as default };
8
+ export { ContentstackLivePreview, type IStackSdk, ContentstackLivePreview as default };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import ContentstackLivePreviewHOC, {\n ICSLivePreview,\n} from \"./contentstack-live-preview-HOC\";\n\nconst LightLivePreviewHoC = {\n init() {},\n onLiveEdit() {},\n onEntryChange(callback: () => void) {\n return callback();\n },\n get hash(): string {\n return \"\";\n },\n setConfigFromParams() {},\n};\n\nexport const ContentstackLivePreview =\n process.env.PURGE_PREVIEW_SDK || process.env.REACT_APP_PURGE_PREVIEW_SDK\n ? (LightLivePreviewHoC as unknown as ICSLivePreview)\n : ContentstackLivePreviewHOC;\n\nexport default ContentstackLivePreview;\n"],"mappings":";AAAA,OAAO,gCAEA;AAEP,IAAM,sBAAsB;AAAA,EACxB,OAAO;AAAA,EAAC;AAAA,EACR,aAAa;AAAA,EAAC;AAAA,EACd,cAAc,UAAsB;AAChC,WAAO,SAAS;AAAA,EACpB;AAAA,EACA,IAAI,OAAe;AACf,WAAO;AAAA,EACX;AAAA,EACA,sBAAsB;AAAA,EAAC;AAC3B;AAEO,IAAM,0BACT,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,8BACtC,sBACD;AAEV,IAAO,cAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import ContentstackLivePreviewHOC, {\n ICSLivePreview,\n} from \"./contentstack-live-preview-HOC\";\n\nimport { IStackSdk as ExternalStackSdkType } from \"./utils/types\";\nexport type IStackSdk = ExternalStackSdkType;\n\nconst LightLivePreviewHoC = {\n init() {},\n onLiveEdit() {},\n onEntryChange(callback: () => void) {\n return callback();\n },\n get hash(): string {\n return \"\";\n },\n setConfigFromParams() {},\n};\n\nexport const ContentstackLivePreview =\n process.env.PURGE_PREVIEW_SDK || process.env.REACT_APP_PURGE_PREVIEW_SDK\n ? (LightLivePreviewHoC as unknown as ICSLivePreview)\n : ContentstackLivePreviewHOC;\n\nexport default ContentstackLivePreview;\n"],"mappings":";AAAA,OAAO,gCAEA;AAKP,IAAM,sBAAsB;AAAA,EACxB,OAAO;AAAA,EAAC;AAAA,EACR,aAAa;AAAA,EAAC;AAAA,EACd,cAAc,UAAsB;AAChC,WAAO,SAAS;AAAA,EACpB;AAAA,EACA,IAAI,OAAe;AACf,WAAO;AAAA,EACX;AAAA,EACA,sBAAsB;AAAA,EAAC;AAC3B;AAEO,IAAM,0BACT,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,8BACtC,sBACD;AAEV,IAAO,cAAQ;","names":[]}
@@ -27,6 +27,7 @@ var import_utils = require("./utils/index.cjs");
27
27
  var import_public_logger = require("./utils/public-logger.cjs");
28
28
  var import_handleUserConfig = require("./utils/handleUserConfig.cjs");
29
29
  var import_defaults = require("./utils/defaults.cjs");
30
+ var import_cslpdata = require("./utils/cslpdata.cjs");
30
31
  var import_live_preview = require("./styles/live_preview.cjs");
31
32
  var LivePreview = class {
32
33
  constructor(initData = import_defaults.userInitData) {
@@ -250,7 +251,7 @@ var LivePreview = class {
250
251
  this.currentElementBesideTooltip = null;
251
252
  this.tooltip.style.top = "-100%";
252
253
  }
253
- generateRedirectUrl(content_type_uid, locale = "en-us", entry_uid, preview_field) {
254
+ generateRedirectUrl(content_type_uid, locale = "en-us", entry_uid, variant, preview_field) {
254
255
  if (!this.config.stackDetails.apiKey) {
255
256
  throw `To use edit tags, you must provide the stack API key. Specify the API key while initializing the Live Preview SDK.
256
257
 
@@ -278,7 +279,12 @@ var LivePreview = class {
278
279
  const port = String(this.config.clientUrlParams.port);
279
280
  const environment = String(this.config.stackDetails.environment);
280
281
  const branch = String(this.config.stackDetails.branch || "main");
281
- const urlHash = `!/stack/${this.config.stackDetails.apiKey}/content-type/${content_type_uid}/${locale ?? "en-us"}/entry/${entry_uid}/edit`;
282
+ let urlHash = `!/stack/${this.config.stackDetails.apiKey}/content-type/${content_type_uid}/${locale ?? "en-us"}/entry/${entry_uid}`;
283
+ if (variant) {
284
+ urlHash += `/variant/${variant}/edit`;
285
+ } else {
286
+ urlHash += `/edit`;
287
+ }
282
288
  const url = new URL(`${protocol}://${host}`);
283
289
  url.port = port;
284
290
  url.hash = urlHash;
@@ -295,16 +301,23 @@ var LivePreview = class {
295
301
  return;
296
302
  const cslpTag = this.tooltip.getAttribute("current-data-cslp");
297
303
  if (cslpTag) {
298
- const [content_type_uid, entry_uid, locale, ...field] = cslpTag.split(".");
304
+ const {
305
+ content_type_uid,
306
+ entry_uid,
307
+ locale,
308
+ variant,
309
+ fieldPath: field
310
+ } = (0, import_cslpdata.extractDetailsFromCslp)(cslpTag);
299
311
  if (window.location !== window.parent.location) {
300
312
  window.parent.postMessage(
301
313
  {
302
314
  from: "live-preview",
303
315
  type: "scroll",
304
316
  data: {
305
- field: field.join("."),
317
+ field,
306
318
  content_type_uid,
307
319
  entry_uid,
320
+ variant,
308
321
  locale
309
322
  }
310
323
  },
@@ -316,7 +329,8 @@ var LivePreview = class {
316
329
  content_type_uid,
317
330
  locale,
318
331
  entry_uid,
319
- field.join(".")
332
+ variant,
333
+ field
320
334
  );
321
335
  window.open(redirectUrl, "_blank");
322
336
  } catch (error) {
@@ -425,7 +439,7 @@ var LivePreview = class {
425
439
  config: {
426
440
  shouldReload: this.config.ssr,
427
441
  href: window.location.href,
428
- sdkVersion: "2.0.3"
442
+ sdkVersion: "2.0.4"
429
443
  }
430
444
  }
431
445
  },