@contentstack/live-preview-utils 4.4.1 → 4.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +3 -2
  2. package/dist/legacy/configManager/config.default.cjs +6 -0
  3. package/dist/legacy/configManager/config.default.cjs.map +1 -1
  4. package/dist/legacy/configManager/config.default.js +6 -0
  5. package/dist/legacy/configManager/config.default.js.map +1 -1
  6. package/dist/legacy/configManager/handleUserConfig.cjs +6 -3
  7. package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
  8. package/dist/legacy/configManager/handleUserConfig.js +6 -3
  9. package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
  10. package/dist/legacy/cslp/cslpdata.cjs +26 -12
  11. package/dist/legacy/cslp/cslpdata.cjs.map +1 -1
  12. package/dist/legacy/cslp/cslpdata.d.cts +0 -5
  13. package/dist/legacy/cslp/cslpdata.d.ts +0 -5
  14. package/dist/legacy/cslp/cslpdata.js +26 -12
  15. package/dist/legacy/cslp/cslpdata.js.map +1 -1
  16. package/dist/legacy/index.d.cts +1 -1
  17. package/dist/legacy/index.d.ts +1 -1
  18. package/dist/legacy/light-sdk.cjs +1 -1
  19. package/dist/legacy/light-sdk.js +1 -1
  20. package/dist/legacy/livePreview/editButton/editButton.cjs +20 -0
  21. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  22. package/dist/legacy/livePreview/editButton/editButton.d.cts +1 -0
  23. package/dist/legacy/livePreview/editButton/editButton.d.ts +1 -0
  24. package/dist/legacy/livePreview/editButton/editButton.js +20 -0
  25. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  26. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +3 -3
  27. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
  28. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +3 -3
  29. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
  30. package/dist/legacy/livePreview/live-preview.cjs +2 -0
  31. package/dist/legacy/livePreview/live-preview.cjs.map +1 -1
  32. package/dist/legacy/livePreview/live-preview.js +2 -0
  33. package/dist/legacy/livePreview/live-preview.js.map +1 -1
  34. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  35. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  36. package/dist/legacy/types/types.cjs.map +1 -1
  37. package/dist/legacy/types/types.d.cts +15 -1
  38. package/dist/legacy/types/types.d.ts +15 -1
  39. package/dist/legacy/types/types.js.map +1 -1
  40. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +34 -3
  41. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  42. package/dist/legacy/visualBuilder/components/FieldToolbar.js +34 -3
  43. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  44. package/dist/legacy/visualBuilder/eventManager/useCollab.cjs +8 -8
  45. package/dist/legacy/visualBuilder/eventManager/useCollab.cjs.map +1 -1
  46. package/dist/legacy/visualBuilder/eventManager/useCollab.js +8 -8
  47. package/dist/legacy/visualBuilder/eventManager/useCollab.js.map +1 -1
  48. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +10 -0
  49. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  50. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +10 -0
  51. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  52. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +7 -0
  53. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
  54. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js +7 -0
  55. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
  56. package/dist/legacy/visualBuilder/generators/generateHighlightedComment.cjs +2 -0
  57. package/dist/legacy/visualBuilder/generators/generateHighlightedComment.cjs.map +1 -1
  58. package/dist/legacy/visualBuilder/generators/generateHighlightedComment.js +2 -0
  59. package/dist/legacy/visualBuilder/generators/generateHighlightedComment.js.map +1 -1
  60. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +4 -3
  61. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  62. package/dist/legacy/visualBuilder/generators/generateToolbar.js +4 -3
  63. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  64. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +26 -0
  65. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  66. package/dist/legacy/visualBuilder/listeners/mouseClick.js +26 -0
  67. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  68. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +35 -4
  69. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  70. package/dist/legacy/visualBuilder/listeners/mouseHover.js +35 -4
  71. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  72. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs +19 -1
  73. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
  74. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.d.cts +8 -1
  75. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.d.ts +8 -1
  76. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js +9 -1
  77. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
  78. package/dist/legacy/visualBuilder/utils/getWholeFieldElement.cjs +38 -0
  79. package/dist/legacy/visualBuilder/utils/getWholeFieldElement.cjs.map +1 -0
  80. package/dist/legacy/visualBuilder/utils/getWholeFieldElement.d.cts +4 -0
  81. package/dist/legacy/visualBuilder/utils/getWholeFieldElement.d.ts +4 -0
  82. package/dist/legacy/visualBuilder/utils/getWholeFieldElement.js +14 -0
  83. package/dist/legacy/visualBuilder/utils/getWholeFieldElement.js.map +1 -0
  84. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +2 -1
  85. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  86. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +2 -1
  87. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  88. package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.cjs +38 -0
  89. package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.cjs.map +1 -0
  90. package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.d.cts +7 -0
  91. package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.d.ts +7 -0
  92. package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.js +15 -0
  93. package/dist/legacy/visualBuilder/utils/isCustomFieldMultipleInstance.js.map +1 -0
  94. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +1 -0
  95. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  96. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
  97. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
  98. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +1 -0
  99. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  100. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +12 -0
  101. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  102. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +1 -0
  103. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +1 -0
  104. package/dist/legacy/visualBuilder/visualBuilder.style.js +12 -0
  105. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  106. package/dist/modern/configManager/config.default.cjs +6 -0
  107. package/dist/modern/configManager/config.default.cjs.map +1 -1
  108. package/dist/modern/configManager/config.default.js +6 -0
  109. package/dist/modern/configManager/config.default.js.map +1 -1
  110. package/dist/modern/configManager/handleUserConfig.cjs +3 -0
  111. package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
  112. package/dist/modern/configManager/handleUserConfig.js +3 -0
  113. package/dist/modern/configManager/handleUserConfig.js.map +1 -1
  114. package/dist/modern/cslp/cslpdata.cjs +25 -12
  115. package/dist/modern/cslp/cslpdata.cjs.map +1 -1
  116. package/dist/modern/cslp/cslpdata.d.cts +0 -5
  117. package/dist/modern/cslp/cslpdata.d.ts +0 -5
  118. package/dist/modern/cslp/cslpdata.js +25 -12
  119. package/dist/modern/cslp/cslpdata.js.map +1 -1
  120. package/dist/modern/light-sdk.cjs +1 -1
  121. package/dist/modern/light-sdk.js +1 -1
  122. package/dist/modern/livePreview/editButton/editButton.cjs +19 -0
  123. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  124. package/dist/modern/livePreview/editButton/editButton.d.cts +1 -0
  125. package/dist/modern/livePreview/editButton/editButton.d.ts +1 -0
  126. package/dist/modern/livePreview/editButton/editButton.js +19 -0
  127. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  128. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +3 -3
  129. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
  130. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +3 -3
  131. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
  132. package/dist/modern/livePreview/live-preview.cjs +1 -0
  133. package/dist/modern/livePreview/live-preview.cjs.map +1 -1
  134. package/dist/modern/livePreview/live-preview.js +1 -0
  135. package/dist/modern/livePreview/live-preview.js.map +1 -1
  136. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  137. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  138. package/dist/modern/types/types.cjs.map +1 -1
  139. package/dist/modern/types/types.d.cts +15 -1
  140. package/dist/modern/types/types.d.ts +15 -1
  141. package/dist/modern/types/types.js.map +1 -1
  142. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +34 -3
  143. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  144. package/dist/modern/visualBuilder/components/FieldToolbar.js +34 -3
  145. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  146. package/dist/modern/visualBuilder/eventManager/useCollab.cjs +5 -5
  147. package/dist/modern/visualBuilder/eventManager/useCollab.cjs.map +1 -1
  148. package/dist/modern/visualBuilder/eventManager/useCollab.js +5 -5
  149. package/dist/modern/visualBuilder/eventManager/useCollab.js.map +1 -1
  150. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +9 -0
  151. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  152. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +9 -0
  153. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  154. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +6 -0
  155. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
  156. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js +6 -0
  157. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
  158. package/dist/modern/visualBuilder/generators/generateHighlightedComment.cjs +2 -0
  159. package/dist/modern/visualBuilder/generators/generateHighlightedComment.cjs.map +1 -1
  160. package/dist/modern/visualBuilder/generators/generateHighlightedComment.js +2 -0
  161. package/dist/modern/visualBuilder/generators/generateHighlightedComment.js.map +1 -1
  162. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +4 -3
  163. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  164. package/dist/modern/visualBuilder/generators/generateToolbar.js +4 -3
  165. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  166. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +26 -0
  167. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  168. package/dist/modern/visualBuilder/listeners/mouseClick.js +26 -0
  169. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  170. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +35 -4
  171. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  172. package/dist/modern/visualBuilder/listeners/mouseHover.js +35 -4
  173. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  174. package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs +19 -1
  175. package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
  176. package/dist/modern/visualBuilder/utils/getCsDataOfElement.d.cts +8 -1
  177. package/dist/modern/visualBuilder/utils/getCsDataOfElement.d.ts +8 -1
  178. package/dist/modern/visualBuilder/utils/getCsDataOfElement.js +9 -1
  179. package/dist/modern/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
  180. package/dist/modern/visualBuilder/utils/getWholeFieldElement.cjs +38 -0
  181. package/dist/modern/visualBuilder/utils/getWholeFieldElement.cjs.map +1 -0
  182. package/dist/modern/visualBuilder/utils/getWholeFieldElement.d.cts +4 -0
  183. package/dist/modern/visualBuilder/utils/getWholeFieldElement.d.ts +4 -0
  184. package/dist/modern/visualBuilder/utils/getWholeFieldElement.js +14 -0
  185. package/dist/modern/visualBuilder/utils/getWholeFieldElement.js.map +1 -0
  186. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +2 -1
  187. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  188. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +2 -1
  189. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  190. package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.cjs +37 -0
  191. package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.cjs.map +1 -0
  192. package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.d.cts +7 -0
  193. package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.d.ts +7 -0
  194. package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.js +14 -0
  195. package/dist/modern/visualBuilder/utils/isCustomFieldMultipleInstance.js.map +1 -0
  196. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +1 -0
  197. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  198. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
  199. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
  200. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +1 -0
  201. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  202. package/dist/modern/visualBuilder/visualBuilder.style.cjs +12 -0
  203. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  204. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +1 -0
  205. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +1 -0
  206. package/dist/modern/visualBuilder/visualBuilder.style.js +12 -0
  207. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  208. package/package.json +2 -2
package/README.md CHANGED
@@ -29,11 +29,11 @@ npm install @contentstack/live-preview-utils
29
29
 
30
30
  ### Load from a CDN (advanced)
31
31
 
32
- Pin the version to match your app (update `4.4.1` when you upgrade):
32
+ Pin the version to match your app (update `4.4.3` when you upgrade):
33
33
 
