@contentstack/live-preview-utils 3.2.4 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +1 -1
  2. package/dist/legacy/index.d.cts +1 -1
  3. package/dist/legacy/index.d.ts +1 -1
  4. package/dist/legacy/light-sdk.cjs +1 -1
  5. package/dist/legacy/light-sdk.js +1 -1
  6. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  7. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  8. package/dist/legacy/livePreview/live-preview.cjs +6 -2
  9. package/dist/legacy/livePreview/live-preview.cjs.map +1 -1
  10. package/dist/legacy/livePreview/live-preview.js +6 -2
  11. package/dist/legacy/livePreview/live-preview.js.map +1 -1
  12. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  13. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  14. package/dist/legacy/utils/index.cjs +10 -0
  15. package/dist/legacy/utils/index.cjs.map +1 -1
  16. package/dist/legacy/utils/index.d.cts +2 -1
  17. package/dist/legacy/utils/index.d.ts +2 -1
  18. package/dist/legacy/utils/index.js +9 -0
  19. package/dist/legacy/utils/index.js.map +1 -1
  20. package/dist/legacy/visualBuilder/components/Tooltip.cjs +167 -0
  21. package/dist/legacy/visualBuilder/components/Tooltip.cjs.map +1 -0
  22. package/dist/legacy/visualBuilder/components/Tooltip.d.cts +26 -0
  23. package/dist/legacy/visualBuilder/components/Tooltip.d.ts +26 -0
  24. package/dist/legacy/visualBuilder/components/Tooltip.js +140 -0
  25. package/dist/legacy/visualBuilder/components/Tooltip.js.map +1 -0
  26. package/dist/legacy/visualBuilder/components/VisualBuilder.cjs +4 -0
  27. package/dist/legacy/visualBuilder/components/VisualBuilder.cjs.map +1 -1
  28. package/dist/legacy/visualBuilder/components/VisualBuilder.d.cts +1 -1
  29. package/dist/legacy/visualBuilder/components/VisualBuilder.d.ts +1 -1
  30. package/dist/legacy/visualBuilder/components/VisualBuilder.js +4 -0
  31. package/dist/legacy/visualBuilder/components/VisualBuilder.js.map +1 -1
  32. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +115 -15
  33. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  34. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +117 -17
  35. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  36. package/dist/legacy/visualBuilder/components/icons/index.cjs +44 -0
  37. package/dist/legacy/visualBuilder/components/icons/index.cjs.map +1 -1
  38. package/dist/legacy/visualBuilder/components/icons/index.d.cts +3 -1
  39. package/dist/legacy/visualBuilder/components/icons/index.d.ts +3 -1
  40. package/dist/legacy/visualBuilder/components/icons/index.js +32 -0
  41. package/dist/legacy/visualBuilder/components/icons/index.js.map +1 -1
  42. package/dist/legacy/visualBuilder/components/index.cjs +3 -1
  43. package/dist/legacy/visualBuilder/components/index.cjs.map +1 -1
  44. package/dist/legacy/visualBuilder/components/index.js +3 -1
  45. package/dist/legacy/visualBuilder/components/index.js.map +1 -1
  46. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +1 -0
  47. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  48. package/dist/legacy/visualBuilder/generators/generateOverlay.js +1 -0
  49. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  50. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.cjs +10 -6
  51. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.cjs.map +1 -1
  52. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.d.cts +2 -3
  53. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.d.ts +2 -3
  54. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.js +10 -6
  55. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.js.map +1 -1
  56. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +43 -10
  57. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  58. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +11 -4
  59. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +11 -4
  60. package/dist/legacy/visualBuilder/generators/generateToolbar.js +41 -9
  61. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  62. package/dist/legacy/visualBuilder/index.cjs +7 -3
  63. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  64. package/dist/legacy/visualBuilder/index.d.cts +2 -0
  65. package/dist/legacy/visualBuilder/index.d.ts +2 -0
  66. package/dist/legacy/visualBuilder/index.js +7 -3
  67. package/dist/legacy/visualBuilder/index.js.map +1 -1
  68. package/dist/legacy/visualBuilder/listeners/index.cjs +3 -1
  69. package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
  70. package/dist/legacy/visualBuilder/listeners/index.js +3 -1
  71. package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
  72. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +7 -3
  73. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  74. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
  75. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
  76. package/dist/legacy/visualBuilder/listeners/mouseClick.js +5 -2
  77. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  78. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +183 -133
  79. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  80. package/dist/legacy/visualBuilder/listeners/mouseHover.d.cts +5 -3
  81. package/dist/legacy/visualBuilder/listeners/mouseHover.d.ts +5 -3
  82. package/dist/legacy/visualBuilder/listeners/mouseHover.js +182 -133
  83. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  84. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs +58 -0
  85. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs.map +1 -0
  86. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.cts +18 -0
  87. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.ts +18 -0
  88. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.js +25 -0
  89. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.js.map +1 -0
  90. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +4 -8
  91. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -1
  92. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js +4 -8
  93. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -1
  94. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +2 -23
  95. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  96. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +2 -13
  97. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  98. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  99. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  100. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  101. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  102. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -0
  103. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  104. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +66 -1
  105. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  106. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +7 -0
  107. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +7 -0
  108. package/dist/legacy/visualBuilder/visualBuilder.style.js +66 -1
  109. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  110. package/dist/modern/light-sdk.cjs +1 -1
  111. package/dist/modern/light-sdk.js +1 -1
  112. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  113. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  114. package/dist/modern/livePreview/live-preview.cjs +6 -2
  115. package/dist/modern/livePreview/live-preview.cjs.map +1 -1
  116. package/dist/modern/livePreview/live-preview.js +6 -2
  117. package/dist/modern/livePreview/live-preview.js.map +1 -1
  118. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  119. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  120. package/dist/modern/utils/index.cjs +10 -0
  121. package/dist/modern/utils/index.cjs.map +1 -1
  122. package/dist/modern/utils/index.d.cts +2 -1
  123. package/dist/modern/utils/index.d.ts +2 -1
  124. package/dist/modern/utils/index.js +9 -0
  125. package/dist/modern/utils/index.js.map +1 -1
  126. package/dist/modern/visualBuilder/components/Tooltip.cjs +167 -0
  127. package/dist/modern/visualBuilder/components/Tooltip.cjs.map +1 -0
  128. package/dist/modern/visualBuilder/components/Tooltip.d.cts +26 -0
  129. package/dist/modern/visualBuilder/components/Tooltip.d.ts +26 -0
  130. package/dist/modern/visualBuilder/components/Tooltip.js +140 -0
  131. package/dist/modern/visualBuilder/components/Tooltip.js.map +1 -0
  132. package/dist/modern/visualBuilder/components/VisualBuilder.cjs +4 -0
  133. package/dist/modern/visualBuilder/components/VisualBuilder.cjs.map +1 -1
  134. package/dist/modern/visualBuilder/components/VisualBuilder.d.cts +1 -1
  135. package/dist/modern/visualBuilder/components/VisualBuilder.d.ts +1 -1
  136. package/dist/modern/visualBuilder/components/VisualBuilder.js +4 -0
  137. package/dist/modern/visualBuilder/components/VisualBuilder.js.map +1 -1
  138. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +113 -15
  139. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  140. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +115 -17
  141. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  142. package/dist/modern/visualBuilder/components/icons/index.cjs +44 -0
  143. package/dist/modern/visualBuilder/components/icons/index.cjs.map +1 -1
  144. package/dist/modern/visualBuilder/components/icons/index.d.cts +3 -1
  145. package/dist/modern/visualBuilder/components/icons/index.d.ts +3 -1
  146. package/dist/modern/visualBuilder/components/icons/index.js +32 -0
  147. package/dist/modern/visualBuilder/components/icons/index.js.map +1 -1
  148. package/dist/modern/visualBuilder/components/index.cjs +3 -1
  149. package/dist/modern/visualBuilder/components/index.cjs.map +1 -1
  150. package/dist/modern/visualBuilder/components/index.js +3 -1
  151. package/dist/modern/visualBuilder/components/index.js.map +1 -1
  152. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +1 -0
  153. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  154. package/dist/modern/visualBuilder/generators/generateOverlay.js +1 -0
  155. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  156. package/dist/modern/visualBuilder/generators/generateStartEditingButton.cjs +10 -6
  157. package/dist/modern/visualBuilder/generators/generateStartEditingButton.cjs.map +1 -1
  158. package/dist/modern/visualBuilder/generators/generateStartEditingButton.d.cts +2 -3
  159. package/dist/modern/visualBuilder/generators/generateStartEditingButton.d.ts +2 -3
  160. package/dist/modern/visualBuilder/generators/generateStartEditingButton.js +10 -6
  161. package/dist/modern/visualBuilder/generators/generateStartEditingButton.js.map +1 -1
  162. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +42 -10
  163. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  164. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +11 -4
  165. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +11 -4
  166. package/dist/modern/visualBuilder/generators/generateToolbar.js +40 -9
  167. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  168. package/dist/modern/visualBuilder/index.cjs +7 -3
  169. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  170. package/dist/modern/visualBuilder/index.d.cts +2 -0
  171. package/dist/modern/visualBuilder/index.d.ts +2 -0
  172. package/dist/modern/visualBuilder/index.js +7 -3
  173. package/dist/modern/visualBuilder/index.js.map +1 -1
  174. package/dist/modern/visualBuilder/listeners/index.cjs +3 -1
  175. package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
  176. package/dist/modern/visualBuilder/listeners/index.js +3 -1
  177. package/dist/modern/visualBuilder/listeners/index.js.map +1 -1
  178. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +7 -3
  179. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  180. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
  181. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
  182. package/dist/modern/visualBuilder/listeners/mouseClick.js +5 -2
  183. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  184. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +183 -133
  185. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  186. package/dist/modern/visualBuilder/listeners/mouseHover.d.cts +5 -3
  187. package/dist/modern/visualBuilder/listeners/mouseHover.d.ts +5 -3
  188. package/dist/modern/visualBuilder/listeners/mouseHover.js +182 -133
  189. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  190. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs +58 -0
  191. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs.map +1 -0
  192. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.cts +18 -0
  193. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.ts +18 -0
  194. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.js +25 -0
  195. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.js.map +1 -0
  196. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +4 -8
  197. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -1
  198. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js +4 -8
  199. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -1
  200. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +2 -22
  201. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  202. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +2 -12
  203. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  204. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  205. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  206. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  207. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  208. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -0
  209. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  210. package/dist/modern/visualBuilder/visualBuilder.style.cjs +66 -1
  211. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  212. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +7 -0
  213. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +7 -0
  214. package/dist/modern/visualBuilder/visualBuilder.style.js +66 -1
  215. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  216. package/package.json +2 -1