34
34
  ```html
35
35
  <script type="module" crossorigin="anonymous">
36
- import ContentstackLivePreview from "https://esm.sh/@contentstack/live-preview-utils@4.4.1";
36
+ import ContentstackLivePreview from "https://esm.sh/@contentstack/live-preview-utils@4.4.3";
37
37
 
38
38
  ContentstackLivePreview.init({
39
39
  stackDetails: {
@@ -71,6 +71,7 @@ You can configure the SDK using the following options:
71
71
  - [`mode`](docs/live-preview-configs.md#mode) (`preview` vs `builder`)
72
72
  - [`editButton`](docs/live-preview-configs.md#editbutton)
73
73
  - [`editInVisualBuilderButton`](docs/live-preview-configs.md#editinvisualbuilderbutton) (Start Editing outside Visual Editor)
74
+ - [`overlayPropagation`](docs/live-preview-configs.md#overlaypropagation) (opt-in fallback to pierce blocking sibling overlays during hover/click detection)
74
75
  - [`cleanCslpOnProduction`](docs/live-preview-configs.md#cleancslponproduction)
75
76
  - [`stackDetails`](docs/live-preview-configs.md#stackdetails) ([`apiKey`](docs/live-preview-configs.md#apikey), [`environment`](docs/live-preview-configs.md#environment))
76
77
  - [`clientUrlParams`](docs/live-preview-configs.md#clienturlparams) — [NA](docs/live-preview-configs.md#na-config) / [EU](docs/live-preview-configs.md#eu-config)
@@ -41,6 +41,9 @@ function getUserInitData() {
41
41
  enable: true,
42
42
  position: "bottom-right"
43
43
  },
44
+ overlayPropagation: {
45
+ enable: false
46
+ },
44
47
  mode: "preview",
45
48
  stackDetails: {
46
49
  apiKey: "",
@@ -76,6 +79,9 @@ function getDefaultConfig() {
76
79
  enable: true,
77
80
  position: "bottom-right"
78
81
  },
82
+ overlayPropagation: {
83
+ enable: false
84
+ },
79
85
  hash: "",
80
86
  mode: 1,
81
87
  windowType: import_types.ILivePreviewWindowType.INDEPENDENT,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configManager/config.default.ts"],"sourcesContent":["import {\n ILivePreviewWindowType,\n type IConfig,\n type IInitData,\n} from \"../types/types\";\n\nexport function getUserInitData(): IInitData {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n\n mode: \"preview\",\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n\nexport function getDefaultConfig(): IConfig {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n\n hash: \"\",\n mode: 1,\n windowType: ILivePreviewWindowType.INDEPENDENT,\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n contentTypeUid: \"\",\n entryUid: \"\",\n locale: \"en-us\",\n branch: \"main\",\n masterLocale: \"en-us\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n\n onChange() {\n return;\n },\n\n elements: {\n highlightedElement: null,\n },\n collab: {\n enable: false,\n fromShare: false,\n pauseFeedback: false,\n isFeedbackMode: false,\n inviteMetadata: {\n currentUser: {\n email: \"\",\n uid: \"\",\n },\n users: [],\n inviteUid: \"\",\n },\n payload: [],\n },\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AAEA,SAAS,kBAA6B;AACzC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IAEA,MAAM;AAAA,IAEN,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACZ;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IACpB,gCAAgC;AAAA,EACpC;AACJ;AAEO,SAAS,mBAA4B;AACxC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IAEA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,oCAAuB;AAAA,IAEnC,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,IAClB;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,SAAS;AAAA,QACL,SAAS;AAAA,MACb;AAAA,MACA,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IAEpB,WAAW;AACP;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,oBAAoB;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,QACZ,aAAa;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,QACT;AAAA,QACA,OAAO,CAAC;AAAA,QACR,WAAW;AAAA,MACf;AAAA,MACA,SAAS,CAAC;AAAA,IACd;AAAA,IACA,gCAAgC;AAAA,EACpC;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/configManager/config.default.ts"],"sourcesContent":["import {\n ILivePreviewWindowType,\n type IConfig,\n type IInitData,\n} from \"../types/types\";\n\nexport function getUserInitData(): IInitData {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n overlayPropagation: {\n enable: false,\n },\n\n mode: \"preview\",\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n\nexport function getDefaultConfig(): IConfig {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n overlayPropagation: {\n enable: false,\n },\n\n hash: \"\",\n mode: 1,\n windowType: ILivePreviewWindowType.INDEPENDENT,\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n contentTypeUid: \"\",\n entryUid: \"\",\n locale: \"en-us\",\n branch: \"main\",\n masterLocale: \"en-us\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n\n onChange() {\n return;\n },\n\n elements: {\n highlightedElement: null,\n },\n collab: {\n enable: false,\n fromShare: false,\n pauseFeedback: false,\n isFeedbackMode: false,\n inviteMetadata: {\n currentUser: {\n email: \"\",\n uid: \"\",\n },\n users: [],\n inviteUid: \"\",\n },\n payload: [],\n },\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AAEA,SAAS,kBAA6B;AACzC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IACA,oBAAoB;AAAA,MAChB,QAAQ;AAAA,IACZ;AAAA,IAEA,MAAM;AAAA,IAEN,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACZ;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IACpB,gCAAgC;AAAA,EACpC;AACJ;AAEO,SAAS,mBAA4B;AACxC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IACA,oBAAoB;AAAA,MAChB,QAAQ;AAAA,IACZ;AAAA,IAEA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,oCAAuB;AAAA,IAEnC,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,IAClB;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,SAAS;AAAA,QACL,SAAS;AAAA,MACb;AAAA,MACA,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IAEpB,WAAW;AACP;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,oBAAoB;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,QACZ,aAAa;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,QACT;AAAA,QACA,OAAO,CAAC;AAAA,QACR,WAAW;AAAA,MACf;AAAA,MACA,SAAS,CAAC;AAAA,IACd;AAAA,IACA,gCAAgC;AAAA,EACpC;AACJ;","names":[]}
@@ -20,6 +20,9 @@ function getUserInitData() {
20
20
  enable: true,
21
21
  position: "bottom-right"
22
22
  },
23
+ overlayPropagation: {
24
+ enable: false
25
+ },
23
26
  mode: "preview",
24
27
  stackDetails: {
25
28
  apiKey: "",
@@ -55,6 +58,9 @@ function getDefaultConfig() {
55
58
  enable: true,
56
59
  position: "bottom-right"
57
60
  },
61
+ overlayPropagation: {
62
+ enable: false
63
+ },
58
64
  hash: "",
59
65
  mode: 1,
60
66
  windowType: ILivePreviewWindowType.INDEPENDENT,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configManager/config.default.ts"],"sourcesContent":["import {\n ILivePreviewWindowType,\n type IConfig,\n type IInitData,\n} from \"../types/types\";\n\nexport function getUserInitData(): IInitData {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n\n mode: \"preview\",\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n\nexport function getDefaultConfig(): IConfig {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n\n hash: \"\",\n mode: 1,\n windowType: ILivePreviewWindowType.INDEPENDENT,\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n contentTypeUid: \"\",\n entryUid: \"\",\n locale: \"en-us\",\n branch: \"main\",\n masterLocale: \"en-us\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n\n onChange() {\n return;\n },\n\n elements: {\n highlightedElement: null,\n },\n collab: {\n enable: false,\n fromShare: false,\n pauseFeedback: false,\n isFeedbackMode: false,\n inviteMetadata: {\n currentUser: {\n email: \"\",\n uid: \"\",\n },\n users: [],\n inviteUid: \"\",\n },\n payload: [],\n },\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n"],"mappings":";;;AAAA;AAAA,EACI;AAAA,OAGG;AAEA,SAAS,kBAA6B;AACzC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IAEA,MAAM;AAAA,IAEN,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACZ;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IACpB,gCAAgC;AAAA,EACpC;AACJ;AAEO,SAAS,mBAA4B;AACxC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IAEA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,uBAAuB;AAAA,IAEnC,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,IAClB;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,SAAS;AAAA,QACL,SAAS;AAAA,MACb;AAAA,MACA,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IAEpB,WAAW;AACP;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,oBAAoB;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,QACZ,aAAa;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,QACT;AAAA,QACA,OAAO,CAAC;AAAA,QACR,WAAW;AAAA,MACf;AAAA,MACA,SAAS,CAAC;AAAA,IACd;AAAA,IACA,gCAAgC;AAAA,EACpC;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/configManager/config.default.ts"],"sourcesContent":["import {\n ILivePreviewWindowType,\n type IConfig,\n type IInitData,\n} from \"../types/types\";\n\nexport function getUserInitData(): IInitData {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n overlayPropagation: {\n enable: false,\n },\n\n mode: \"preview\",\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n\nexport function getDefaultConfig(): IConfig {\n return {\n ssr: true,\n enable: true,\n debug: false,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n editInVisualBuilderButton: {\n enable: true,\n position: \"bottom-right\"\n },\n overlayPropagation: {\n enable: false,\n },\n\n hash: \"\",\n mode: 1,\n windowType: ILivePreviewWindowType.INDEPENDENT,\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n contentTypeUid: \"\",\n entryUid: \"\",\n locale: \"en-us\",\n branch: \"main\",\n masterLocale: \"en-us\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n\n onChange() {\n return;\n },\n\n elements: {\n highlightedElement: null,\n },\n collab: {\n enable: false,\n fromShare: false,\n pauseFeedback: false,\n isFeedbackMode: false,\n inviteMetadata: {\n currentUser: {\n email: \"\",\n uid: \"\",\n },\n users: [],\n inviteUid: \"\",\n },\n payload: [],\n },\n enableLivePreviewOutsideIframe: undefined,\n };\n}\n"],"mappings":";;;AAAA;AAAA,EACI;AAAA,OAGG;AAEA,SAAS,kBAA6B;AACzC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IACA,oBAAoB;AAAA,MAChB,QAAQ;AAAA,IACZ;AAAA,IAEA,MAAM;AAAA,IAEN,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACZ;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IACpB,gCAAgC;AAAA,EACpC;AACJ;AAEO,SAAS,mBAA4B;AACxC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,yBAAyB;AAAA,IAC7B;AAAA,IACA,2BAA2B;AAAA,MACvB,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IACA,oBAAoB;AAAA,MAChB,QAAQ;AAAA,IACZ;AAAA,IAEA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,uBAAuB;AAAA,IAEnC,cAAc;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,IAClB;AAAA,IAEA,iBAAiB;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACN,cAAc,CAAC;AAAA,MACf,SAAS;AAAA,QACL,SAAS;AAAA,MACb;AAAA,MACA,aAAa;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IAEpB,WAAW;AACP;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,oBAAoB;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,QACZ,aAAa;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,QACT;AAAA,QACA,OAAO,CAAC;AAAA,QACR,WAAW;AAAA,MACf;AAAA,MACA,SAAS,CAAC;AAAA,IACd;AAAA,IACA,gCAAgC;AAAA,EACpC;AACJ;","names":[]}
@@ -69,7 +69,7 @@ var handleClientUrlParams = (userConfig) => {
69
69
  import_configManager.default.set("clientUrlParams.url", url);
70
70
  };
71
71
  var handleInitData = (initData) => {
72
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
72
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A;
73
73
  const config = import_configManager.default.get();
74
74
  const stackSdk = initData.stackSdk || config.stackSdk;
75
75
  import_configManager.default.set(
@@ -100,12 +100,15 @@ var handleInitData = (initData) => {
100
100
  enable: ((_r = initData.editInVisualBuilderButton) == null ? void 0 : _r.enable) ?? ((_t = (_s = stackSdk.live_preview) == null ? void 0 : _s.editInVisualBuilderButton) == null ? void 0 : _t.enable) ?? config.editInVisualBuilderButton.enable,
101
101
  position: ((_u = initData.editInVisualBuilderButton) == null ? void 0 : _u.position) ?? ((_v = stackSdk.live_preview) == null ? void 0 : _v.position) ?? config.editInVisualBuilderButton.position ?? "bottom-right"
102
102
  });
103
+ import_configManager.default.set("overlayPropagation", {
104
+ enable: ((_w = initData.overlayPropagation) == null ? void 0 : _w.enable) ?? ((_y = (_x = stackSdk.live_preview) == null ? void 0 : _x.overlayPropagation) == null ? void 0 : _y.enable) ?? config.overlayPropagation.enable
105
+ });
103
106
  import_configManager.default.set(
104
107
  "enableLivePreviewOutsideIframe",
105
108
  initData.enableLivePreviewOutsideIframe ?? config.enableLivePreviewOutsideIframe
106
109
  );
107
110
  handleClientUrlParams(
108
- initData.clientUrlParams ?? ((_w = stackSdk.live_preview) == null ? void 0 : _w.clientUrlParams) ?? config.clientUrlParams
111
+ initData.clientUrlParams ?? ((_z = stackSdk.live_preview) == null ? void 0 : _z.clientUrlParams) ?? config.clientUrlParams
109
112
  );
110
113
  if (initData.mode) {
111
114
  switch (initData.mode) {
@@ -126,7 +129,7 @@ var handleInitData = (initData) => {
126
129
  }
127
130
  import_configManager.default.set(
128
131
  "debug",
129
- initData.debug ?? ((_x = stackSdk.live_preview) == null ? void 0 : _x.debug) ?? config.debug
132
+ initData.debug ?? ((_A = stackSdk.live_preview) == null ? void 0 : _A.debug) ?? config.debug
130
133
  );
131
134
  handleStackDetails(initData, stackSdk);
132
135
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configManager/handleUserConfig.ts"],"sourcesContent":["import {\n type IClientUrlParams,\n type IInitData,\n ILivePreviewModeConfig,\n type IStackSdk,\n} from \"../types/types\";\nimport Config from \"./configManager\";\n\nconst handleClientUrlParams = (userConfig: Partial<IClientUrlParams>): void => {\n const config = Config.get();\n const clientUrlParams = config.clientUrlParams;\n\n Config.set(\n \"clientUrlParams.host\",\n userConfig.host ?? config.clientUrlParams.host\n );\n\n Config.set(\n \"clientUrlParams.protocol\",\n userConfig.protocol ?? clientUrlParams.protocol\n );\n Config.set(\"clientUrlParams.port\", userConfig.port ?? clientUrlParams.port);\n\n if (userConfig.protocol !== undefined && userConfig.port === undefined) {\n switch (userConfig.protocol) {\n case \"http\": {\n Config.set(\"clientUrlParams.port\", 80);\n break;\n }\n case \"https\": {\n Config.set(\"clientUrlParams.port\", 443);\n break;\n }\n }\n }\n\n let host = config.clientUrlParams.host;\n\n // build url\n if (typeof host == \"string\" && host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n Config.set(\"clientUrlParams.host\", host);\n }\n\n const url = `${clientUrlParams.protocol}://${config.clientUrlParams.host}:${clientUrlParams.port}`;\n\n Config.set(\"clientUrlParams.url\", url);\n};\n\n// TODO: add documentation mentioning that you cannot pass stack sdk in the init data\n\nexport const handleInitData = (initData: Partial<IInitData>): void => {\n const config = Config.get();\n const stackSdk = initData.stackSdk || config.stackSdk;\n\n Config.set(\n \"enable\",\n initData.enable ?? stackSdk.live_preview?.enable ?? config.enable\n );\n\n Config.set(\n \"ssr\",\n stackSdk.live_preview?.ssr ??\n initData.ssr ??\n (typeof initData.stackSdk === \"object\" ? false : true) ??\n true\n );\n\n Config.set(\n \"runScriptsOnUpdate\",\n initData.runScriptsOnUpdate ??\n stackSdk.live_preview?.runScriptsOnUpdate ??\n config.runScriptsOnUpdate\n );\n\n Config.set(\"stackSdk\", initData.stackSdk ?? config.stackSdk);\n\n Config.set(\n \"cleanCslpOnProduction\",\n initData.cleanCslpOnProduction ??\n stackSdk.live_preview?.cleanCslpOnProduction ??\n config.cleanCslpOnProduction\n );\n\n Config.set(\"editButton\", {\n enable:\n initData.editButton?.enable ??\n stackSdk.live_preview?.editButton?.enable ??\n config.editButton.enable,\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(initData.editButton?.exclude) &&\n initData.editButton?.exclude\n ? initData.editButton?.exclude\n : Array.isArray(stackSdk.live_preview?.exclude) &&\n stackSdk.live_preview?.exclude\n ? stackSdk.live_preview?.exclude\n : (config.editButton.exclude ?? []),\n position:\n initData.editButton?.position ??\n stackSdk.live_preview?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n initData.editButton?.includeByQueryParameter ??\n stackSdk.live_preview?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n });\n \n Config.set(\"editInVisualBuilderButton\", {\n enable:\n initData.editInVisualBuilderButton?.enable ??\n stackSdk.live_preview?.editInVisualBuilderButton?.enable ??\n config.editInVisualBuilderButton.enable,\n position: \n initData.editInVisualBuilderButton?.position ??\n stackSdk.live_preview?.position ??\n config.editInVisualBuilderButton.position ??\n \"bottom-right\",\n })\n\n Config.set(\n \"enableLivePreviewOutsideIframe\",\n initData.enableLivePreviewOutsideIframe ??\n config.enableLivePreviewOutsideIframe\n );\n\n // client URL params\n handleClientUrlParams(\n initData.clientUrlParams ??\n stackSdk.live_preview?.clientUrlParams ??\n config.clientUrlParams\n );\n\n if (initData.mode) {\n switch (initData.mode) {\n case \"preview\": {\n Config.set(\"mode\", ILivePreviewModeConfig.PREVIEW);\n break;\n }\n case \"builder\": {\n Config.set(\"mode\", ILivePreviewModeConfig.BUILDER);\n break;\n }\n default: {\n throw new TypeError(\n \"Live Preview SDK: The mode must be either 'builder' or 'preview'\"\n );\n }\n }\n }\n\n Config.set(\n \"debug\",\n initData.debug ?? stackSdk.live_preview?.debug ?? config.debug\n );\n\n handleStackDetails(initData, stackSdk as IStackSdk);\n};\n\nfunction handleStackDetails(\n initData: Partial<IInitData>,\n stackSdk: Partial<IStackSdk>\n): void {\n const config = Config.get();\n\n Config.set(\n \"stackDetails.apiKey\",\n initData.stackDetails?.apiKey ?? config.stackDetails.apiKey\n );\n\n Config.set(\n \"stackDetails.environment\",\n initData.stackDetails?.environment ??\n stackSdk.environment ??\n config.stackDetails.environment\n );\n\n Config.set(\n \"stackDetails.branch\",\n initData.stackDetails?.branch ??\n stackSdk.branch ??\n stackSdk.headers?.branch ??\n config.stackDetails.branch\n );\n\n Config.set(\n \"stackDetails.locale\",\n initData.stackDetails?.locale ?? config.stackDetails.locale\n );\n\n if (config.mode >= ILivePreviewModeConfig.BUILDER) {\n if (!config.stackDetails.environment) {\n throw Error(\"Live preview SDK: environment is required\");\n }\n\n if (!config.stackDetails.apiKey) {\n throw Error(\"Live preview SDK: api key is required\");\n }\n }\n}\n\nexport const handleUserConfig = {\n clientUrlParams: handleClientUrlParams,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKO;AACP,2BAAmB;AAEnB,IAAM,wBAAwB,CAAC,eAAgD;AAC3E,QAAM,SAAS,qBAAAA,QAAO,IAAI;AAC1B,QAAM,kBAAkB,OAAO;AAE/B,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,WAAW,QAAQ,OAAO,gBAAgB;AAAA,EAC9C;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,WAAW,YAAY,gBAAgB;AAAA,EAC3C;AACA,uBAAAA,QAAO,IAAI,wBAAwB,WAAW,QAAQ,gBAAgB,IAAI;AAE1E,MAAI,WAAW,aAAa,UAAa,WAAW,SAAS,QAAW;AACpE,YAAQ,WAAW,UAAU;AAAA,MACzB,KAAK,QAAQ;AACT,6BAAAA,QAAO,IAAI,wBAAwB,EAAE;AACrC;AAAA,MACJ;AAAA,MACA,KAAK,SAAS;AACV,6BAAAA,QAAO,IAAI,wBAAwB,GAAG;AACtC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,OAAO,OAAO,gBAAgB;AAGlC,MAAI,OAAO,QAAQ,YAAY,KAAK,SAAS,GAAG,GAAG;AAC/C,WAAO,KAAK,MAAM,GAAG,EAAE;AACvB,yBAAAA,QAAO,IAAI,wBAAwB,IAAI;AAAA,EAC3C;AAEA,QAAM,MAAM,GAAG,gBAAgB,QAAQ,MAAM,OAAO,gBAAgB,IAAI,IAAI,gBAAgB,IAAI;AAEhG,uBAAAA,QAAO,IAAI,uBAAuB,GAAG;AACzC;AAIO,IAAM,iBAAiB,CAAC,aAAuC;AAnDtE;AAoDI,QAAM,SAAS,qBAAAA,QAAO,IAAI;AAC1B,QAAM,WAAW,SAAS,YAAY,OAAO;AAE7C,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,SAAS,YAAU,cAAS,iBAAT,mBAAuB,WAAU,OAAO;AAAA,EAC/D;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,MACA,cAAS,iBAAT,mBAAuB,QACnB,SAAS,QACR,OAAO,SAAS,aAAa,WAAW,QAAQ,SACjD;AAAA,EACR;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,SAAS,wBACL,cAAS,iBAAT,mBAAuB,uBACvB,OAAO;AAAA,EACf;AAEA,uBAAAA,QAAO,IAAI,YAAY,SAAS,YAAY,OAAO,QAAQ;AAE3D,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,SAAS,2BACL,cAAS,iBAAT,mBAAuB,0BACvB,OAAO;AAAA,EACf;AAEA,uBAAAA,QAAO,IAAI,cAAc;AAAA,IACrB,UACI,cAAS,eAAT,mBAAqB,aACrB,oBAAS,iBAAT,mBAAuB,eAAvB,mBAAmC,WACnC,OAAO,WAAW;AAAA;AAAA,IAEtB,SACI,MAAM,SAAQ,cAAS,eAAT,mBAAqB,OAAO,OAC1C,cAAS,eAAT,mBAAqB,YACf,cAAS,eAAT,mBAAqB,UACrB,MAAM,SAAQ,cAAS,iBAAT,mBAAuB,OAAO,OAC1C,cAAS,iBAAT,mBAAuB,YACvB,cAAS,iBAAT,mBAAuB,UACtB,OAAO,WAAW,WAAW,CAAC;AAAA,IAC3C,YACI,cAAS,eAAT,mBAAqB,eACrB,cAAS,iBAAT,mBAAuB,aACvB,OAAO,WAAW,YAClB;AAAA,IAEJ,2BACI,cAAS,eAAT,mBAAqB,8BACrB,cAAS,iBAAT,mBAAuB,4BACvB,OAAO,WAAW,2BAClB;AAAA,EACR,CAAC;AAED,uBAAAA,QAAO,IAAI,6BAA6B;AAAA,IACpC,UACI,cAAS,8BAAT,mBAAoC,aACpC,oBAAS,iBAAT,mBAAuB,8BAAvB,mBAAkD,WAClD,OAAO,0BAA0B;AAAA,IACrC,YACI,cAAS,8BAAT,mBAAoC,eACpC,cAAS,iBAAT,mBAAuB,aACvB,OAAO,0BAA0B,YACjC;AAAA,EACR,CAAC;AAED,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,SAAS,kCACL,OAAO;AAAA,EACf;AAGA;AAAA,IACI,SAAS,qBACL,cAAS,iBAAT,mBAAuB,oBACvB,OAAO;AAAA,EACf;AAEA,MAAI,SAAS,MAAM;AACf,YAAQ,SAAS,MAAM;AAAA,MACnB,KAAK,WAAW;AACZ,6BAAAA,QAAO,IAAI,QAAQ,oCAAuB,OAAO;AACjD;AAAA,MACJ;AAAA,MACA,KAAK,WAAW;AACZ,6BAAAA,QAAO,IAAI,QAAQ,oCAAuB,OAAO;AACjD;AAAA,MACJ;AAAA,MACA,SAAS;AACL,cAAM,IAAI;AAAA,UACN;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,IACA,SAAS,WAAS,cAAS,iBAAT,mBAAuB,UAAS,OAAO;AAAA,EAC7D;AAEA,qBAAmB,UAAU,QAAqB;AACtD;AAEA,SAAS,mBACL,UACA,UACI;AArKR;AAsKI,QAAM,SAAS,qBAAAA,QAAO,IAAI;AAE1B,uBAAAA,QAAO;AAAA,IACH;AAAA,MACA,cAAS,iBAAT,mBAAuB,WAAU,OAAO,aAAa;AAAA,EACzD;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,MACA,cAAS,iBAAT,mBAAuB,gBACnB,SAAS,eACT,OAAO,aAAa;AAAA,EAC5B;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,MACA,cAAS,iBAAT,mBAAuB,WACnB,SAAS,YACT,cAAS,YAAT,mBAAkB,WAClB,OAAO,aAAa;AAAA,EAC5B;AAEA,uBAAAA,QAAO;AAAA,IACH;AAAA,MACA,cAAS,iBAAT,mBAAuB,WAAU,OAAO,aAAa;AAAA,EACzD;AAEA,MAAI,OAAO,QAAQ,oCAAuB,SAAS;AAC/C,QAAI,CAAC,OAAO,aAAa,aAAa;AAClC,YAAM,MAAM,2CAA2C;AAAA,IAC3D;AAEA,QAAI,CAAC,OAAO,aAAa,QAAQ;AAC7B,YAAM,MAAM,uCAAuC;AAAA,IACvD;AAAA,EACJ;AACJ;AAEO,IAAM,mBAAmB;AAAA,EAC5B,iBAAiB;AACrB;","names":["Config"]}
1
+ {"version":3,"sources":["../../../src/configManager/handleUserConfig.ts"],"sourcesContent":["import {\n type IClientUrlParams,\n type IInitData,\n ILivePreviewModeConfig,\n type IStackSdk,\n} from \"../types/types\";\nimport Config from \"./configManager\";\n\nconst handleClientUrlParams = (userConfig: Partial<IClientUrlParams>): void => {\n const config = Config.get();\n const clientUrlParams = config.clientUrlParams;\n\n Config.set(\n \"clientUrlParams.host\",\n userConfig.host ?? config.clientUrlParams.host\n );\n\n Config.set(\n \"clientUrlParams.protocol\",\n userConfig.protocol ?? clientUrlParams.protocol\n );\n Config.set(\"clientUrlParams.port\", userConfig.port ?? clientUrlParams.port);\n\n if (userConfig.protocol !== undefined && userConfig.port === undefined) {\n switch (userConfig.protocol) {\n case \"http\": {\n Config.set(\"clientUrlParams.port\", 80);\n break;\n }\n case \"https\": {\n Config.set(\"clientUrlParams.port\", 443);\n break;\n }\n }\n }\n\n let host = config.clientUrlParams.host;\n\n // build url\n if (typeof host == \"string\" && host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n Config.set(\"clientUrlParams.host\", host);\n }\n\n const url = `${clientUrlParams.protocol}://${config.clientUrlParams.host}:${clientUrlParams.port}`;\n\n Config.set(\"clientUrlParams.url\", url);\n};\n\n// TODO: add documentation mentioning that you cannot pass stack sdk in the init data\n\nexport const handleInitData = (initData: Partial<IInitData>): void => {\n const config = Config.get();\n const stackSdk = initData.stackSdk || config.stackSdk;\n\n Config.set(\n \"enable\",\n initData.enable ?? stackSdk.live_preview?.enable ?? config.enable\n );\n\n Config.set(\n \"ssr\",\n stackSdk.live_preview?.ssr ??\n initData.ssr ??\n (typeof initData.stackSdk === \"object\" ? false : true) ??\n true\n );\n\n Config.set(\n \"runScriptsOnUpdate\",\n initData.runScriptsOnUpdate ??\n stackSdk.live_preview?.runScriptsOnUpdate ??\n config.runScriptsOnUpdate\n );\n\n Config.set(\"stackSdk\", initData.stackSdk ?? config.stackSdk);\n\n Config.set(\n \"cleanCslpOnProduction\",\n initData.cleanCslpOnProduction ??\n stackSdk.live_preview?.cleanCslpOnProduction ??\n config.cleanCslpOnProduction\n );\n\n Config.set(\"editButton\", {\n enable:\n initData.editButton?.enable ??\n stackSdk.live_preview?.editButton?.enable ??\n config.editButton.enable,\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(initData.editButton?.exclude) &&\n initData.editButton?.exclude\n ? initData.editButton?.exclude\n : Array.isArray(stackSdk.live_preview?.exclude) &&\n stackSdk.live_preview?.exclude\n ? stackSdk.live_preview?.exclude\n : (config.editButton.exclude ?? []),\n position:\n initData.editButton?.position ??\n stackSdk.live_preview?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n initData.editButton?.includeByQueryParameter ??\n stackSdk.live_preview?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n });\n \n Config.set(\"editInVisualBuilderButton\", {\n enable:\n initData.editInVisualBuilderButton?.enable ??\n stackSdk.live_preview?.editInVisualBuilderButton?.enable ??\n config.editInVisualBuilderButton.enable,\n position:\n initData.editInVisualBuilderButton?.position ??\n stackSdk.live_preview?.position ??\n config.editInVisualBuilderButton.position ??\n \"bottom-right\",\n })\n\n Config.set(\"overlayPropagation\", {\n enable:\n initData.overlayPropagation?.enable ??\n stackSdk.live_preview?.overlayPropagation?.enable ??\n config.overlayPropagation.enable,\n });\n\n Config.set(\n \"enableLivePreviewOutsideIframe\",\n initData.enableLivePreviewOutsideIframe ??\n config.enableLivePreviewOutsideIframe\n );\n\n // client URL params\n handleClientUrlParams(\n initData.clientUrlParams ??\n stackSdk.live_preview?.clientUrlParams ??\n config.clientUrlParams\n );\n\n if (initData.mode) {\n switch (initData.mode) {\n case \"preview\": {\n Config.set(\"mode\", ILivePreviewModeConfig.PREVIEW);\n break;\n }\n case \"builder\": {\n Config.set(\"mode\", ILivePreviewModeConfig.BUILDER);\n break;\n }\n default: {\n throw new TypeError(\n \"Live Preview SDK: The mode must be either 'builder' or 'preview'\"\n );\n }\n }\n }\n\n Config.set(\n \"debug\",\n initData.debug ?? stackSdk.live_preview?.debug ?? config.debug\n );\n\n handleStackDetails(initData, stackSdk as IStackSdk);\n};\n\nfunction handleStackDetails(\n initData: Partial<IInitData>,\n stackSdk: Partial<IStackSdk>\n): void {\n const config = Config.get();\n\n Config.set(\n \"stackDetails.apiKey\",\n initData.stackDetails?.apiKey ?? config.stackDetails.apiKey\n );\n\n Config.set(\n \"stackDetails.environment\",\n initData.stackDetails?.environment ??\n stackSdk.environment ??\n config.stackDetails.environment\n );\n\n Config.set(\n \"stackDetails.branch\",\n initData.stackDetails?.branch ??\n stackSdk.branch ??\n stackSdk.headers?.branch ??\n config.stackDetails.branch\n );\n\n Config.set(\n \"stackDetails.locale\",\n initData.stackDetails?.locale ?? config.stackDetails.locale\n );\n\n if (config.mode >= ILivePreviewModeConfig.BUILDER) {\n if (!config.stackDetails.environment) {\n throw Error(\"Live preview SDK: environment is required\");\n }\n\n if (!config.stackDetails.apiKey) {\n throw Error(\"Live preview SDK: api key is required\");\n }\n }\n}\n\nexport const handleUserConfig = {\n clientUrlParams: handleClientUrlParams,\n};\n"],"mappings":"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","names":["Config"]}
@@ -38,7 +38,7 @@ var handleClientUrlParams = (userConfig) => {
38
38
  Config.set("clientUrlParams.url", url);
39
39
  };
40
40
  var handleInitData = (initData) => {
41
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
41
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A;
42
42
  const config = Config.get();
43
43
  const stackSdk = initData.stackSdk || config.stackSdk;
44
44
  Config.set(
@@ -69,12 +69,15 @@ var handleInitData = (initData) => {
69
69
  enable: ((_r = initData.editInVisualBuilderButton) == null ? void 0 : _r.enable) ?? ((_t = (_s = stackSdk.live_preview) == null ? void 0 : _s.editInVisualBuilderButton) == null ? void 0 : _t.enable) ?? config.editInVisualBuilderButton.enable,
70
70
  position: ((_u = initData.editInVisualBuilderButton) == null ? void 0 : _u.position) ?? ((_v = stackSdk.live_preview) == null ? void 0 : _v.position) ?? config.editInVisualBuilderButton.position ?? "bottom-right"
71
71
  });
72
+ Config.set("overlayPropagation", {
73
+ enable: ((_w = initData.overlayPropagation) == null ? void 0 : _w.enable) ?? ((_y = (_x = stackSdk.live_preview) == null ? void 0 : _x.overlayPropagation) == null ? void 0 : _y.enable) ?? config.overlayPropagation.enable
74
+ });
72
75
  Config.set(
73
76
  "enableLivePreviewOutsideIframe",
74
77
  initData.enableLivePreviewOutsideIframe ?? config.enableLivePreviewOutsideIframe
75
78
  );
76
79
  handleClientUrlParams(
77
- initData.clientUrlParams ?? ((_w = stackSdk.live_preview) == null ? void 0 : _w.clientUrlParams) ?? config.clientUrlParams
80
+ initData.clientUrlParams ?? ((_z = stackSdk.live_preview) == null ? void 0 : _z.clientUrlParams) ?? config.clientUrlParams
78
81
  );
79
82
  if (initData.mode) {
80
83
  switch (initData.mode) {
@@ -95,7 +98,7 @@ var handleInitData = (initData) => {
95
98
  }
96
99
  Config.set(
97
100
  "debug",
98
- initData.debug ?? ((_x = stackSdk.live_preview) == null ? void 0 : _x.debug) ?? config.debug
101
+ initData.debug ?? ((_A = stackSdk.live_preview) == null ? void 0 : _A.debug) ?? config.debug
99
102
  );
100
103
  handleStackDetails(initData, stackSdk);
101
104
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configManager/handleUserConfig.ts"],"sourcesContent":["import {\n type IClientUrlParams,\n type IInitData,\n ILivePreviewModeConfig,\n type IStackSdk,\n} from \"../types/types\";\nimport Config from \"./configManager\";\n\nconst handleClientUrlParams = (userConfig: Partial<IClientUrlParams>): void => {\n const config = Config.get();\n const clientUrlParams = config.clientUrlParams;\n\n Config.set(\n \"clientUrlParams.host\",\n userConfig.host ?? config.clientUrlParams.host\n );\n\n Config.set(\n \"clientUrlParams.protocol\",\n userConfig.protocol ?? clientUrlParams.protocol\n );\n Config.set(\"clientUrlParams.port\", userConfig.port ?? clientUrlParams.port);\n\n if (userConfig.protocol !== undefined && userConfig.port === undefined) {\n switch (userConfig.protocol) {\n case \"http\": {\n Config.set(\"clientUrlParams.port\", 80);\n break;\n }\n case \"https\": {\n Config.set(\"clientUrlParams.port\", 443);\n break;\n }\n }\n }\n\n let host = config.clientUrlParams.host;\n\n // build url\n if (typeof host == \"string\" && host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n Config.set(\"clientUrlParams.host\", host);\n }\n\n const url = `${clientUrlParams.protocol}://${config.clientUrlParams.host}:${clientUrlParams.port}`;\n\n Config.set(\"clientUrlParams.url\", url);\n};\n\n// TODO: add documentation mentioning that you cannot pass stack sdk in the init data\n\nexport const handleInitData = (initData: Partial<IInitData>): void => {\n const config = Config.get();\n const stackSdk = initData.stackSdk || config.stackSdk;\n\n Config.set(\n \"enable\",\n initData.enable ?? stackSdk.live_preview?.enable ?? config.enable\n );\n\n Config.set(\n \"ssr\",\n stackSdk.live_preview?.ssr ??\n initData.ssr ??\n (typeof initData.stackSdk === \"object\" ? false : true) ??\n true\n );\n\n Config.set(\n \"runScriptsOnUpdate\",\n initData.runScriptsOnUpdate ??\n stackSdk.live_preview?.runScriptsOnUpdate ??\n config.runScriptsOnUpdate\n );\n\n Config.set(\"stackSdk\", initData.stackSdk ?? config.stackSdk);\n\n Config.set(\n \"cleanCslpOnProduction\",\n initData.cleanCslpOnProduction ??\n stackSdk.live_preview?.cleanCslpOnProduction ??\n config.cleanCslpOnProduction\n );\n\n Config.set(\"editButton\", {\n enable:\n initData.editButton?.enable ??\n stackSdk.live_preview?.editButton?.enable ??\n config.editButton.enable,\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(initData.editButton?.exclude) &&\n initData.editButton?.exclude\n ? initData.editButton?.exclude\n : Array.isArray(stackSdk.live_preview?.exclude) &&\n stackSdk.live_preview?.exclude\n ? stackSdk.live_preview?.exclude\n : (config.editButton.exclude ?? []),\n position:\n initData.editButton?.position ??\n stackSdk.live_preview?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n initData.editButton?.includeByQueryParameter ??\n stackSdk.live_preview?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n });\n \n Config.set(\"editInVisualBuilderButton\", {\n enable:\n initData.editInVisualBuilderButton?.enable ??\n stackSdk.live_preview?.editInVisualBuilderButton?.enable ??\n config.editInVisualBuilderButton.enable,\n position: \n initData.editInVisualBuilderButton?.position ??\n stackSdk.live_preview?.position ??\n config.editInVisualBuilderButton.position ??\n \"bottom-right\",\n })\n\n Config.set(\n \"enableLivePreviewOutsideIframe\",\n initData.enableLivePreviewOutsideIframe ??\n config.enableLivePreviewOutsideIframe\n );\n\n // client URL params\n handleClientUrlParams(\n initData.clientUrlParams ??\n stackSdk.live_preview?.clientUrlParams ??\n config.clientUrlParams\n );\n\n if (initData.mode) {\n switch (initData.mode) {\n case \"preview\": {\n Config.set(\"mode\", ILivePreviewModeConfig.PREVIEW);\n break;\n }\n case \"builder\": {\n Config.set(\"mode\", ILivePreviewModeConfig.BUILDER);\n break;\n }\n default: {\n throw new TypeError(\n \"Live Preview SDK: The mode must be either 'builder' or 'preview'\"\n );\n }\n }\n }\n\n Config.set(\n \"debug\",\n initData.debug ?? stackSdk.live_preview?.debug ?? config.debug\n );\n\n handleStackDetails(initData, stackSdk as IStackSdk);\n};\n\nfunction handleStackDetails(\n initData: Partial<IInitData>,\n stackSdk: Partial<IStackSdk>\n): void {\n const config = Config.get();\n\n Config.set(\n \"stackDetails.apiKey\",\n initData.stackDetails?.apiKey ?? config.stackDetails.apiKey\n );\n\n Config.set(\n \"stackDetails.environment\",\n initData.stackDetails?.environment ??\n stackSdk.environment ??\n config.stackDetails.environment\n );\n\n Config.set(\n \"stackDetails.branch\",\n initData.stackDetails?.branch ??\n stackSdk.branch ??\n stackSdk.headers?.branch ??\n config.stackDetails.branch\n );\n\n Config.set(\n \"stackDetails.locale\",\n initData.stackDetails?.locale ?? config.stackDetails.locale\n );\n\n if (config.mode >= ILivePreviewModeConfig.BUILDER) {\n if (!config.stackDetails.environment) {\n throw Error(\"Live preview SDK: environment is required\");\n }\n\n if (!config.stackDetails.apiKey) {\n throw Error(\"Live preview SDK: api key is required\");\n }\n }\n}\n\nexport const handleUserConfig = {\n clientUrlParams: handleClientUrlParams,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/configManager/handleUserConfig.ts"],"sourcesContent":["import {\n type IClientUrlParams,\n type IInitData,\n ILivePreviewModeConfig,\n type IStackSdk,\n} from \"../types/types\";\nimport Config from \"./configManager\";\n\nconst handleClientUrlParams = (userConfig: Partial<IClientUrlParams>): void => {\n const config = Config.get();\n const clientUrlParams = config.clientUrlParams;\n\n Config.set(\n \"clientUrlParams.host\",\n userConfig.host ?? config.clientUrlParams.host\n );\n\n Config.set(\n \"clientUrlParams.protocol\",\n userConfig.protocol ?? clientUrlParams.protocol\n );\n Config.set(\"clientUrlParams.port\", userConfig.port ?? clientUrlParams.port);\n\n if (userConfig.protocol !== undefined && userConfig.port === undefined) {\n switch (userConfig.protocol) {\n case \"http\": {\n Config.set(\"clientUrlParams.port\", 80);\n break;\n }\n case \"https\": {\n Config.set(\"clientUrlParams.port\", 443);\n break;\n }\n }\n }\n\n let host = config.clientUrlParams.host;\n\n // build url\n if (typeof host == \"string\" && host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n Config.set(\"clientUrlParams.host\", host);\n }\n\n const url = `${clientUrlParams.protocol}://${config.clientUrlParams.host}:${clientUrlParams.port}`;\n\n Config.set(\"clientUrlParams.url\", url);\n};\n\n// TODO: add documentation mentioning that you cannot pass stack sdk in the init data\n\nexport const handleInitData = (initData: Partial<IInitData>): void => {\n const config = Config.get();\n const stackSdk = initData.stackSdk || config.stackSdk;\n\n Config.set(\n \"enable\",\n initData.enable ?? stackSdk.live_preview?.enable ?? config.enable\n );\n\n Config.set(\n \"ssr\",\n stackSdk.live_preview?.ssr ??\n initData.ssr ??\n (typeof initData.stackSdk === \"object\" ? false : true) ??\n true\n );\n\n Config.set(\n \"runScriptsOnUpdate\",\n initData.runScriptsOnUpdate ??\n stackSdk.live_preview?.runScriptsOnUpdate ??\n config.runScriptsOnUpdate\n );\n\n Config.set(\"stackSdk\", initData.stackSdk ?? config.stackSdk);\n\n Config.set(\n \"cleanCslpOnProduction\",\n initData.cleanCslpOnProduction ??\n stackSdk.live_preview?.cleanCslpOnProduction ??\n config.cleanCslpOnProduction\n );\n\n Config.set(\"editButton\", {\n enable:\n initData.editButton?.enable ??\n stackSdk.live_preview?.editButton?.enable ??\n config.editButton.enable,\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(initData.editButton?.exclude) &&\n initData.editButton?.exclude\n ? initData.editButton?.exclude\n : Array.isArray(stackSdk.live_preview?.exclude) &&\n stackSdk.live_preview?.exclude\n ? stackSdk.live_preview?.exclude\n : (config.editButton.exclude ?? []),\n position:\n initData.editButton?.position ??\n stackSdk.live_preview?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n initData.editButton?.includeByQueryParameter ??\n stackSdk.live_preview?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n });\n \n Config.set(\"editInVisualBuilderButton\", {\n enable:\n initData.editInVisualBuilderButton?.enable ??\n stackSdk.live_preview?.editInVisualBuilderButton?.enable ??\n config.editInVisualBuilderButton.enable,\n position:\n initData.editInVisualBuilderButton?.position ??\n stackSdk.live_preview?.position ??\n config.editInVisualBuilderButton.position ??\n \"bottom-right\",\n })\n\n Config.set(\"overlayPropagation\", {\n enable:\n initData.overlayPropagation?.enable ??\n stackSdk.live_preview?.overlayPropagation?.enable ??\n config.overlayPropagation.enable,\n });\n\n Config.set(\n \"enableLivePreviewOutsideIframe\",\n initData.enableLivePreviewOutsideIframe ??\n config.enableLivePreviewOutsideIframe\n );\n\n // client URL params\n handleClientUrlParams(\n initData.clientUrlParams ??\n stackSdk.live_preview?.clientUrlParams ??\n config.clientUrlParams\n );\n\n if (initData.mode) {\n switch (initData.mode) {\n case \"preview\": {\n Config.set(\"mode\", ILivePreviewModeConfig.PREVIEW);\n break;\n }\n case \"builder\": {\n Config.set(\"mode\", ILivePreviewModeConfig.BUILDER);\n break;\n }\n default: {\n throw new TypeError(\n \"Live Preview SDK: The mode must be either 'builder' or 'preview'\"\n );\n }\n }\n }\n\n Config.set(\n \"debug\",\n initData.debug ?? stackSdk.live_preview?.debug ?? config.debug\n );\n\n handleStackDetails(initData, stackSdk as IStackSdk);\n};\n\nfunction handleStackDetails(\n initData: Partial<IInitData>,\n stackSdk: Partial<IStackSdk>\n): void {\n const config = Config.get();\n\n Config.set(\n \"stackDetails.apiKey\",\n initData.stackDetails?.apiKey ?? config.stackDetails.apiKey\n );\n\n Config.set(\n \"stackDetails.environment\",\n initData.stackDetails?.environment ??\n stackSdk.environment ??\n config.stackDetails.environment\n );\n\n Config.set(\n \"stackDetails.branch\",\n initData.stackDetails?.branch ??\n stackSdk.branch ??\n stackSdk.headers?.branch ??\n config.stackDetails.branch\n );\n\n Config.set(\n \"stackDetails.locale\",\n initData.stackDetails?.locale ?? config.stackDetails.locale\n );\n\n if (config.mode >= ILivePreviewModeConfig.BUILDER) {\n if (!config.stackDetails.environment) {\n throw Error(\"Live preview SDK: environment is required\");\n }\n\n if (!config.stackDetails.apiKey) {\n throw Error(\"Live preview SDK: api key is required\");\n }\n }\n}\n\nexport const handleUserConfig = {\n clientUrlParams: handleClientUrlParams,\n};\n"],"mappings":"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","names":[]}
@@ -138,7 +138,19 @@ function getMultipleFieldMetadata(content_type_uid, entry_uid, locale, fieldPath
138
138
  index: (0, import_lodash_es.isNil)(index) ? -1 : +index
139
139
  };
140
140
  }