package/README.md CHANGED
@@ -16,7 +16,7 @@ Alternatively, if you want to include the package directly in your website HTML
16
16
 
17
17
  ```html
18
18
  <script type='module' integrity='sha384-b6G+ggU20rGxqCqsgaS6zludFgj5N11xsuXhMEIARMuQY2PtyDS04TU0H5goP+32' crossorigin="anonymous">
19
- import ContentstackLivePreview from 'https://esm.sh/@contentstack/live-preview-utils@3.2.4';
19
+ import ContentstackLivePreview from 'https://esm.sh/@contentstack/live-preview-utils@3.2.5';
20
20
 
21
21
  ContentstackLivePreview.init({
22
22
  stackDetails: {
@@ -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 "3.2.4";
63
+ return "3.3.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 "3.2.4";
41
+ return "3.3.0";
42
42
  }
43
43
  };
44
44
  _LightLivePreviewHoC.previewConstructors = {};
@@ -89,7 +89,7 @@ function sendInitializeLivePreviewPostMessageEvent() {
89
89
  config: {
90
90
  shouldReload: import_configManager.default.get().ssr,
91
91
  href: window.location.href,
92
- sdkVersion: "3.2.4",
92
+ sdkVersion: "3.3.0",
93
93
  mode: import_configManager.default.get().mode
94
94
  }
95
95
  }
@@ -55,7 +55,7 @@ function sendInitializeLivePreviewPostMessageEvent() {
55
55
  config: {
56
56
  shouldReload: Config.get().ssr,
57
57
  href: window.location.href,
58
- sdkVersion: "3.2.4",
58
+ sdkVersion: "3.3.0",
59
59
  mode: Config.get().mode
60
60
  }
61
61
  }
@@ -59,8 +59,12 @@ var LivePreview = class {
59
59
  );
60
60
  }
61
61
  if (config.enable) {
62
- if (typeof document !== void 0 && document.readyState === "complete") {
63
- this.requestDataSync();
62
+ if (typeof document !== void 0) {
63
+ if (document.readyState === "interactive" || document.readyState === "complete") {
64
+ this.requestDataSync();
65
+ } else {
66
+ document.addEventListener("DOMContentLoaded", this.requestDataSync);
67
+ }
64
68
  } else {
65
69
  window.addEventListener("load", this.requestDataSync);
66
70
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/livePreview/live-preview.ts"],"sourcesContent":["import Config from \"../configManager/configManager\";\nimport { PublicLogger } from \"../logger/logger\";\nimport { ILivePreviewModeConfig } from \"../types/types\";\nimport { addLivePreviewQueryTags, isOpeningInTimeline } from \"../utils\";\nimport { LivePreviewEditButton } from \"./editButton/editButton\";\nimport { sendInitializeLivePreviewPostMessageEvent } from \"./eventManager/postMessageEvent.hooks\";\nimport { removeDataCslp } from \"./livePreviewProductionCleanup\";\nimport { removeFromOnChangeSubscribers } from \"./removeFromOnChangeSubscribers\";\nimport {\n OnEntryChangeCallback,\n OnEntryChangeCallbackSubscribers,\n OnEntryChangeCallbackUID,\n OnEntryChangeUnsubscribeParameters,\n} from \"./types/onEntryChangeCallback.type\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private subscribers: OnEntryChangeCallbackSubscribers = {};\n\n constructor() {\n this.requestDataSync = this.requestDataSync.bind(this);\n this.subscribeToOnEntryChange =\n this.subscribeToOnEntryChange.bind(this);\n this.publish = this.publish.bind(this);\n this.unsubscribeOnEntryChange =\n this.unsubscribeOnEntryChange.bind(this);\n\n const config = Config.get();\n\n if (config.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n Config.config\n );\n }\n\n if (config.enable) {\n if (\n typeof document !== undefined &&\n document.readyState === \"complete\"\n ) {\n this.requestDataSync();\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n\n // TODO: capetown: add test cases for this condition.\n // TODO: mjrf: Check if we need the second condition here.\n // We are already handling the functions separately in the visual builder.\n // render the hover outline only when edit button enable\n\n if (\n !isOpeningInTimeline() && \n (config.editButton.enable ||\n config.mode >= ILivePreviewModeConfig.BUILDER)\n ) {\n LivePreviewEditButton.livePreviewEditButton =\n new LivePreviewEditButton();\n }\n\n } else if (config.cleanCslpOnProduction) {\n removeDataCslp();\n }\n }\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n const config = Config.get();\n\n Config.set(\"onChange\", this.publish);\n\n //! TODO: we replaced the handleOnChange() with this.\n //! I don't think we need this. Confirm and remove it.\n config.onChange();\n\n sendInitializeLivePreviewPostMessageEvent();\n }\n\n subscribeToOnEntryChange(\n callback: OnEntryChangeCallback,\n callbackUid: OnEntryChangeCallbackUID\n ): string {\n this.subscribers[callbackUid] = callback;\n return callbackUid;\n }\n\n private publish(): void {\n Object.values<OnEntryChangeCallback>(this.subscribers).forEach(\n (func) => {\n func();\n }\n );\n }\n\n unsubscribeOnEntryChange(\n callback: OnEntryChangeUnsubscribeParameters\n ): void {\n removeFromOnChangeSubscribers(this.subscribers, callback);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAmB;AACnB,oBAA6B;AAC7B,mBAAuC;AACvC,mBAA6D;AAC7D,wBAAsC;AACtC,8BAA0D;AAC1D,0CAA+B;AAC/B,2CAA8C;AAQ9C,IAAqB,cAArB,MAAiC;AAAA,EAO7B,cAAc;AAFd;AAAA;AAAA;AAAA,SAAQ,cAAgD,CAAC;AAGrD,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AACrD,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAC3C,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAE3C,UAAM,SAAS,qBAAAA,QAAO,IAAI;AAE1B,QAAI,OAAO,OAAO;AACd,iCAAa;AAAA,QACT;AAAA,QACA,qBAAAA,QAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,OAAO,QAAQ;AACf,UACI,OAAO,aAAa,UACpB,SAAS,eAAe,YAC1B;AACE,aAAK,gBAAgB;AAAA,MACzB,OAAO;AACH,eAAO,iBAAiB,QAAQ,KAAK,eAAe;AAAA,MACxD;AAOA,UACI,KAAC,kCAAoB,MACpB,OAAO,WAAW,UACnB,OAAO,QAAQ,oCAAuB,UACxC;AACE,gDAAsB,wBAClB,IAAI,wCAAsB;AAAA,MAClC;AAAA,IAEJ,WAAW,OAAO,uBAAuB;AACrC,8DAAe;AAAA,IACnB;AAAA,EACJ;AAAA;AAAA,EAGQ,kBAAkB;AACtB,UAAM,SAAS,qBAAAA,QAAO,IAAI;AAE1B,yBAAAA,QAAO,IAAI,YAAY,KAAK,OAAO;AAInC,WAAO,SAAS;AAEhB,2EAA0C;AAAA,EAC9C;AAAA,EAEA,yBACI,UACA,aACM;AACN,SAAK,YAAY,WAAW,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EAEQ,UAAgB;AACpB,WAAO,OAA8B,KAAK,WAAW,EAAE;AAAA,MACnD,CAAC,SAAS;AACN,aAAK;AAAA,MACT;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBACI,UACI;AACJ,4EAA8B,KAAK,aAAa,QAAQ;AAAA,EAC5D;AACJ;","names":["Config"]}
1
+ {"version":3,"sources":["../../../src/livePreview/live-preview.ts"],"sourcesContent":["import Config from \"../configManager/configManager\";\nimport { PublicLogger } from \"../logger/logger\";\nimport { ILivePreviewModeConfig } from \"../types/types\";\nimport { addLivePreviewQueryTags, isOpeningInTimeline } from \"../utils\";\nimport { LivePreviewEditButton } from \"./editButton/editButton\";\nimport { sendInitializeLivePreviewPostMessageEvent } from \"./eventManager/postMessageEvent.hooks\";\nimport { removeDataCslp } from \"./livePreviewProductionCleanup\";\nimport { removeFromOnChangeSubscribers } from \"./removeFromOnChangeSubscribers\";\nimport {\n OnEntryChangeCallback,\n OnEntryChangeCallbackSubscribers,\n OnEntryChangeCallbackUID,\n OnEntryChangeUnsubscribeParameters,\n} from \"./types/onEntryChangeCallback.type\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private subscribers: OnEntryChangeCallbackSubscribers = {};\n\n constructor() {\n this.requestDataSync = this.requestDataSync.bind(this);\n this.subscribeToOnEntryChange =\n this.subscribeToOnEntryChange.bind(this);\n this.publish = this.publish.bind(this);\n this.unsubscribeOnEntryChange =\n this.unsubscribeOnEntryChange.bind(this);\n\n const config = Config.get();\n\n if (config.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n Config.config\n );\n }\n\n if (config.enable) {\n if (\n typeof document !== undefined\n ) {\n if(document.readyState === \"interactive\" || document.readyState === \"complete\"){\n this.requestDataSync();\n } else {\n document.addEventListener(\"DOMContentLoaded\", this.requestDataSync);\n }\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n\n // TODO: capetown: add test cases for this condition.\n // TODO: mjrf: Check if we need the second condition here.\n // We are already handling the functions separately in the visual builder.\n // render the hover outline only when edit button enable\n\n if (\n !isOpeningInTimeline() && \n (config.editButton.enable ||\n config.mode >= ILivePreviewModeConfig.BUILDER)\n ) {\n LivePreviewEditButton.livePreviewEditButton =\n new LivePreviewEditButton();\n }\n\n } else if (config.cleanCslpOnProduction) {\n removeDataCslp();\n }\n }\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n const config = Config.get();\n\n Config.set(\"onChange\", this.publish);\n\n //! TODO: we replaced the handleOnChange() with this.\n //! I don't think we need this. Confirm and remove it.\n config.onChange();\n\n sendInitializeLivePreviewPostMessageEvent();\n }\n\n subscribeToOnEntryChange(\n callback: OnEntryChangeCallback,\n callbackUid: OnEntryChangeCallbackUID\n ): string {\n this.subscribers[callbackUid] = callback;\n return callbackUid;\n }\n\n private publish(): void {\n Object.values<OnEntryChangeCallback>(this.subscribers).forEach(\n (func) => {\n func();\n }\n );\n }\n\n unsubscribeOnEntryChange(\n callback: OnEntryChangeUnsubscribeParameters\n ): void {\n removeFromOnChangeSubscribers(this.subscribers, callback);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAmB;AACnB,oBAA6B;AAC7B,mBAAuC;AACvC,mBAA6D;AAC7D,wBAAsC;AACtC,8BAA0D;AAC1D,0CAA+B;AAC/B,2CAA8C;AAQ9C,IAAqB,cAArB,MAAiC;AAAA,EAO7B,cAAc;AAFd;AAAA;AAAA;AAAA,SAAQ,cAAgD,CAAC;AAGrD,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AACrD,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAC3C,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAE3C,UAAM,SAAS,qBAAAA,QAAO,IAAI;AAE1B,QAAI,OAAO,OAAO;AACd,iCAAa;AAAA,QACT;AAAA,QACA,qBAAAA,QAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,OAAO,QAAQ;AACf,UACI,OAAO,aAAa,QACtB;AACE,YAAG,SAAS,eAAe,iBAAiB,SAAS,eAAe,YAAW;AAC3E,eAAK,gBAAgB;AAAA,QACzB,OAAO;AACH,mBAAS,iBAAiB,oBAAoB,KAAK,eAAe;AAAA,QACtE;AAAA,MACJ,OAAO;AACH,eAAO,iBAAiB,QAAQ,KAAK,eAAe;AAAA,MACxD;AAOA,UACI,KAAC,kCAAoB,MACpB,OAAO,WAAW,UACnB,OAAO,QAAQ,oCAAuB,UACxC;AACE,gDAAsB,wBAClB,IAAI,wCAAsB;AAAA,MAClC;AAAA,IAEJ,WAAW,OAAO,uBAAuB;AACrC,8DAAe;AAAA,IACnB;AAAA,EACJ;AAAA;AAAA,EAGQ,kBAAkB;AACtB,UAAM,SAAS,qBAAAA,QAAO,IAAI;AAE1B,yBAAAA,QAAO,IAAI,YAAY,KAAK,OAAO;AAInC,WAAO,SAAS;AAEhB,2EAA0C;AAAA,EAC9C;AAAA,EAEA,yBACI,UACA,aACM;AACN,SAAK,YAAY,WAAW,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EAEQ,UAAgB;AACpB,WAAO,OAA8B,KAAK,WAAW,EAAE;AAAA,MACnD,CAAC,SAAS;AACN,aAAK;AAAA,MACT;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBACI,UACI;AACJ,4EAA8B,KAAK,aAAa,QAAQ;AAAA,EAC5D;AACJ;","names":["Config"]}
@@ -27,8 +27,12 @@ var LivePreview = class {
27
27
  );
28
28
  }
29
29
  if (config.enable) {
30
- if (typeof document !== void 0 && document.readyState === "complete") {
31
- this.requestDataSync();
30
+ if (typeof document !== void 0) {
31
+ if (document.readyState === "interactive" || document.readyState === "complete") {
32
+ this.requestDataSync();
33
+ } else {
34
+ document.addEventListener("DOMContentLoaded", this.requestDataSync);
35
+ }
32
36
  } else {
33
37
  window.addEventListener("load", this.requestDataSync);
34
38
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/livePreview/live-preview.ts"],"sourcesContent":["import Config from \"../configManager/configManager\";\nimport { PublicLogger } from \"../logger/logger\";\nimport { ILivePreviewModeConfig } from \"../types/types\";\nimport { addLivePreviewQueryTags, isOpeningInTimeline } from \"../utils\";\nimport { LivePreviewEditButton } from \"./editButton/editButton\";\nimport { sendInitializeLivePreviewPostMessageEvent } from \"./eventManager/postMessageEvent.hooks\";\nimport { removeDataCslp } from \"./livePreviewProductionCleanup\";\nimport { removeFromOnChangeSubscribers } from \"./removeFromOnChangeSubscribers\";\nimport {\n OnEntryChangeCallback,\n OnEntryChangeCallbackSubscribers,\n OnEntryChangeCallbackUID,\n OnEntryChangeUnsubscribeParameters,\n} from \"./types/onEntryChangeCallback.type\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private subscribers: OnEntryChangeCallbackSubscribers = {};\n\n constructor() {\n this.requestDataSync = this.requestDataSync.bind(this);\n this.subscribeToOnEntryChange =\n this.subscribeToOnEntryChange.bind(this);\n this.publish = this.publish.bind(this);\n this.unsubscribeOnEntryChange =\n this.unsubscribeOnEntryChange.bind(this);\n\n const config = Config.get();\n\n if (config.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n Config.config\n );\n }\n\n if (config.enable) {\n if (\n typeof document !== undefined &&\n document.readyState === \"complete\"\n ) {\n this.requestDataSync();\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n\n // TODO: capetown: add test cases for this condition.\n // TODO: mjrf: Check if we need the second condition here.\n // We are already handling the functions separately in the visual builder.\n // render the hover outline only when edit button enable\n\n if (\n !isOpeningInTimeline() && \n (config.editButton.enable ||\n config.mode >= ILivePreviewModeConfig.BUILDER)\n ) {\n LivePreviewEditButton.livePreviewEditButton =\n new LivePreviewEditButton();\n }\n\n } else if (config.cleanCslpOnProduction) {\n removeDataCslp();\n }\n }\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n const config = Config.get();\n\n Config.set(\"onChange\", this.publish);\n\n //! TODO: we replaced the handleOnChange() with this.\n //! I don't think we need this. Confirm and remove it.\n config.onChange();\n\n sendInitializeLivePreviewPostMessageEvent();\n }\n\n subscribeToOnEntryChange(\n callback: OnEntryChangeCallback,\n callbackUid: OnEntryChangeCallbackUID\n ): string {\n this.subscribers[callbackUid] = callback;\n return callbackUid;\n }\n\n private publish(): void {\n Object.values<OnEntryChangeCallback>(this.subscribers).forEach(\n (func) => {\n func();\n }\n );\n }\n\n unsubscribeOnEntryChange(\n callback: OnEntryChangeUnsubscribeParameters\n ): void {\n removeFromOnChangeSubscribers(this.subscribers, callback);\n }\n}\n"],"mappings":";;;AAAA,OAAO,YAAY;AACnB,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AACvC,SAAkC,2BAA2B;AAC7D,SAAS,6BAA6B;AACtC,SAAS,iDAAiD;AAC1D,SAAS,sBAAsB;AAC/B,SAAS,qCAAqC;AAQ9C,IAAqB,cAArB,MAAiC;AAAA,EAO7B,cAAc;AAFd;AAAA;AAAA;AAAA,SAAQ,cAAgD,CAAC;AAGrD,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AACrD,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAC3C,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAE3C,UAAM,SAAS,OAAO,IAAI;AAE1B,QAAI,OAAO,OAAO;AACd,mBAAa;AAAA,QACT;AAAA,QACA,OAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,OAAO,QAAQ;AACf,UACI,OAAO,aAAa,UACpB,SAAS,eAAe,YAC1B;AACE,aAAK,gBAAgB;AAAA,MACzB,OAAO;AACH,eAAO,iBAAiB,QAAQ,KAAK,eAAe;AAAA,MACxD;AAOA,UACI,CAAC,oBAAoB,MACpB,OAAO,WAAW,UACnB,OAAO,QAAQ,uBAAuB,UACxC;AACE,8BAAsB,wBAClB,IAAI,sBAAsB;AAAA,MAClC;AAAA,IAEJ,WAAW,OAAO,uBAAuB;AACrC,qBAAe;AAAA,IACnB;AAAA,EACJ;AAAA;AAAA,EAGQ,kBAAkB;AACtB,UAAM,SAAS,OAAO,IAAI;AAE1B,WAAO,IAAI,YAAY,KAAK,OAAO;AAInC,WAAO,SAAS;AAEhB,8CAA0C;AAAA,EAC9C;AAAA,EAEA,yBACI,UACA,aACM;AACN,SAAK,YAAY,WAAW,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EAEQ,UAAgB;AACpB,WAAO,OAA8B,KAAK,WAAW,EAAE;AAAA,MACnD,CAAC,SAAS;AACN,aAAK;AAAA,MACT;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBACI,UACI;AACJ,kCAA8B,KAAK,aAAa,QAAQ;AAAA,EAC5D;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/livePreview/live-preview.ts"],"sourcesContent":["import Config from \"../configManager/configManager\";\nimport { PublicLogger } from \"../logger/logger\";\nimport { ILivePreviewModeConfig } from \"../types/types\";\nimport { addLivePreviewQueryTags, isOpeningInTimeline } from \"../utils\";\nimport { LivePreviewEditButton } from \"./editButton/editButton\";\nimport { sendInitializeLivePreviewPostMessageEvent } from \"./eventManager/postMessageEvent.hooks\";\nimport { removeDataCslp } from \"./livePreviewProductionCleanup\";\nimport { removeFromOnChangeSubscribers } from \"./removeFromOnChangeSubscribers\";\nimport {\n OnEntryChangeCallback,\n OnEntryChangeCallbackSubscribers,\n OnEntryChangeCallbackUID,\n OnEntryChangeUnsubscribeParameters,\n} from \"./types/onEntryChangeCallback.type\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private subscribers: OnEntryChangeCallbackSubscribers = {};\n\n constructor() {\n this.requestDataSync = this.requestDataSync.bind(this);\n this.subscribeToOnEntryChange =\n this.subscribeToOnEntryChange.bind(this);\n this.publish = this.publish.bind(this);\n this.unsubscribeOnEntryChange =\n this.unsubscribeOnEntryChange.bind(this);\n\n const config = Config.get();\n\n if (config.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n Config.config\n );\n }\n\n if (config.enable) {\n if (\n typeof document !== undefined\n ) {\n if(document.readyState === \"interactive\" || document.readyState === \"complete\"){\n this.requestDataSync();\n } else {\n document.addEventListener(\"DOMContentLoaded\", this.requestDataSync);\n }\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n\n // TODO: capetown: add test cases for this condition.\n // TODO: mjrf: Check if we need the second condition here.\n // We are already handling the functions separately in the visual builder.\n // render the hover outline only when edit button enable\n\n if (\n !isOpeningInTimeline() && \n (config.editButton.enable ||\n config.mode >= ILivePreviewModeConfig.BUILDER)\n ) {\n LivePreviewEditButton.livePreviewEditButton =\n new LivePreviewEditButton();\n }\n\n } else if (config.cleanCslpOnProduction) {\n removeDataCslp();\n }\n }\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n const config = Config.get();\n\n Config.set(\"onChange\", this.publish);\n\n //! TODO: we replaced the handleOnChange() with this.\n //! I don't think we need this. Confirm and remove it.\n config.onChange();\n\n sendInitializeLivePreviewPostMessageEvent();\n }\n\n subscribeToOnEntryChange(\n callback: OnEntryChangeCallback,\n callbackUid: OnEntryChangeCallbackUID\n ): string {\n this.subscribers[callbackUid] = callback;\n return callbackUid;\n }\n\n private publish(): void {\n Object.values<OnEntryChangeCallback>(this.subscribers).forEach(\n (func) => {\n func();\n }\n );\n }\n\n unsubscribeOnEntryChange(\n callback: OnEntryChangeUnsubscribeParameters\n ): void {\n removeFromOnChangeSubscribers(this.subscribers, callback);\n }\n}\n"],"mappings":";;;AAAA,OAAO,YAAY;AACnB,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AACvC,SAAkC,2BAA2B;AAC7D,SAAS,6BAA6B;AACtC,SAAS,iDAAiD;AAC1D,SAAS,sBAAsB;AAC/B,SAAS,qCAAqC;AAQ9C,IAAqB,cAArB,MAAiC;AAAA,EAO7B,cAAc;AAFd;AAAA;AAAA;AAAA,SAAQ,cAAgD,CAAC;AAGrD,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AACrD,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAC3C,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,2BACD,KAAK,yBAAyB,KAAK,IAAI;AAE3C,UAAM,SAAS,OAAO,IAAI;AAE1B,QAAI,OAAO,OAAO;AACd,mBAAa;AAAA,QACT;AAAA,QACA,OAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,OAAO,QAAQ;AACf,UACI,OAAO,aAAa,QACtB;AACE,YAAG,SAAS,eAAe,iBAAiB,SAAS,eAAe,YAAW;AAC3E,eAAK,gBAAgB;AAAA,QACzB,OAAO;AACH,mBAAS,iBAAiB,oBAAoB,KAAK,eAAe;AAAA,QACtE;AAAA,MACJ,OAAO;AACH,eAAO,iBAAiB,QAAQ,KAAK,eAAe;AAAA,MACxD;AAOA,UACI,CAAC,oBAAoB,MACpB,OAAO,WAAW,UACnB,OAAO,QAAQ,uBAAuB,UACxC;AACE,8BAAsB,wBAClB,IAAI,sBAAsB;AAAA,MAClC;AAAA,IAEJ,WAAW,OAAO,uBAAuB;AACrC,qBAAe;AAAA,IACnB;AAAA,EACJ;AAAA;AAAA,EAGQ,kBAAkB;AACtB,UAAM,SAAS,OAAO,IAAI;AAE1B,WAAO,IAAI,YAAY,KAAK,OAAO;AAInC,WAAO,SAAS;AAEhB,8CAA0C;AAAA,EAC9C;AAAA,EAEA,yBACI,UACA,aACM;AACN,SAAK,YAAY,WAAW,IAAI;AAChC,WAAO;AAAA,EACX;AAAA,EAEQ,UAAgB;AACpB,WAAO,OAA8B,KAAK,WAAW,EAAE;AAAA,MACnD,CAAC,SAAS;AACN,aAAK;AAAA,MACT;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBACI,UACI;AACJ,kCAA8B,KAAK,aAAa,QAAQ;AAAA,EAC5D;AACJ;","names":[]}
@@ -227,7 +227,7 @@ var _ContentstackLivePreview = class _ContentstackLivePreview {
227
227
  * @returns The version of the SDK as a string.
228
228
  */
229
229
  static getSdkVersion() {
230
- return "3.2.4";
230
+ return "3.3.0";
231
231
  }
232
232
  };
233
233
  _ContentstackLivePreview.previewConstructors = {};
@@ -195,7 +195,7 @@ var _ContentstackLivePreview = class _ContentstackLivePreview {
195
195
  * @returns The version of the SDK as a string.
196
196
  */
197
197
  static getSdkVersion() {
198
- return "3.2.4";
198
+ return "3.3.0";
199
199
  }
200
200
  };
201
201
  _ContentstackLivePreview.previewConstructors = {};
@@ -23,6 +23,7 @@ __export(utils_exports, {
23
23
  addLivePreviewQueryTags: () => import_addLivePreviewQueryTags.addLivePreviewQueryTags,
24
24
  addParamsToUrl: () => addParamsToUrl,
25
25
  hasWindow: () => hasWindow,
26
+ isOpenInBuilder: () => isOpenInBuilder,
26
27
  isOpeningInTimeline: () => isOpeningInTimeline
27
28
  });
28
29
  module.exports = __toCommonJS(utils_exports);
@@ -49,11 +50,20 @@ function isOpeningInTimeline() {
49
50
  }
50
51
  return false;
51
52
  }
53
+ function isOpenInBuilder() {
54
+ if (hasWindow()) {
55
+ const urlParams = new URLSearchParams(window.location.search);
56
+ const builder = urlParams.get("builder");
57
+ return !!builder;
58
+ }
59
+ return false;
60
+ }
52
61
  // Annotate the CommonJS export names for ESM import in node:
53
62
  0 && (module.exports = {
54
63
  addLivePreviewQueryTags,
55
64
  addParamsToUrl,
56
65
  hasWindow,
66
+ isOpenInBuilder,
57
67
  isOpeningInTimeline
58
68
  });
59
69
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qCAAwC;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,aAAS,wDAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}\n\nexport function isOpenInBuilder(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const builder = urlParams.get(\"builder\");\n return !!builder;\n }\n return false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qCAAwC;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,aAAS,wDAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;AAEO,SAAS,kBAA2B;AACvC,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,UAAU,UAAU,IAAI,SAAS;AACvC,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
@@ -4,5 +4,6 @@ declare function hasWindow(): boolean;
4
4
 
5
5
  declare function addParamsToUrl(): void;
6
6
  declare function isOpeningInTimeline(): boolean;
7
+ declare function isOpenInBuilder(): boolean;
7
8
 
8
- export { addParamsToUrl, hasWindow, isOpeningInTimeline };
9
+ export { addParamsToUrl, hasWindow, isOpenInBuilder, isOpeningInTimeline };
@@ -4,5 +4,6 @@ declare function hasWindow(): boolean;
4
4
 
5
5
  declare function addParamsToUrl(): void;
6
6
  declare function isOpeningInTimeline(): boolean;
7
+ declare function isOpenInBuilder(): boolean;
7
8
 
8
- export { addParamsToUrl, hasWindow, isOpeningInTimeline };
9
+ export { addParamsToUrl, hasWindow, isOpenInBuilder, isOpeningInTimeline };
@@ -24,10 +24,19 @@ function isOpeningInTimeline() {
24
24
  }
25
25
  return false;
26
26
  }
27
+ function isOpenInBuilder() {
28
+ if (hasWindow()) {
29
+ const urlParams = new URLSearchParams(window.location.search);
30
+ const builder = urlParams.get("builder");
31
+ return !!builder;
32
+ }
33
+ return false;
34
+ }
27
35
  export {
28
36
  addLivePreviewQueryTags,
29
37
  addParamsToUrl,
30
38
  hasWindow,
39
+ isOpenInBuilder,
31
40
  isOpeningInTimeline
32
41
  };
33
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}"],"mappings":";;;AACA,SAAS,+BAA+B;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,SAAS,wBAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { PublicLogger } from \"../logger/logger\";\nimport { addLivePreviewQueryTags } from \"./addLivePreviewQueryTags\";\nexport function hasWindow(): boolean {\n return typeof window !== \"undefined\";\n}\nexport { addLivePreviewQueryTags };\nexport function addParamsToUrl() {\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n}\nexport function isOpeningInTimeline(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const previewTimestamp = urlParams.get(\"preview_timestamp\");\n return !!previewTimestamp;\n }\n return false;\n}\n\nexport function isOpenInBuilder(): boolean {\n if (hasWindow()) {\n const urlParams = new URLSearchParams(window.location.search);\n const builder = urlParams.get(\"builder\");\n return !!builder;\n }\n return false;\n}\n"],"mappings":";;;AACA,SAAS,+BAA+B;AACjC,SAAS,YAAqB;AACjC,SAAO,OAAO,WAAW;AAC7B;AAEO,SAAS,iBAAiB;AAE7B,SAAO,iBAAiB,SAAS,CAAC,UAAe;AAC7C,UAAM,SAAc,MAAM;AAC1B,UAAM,aAA2B,OAAO;AACxC,UAAM,YAAoB,SAAS,SAAS;AAC5C,QACI,cACA,WAAW,SAAS,SAAS,KAC7B,CAAC,WAAW,SAAS,cAAc,GACrC;AACE,YAAM,SAAS,wBAAwB,OAAO,IAAI;AAClD,YAAM,OAAO,OAAO,UAAU,OAAO;AAAA,IACzC;AAAA,EACJ,CAAC;AACL;AACO,SAAS,sBAA+B;AAC3C,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,mBAAmB,UAAU,IAAI,mBAAmB;AAC1D,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;AAEO,SAAS,kBAA2B;AACvC,MAAI,UAAU,GAAG;AACb,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,UAAU,UAAU,IAAI,SAAS;AACvC,WAAO,CAAC,CAAC;AAAA,EACb;AACA,SAAO;AACX;","names":[]}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/visualBuilder/components/Tooltip.tsx
31
+ var Tooltip_exports = {};
32
+ __export(Tooltip_exports, {
33
+ ToolbarTooltip: () => ToolbarTooltip,
34
+ default: () => Tooltip_default
35
+ });
36
+ module.exports = __toCommonJS(Tooltip_exports);
37
+ var import_preact = require("preact");
38
+ var import_hooks = require("preact/hooks");
39
+ var import_dom = require("@floating-ui/dom");
40
+ var import_visualBuilder = require("../visualBuilder.style.cjs");
41
+ var import_classnames = __toESM(require("classnames"), 1);
42
+ var import_icons = require("./icons/index.cjs");
43
+ var import_generateCustomCursor = require("../generators/generateCustomCursor.cjs");
44
+ var import_jsx_runtime = require("preact/jsx-runtime");
45
+ var Tooltip = ({ children, content, placement = "top-start" }) => {
46
+ const [isVisible, setIsVisible] = (0, import_hooks.useState)(false);
47
+ const triggerRef = (0, import_hooks.useRef)(null);
48
+ const tooltipRef = (0, import_hooks.useRef)(null);
49
+ const arrowRef = (0, import_hooks.useRef)(null);
50
+ const showTooltip = () => setIsVisible(true);
51
+ const hideTooltip = () => setIsVisible(false);
52
+ (0, import_hooks.useEffect)(() => {
53
+ if (!isVisible || !triggerRef.current || !tooltipRef.current) {
54
+ return;
55
+ }
56
+ const trigger = triggerRef.current;
57
+ const tooltip = tooltipRef.current;
58
+ (0, import_dom.computePosition)(trigger, tooltip, {
59
+ placement,
60
+ // Middleware runs in order to modify the position
61
+ middleware: [
62
+ (0, import_dom.offset)(8),
63
+ // Add 8px of space between the trigger and tooltip
64
+ (0, import_dom.flip)(),
65
+ // Flip to the opposite side if it overflows
66
+ (0, import_dom.shift)({ padding: 5 }),
67
+ // Shift to keep it in view
68
+ ...arrowRef.current ? [(0, import_dom.arrow)({ element: arrowRef.current })] : []
69
+ // Handle arrow positioning
70
+ ]
71
+ }).then(({ x, y, placement: placement2, middlewareData }) => {
72
+ Object.assign(tooltip.style, {
73
+ left: `${x}px`,
74
+ top: `${y}px`
75
+ });
76
+ if (middlewareData.arrow && arrowRef.current) {
77
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
78
+ const side = placement2.split("-")[0];
79
+ const staticSide = {
80
+ top: "bottom",
81
+ right: "left",
82
+ bottom: "top",
83
+ left: "right"
84
+ }[side];
85
+ const arrowElement = arrowRef.current;
86
+ Object.assign(arrowElement.style, {
87
+ left: "",
88
+ top: "",
89
+ right: "",
90
+ bottom: ""
91
+ });
92
+ if (placement2.includes("-start") || placement2.includes("-end")) {
93
+ const tooltipRect = tooltip.getBoundingClientRect();
94
+ if (side === "top" || side === "bottom") {
95
+ arrowElement.style.left = `${14}px`;
96
+ if (arrowY != null) {
97
+ arrowElement.style.top = `${arrowY}px`;
98
+ }
99
+ } else {
100
+ arrowElement.style.top = `${tooltipRect.height / 2 - 4}px`;
101
+ if (arrowX != null) {
102
+ arrowElement.style.left = `${arrowX}px`;
103
+ }
104
+ }
105
+ } else {
106
+ if (arrowX != null) {
107
+ arrowElement.style.left = `${arrowX}px`;
108
+ }
109
+ if (arrowY != null) {
110
+ arrowElement.style.top = `${arrowY}px`;
111
+ }
112
+ }
113
+ arrowElement.style[staticSide] = "-4px";
114
+ }
115
+ });
116
+ }, [isVisible, placement, content]);
117
+ const triggerWithListeners = (0, import_preact.cloneElement)(children, {
118
+ ref: triggerRef,
119
+ onMouseEnter: showTooltip,
120
+ onMouseLeave: hideTooltip,
121
+ onFocus: showTooltip,
122
+ onBlur: hideTooltip,
123
+ "aria-describedby": "lightweight-tooltip"
124
+ // for accessibility
125
+ });
126
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
127
+ triggerWithListeners,
128
+ isVisible && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
129
+ "div",
130
+ {
131
+ ref: tooltipRef,
132
+ role: "tooltip",
133
+ id: "lightweight-tooltip",
134
+ className: (0, import_classnames.default)("tooltip-container", (0, import_visualBuilder.visualBuilderStyles)()["tooltip-container"]),
135
+ children: [
136
+ content,
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref: arrowRef, className: (0, import_classnames.default)("tooltip-arrow", (0, import_visualBuilder.visualBuilderStyles)()["tooltip-arrow"]) })
138
+ ]
139
+ }
140
+ )
141
+ ] });
142
+ };
143
+ function ToolbarTooltipContent({ contentTypeName, referenceFieldName }) {
144
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_classnames.default)("toolbar-tooltip-content", (0, import_visualBuilder.visualBuilderStyles)()["toolbar-tooltip-content"]), children: [
145
+ contentTypeName && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_classnames.default)("toolbar-tooltip-content-item", (0, import_visualBuilder.visualBuilderStyles)()["toolbar-tooltip-content-item"]), children: [
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.ContentTypeIcon, {}),
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: contentTypeName })
148
+ ] }),
149
+ referenceFieldName && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_classnames.default)("toolbar-tooltip-content-item", (0, import_visualBuilder.visualBuilderStyles)()["toolbar-tooltip-content-item"]), children: [
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { dangerouslySetInnerHTML: { __html: import_generateCustomCursor.FieldTypeIconsMap.reference }, className: (0, import_classnames.default)("visual-builder__field-icon", (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__field-icon"]) }),
151
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: referenceFieldName })
152
+ ] })
153
+ ] });
154
+ }
155
+ function ToolbarTooltip({ children, data, disabled = false }) {
156
+ if (disabled) {
157
+ return children;
158
+ }
159
+ const { contentTypeName, referenceFieldName } = data;
160
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolbarTooltipContent, { contentTypeName, referenceFieldName }), children });
161
+ }
162
+ var Tooltip_default = Tooltip;
163
+ // Annotate the CommonJS export names for ESM import in node:
164
+ 0 && (module.exports = {
165
+ ToolbarTooltip
166
+ });
167
+ //# sourceMappingURL=Tooltip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/Tooltip.tsx"],"sourcesContent":["import { h, cloneElement } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport {\n computePosition,\n flip,\n shift,\n offset,\n arrow\n} from '@floating-ui/dom';\nimport { visualBuilderStyles } from '../visualBuilder.style';\nimport classNames from 'classnames';\nimport { ContentTypeIcon } from './icons';\nimport { FieldTypeIconsMap } from '../generators/generateCustomCursor';\ninterface TooltipProps {\n children: JSX.Element;\n content: JSX.Element;\n placement?: 'top-start' | 'bottom-start' | 'left-start' | 'right-start';\n}\n\n/**\n * A lightweight, reusable tooltip component for Preact powered by Floating UI.\n *\n * @param {object} props - The component props.\n * @param {preact.ComponentChildren} props.children - The single child element that triggers the tooltip.\n * @param {string | preact.VNode} props.content - The content to display inside the tooltip.\n * @param {'top'|'bottom'|'left'|'right'} [props.placement='top'] - The desired placement of the tooltip.\n */\nconst Tooltip = ({ children, content, placement = 'top-start' }: TooltipProps) => {\n const [isVisible, setIsVisible] = useState(false);\n // Create refs for the trigger and the floating tooltip elements\n const triggerRef = useRef(null);\n const tooltipRef = useRef(null);\n const arrowRef = useRef(null);\n\n const showTooltip = () => setIsVisible(true);\n const hideTooltip = () => setIsVisible(false);\n\n // This effect calculates the tooltip's position whenever it becomes visible\n // or if its content or placement changes.\n useEffect(() => {\n if (!isVisible || !triggerRef.current || !tooltipRef.current) {\n return;\n }\n\n const trigger = triggerRef.current as HTMLElement;\n const tooltip = tooltipRef.current as HTMLElement;\n\n computePosition(trigger, tooltip, {\n placement,\n // Middleware runs in order to modify the position\n middleware: [\n offset(8), // Add 8px of space between the trigger and tooltip\n flip(), // Flip to the opposite side if it overflows\n shift({ padding: 5 }), // Shift to keep it in view\n ...(arrowRef.current ? [arrow({ element: arrowRef.current as HTMLElement })] : []), // Handle arrow positioning\n ],\n }).then(({ x, y, placement, middlewareData }) => {\n // Apply the calculated coordinates to the tooltip element\n Object.assign(tooltip.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n // Position the arrow element\n if (middlewareData.arrow && arrowRef.current) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n const side = placement.split('-')[0];\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[side] as string;\n\n const arrowElement = arrowRef.current as HTMLElement;\n \n // Reset all positioning properties\n Object.assign(arrowElement.style, {\n left: '',\n top: '',\n right: '',\n bottom: '',\n });\n\n // For placements like top-start, bottom-start, etc., we want the arrow \n // to be centered on the tooltip rather than pointing at the trigger center\n if (placement.includes('-start') || placement.includes('-end')) {\n const tooltipRect = tooltip.getBoundingClientRect();\n \n if (side === 'top' || side === 'bottom') {\n // For top/bottom placements, center the arrow horizontally\n arrowElement.style.left = `${14}px`; // 4px = half arrow width\n if (arrowY != null) {\n arrowElement.style.top = `${arrowY}px`;\n }\n } else {\n // For left/right placements, center the arrow vertically\n arrowElement.style.top = `${tooltipRect.height / 2 - 4}px`; // 4px = half arrow height\n if (arrowX != null) {\n arrowElement.style.left = `${arrowX}px`;\n }\n }\n } else {\n // For regular placements (top, bottom, left, right), use floating-ui's positioning\n if (arrowX != null) {\n arrowElement.style.left = `${arrowX}px`;\n }\n if (arrowY != null) {\n arrowElement.style.top = `${arrowY}px`;\n }\n }\n\n // Position arrow to overlap the tooltip's border\n (arrowElement.style as any)[staticSide] = '-4px';\n }\n });\n\n }, [isVisible, placement, content]);\n\n // We need to clone the child element to attach our ref and event listeners.\n // This ensures we don't wrap the child in an extra <div>.\n const triggerWithListeners = cloneElement(children, {\n ref: triggerRef,\n onMouseEnter: showTooltip,\n onMouseLeave: hideTooltip,\n onFocus: showTooltip,\n onBlur: hideTooltip,\n 'aria-describedby': 'lightweight-tooltip' // for accessibility\n });\n\n return (\n <>\n {triggerWithListeners}\n {isVisible && (\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n id=\"lightweight-tooltip\"\n className={classNames(\"tooltip-container\", visualBuilderStyles()[\"tooltip-container\"])}\n >\n {content}\n <div ref={arrowRef} className={classNames(\"tooltip-arrow\", visualBuilderStyles()[\"tooltip-arrow\"])}></div>\n </div>\n )}\n </>\n );\n};\n\nfunction ToolbarTooltipContent({contentTypeName, referenceFieldName}: {contentTypeName: string, referenceFieldName: string}) {\n return (\n <div className={classNames(\"toolbar-tooltip-content\", visualBuilderStyles()[\"toolbar-tooltip-content\"])}>\n {\n contentTypeName && (\n <div className={classNames(\"toolbar-tooltip-content-item\", visualBuilderStyles()[\"toolbar-tooltip-content-item\"])}>\n <ContentTypeIcon />\n <p>{contentTypeName}</p>\n </div>\n )\n }\n {\n referenceFieldName && (\n <div className={classNames(\"toolbar-tooltip-content-item\", visualBuilderStyles()[\"toolbar-tooltip-content-item\"])}>\n <div dangerouslySetInnerHTML={{__html: FieldTypeIconsMap.reference}} className={classNames(\"visual-builder__field-icon\", visualBuilderStyles()[\"visual-builder__field-icon\"])}/>\n <p>{referenceFieldName}</p>\n </div>\n )\n }\n </div>\n )\n}\n\nexport function ToolbarTooltip({children, data, disabled = false}: {children: JSX.Element, data: {contentTypeName: string, referenceFieldName: string}, disabled?: boolean}) {\n if (disabled) {\n return children;\n }\n const { contentTypeName, referenceFieldName } = data;\n return (\n <Tooltip content={<ToolbarTooltipContent contentTypeName={contentTypeName} referenceFieldName={referenceFieldName} />}>\n {children}\n </Tooltip>\n )\n}\n\nexport default Tooltip;"],"mappings":"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","names":["placement","classNames"]}
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface TooltipProps {
4
+ children: JSX.Element;
5
+ content: JSX.Element;
6
+ placement?: 'top-start' | 'bottom-start' | 'left-start' | 'right-start';
7
+ }
8
+ /**
9
+ * A lightweight, reusable tooltip component for Preact powered by Floating UI.
10
+ *
11
+ * @param {object} props - The component props.
12
+ * @param {preact.ComponentChildren} props.children - The single child element that triggers the tooltip.
13
+ * @param {string | preact.VNode} props.content - The content to display inside the tooltip.
14
+ * @param {'top'|'bottom'|'left'|'right'} [props.placement='top'] - The desired placement of the tooltip.
15
+ */
16
+ declare const Tooltip: ({ children, content, placement }: TooltipProps) => react_jsx_runtime.JSX.Element;
17
+ declare function ToolbarTooltip({ children, data, disabled }: {
18
+ children: JSX.Element;
19
+ data: {
20
+ contentTypeName: string;
21
+ referenceFieldName: string;
22
+ };
23
+ disabled?: boolean;
24
+ }): JSX.Element;
25
+
26
+ export { ToolbarTooltip, Tooltip as default };
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface TooltipProps {
4
+ children: JSX.Element;
5
+ content: JSX.Element;
6
+ placement?: 'top-start' | 'bottom-start' | 'left-start' | 'right-start';
7
+ }
8
+ /**
9
+ * A lightweight, reusable tooltip component for Preact powered by Floating UI.
10
+ *
11
+ * @param {object} props - The component props.
12
+ * @param {preact.ComponentChildren} props.children - The single child element that triggers the tooltip.
13
+ * @param {string | preact.VNode} props.content - The content to display inside the tooltip.
14
+ * @param {'top'|'bottom'|'left'|'right'} [props.placement='top'] - The desired placement of the tooltip.
15
+ */
16
+ declare const Tooltip: ({ children, content, placement }: TooltipProps) => react_jsx_runtime.JSX.Element;
17
+ declare function ToolbarTooltip({ children, data, disabled }: {
18
+ children: JSX.Element;
19
+ data: {
20
+ contentTypeName: string;
21
+ referenceFieldName: string;
22
+ };
23
+ disabled?: boolean;
24
+ }): JSX.Element;
25
+
26
+ export { ToolbarTooltip, Tooltip as default };