141
+ function highlightCslpElement(element, cslpTag, elements, callback) {
142
+ if (elements.highlightedElement)
143
+ elements.highlightedElement.classList.remove(
144
+ (0, import_editButton.cslpTagStyles)()["cslp-edit-mode"]
145
+ );
146
+ element.classList.add((0, import_editButton.cslpTagStyles)()["cslp-edit-mode"]);
147
+ const updatedElements = elements;
148
+ updatedElements.highlightedElement = element;
149
+ import_configManager.default.set("elements", updatedElements);
150
+ callback == null ? void 0 : callback({ cslpTag, highlightedElement: element });
151
+ }
141
152
  function addCslpOutline(e, callback) {
153
+ var _a;
142
154
  const elements = import_configManager.default.get().elements;
143
155
  let trigger = true;
144
156
  const eventTargets = e.composedPath();
@@ -148,23 +160,25 @@ function addCslpOutline(e, callback) {
148
160
  if (typeof (element == null ? void 0 : element.getAttribute) !== "function") continue;
149
161
  const cslpTag = element.getAttribute("data-cslp");
150
162
  if (trigger && isValidCslp(cslpTag)) {
151
- if (elements.highlightedElement)
152
- elements.highlightedElement.classList.remove(
153
- (0, import_editButton.cslpTagStyles)()["cslp-edit-mode"]
154
- );
155
- element.classList.add((0, import_editButton.cslpTagStyles)()["cslp-edit-mode"]);
156
- const updatedElements = elements;
157
- updatedElements.highlightedElement = element;
158
- import_configManager.default.set("elements", updatedElements);
159
- callback == null ? void 0 : callback({
160
- cslpTag,
161
- highlightedElement: element
162
- });
163
+ highlightCslpElement(element, cslpTag, elements, callback);
163
164
  trigger = false;
164
165
  } else if (!trigger) {
165
166
  element.classList.remove((0, import_editButton.cslpTagStyles)()["cslp-edit-mode"]);
166
167
  }
167
168
  }
169
+ if (trigger && ((_a = import_configManager.default.get().overlayPropagation) == null ? void 0 : _a.enable)) {
170
+ const pointElements = document.elementsFromPoint(e.clientX, e.clientY);
171
+ for (const el of pointElements) {
172
+ const element = el;
173
+ if (element.nodeName === "BODY") break;
174
+ if (typeof (element == null ? void 0 : element.getAttribute) !== "function") continue;
175
+ const cslpTag = element.getAttribute("data-cslp");
176
+ if (isValidCslp(cslpTag)) {
177
+ highlightCslpElement(element, cslpTag, elements, callback);
178
+ break;
179
+ }
180
+ }
181
+ }
168
182
  }
169
183
  // Annotate the CommonJS export names for ESM import in node:
170
184
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cslp/cslpdata.ts"],"sourcesContent":["import { isNil, isFinite, findLastIndex, findLast } from \"lodash-es\";\nimport {\n CslpData,\n CslpDataMultipleFieldMetadata,\n CslpDataParentDetails,\n} from \"./types/cslp.types\";\nimport Config from \"../configManager/configManager\";\nimport { DeepSignal } from \"deepsignal\";\nimport { cslpTagStyles } from \"../livePreview/editButton/editButton.style\";\n\n/**\n * Validates that the required CSLP parts (content_type_uid, entry_uid/entry_uid_variant_uid, locale) are non-empty.\n * @param parts The array of parts from splitting the CSLP string by \".\"\n * @returns `true` if all required parts (first 3) are non-empty, `false` otherwise.\n */\nfunction areRequiredPartsNonEmpty(parts: string[]): boolean {\n // Check that we have at least 3 parts\n if (parts.length < 3) {\n return false;\n }\n // Verify that content_type_uid (parts[0]), entry_uid/entry_uid_variant_uid (parts[1]), and locale (parts[2]) are all non-empty\n return parts[0].length > 0 && parts[1].length > 0 && parts[2].length > 0;\n}\n\n/**\n * Validates if a CSLP value string is valid.\n * \n * Supports two formats:\n * - **v1 format**: `content_type_uid.entry_uid.locale[.field_path]` (requires at least 3 parts)\n * - **v2 format**: `v2:content_type_uid.entry_uid_variant_uid.locale[.field_path]` \n * (requires at least 3 parts, entry_uid_variant_uid must contain underscore separating entry_uid and variant_uid)\n * \n * @param cslpValue The CSLP value string to validate (can be null or undefined).\n * @returns Type predicate: `true` if the CSLP value is valid (narrows type to `string`), `false` otherwise.\n * \n * @example\n * Valid v1 format\n * isValidCslp(\"page.entry123.en-us\") -> true\n * isValidCslp(\"page.entry123.en-us.title\") -> true\n * \n * Valid v2 format\n * isValidCslp(\"v2:page.entry123_variant456.en-us\") -> true\n * isValidCslp(\"v2:page.entry123_variant456.en-us.title\") -> true\n * \n * Invalid cases\n * isValidCslp(null) -> false\n * isValidCslp(\"invalid\") -> false (less than 3 parts)\n * isValidCslp(\"v2:page.entry123.en-us\") -> false (missing underscore in entry_uid_variant_uid)\n */\nexport function isValidCslp(\n cslpValue: string | null | undefined\n): cslpValue is string {\n // Return false for null, undefined, or empty string\n if (!cslpValue) {\n return false;\n }\n\n // Check for v2 format (starts with \"v2:\")\n if (cslpValue.startsWith(\"v2:\")) {\n const dataAfterPrefix = cslpValue.substring(3); // Remove \"v2:\" prefix\n const parts = dataAfterPrefix.split(\".\");\n // v2 format requires at least 3 parts: content_type_uid.entry_uid_variant_uid.locale\n // Verify that content_type_uid, entry_uid_variant_uid, and locale are all non-empty\n if (!areRequiredPartsNonEmpty(parts)) {\n return false;\n }\n // Verify that entry_uid_variant_uid (second part) contains both entry_uid and variant_uid separated by at least one underscore\n const entryUidVariantUid = parts[1];\n const entryVariantParts = entryUidVariantUid.split(\"_\");\n // Check that we have at least 2 parts (entry_uid and variant_uid) and all parts are non-empty\n return entryVariantParts.length >= 2 && entryVariantParts.every((part) => part.length > 0);\n }\n\n // v1 format (default, no prefix)\n const parts = cslpValue.split(\".\");\n // v1 format requires at least 3 parts: content_type_uid.entry_uid.locale\n // Verify that content_type_uid, entry_uid, and locale are all non-empty\n return areRequiredPartsNonEmpty(parts);\n}\n\n/**\n * Extracts details from a CSLP value string.\n * @param cslpValue The CSLP value string to extract details from.\n * @returns An object containing the extracted details.\n */\nexport function extractDetailsFromCslp(cslpValue: string): CslpData {\n let [cslpVersion, cslpData] = cslpValue.split(\":\");\n // If the cslpVersion is greater than 2 letter which means it is v1 version of cslp data\n if (cslpVersion.length > 2) {\n cslpData = cslpVersion;\n cslpVersion = \"v1\";\n }\n\n const [content_type_uid, entryInfo, locale, ...fieldPath] =\n cslpData.split(\".\");\n\n let entry_uid: string;\n let variant;\n\n switch (cslpVersion) {\n case \"v2\": {\n const [uid, variant_uid] = entryInfo.split(\"_\");\n entry_uid = uid;\n variant = variant_uid;\n break;\n }\n default: {\n entry_uid = entryInfo;\n break;\n }\n }\n const instancePathWithInstance = fieldPath.join(\".\");\n const calculatedPath = fieldPath.filter((path) => {\n const isEmpty = isNil(path);\n const isNumber = isFinite(+path);\n return (!isEmpty && !isNumber) || false;\n });\n\n const multipleFieldMetadata: CslpDataMultipleFieldMetadata =\n getMultipleFieldMetadata(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n /**\n * The index in the end of the field does not represent a field.\n * It represents the index of the field in the multiple field.\n * Hence, we pop it out.\n */\n if (isFinite(+fieldPath[fieldPath.length - 1])) {\n fieldPath.pop();\n }\n\n return {\n entry_uid,\n content_type_uid,\n variant,\n locale,\n cslpValue: cslpValue,\n fieldPath: calculatedPath.join(\".\"),\n fieldPathWithIndex: fieldPath.join(\".\"),\n multipleFieldMetadata: multipleFieldMetadata,\n instance: {\n fieldPathWithIndex: instancePathWithInstance,\n },\n };\n}\n\n/**\n * Returns the parent path details of a given field path in CSLP format.\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the entry.\n * @param locale - The locale of the entry.\n * @param fieldPath - The field path to get the parent path details for.\n * @returns The parent path details in CSLP format, or null if the field path does not have a parent.\n */\nfunction getParentPathDetails(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataParentDetails | null {\n const index = findLastIndex(fieldPath, (path) => isFinite(+path));\n if (index === -1) return null;\n\n const parentPath = fieldPath.slice(0, index);\n return {\n parentPath: parentPath.join(\".\"),\n parentCslpValue: [\n content_type_uid,\n entry_uid,\n locale,\n ...parentPath,\n ].join(\".\"),\n };\n}\n\n/**\n * Returns metadata for a multiple field in a content entry.\n * @summary ONLY USE THESE RETURNED VALUES WHEN FIELD IS MULTIPLE\n * @summary IT GIVES WRONG DATA IF FIELD IS NOT MULTIPLE\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the content entry.\n * @param locale - The locale of the content entry.\n * @param fieldPath - The path of the multiple field.\n * @returns The metadata for the multiple field.\n */\nfunction getMultipleFieldMetadata(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataMultipleFieldMetadata {\n const parentDetails = getParentPathDetails(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n const index = findLast(fieldPath, (path) => isFinite(+path));\n\n return {\n parentDetails: parentDetails,\n index: isNil(index) ? -1 : +index,\n };\n}\n\n//TODO: move this to editbutton\n/**\n * Adds an outline to the clicked element and triggers a callback function.\n * @param e - The MouseEvent object representing the click event.\n * @param callback - An optional callback function that will be called with the CSLP tag and highlighted element as arguments.\n */\nexport function addCslpOutline(\n e: MouseEvent,\n callback?: (args: {\n cslpTag: string;\n highlightedElement: HTMLElement;\n }) => void\n): void {\n const elements = Config.get().elements;\n\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && isValidCslp(cslpTag)) {\n if (elements.highlightedElement)\n elements.highlightedElement.classList.remove(\n cslpTagStyles()[\"cslp-edit-mode\"]\n );\n element.classList.add(cslpTagStyles()[\"cslp-edit-mode\"]);\n\n const updatedElements = elements;\n updatedElements.highlightedElement =\n element as DeepSignal<HTMLElement>;\n Config.set(\"elements\", updatedElements);\n\n callback?.({\n cslpTag: cslpTag,\n highlightedElement: element,\n });\n\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(cslpTagStyles()[\"cslp-edit-mode\"]);\n }\n }\n}\n"],"mappings":"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","names":["parts","Config"]}
1
+ {"version":3,"sources":["../../../src/cslp/cslpdata.ts"],"sourcesContent":["import { isNil, isFinite, findLastIndex, findLast } from \"lodash-es\";\nimport {\n CslpData,\n CslpDataMultipleFieldMetadata,\n CslpDataParentDetails,\n} from \"./types/cslp.types\";\nimport Config from \"../configManager/configManager\";\nimport { DeepSignal } from \"deepsignal\";\nimport { cslpTagStyles } from \"../livePreview/editButton/editButton.style\";\n\n/**\n * Validates that the required CSLP parts (content_type_uid, entry_uid/entry_uid_variant_uid, locale) are non-empty.\n * @param parts The array of parts from splitting the CSLP string by \".\"\n * @returns `true` if all required parts (first 3) are non-empty, `false` otherwise.\n */\nfunction areRequiredPartsNonEmpty(parts: string[]): boolean {\n // Check that we have at least 3 parts\n if (parts.length < 3) {\n return false;\n }\n // Verify that content_type_uid (parts[0]), entry_uid/entry_uid_variant_uid (parts[1]), and locale (parts[2]) are all non-empty\n return parts[0].length > 0 && parts[1].length > 0 && parts[2].length > 0;\n}\n\n/**\n * Validates if a CSLP value string is valid.\n * \n * Supports two formats:\n * - **v1 format**: `content_type_uid.entry_uid.locale[.field_path]` (requires at least 3 parts)\n * - **v2 format**: `v2:content_type_uid.entry_uid_variant_uid.locale[.field_path]` \n * (requires at least 3 parts, entry_uid_variant_uid must contain underscore separating entry_uid and variant_uid)\n * \n * @param cslpValue The CSLP value string to validate (can be null or undefined).\n * @returns Type predicate: `true` if the CSLP value is valid (narrows type to `string`), `false` otherwise.\n * \n * @example\n * Valid v1 format\n * isValidCslp(\"page.entry123.en-us\") -> true\n * isValidCslp(\"page.entry123.en-us.title\") -> true\n * \n * Valid v2 format\n * isValidCslp(\"v2:page.entry123_variant456.en-us\") -> true\n * isValidCslp(\"v2:page.entry123_variant456.en-us.title\") -> true\n * \n * Invalid cases\n * isValidCslp(null) -> false\n * isValidCslp(\"invalid\") -> false (less than 3 parts)\n * isValidCslp(\"v2:page.entry123.en-us\") -> false (missing underscore in entry_uid_variant_uid)\n */\nexport function isValidCslp(\n cslpValue: string | null | undefined\n): cslpValue is string {\n // Return false for null, undefined, or empty string\n if (!cslpValue) {\n return false;\n }\n\n // Check for v2 format (starts with \"v2:\")\n if (cslpValue.startsWith(\"v2:\")) {\n const dataAfterPrefix = cslpValue.substring(3); // Remove \"v2:\" prefix\n const parts = dataAfterPrefix.split(\".\");\n // v2 format requires at least 3 parts: content_type_uid.entry_uid_variant_uid.locale\n // Verify that content_type_uid, entry_uid_variant_uid, and locale are all non-empty\n if (!areRequiredPartsNonEmpty(parts)) {\n return false;\n }\n // Verify that entry_uid_variant_uid (second part) contains both entry_uid and variant_uid separated by at least one underscore\n const entryUidVariantUid = parts[1];\n const entryVariantParts = entryUidVariantUid.split(\"_\");\n // Check that we have at least 2 parts (entry_uid and variant_uid) and all parts are non-empty\n return entryVariantParts.length >= 2 && entryVariantParts.every((part) => part.length > 0);\n }\n\n // v1 format (default, no prefix)\n const parts = cslpValue.split(\".\");\n // v1 format requires at least 3 parts: content_type_uid.entry_uid.locale\n // Verify that content_type_uid, entry_uid, and locale are all non-empty\n return areRequiredPartsNonEmpty(parts);\n}\n\n/**\n * Extracts details from a CSLP value string.\n * @param cslpValue The CSLP value string to extract details from.\n * @returns An object containing the extracted details.\n */\nexport function extractDetailsFromCslp(cslpValue: string): CslpData {\n let [cslpVersion, cslpData] = cslpValue.split(\":\");\n // If the cslpVersion is greater than 2 letter which means it is v1 version of cslp data\n if (cslpVersion.length > 2) {\n cslpData = cslpVersion;\n cslpVersion = \"v1\";\n }\n\n const [content_type_uid, entryInfo, locale, ...fieldPath] =\n cslpData.split(\".\");\n\n let entry_uid: string;\n let variant;\n\n switch (cslpVersion) {\n case \"v2\": {\n const [uid, variant_uid] = entryInfo.split(\"_\");\n entry_uid = uid;\n variant = variant_uid;\n break;\n }\n default: {\n entry_uid = entryInfo;\n break;\n }\n }\n const instancePathWithInstance = fieldPath.join(\".\");\n const calculatedPath = fieldPath.filter((path) => {\n const isEmpty = isNil(path);\n const isNumber = isFinite(+path);\n return (!isEmpty && !isNumber) || false;\n });\n\n const multipleFieldMetadata: CslpDataMultipleFieldMetadata =\n getMultipleFieldMetadata(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n /**\n * The index in the end of the field does not represent a field.\n * It represents the index of the field in the multiple field.\n * Hence, we pop it out.\n */\n if (isFinite(+fieldPath[fieldPath.length - 1])) {\n fieldPath.pop();\n }\n\n return {\n entry_uid,\n content_type_uid,\n variant,\n locale,\n cslpValue: cslpValue,\n fieldPath: calculatedPath.join(\".\"),\n fieldPathWithIndex: fieldPath.join(\".\"),\n multipleFieldMetadata: multipleFieldMetadata,\n instance: {\n fieldPathWithIndex: instancePathWithInstance,\n },\n };\n}\n\n/**\n * Returns the parent path details of a given field path in CSLP format.\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the entry.\n * @param locale - The locale of the entry.\n * @param fieldPath - The field path to get the parent path details for.\n * @returns The parent path details in CSLP format, or null if the field path does not have a parent.\n */\nfunction getParentPathDetails(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataParentDetails | null {\n const index = findLastIndex(fieldPath, (path) => isFinite(+path));\n if (index === -1) return null;\n\n const parentPath = fieldPath.slice(0, index);\n return {\n parentPath: parentPath.join(\".\"),\n parentCslpValue: [\n content_type_uid,\n entry_uid,\n locale,\n ...parentPath,\n ].join(\".\"),\n };\n}\n\n/**\n * Returns metadata for a multiple field in a content entry.\n * @summary ONLY USE THESE RETURNED VALUES WHEN FIELD IS MULTIPLE\n * @summary IT GIVES WRONG DATA IF FIELD IS NOT MULTIPLE\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the content entry.\n * @param locale - The locale of the content entry.\n * @param fieldPath - The path of the multiple field.\n * @returns The metadata for the multiple field.\n */\nfunction getMultipleFieldMetadata(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataMultipleFieldMetadata {\n const parentDetails = getParentPathDetails(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n const index = findLast(fieldPath, (path) => isFinite(+path));\n\n return {\n parentDetails: parentDetails,\n index: isNil(index) ? -1 : +index,\n };\n}\n\n//TODO: move this to editbutton\n/**\n * Adds an outline to the clicked element and triggers a callback function.\n * @param e - The MouseEvent object representing the click event.\n * @param callback - An optional callback function that will be called with the CSLP tag and highlighted element as arguments.\n */\nfunction highlightCslpElement(\n element: HTMLElement,\n cslpTag: string,\n elements: ReturnType<typeof Config.get>[\"elements\"],\n callback?: (args: { cslpTag: string; highlightedElement: HTMLElement }) => void\n): void {\n if (elements.highlightedElement)\n elements.highlightedElement.classList.remove(\n cslpTagStyles()[\"cslp-edit-mode\"]\n );\n element.classList.add(cslpTagStyles()[\"cslp-edit-mode\"]);\n const updatedElements = elements;\n updatedElements.highlightedElement = element as DeepSignal<HTMLElement>;\n Config.set(\"elements\", updatedElements);\n callback?.({ cslpTag, highlightedElement: element });\n}\n\nexport function addCslpOutline(\n e: MouseEvent,\n callback?: (args: {\n cslpTag: string;\n highlightedElement: HTMLElement;\n }) => void\n): void {\n const elements = Config.get().elements;\n\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && isValidCslp(cslpTag)) {\n highlightCslpElement(element, cslpTag, elements, callback);\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(cslpTagStyles()[\"cslp-edit-mode\"]);\n }\n }\n\n // composedPath() misses elements that are visually under a sibling overlay;\n // fall back to elementsFromPoint so the Edit button can still find the field.\n if (trigger && Config.get().overlayPropagation?.enable) {\n const pointElements = document.elementsFromPoint(e.clientX, e.clientY);\n for (const el of pointElements) {\n const element = el as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n const cslpTag = element.getAttribute(\"data-cslp\");\n if (isValidCslp(cslpTag)) {\n highlightCslpElement(element, cslpTag, elements, callback);\n break;\n }\n }\n }\n}\n"],"mappings":"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","names":["parts","Config"]}
@@ -32,11 +32,6 @@ declare function isValidCslp(cslpValue: string | null | undefined): cslpValue is
32
32
  * @returns An object containing the extracted details.
33
33
  */
34
34
  declare function extractDetailsFromCslp(cslpValue: string): CslpData;
35
- /**
36
- * Adds an outline to the clicked element and triggers a callback function.
37
- * @param e - The MouseEvent object representing the click event.
38
- * @param callback - An optional callback function that will be called with the CSLP tag and highlighted element as arguments.
39
- */
40
35
  declare function addCslpOutline(e: MouseEvent, callback?: (args: {
41
36
  cslpTag: string;
42
37
  highlightedElement: HTMLElement;
@@ -32,11 +32,6 @@ declare function isValidCslp(cslpValue: string | null | undefined): cslpValue is
32
32
  * @returns An object containing the extracted details.
33
33
  */
34
34
  declare function extractDetailsFromCslp(cslpValue: string): CslpData;
35
- /**
36
- * Adds an outline to the clicked element and triggers a callback function.
37
- * @param e - The MouseEvent object representing the click event.
38
- * @param callback - An optional callback function that will be called with the CSLP tag and highlighted element as arguments.
39
- */
40
35
  declare function addCslpOutline(e: MouseEvent, callback?: (args: {
41
36
  cslpTag: string;
42
37
  highlightedElement: HTMLElement;
@@ -104,7 +104,19 @@ function getMultipleFieldMetadata(content_type_uid, entry_uid, locale, fieldPath
104
104
  index: isNil(index) ? -1 : +index
105
105
  };
106
106
  }
107
+ function highlightCslpElement(element, cslpTag, elements, callback) {
108
+ if (elements.highlightedElement)
109
+ elements.highlightedElement.classList.remove(
110
+ cslpTagStyles()["cslp-edit-mode"]
111
+ );
112
+ element.classList.add(cslpTagStyles()["cslp-edit-mode"]);
113
+ const updatedElements = elements;
114
+ updatedElements.highlightedElement = element;
115
+ Config.set("elements", updatedElements);
116
+ callback == null ? void 0 : callback({ cslpTag, highlightedElement: element });
117
+ }
107
118
  function addCslpOutline(e, callback) {
119
+ var _a;
108
120
  const elements = Config.get().elements;
109
121
  let trigger = true;
110
122
  const eventTargets = e.composedPath();
@@ -114,23 +126,25 @@ function addCslpOutline(e, callback) {
114
126
  if (typeof (element == null ? void 0 : element.getAttribute) !== "function") continue;
115
127
  const cslpTag = element.getAttribute("data-cslp");
116
128
  if (trigger && isValidCslp(cslpTag)) {
117
- if (elements.highlightedElement)
118
- elements.highlightedElement.classList.remove(
119
- cslpTagStyles()["cslp-edit-mode"]
120
- );
121
- element.classList.add(cslpTagStyles()["cslp-edit-mode"]);
122
- const updatedElements = elements;
123
- updatedElements.highlightedElement = element;
124
- Config.set("elements", updatedElements);
125
- callback == null ? void 0 : callback({
126
- cslpTag,
127
- highlightedElement: element
128
- });
129
+ highlightCslpElement(element, cslpTag, elements, callback);
129
130
  trigger = false;
130
131
  } else if (!trigger) {
131
132
  element.classList.remove(cslpTagStyles()["cslp-edit-mode"]);
132
133
  }
133
134
  }
135
+ if (trigger && ((_a = Config.get().overlayPropagation) == null ? void 0 : _a.enable)) {
136
+ const pointElements = document.elementsFromPoint(e.clientX, e.clientY);
137
+ for (const el of pointElements) {
138
+ const element = el;
139
+ if (element.nodeName === "BODY") break;
140
+ if (typeof (element == null ? void 0 : element.getAttribute) !== "function") continue;
141
+ const cslpTag = element.getAttribute("data-cslp");
142
+ if (isValidCslp(cslpTag)) {
143
+ highlightCslpElement(element, cslpTag, elements, callback);
144
+ break;
145
+ }
146
+ }
147
+ }
134
148
  }
135
149
  export {
136
150
  addCslpOutline,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cslp/cslpdata.ts"],"sourcesContent":["import { isNil, isFinite, findLastIndex, findLast } from \"lodash-es\";\nimport {\n CslpData,\n CslpDataMultipleFieldMetadata,\n CslpDataParentDetails,\n} from \"./types/cslp.types\";\nimport Config from \"../configManager/configManager\";\nimport { DeepSignal } from \"deepsignal\";\nimport { cslpTagStyles } from \"../livePreview/editButton/editButton.style\";\n\n/**\n * Validates that the required CSLP parts (content_type_uid, entry_uid/entry_uid_variant_uid, locale) are non-empty.\n * @param parts The array of parts from splitting the CSLP string by \".\"\n * @returns `true` if all required parts (first 3) are non-empty, `false` otherwise.\n */\nfunction areRequiredPartsNonEmpty(parts: string[]): boolean {\n // Check that we have at least 3 parts\n if (parts.length < 3) {\n return false;\n }\n // Verify that content_type_uid (parts[0]), entry_uid/entry_uid_variant_uid (parts[1]), and locale (parts[2]) are all non-empty\n return parts[0].length > 0 && parts[1].length > 0 && parts[2].length > 0;\n}\n\n/**\n * Validates if a CSLP value string is valid.\n * \n * Supports two formats:\n * - **v1 format**: `content_type_uid.entry_uid.locale[.field_path]` (requires at least 3 parts)\n * - **v2 format**: `v2:content_type_uid.entry_uid_variant_uid.locale[.field_path]` \n * (requires at least 3 parts, entry_uid_variant_uid must contain underscore separating entry_uid and variant_uid)\n * \n * @param cslpValue The CSLP value string to validate (can be null or undefined).\n * @returns Type predicate: `true` if the CSLP value is valid (narrows type to `string`), `false` otherwise.\n * \n * @example\n * Valid v1 format\n * isValidCslp(\"page.entry123.en-us\") -> true\n * isValidCslp(\"page.entry123.en-us.title\") -> true\n * \n * Valid v2 format\n * isValidCslp(\"v2:page.entry123_variant456.en-us\") -> true\n * isValidCslp(\"v2:page.entry123_variant456.en-us.title\") -> true\n * \n * Invalid cases\n * isValidCslp(null) -> false\n * isValidCslp(\"invalid\") -> false (less than 3 parts)\n * isValidCslp(\"v2:page.entry123.en-us\") -> false (missing underscore in entry_uid_variant_uid)\n */\nexport function isValidCslp(\n cslpValue: string | null | undefined\n): cslpValue is string {\n // Return false for null, undefined, or empty string\n if (!cslpValue) {\n return false;\n }\n\n // Check for v2 format (starts with \"v2:\")\n if (cslpValue.startsWith(\"v2:\")) {\n const dataAfterPrefix = cslpValue.substring(3); // Remove \"v2:\" prefix\n const parts = dataAfterPrefix.split(\".\");\n // v2 format requires at least 3 parts: content_type_uid.entry_uid_variant_uid.locale\n // Verify that content_type_uid, entry_uid_variant_uid, and locale are all non-empty\n if (!areRequiredPartsNonEmpty(parts)) {\n return false;\n }\n // Verify that entry_uid_variant_uid (second part) contains both entry_uid and variant_uid separated by at least one underscore\n const entryUidVariantUid = parts[1];\n const entryVariantParts = entryUidVariantUid.split(\"_\");\n // Check that we have at least 2 parts (entry_uid and variant_uid) and all parts are non-empty\n return entryVariantParts.length >= 2 && entryVariantParts.every((part) => part.length > 0);\n }\n\n // v1 format (default, no prefix)\n const parts = cslpValue.split(\".\");\n // v1 format requires at least 3 parts: content_type_uid.entry_uid.locale\n // Verify that content_type_uid, entry_uid, and locale are all non-empty\n return areRequiredPartsNonEmpty(parts);\n}\n\n/**\n * Extracts details from a CSLP value string.\n * @param cslpValue The CSLP value string to extract details from.\n * @returns An object containing the extracted details.\n */\nexport function extractDetailsFromCslp(cslpValue: string): CslpData {\n let [cslpVersion, cslpData] = cslpValue.split(\":\");\n // If the cslpVersion is greater than 2 letter which means it is v1 version of cslp data\n if (cslpVersion.length > 2) {\n cslpData = cslpVersion;\n cslpVersion = \"v1\";\n }\n\n const [content_type_uid, entryInfo, locale, ...fieldPath] =\n cslpData.split(\".\");\n\n let entry_uid: string;\n let variant;\n\n switch (cslpVersion) {\n case \"v2\": {\n const [uid, variant_uid] = entryInfo.split(\"_\");\n entry_uid = uid;\n variant = variant_uid;\n break;\n }\n default: {\n entry_uid = entryInfo;\n break;\n }\n }\n const instancePathWithInstance = fieldPath.join(\".\");\n const calculatedPath = fieldPath.filter((path) => {\n const isEmpty = isNil(path);\n const isNumber = isFinite(+path);\n return (!isEmpty && !isNumber) || false;\n });\n\n const multipleFieldMetadata: CslpDataMultipleFieldMetadata =\n getMultipleFieldMetadata(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n /**\n * The index in the end of the field does not represent a field.\n * It represents the index of the field in the multiple field.\n * Hence, we pop it out.\n */\n if (isFinite(+fieldPath[fieldPath.length - 1])) {\n fieldPath.pop();\n }\n\n return {\n entry_uid,\n content_type_uid,\n variant,\n locale,\n cslpValue: cslpValue,\n fieldPath: calculatedPath.join(\".\"),\n fieldPathWithIndex: fieldPath.join(\".\"),\n multipleFieldMetadata: multipleFieldMetadata,\n instance: {\n fieldPathWithIndex: instancePathWithInstance,\n },\n };\n}\n\n/**\n * Returns the parent path details of a given field path in CSLP format.\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the entry.\n * @param locale - The locale of the entry.\n * @param fieldPath - The field path to get the parent path details for.\n * @returns The parent path details in CSLP format, or null if the field path does not have a parent.\n */\nfunction getParentPathDetails(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataParentDetails | null {\n const index = findLastIndex(fieldPath, (path) => isFinite(+path));\n if (index === -1) return null;\n\n const parentPath = fieldPath.slice(0, index);\n return {\n parentPath: parentPath.join(\".\"),\n parentCslpValue: [\n content_type_uid,\n entry_uid,\n locale,\n ...parentPath,\n ].join(\".\"),\n };\n}\n\n/**\n * Returns metadata for a multiple field in a content entry.\n * @summary ONLY USE THESE RETURNED VALUES WHEN FIELD IS MULTIPLE\n * @summary IT GIVES WRONG DATA IF FIELD IS NOT MULTIPLE\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the content entry.\n * @param locale - The locale of the content entry.\n * @param fieldPath - The path of the multiple field.\n * @returns The metadata for the multiple field.\n */\nfunction getMultipleFieldMetadata(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataMultipleFieldMetadata {\n const parentDetails = getParentPathDetails(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n const index = findLast(fieldPath, (path) => isFinite(+path));\n\n return {\n parentDetails: parentDetails,\n index: isNil(index) ? -1 : +index,\n };\n}\n\n//TODO: move this to editbutton\n/**\n * Adds an outline to the clicked element and triggers a callback function.\n * @param e - The MouseEvent object representing the click event.\n * @param callback - An optional callback function that will be called with the CSLP tag and highlighted element as arguments.\n */\nexport function addCslpOutline(\n e: MouseEvent,\n callback?: (args: {\n cslpTag: string;\n highlightedElement: HTMLElement;\n }) => void\n): void {\n const elements = Config.get().elements;\n\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && isValidCslp(cslpTag)) {\n if (elements.highlightedElement)\n elements.highlightedElement.classList.remove(\n cslpTagStyles()[\"cslp-edit-mode\"]\n );\n element.classList.add(cslpTagStyles()[\"cslp-edit-mode\"]);\n\n const updatedElements = elements;\n updatedElements.highlightedElement =\n element as DeepSignal<HTMLElement>;\n Config.set(\"elements\", updatedElements);\n\n callback?.({\n cslpTag: cslpTag,\n highlightedElement: element,\n });\n\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(cslpTagStyles()[\"cslp-edit-mode\"]);\n }\n }\n}\n"],"mappings":"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","names":["parts"]}
1
+ {"version":3,"sources":["../../../src/cslp/cslpdata.ts"],"sourcesContent":["import { isNil, isFinite, findLastIndex, findLast } from \"lodash-es\";\nimport {\n CslpData,\n CslpDataMultipleFieldMetadata,\n CslpDataParentDetails,\n} from \"./types/cslp.types\";\nimport Config from \"../configManager/configManager\";\nimport { DeepSignal } from \"deepsignal\";\nimport { cslpTagStyles } from \"../livePreview/editButton/editButton.style\";\n\n/**\n * Validates that the required CSLP parts (content_type_uid, entry_uid/entry_uid_variant_uid, locale) are non-empty.\n * @param parts The array of parts from splitting the CSLP string by \".\"\n * @returns `true` if all required parts (first 3) are non-empty, `false` otherwise.\n */\nfunction areRequiredPartsNonEmpty(parts: string[]): boolean {\n // Check that we have at least 3 parts\n if (parts.length < 3) {\n return false;\n }\n // Verify that content_type_uid (parts[0]), entry_uid/entry_uid_variant_uid (parts[1]), and locale (parts[2]) are all non-empty\n return parts[0].length > 0 && parts[1].length > 0 && parts[2].length > 0;\n}\n\n/**\n * Validates if a CSLP value string is valid.\n * \n * Supports two formats:\n * - **v1 format**: `content_type_uid.entry_uid.locale[.field_path]` (requires at least 3 parts)\n * - **v2 format**: `v2:content_type_uid.entry_uid_variant_uid.locale[.field_path]` \n * (requires at least 3 parts, entry_uid_variant_uid must contain underscore separating entry_uid and variant_uid)\n * \n * @param cslpValue The CSLP value string to validate (can be null or undefined).\n * @returns Type predicate: `true` if the CSLP value is valid (narrows type to `string`), `false` otherwise.\n * \n * @example\n * Valid v1 format\n * isValidCslp(\"page.entry123.en-us\") -> true\n * isValidCslp(\"page.entry123.en-us.title\") -> true\n * \n * Valid v2 format\n * isValidCslp(\"v2:page.entry123_variant456.en-us\") -> true\n * isValidCslp(\"v2:page.entry123_variant456.en-us.title\") -> true\n * \n * Invalid cases\n * isValidCslp(null) -> false\n * isValidCslp(\"invalid\") -> false (less than 3 parts)\n * isValidCslp(\"v2:page.entry123.en-us\") -> false (missing underscore in entry_uid_variant_uid)\n */\nexport function isValidCslp(\n cslpValue: string | null | undefined\n): cslpValue is string {\n // Return false for null, undefined, or empty string\n if (!cslpValue) {\n return false;\n }\n\n // Check for v2 format (starts with \"v2:\")\n if (cslpValue.startsWith(\"v2:\")) {\n const dataAfterPrefix = cslpValue.substring(3); // Remove \"v2:\" prefix\n const parts = dataAfterPrefix.split(\".\");\n // v2 format requires at least 3 parts: content_type_uid.entry_uid_variant_uid.locale\n // Verify that content_type_uid, entry_uid_variant_uid, and locale are all non-empty\n if (!areRequiredPartsNonEmpty(parts)) {\n return false;\n }\n // Verify that entry_uid_variant_uid (second part) contains both entry_uid and variant_uid separated by at least one underscore\n const entryUidVariantUid = parts[1];\n const entryVariantParts = entryUidVariantUid.split(\"_\");\n // Check that we have at least 2 parts (entry_uid and variant_uid) and all parts are non-empty\n return entryVariantParts.length >= 2 && entryVariantParts.every((part) => part.length > 0);\n }\n\n // v1 format (default, no prefix)\n const parts = cslpValue.split(\".\");\n // v1 format requires at least 3 parts: content_type_uid.entry_uid.locale\n // Verify that content_type_uid, entry_uid, and locale are all non-empty\n return areRequiredPartsNonEmpty(parts);\n}\n\n/**\n * Extracts details from a CSLP value string.\n * @param cslpValue The CSLP value string to extract details from.\n * @returns An object containing the extracted details.\n */\nexport function extractDetailsFromCslp(cslpValue: string): CslpData {\n let [cslpVersion, cslpData] = cslpValue.split(\":\");\n // If the cslpVersion is greater than 2 letter which means it is v1 version of cslp data\n if (cslpVersion.length > 2) {\n cslpData = cslpVersion;\n cslpVersion = \"v1\";\n }\n\n const [content_type_uid, entryInfo, locale, ...fieldPath] =\n cslpData.split(\".\");\n\n let entry_uid: string;\n let variant;\n\n switch (cslpVersion) {\n case \"v2\": {\n const [uid, variant_uid] = entryInfo.split(\"_\");\n entry_uid = uid;\n variant = variant_uid;\n break;\n }\n default: {\n entry_uid = entryInfo;\n break;\n }\n }\n const instancePathWithInstance = fieldPath.join(\".\");\n const calculatedPath = fieldPath.filter((path) => {\n const isEmpty = isNil(path);\n const isNumber = isFinite(+path);\n return (!isEmpty && !isNumber) || false;\n });\n\n const multipleFieldMetadata: CslpDataMultipleFieldMetadata =\n getMultipleFieldMetadata(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n /**\n * The index in the end of the field does not represent a field.\n * It represents the index of the field in the multiple field.\n * Hence, we pop it out.\n */\n if (isFinite(+fieldPath[fieldPath.length - 1])) {\n fieldPath.pop();\n }\n\n return {\n entry_uid,\n content_type_uid,\n variant,\n locale,\n cslpValue: cslpValue,\n fieldPath: calculatedPath.join(\".\"),\n fieldPathWithIndex: fieldPath.join(\".\"),\n multipleFieldMetadata: multipleFieldMetadata,\n instance: {\n fieldPathWithIndex: instancePathWithInstance,\n },\n };\n}\n\n/**\n * Returns the parent path details of a given field path in CSLP format.\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the entry.\n * @param locale - The locale of the entry.\n * @param fieldPath - The field path to get the parent path details for.\n * @returns The parent path details in CSLP format, or null if the field path does not have a parent.\n */\nfunction getParentPathDetails(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataParentDetails | null {\n const index = findLastIndex(fieldPath, (path) => isFinite(+path));\n if (index === -1) return null;\n\n const parentPath = fieldPath.slice(0, index);\n return {\n parentPath: parentPath.join(\".\"),\n parentCslpValue: [\n content_type_uid,\n entry_uid,\n locale,\n ...parentPath,\n ].join(\".\"),\n };\n}\n\n/**\n * Returns metadata for a multiple field in a content entry.\n * @summary ONLY USE THESE RETURNED VALUES WHEN FIELD IS MULTIPLE\n * @summary IT GIVES WRONG DATA IF FIELD IS NOT MULTIPLE\n * @param content_type_uid - The UID of the content type.\n * @param entry_uid - The UID of the content entry.\n * @param locale - The locale of the content entry.\n * @param fieldPath - The path of the multiple field.\n * @returns The metadata for the multiple field.\n */\nfunction getMultipleFieldMetadata(\n content_type_uid: string,\n entry_uid: string,\n locale: string,\n fieldPath: string[]\n): CslpDataMultipleFieldMetadata {\n const parentDetails = getParentPathDetails(\n content_type_uid,\n entry_uid,\n locale,\n fieldPath\n );\n\n const index = findLast(fieldPath, (path) => isFinite(+path));\n\n return {\n parentDetails: parentDetails,\n index: isNil(index) ? -1 : +index,\n };\n}\n\n//TODO: move this to editbutton\n/**\n * Adds an outline to the clicked element and triggers a callback function.\n * @param e - The MouseEvent object representing the click event.\n * @param callback - An optional callback function that will be called with the CSLP tag and highlighted element as arguments.\n */\nfunction highlightCslpElement(\n element: HTMLElement,\n cslpTag: string,\n elements: ReturnType<typeof Config.get>[\"elements\"],\n callback?: (args: { cslpTag: string; highlightedElement: HTMLElement }) => void\n): void {\n if (elements.highlightedElement)\n elements.highlightedElement.classList.remove(\n cslpTagStyles()[\"cslp-edit-mode\"]\n );\n element.classList.add(cslpTagStyles()[\"cslp-edit-mode\"]);\n const updatedElements = elements;\n updatedElements.highlightedElement = element as DeepSignal<HTMLElement>;\n Config.set(\"elements\", updatedElements);\n callback?.({ cslpTag, highlightedElement: element });\n}\n\nexport function addCslpOutline(\n e: MouseEvent,\n callback?: (args: {\n cslpTag: string;\n highlightedElement: HTMLElement;\n }) => void\n): void {\n const elements = Config.get().elements;\n\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && isValidCslp(cslpTag)) {\n highlightCslpElement(element, cslpTag, elements, callback);\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(cslpTagStyles()[\"cslp-edit-mode\"]);\n }\n }\n\n // composedPath() misses elements that are visually under a sibling overlay;\n // fall back to elementsFromPoint so the Edit button can still find the field.\n if (trigger && Config.get().overlayPropagation?.enable) {\n const pointElements = document.elementsFromPoint(e.clientX, e.clientY);\n for (const el of pointElements) {\n const element = el as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n const cslpTag = element.getAttribute(\"data-cslp\");\n if (isValidCslp(cslpTag)) {\n highlightCslpElement(element, cslpTag, elements, callback);\n break;\n }\n }\n }\n}\n"],"mappings":"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","names":["parts"]}
@@ -5,7 +5,7 @@ import './livePreview/types/onEntryChangeCallback.type.cjs';
5
5
  import './visualBuilder/types/collab.types.cjs';
6
6
 
7
7
  type IStackSdk = IStackSdk$1;
8
- declare const ContentstackLivePreview: typeof ContentstackLivePreview$1 | typeof LightLivePreviewHoC;
8
+ declare const ContentstackLivePreview: typeof LightLivePreviewHoC | typeof ContentstackLivePreview$1;
9
9
  declare const VB_EmptyBlockParentClass = "visual-builder__empty-block-parent";
10
10
 
11
11
  export { type IStackSdk, VB_EmptyBlockParentClass, ContentstackLivePreview as default };
@@ -5,7 +5,7 @@ import './livePreview/types/onEntryChangeCallback.type.js';
5
5
  import './visualBuilder/types/collab.types.js';
6
6
 
7
7
  type IStackSdk = IStackSdk$1;
8
- declare const ContentstackLivePreview: typeof ContentstackLivePreview$1 | typeof LightLivePreviewHoC;
8
+ declare const ContentstackLivePreview: typeof LightLivePreviewHoC | typeof ContentstackLivePreview$1;
9
9
  declare const VB_EmptyBlockParentClass = "visual-builder__empty-block-parent";
10
10
 
11
11
  export { type IStackSdk, VB_EmptyBlockParentClass, ContentstackLivePreview as default };
@@ -60,7 +60,7 @@ var _LightLivePreviewHoC = class _LightLivePreviewHoC {
60
60
  static unsubscribeOnEntryChange() {
61
61
  }
62
62
  static getSdkVersion() {
63
- return (typeof process !== "undefined" ? "4.4.1" : void 0) ?? "";
63
+ return (typeof process !== "undefined" ? "4.4.3" : void 0) ?? "";
64
64
  }
65
65
  };
66
66
  _LightLivePreviewHoC.previewConstructors = {};
@@ -38,7 +38,7 @@ var _LightLivePreviewHoC = class _LightLivePreviewHoC {
38
38
  static unsubscribeOnEntryChange() {
39
39
  }
40
40
  static getSdkVersion() {
41
- return (typeof process !== "undefined" ? "4.4.1" : void 0) ?? "";
41
+ return (typeof process !== "undefined" ? "4.4.3" : void 0) ?? "";
42
42
  }
43
43
  };
44
44
  _LightLivePreviewHoC.previewConstructors = {};