@contentstack/live-preview-utils 3.0.0 → 3.0.2

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 (215) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/legacy/cslp/cslpdata.cjs.map +1 -1
  4. package/dist/legacy/cslp/cslpdata.js.map +1 -1
  5. package/dist/legacy/livePreview/editButton/editButton.cjs +2 -2
  6. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  7. package/dist/legacy/livePreview/editButton/editButton.js +2 -2
  8. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  9. package/dist/legacy/livePreview/editButton/editButton.style.cjs +0 -1
  10. package/dist/legacy/livePreview/editButton/editButton.style.cjs.map +1 -1
  11. package/dist/legacy/livePreview/editButton/editButton.style.js +0 -1
  12. package/dist/legacy/livePreview/editButton/editButton.style.js.map +1 -1
  13. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  14. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  15. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  16. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  17. package/dist/legacy/timeline/compare/compare.cjs +2 -1
  18. package/dist/legacy/timeline/compare/compare.cjs.map +1 -1
  19. package/dist/legacy/timeline/compare/compare.js +2 -1
  20. package/dist/legacy/timeline/compare/compare.js.map +1 -1
  21. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +2 -2
  22. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  23. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.d.cts +1 -1
  24. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.d.ts +1 -1
  25. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js +2 -2
  26. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  27. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +37 -29
  28. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  29. package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +1 -0
  30. package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +1 -0
  31. package/dist/legacy/visualBuilder/components/FieldToolbar.js +37 -29
  32. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  33. package/dist/legacy/visualBuilder/components/emptyBlock.cjs +1 -0
  34. package/dist/legacy/visualBuilder/components/emptyBlock.cjs.map +1 -1
  35. package/dist/legacy/visualBuilder/components/emptyBlock.js +1 -0
  36. package/dist/legacy/visualBuilder/components/emptyBlock.js.map +1 -1
  37. package/dist/legacy/visualBuilder/components/pseudoEditableField.cjs +6 -13
  38. package/dist/legacy/visualBuilder/components/pseudoEditableField.cjs.map +1 -1
  39. package/dist/legacy/visualBuilder/components/pseudoEditableField.js +6 -13
  40. package/dist/legacy/visualBuilder/components/pseudoEditableField.js.map +1 -1
  41. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +25 -13
  42. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
  43. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js +25 -13
  44. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
  45. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +6 -5
  46. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  47. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +2 -2
  48. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +2 -2
  49. package/dist/legacy/visualBuilder/generators/generateToolbar.js +6 -5
  50. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  51. package/dist/legacy/visualBuilder/index.cjs +2 -1
  52. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  53. package/dist/legacy/visualBuilder/index.js +2 -1
  54. package/dist/legacy/visualBuilder/index.js.map +1 -1
  55. package/dist/legacy/visualBuilder/listeners/index.cjs +8 -2
  56. package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
  57. package/dist/legacy/visualBuilder/listeners/index.js +8 -2
  58. package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
  59. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +10 -2
  60. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  61. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +3 -1
  62. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +3 -1
  63. package/dist/legacy/visualBuilder/listeners/mouseClick.js +11 -3
  64. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  65. package/dist/legacy/visualBuilder/utils/constants.cjs +5 -2
  66. package/dist/legacy/visualBuilder/utils/constants.cjs.map +1 -1
  67. package/dist/legacy/visualBuilder/utils/constants.d.cts +2 -1
  68. package/dist/legacy/visualBuilder/utils/constants.d.ts +2 -1
  69. package/dist/legacy/visualBuilder/utils/constants.js +3 -1
  70. package/dist/legacy/visualBuilder/utils/constants.js.map +1 -1
  71. package/dist/legacy/visualBuilder/utils/getFieldType.cjs +6 -5
  72. package/dist/legacy/visualBuilder/utils/getFieldType.cjs.map +1 -1
  73. package/dist/legacy/visualBuilder/utils/getFieldType.js +6 -5
  74. package/dist/legacy/visualBuilder/utils/getFieldType.js.map +1 -1
  75. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +56 -0
  76. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -0
  77. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.d.cts +5 -0
  78. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.d.ts +5 -0
  79. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js +23 -0
  80. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -0
  81. package/dist/legacy/visualBuilder/utils/getStyleOfAnElement.cjs +2 -0
  82. package/dist/legacy/visualBuilder/utils/getStyleOfAnElement.cjs.map +1 -1
  83. package/dist/legacy/visualBuilder/utils/getStyleOfAnElement.js +2 -0
  84. package/dist/legacy/visualBuilder/utils/getStyleOfAnElement.js.map +1 -1
  85. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +10 -0
  86. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  87. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +10 -0
  88. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  89. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +65 -41
  90. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  91. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +55 -41
  92. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  93. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.cjs +44 -0
  94. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.cjs.map +1 -0
  95. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.d.cts +3 -0
  96. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.d.ts +3 -0
  97. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.js +21 -0
  98. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.js.map +1 -0
  99. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +1 -1
  100. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  101. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +1 -1
  102. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  103. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +48 -17
  104. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  105. package/dist/legacy/visualBuilder/utils/updateFocussedState.d.cts +2 -2
  106. package/dist/legacy/visualBuilder/utils/updateFocussedState.d.ts +2 -2
  107. package/dist/legacy/visualBuilder/utils/updateFocussedState.js +58 -19
  108. package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
  109. package/dist/modern/cslp/cslpdata.cjs.map +1 -1
  110. package/dist/modern/cslp/cslpdata.js.map +1 -1
  111. package/dist/modern/livePreview/editButton/editButton.cjs +1 -1
  112. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  113. package/dist/modern/livePreview/editButton/editButton.js +1 -1
  114. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  115. package/dist/modern/livePreview/editButton/editButton.style.cjs +0 -1
  116. package/dist/modern/livePreview/editButton/editButton.style.cjs.map +1 -1
  117. package/dist/modern/livePreview/editButton/editButton.style.js +0 -1
  118. package/dist/modern/livePreview/editButton/editButton.style.js.map +1 -1
  119. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  120. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  121. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  122. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  123. package/dist/modern/timeline/compare/compare.cjs +2 -1
  124. package/dist/modern/timeline/compare/compare.cjs.map +1 -1
  125. package/dist/modern/timeline/compare/compare.js +2 -1
  126. package/dist/modern/timeline/compare/compare.js.map +1 -1
  127. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +2 -2
  128. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  129. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.d.cts +1 -1
  130. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.d.ts +1 -1
  131. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js +2 -2
  132. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  133. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +35 -29
  134. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  135. package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +1 -0
  136. package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +1 -0
  137. package/dist/modern/visualBuilder/components/FieldToolbar.js +35 -29
  138. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  139. package/dist/modern/visualBuilder/components/emptyBlock.cjs +1 -0
  140. package/dist/modern/visualBuilder/components/emptyBlock.cjs.map +1 -1
  141. package/dist/modern/visualBuilder/components/emptyBlock.js +1 -0
  142. package/dist/modern/visualBuilder/components/emptyBlock.js.map +1 -1
  143. package/dist/modern/visualBuilder/components/pseudoEditableField.cjs +6 -13
  144. package/dist/modern/visualBuilder/components/pseudoEditableField.cjs.map +1 -1
  145. package/dist/modern/visualBuilder/components/pseudoEditableField.js +6 -13
  146. package/dist/modern/visualBuilder/components/pseudoEditableField.js.map +1 -1
  147. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +24 -13
  148. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
  149. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js +24 -13
  150. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
  151. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +6 -5
  152. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  153. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +2 -2
  154. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +2 -2
  155. package/dist/modern/visualBuilder/generators/generateToolbar.js +6 -5
  156. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  157. package/dist/modern/visualBuilder/index.cjs +2 -1
  158. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  159. package/dist/modern/visualBuilder/index.js +2 -1
  160. package/dist/modern/visualBuilder/index.js.map +1 -1
  161. package/dist/modern/visualBuilder/listeners/index.cjs +8 -2
  162. package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
  163. package/dist/modern/visualBuilder/listeners/index.js +8 -2
  164. package/dist/modern/visualBuilder/listeners/index.js.map +1 -1
  165. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +10 -2
  166. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  167. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +3 -1
  168. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +3 -1
  169. package/dist/modern/visualBuilder/listeners/mouseClick.js +11 -3
  170. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  171. package/dist/modern/visualBuilder/utils/constants.cjs +5 -2
  172. package/dist/modern/visualBuilder/utils/constants.cjs.map +1 -1
  173. package/dist/modern/visualBuilder/utils/constants.d.cts +2 -1
  174. package/dist/modern/visualBuilder/utils/constants.d.ts +2 -1
  175. package/dist/modern/visualBuilder/utils/constants.js +3 -1
  176. package/dist/modern/visualBuilder/utils/constants.js.map +1 -1
  177. package/dist/modern/visualBuilder/utils/getFieldType.cjs +5 -5
  178. package/dist/modern/visualBuilder/utils/getFieldType.cjs.map +1 -1
  179. package/dist/modern/visualBuilder/utils/getFieldType.js +5 -5
  180. package/dist/modern/visualBuilder/utils/getFieldType.js.map +1 -1
  181. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +56 -0
  182. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -0
  183. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.d.cts +5 -0
  184. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.d.ts +5 -0
  185. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js +23 -0
  186. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -0
  187. package/dist/modern/visualBuilder/utils/getStyleOfAnElement.cjs +2 -0
  188. package/dist/modern/visualBuilder/utils/getStyleOfAnElement.cjs.map +1 -1
  189. package/dist/modern/visualBuilder/utils/getStyleOfAnElement.js +2 -0
  190. package/dist/modern/visualBuilder/utils/getStyleOfAnElement.js.map +1 -1
  191. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +10 -0
  192. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  193. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +10 -0
  194. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  195. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +64 -41
  196. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  197. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +54 -41
  198. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  199. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.cjs +44 -0
  200. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.cjs.map +1 -0
  201. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.d.cts +3 -0
  202. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.d.ts +3 -0
  203. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.js +21 -0
  204. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.js.map +1 -0
  205. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +1 -1
  206. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  207. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +1 -1
  208. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  209. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +48 -17
  210. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  211. package/dist/modern/visualBuilder/utils/updateFocussedState.d.cts +2 -2
  212. package/dist/modern/visualBuilder/utils/updateFocussedState.d.ts +2 -2
  213. package/dist/modern/visualBuilder/utils/updateFocussedState.js +58 -19
  214. package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
  215. package/package.json +1 -1
@@ -85,6 +85,7 @@ function EmptyBlock(props) {
85
85
  (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__empty-block-add-button"]
86
86
  ),
87
87
  onClick: () => sendAddInstanceEvent(),
88
+ type: "button",
88
89
  children: [
89
90
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("i", { className: "fas fa-plus" }),
90
91
  " \xA0",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/emptyBlock.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { observeParentAndFocusNewInstance } from \"../utils/multipleElementAddButton\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport React from \"preact/compat\";\n\ninterface EmptyBlockProps {\n details: {\n fieldMetadata: CslpData;\n fieldSchema: ISchemaFieldMap;\n };\n}\n\nexport function EmptyBlock(props: EmptyBlockProps): JSX.Element {\n const { details } = props;\n\n const blockParentName = details.fieldSchema.display_name;\n\n async function sendAddInstanceEvent() {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata: details.fieldMetadata,\n index: 0,\n }\n );\n observeParentAndFocusNewInstance({\n parentCslp: details.fieldMetadata.cslpValue,\n index: 0,\n });\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__empty-block\",\n visualBuilderStyles()[\"visual-builder__empty-block\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__empty-block-title\",\n visualBuilderStyles()[\"visual-builder__empty-block-title\"]\n )}\n >\n There are no {blockParentName.toLowerCase()} on this page yet. Click the button below to add one.\n </div>\n <button\n className={classNames(\n \"visual-builder__empty-block-add-button\",\n visualBuilderStyles()[\n \"visual-builder__empty-block-add-button\"\n ]\n )}\n onClick={() => sendAddInstanceEvent()}\n >\n <i className=\"fas fa-plus\"></i> &nbsp;\n {blockParentName}\n </button>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AAEvB,2BAAoC;AACpC,sCAAqC;AACrC,sCAAiD;AAEjD,yBAA+C;AAoCnC;AA1BL,SAAS,WAAW,OAAqC;AAC5D,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,kBAAkB,QAAQ,YAAY;AAE5C,iBAAe,uBAAuB;AAClC,UAAM,gCAAAA,SAA0B;AAAA,MAC5B,kDAA+B;AAAA,MAC/B;AAAA,QACI,eAAe,QAAQ;AAAA,QACvB,OAAO;AAAA,MACX;AAAA,IACJ;AACA,0EAAiC;AAAA,MAC7B,YAAY,QAAQ,cAAc;AAAA,MAClC,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAC;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,6BAA6B;AAAA,MACvD;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACG,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,0CAAoB,EAAE,mCAAmC;AAAA,YAC7D;AAAA,YACH;AAAA;AAAA,cACiB,gBAAgB,YAAY;AAAA,cAAE;AAAA;AAAA;AAAA,QAChD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACG,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,0CAAoB,EAChB,wCACJ;AAAA,YACJ;AAAA,YACA,SAAS,MAAM,qBAAqB;AAAA,YAEpC;AAAA,0DAAC,OAAE,WAAU,eAAc;AAAA,cAAI;AAAA,cAC9B;AAAA;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EACJ;AAER;","names":["visualBuilderPostMessage","classNames"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/emptyBlock.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { observeParentAndFocusNewInstance } from \"../utils/multipleElementAddButton\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport React from \"preact/compat\";\n\ninterface EmptyBlockProps {\n details: {\n fieldMetadata: CslpData;\n fieldSchema: ISchemaFieldMap;\n };\n}\n\nexport function EmptyBlock(props: EmptyBlockProps): JSX.Element {\n const { details } = props;\n\n const blockParentName = details.fieldSchema.display_name;\n\n async function sendAddInstanceEvent() {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata: details.fieldMetadata,\n index: 0,\n }\n );\n observeParentAndFocusNewInstance({\n parentCslp: details.fieldMetadata.cslpValue,\n index: 0,\n });\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__empty-block\",\n visualBuilderStyles()[\"visual-builder__empty-block\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__empty-block-title\",\n visualBuilderStyles()[\"visual-builder__empty-block-title\"]\n )}\n >\n There are no {blockParentName.toLowerCase()} on this page yet. Click the button below to add one.\n </div>\n <button\n className={classNames(\n \"visual-builder__empty-block-add-button\",\n visualBuilderStyles()[\n \"visual-builder__empty-block-add-button\"\n ]\n )}\n onClick={() => sendAddInstanceEvent()}\n type=\"button\"\n >\n <i className=\"fas fa-plus\"></i> &nbsp;\n {blockParentName}\n </button>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AAEvB,2BAAoC;AACpC,sCAAqC;AACrC,sCAAiD;AAEjD,yBAA+C;AAoCnC;AA1BL,SAAS,WAAW,OAAqC;AAC5D,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,kBAAkB,QAAQ,YAAY;AAE5C,iBAAe,uBAAuB;AAClC,UAAM,gCAAAA,SAA0B;AAAA,MAC5B,kDAA+B;AAAA,MAC/B;AAAA,QACI,eAAe,QAAQ;AAAA,QACvB,OAAO;AAAA,MACX;AAAA,IACJ;AACA,0EAAiC;AAAA,MAC7B,YAAY,QAAQ,cAAc;AAAA,MAClC,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAC;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,6BAA6B;AAAA,MACvD;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACG,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,0CAAoB,EAAE,mCAAmC;AAAA,YAC7D;AAAA,YACH;AAAA;AAAA,cACiB,gBAAgB,YAAY;AAAA,cAAE;AAAA;AAAA;AAAA,QAChD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACG,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,0CAAoB,EAChB,wCACJ;AAAA,YACJ;AAAA,YACA,SAAS,MAAM,qBAAqB;AAAA,YACpC,MAAK;AAAA,YAEL;AAAA,0DAAC,OAAE,WAAU,eAAc;AAAA,cAAI;AAAA,cAC9B;AAAA;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EACJ;AAER;","names":["visualBuilderPostMessage","classNames"]}
@@ -53,6 +53,7 @@ function EmptyBlock(props) {
53
53
  visualBuilderStyles()["visual-builder__empty-block-add-button"]
54
54
  ),
55
55
  onClick: () => sendAddInstanceEvent(),
56
+ type: "button",
56
57
  children: [
57
58
  /* @__PURE__ */ jsx("i", { className: "fas fa-plus" }),
58
59
  " \xA0",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/emptyBlock.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { observeParentAndFocusNewInstance } from \"../utils/multipleElementAddButton\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport React from \"preact/compat\";\n\ninterface EmptyBlockProps {\n details: {\n fieldMetadata: CslpData;\n fieldSchema: ISchemaFieldMap;\n };\n}\n\nexport function EmptyBlock(props: EmptyBlockProps): JSX.Element {\n const { details } = props;\n\n const blockParentName = details.fieldSchema.display_name;\n\n async function sendAddInstanceEvent() {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata: details.fieldMetadata,\n index: 0,\n }\n );\n observeParentAndFocusNewInstance({\n parentCslp: details.fieldMetadata.cslpValue,\n index: 0,\n });\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__empty-block\",\n visualBuilderStyles()[\"visual-builder__empty-block\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__empty-block-title\",\n visualBuilderStyles()[\"visual-builder__empty-block-title\"]\n )}\n >\n There are no {blockParentName.toLowerCase()} on this page yet. Click the button below to add one.\n </div>\n <button\n className={classNames(\n \"visual-builder__empty-block-add-button\",\n visualBuilderStyles()[\n \"visual-builder__empty-block-add-button\"\n ]\n )}\n onClick={() => sendAddInstanceEvent()}\n >\n <i className=\"fas fa-plus\"></i> &nbsp;\n {blockParentName}\n </button>\n </div>\n );\n}\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AAEvB,SAAS,2BAA2B;AACpC,OAAO,8BAA8B;AACrC,SAAS,wCAAwC;AAEjD,SAAS,sCAAsC;AAoCnC,SAiBI,KAjBJ;AA1BL,SAAS,WAAW,OAAqC;AAC5D,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,kBAAkB,QAAQ,YAAY;AAE5C,iBAAe,uBAAuB;AAClC,UAAM,0BAA0B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B;AAAA,QACI,eAAe,QAAQ;AAAA,QACvB,OAAO;AAAA,MACX;AAAA,IACJ;AACA,qCAAiC;AAAA,MAC7B,YAAY,QAAQ,cAAc;AAAA,MAClC,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,6BAA6B;AAAA,MACvD;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACG,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAAE,mCAAmC;AAAA,YAC7D;AAAA,YACH;AAAA;AAAA,cACiB,gBAAgB,YAAY;AAAA,cAAE;AAAA;AAAA;AAAA,QAChD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACG,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAChB,wCACJ;AAAA,YACJ;AAAA,YACA,SAAS,MAAM,qBAAqB;AAAA,YAEpC;AAAA,kCAAC,OAAE,WAAU,eAAc;AAAA,cAAI;AAAA,cAC9B;AAAA;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EACJ;AAER;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/emptyBlock.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { observeParentAndFocusNewInstance } from \"../utils/multipleElementAddButton\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport React from \"preact/compat\";\n\ninterface EmptyBlockProps {\n details: {\n fieldMetadata: CslpData;\n fieldSchema: ISchemaFieldMap;\n };\n}\n\nexport function EmptyBlock(props: EmptyBlockProps): JSX.Element {\n const { details } = props;\n\n const blockParentName = details.fieldSchema.display_name;\n\n async function sendAddInstanceEvent() {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.ADD_INSTANCE,\n {\n fieldMetadata: details.fieldMetadata,\n index: 0,\n }\n );\n observeParentAndFocusNewInstance({\n parentCslp: details.fieldMetadata.cslpValue,\n index: 0,\n });\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__empty-block\",\n visualBuilderStyles()[\"visual-builder__empty-block\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__empty-block-title\",\n visualBuilderStyles()[\"visual-builder__empty-block-title\"]\n )}\n >\n There are no {blockParentName.toLowerCase()} on this page yet. Click the button below to add one.\n </div>\n <button\n className={classNames(\n \"visual-builder__empty-block-add-button\",\n visualBuilderStyles()[\n \"visual-builder__empty-block-add-button\"\n ]\n )}\n onClick={() => sendAddInstanceEvent()}\n type=\"button\"\n >\n <i className=\"fas fa-plus\"></i> &nbsp;\n {blockParentName}\n </button>\n </div>\n );\n}\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AAEvB,SAAS,2BAA2B;AACpC,OAAO,8BAA8B;AACrC,SAAS,wCAAwC;AAEjD,SAAS,sCAAsC;AAoCnC,SAkBI,KAlBJ;AA1BL,SAAS,WAAW,OAAqC;AAC5D,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,kBAAkB,QAAQ,YAAY;AAE5C,iBAAe,uBAAuB;AAClC,UAAM,0BAA0B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B;AAAA,QACI,eAAe,QAAQ;AAAA,QACvB,OAAO;AAAA,MACX;AAAA,IACJ;AACA,qCAAiC;AAAA,MAC7B,YAAY,QAAQ,cAAc;AAAA,MAClC,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,6BAA6B;AAAA,MACvD;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACG,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAAE,mCAAmC;AAAA,YAC7D;AAAA,YACH;AAAA;AAAA,cACiB,gBAAgB,YAAY;AAAA,cAAE;AAAA;AAAA;AAAA,QAChD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACG,WAAW;AAAA,cACP;AAAA,cACA,oBAAoB,EAChB,wCACJ;AAAA,YACJ;AAAA,YACA,SAAS,MAAM,qBAAqB;AAAA,YACpC,MAAK;AAAA,YAEL;AAAA,kCAAC,OAAE,WAAU,eAAc;AAAA,cAAI;AAAA,cAC9B;AAAA;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EACJ;AAER;","names":[]}
@@ -34,25 +34,18 @@ __export(pseudoEditableField_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(pseudoEditableField_exports);
36
36
  var import_classnames = __toESM(require("classnames"), 1);
37
- var import_getCamelCaseStyles = __toESM(require("../utils/getCamelCaseStyles.cjs"), 1);
38
- var import_getStyleOfAnElement = __toESM(require("../utils/getStyleOfAnElement.cjs"), 1);
39
37
  var import_visualBuilder = require("../visualBuilder.style.cjs");
38
+ var import_getPsuedoEditableStylesElement = require("../utils/getPsuedoEditableStylesElement.cjs");
40
39
  var import_jsx_runtime = require("preact/jsx-runtime");
41
40
  function PseudoEditableFieldComponent(props) {
42
- const styles = (0, import_getCamelCaseStyles.default)(
43
- (0, import_getStyleOfAnElement.default)(props.editableElement)
44
- );
45
- const rect = props.editableElement.getBoundingClientRect();
46
- styles.position = "absolute";
47
- styles.top = `${rect.top + window.scrollY}px`;
48
- styles.left = `${rect.left + window.scrollX}px`;
49
- styles.height = "auto";
50
- styles.whiteSpace = "pre-line";
51
- styles.textTransform = "none";
41
+ const styles = (0, import_getPsuedoEditableStylesElement.getPsuedoEditableElementStyles)(props.editableElement, true);
52
42
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
53
43
  "div",
54
44
  {
55
- className: (0, import_classnames.default)("visual-builder__pseudo-editable-element", (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__pseudo-editable-element"]),
45
+ className: (0, import_classnames.default)(
46
+ "visual-builder__pseudo-editable-element",
47
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__pseudo-editable-element"]
48
+ ),
56
49
  "data-testid": "visual-builder__pseudo-editable-element",
57
50
  style: styles,
58
51
  children: props.config.textContent
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/pseudoEditableField.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getCamelCaseStyles from \"../utils/getCamelCaseStyles\";\nimport getStyleOfAnElement from \"../utils/getStyleOfAnElement\";\nimport React from \"preact/compat\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\ninterface PseudoEditableFieldProps {\n editableElement: HTMLElement;\n config: { textContent: string };\n}\n\nfunction PseudoEditableFieldComponent(\n props: PseudoEditableFieldProps\n): JSX.Element {\n const styles = getCamelCaseStyles(\n getStyleOfAnElement(props.editableElement)\n );\n // Get the offsetTop and offsetLeft of the editable element and set the position of the pseudo editable element\n // The pseudo editable element is positioned absolutely at the same location as the editable element\n const rect = props.editableElement.getBoundingClientRect();\n\n styles.position = \"absolute\";\n styles.top = `${rect.top + window.scrollY}px`;\n styles.left = `${rect.left + window.scrollX}px`;\n // setting height to auto so that the element can grow based on the content\n // and the resize observer can detect the change in height\n styles.height = \"auto\";\n styles.whiteSpace = \"pre-line\"\n styles.textTransform = \"none\"\n\n return (\n <div\n className={\n classNames(\"visual-builder__pseudo-editable-element\", visualBuilderStyles()[\"visual-builder__pseudo-editable-element\"])\n }\n data-testid=\"visual-builder__pseudo-editable-element\"\n style={styles}\n >\n {props.config.textContent}\n </div>\n );\n}\n\nexport default PseudoEditableFieldComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,gCAA+B;AAC/B,iCAAgC;AAEhC,2BAAoC;AA2B5B;AApBR,SAAS,6BACL,OACW;AACX,QAAM,aAAS,0BAAAA;AAAA,QACX,2BAAAC,SAAoB,MAAM,eAAe;AAAA,EAC7C;AAGA,QAAM,OAAO,MAAM,gBAAgB,sBAAsB;AAEzD,SAAO,WAAW;AAClB,SAAO,MAAM,GAAG,KAAK,MAAM,OAAO,OAAO;AACzC,SAAO,OAAO,GAAG,KAAK,OAAO,OAAO,OAAO;AAG3C,SAAO,SAAS;AAChB,SAAO,aAAa;AACpB,SAAO,gBAAgB;AAEvB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eACI,kBAAAC,SAAW,+CAA2C,0CAAoB,EAAE,yCAAyC,CAAC;AAAA,MAE1H,eAAY;AAAA,MACZ,OAAO;AAAA,MAEN,gBAAM,OAAO;AAAA;AAAA,EAClB;AAER;AAEA,IAAO,8BAAQ;","names":["getCamelCaseStyles","getStyleOfAnElement","classNames"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/pseudoEditableField.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React from \"preact/compat\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { getPsuedoEditableElementStyles } from \"../utils/getPsuedoEditableStylesElement\";\n\ninterface PseudoEditableFieldProps {\n editableElement: HTMLElement;\n config: { textContent: string };\n}\n\nfunction PseudoEditableFieldComponent(\n props: PseudoEditableFieldProps\n): JSX.Element {\n const styles = getPsuedoEditableElementStyles(props.editableElement, true);\n\n return (\n <div\n className={classNames(\n \"visual-builder__pseudo-editable-element\",\n visualBuilderStyles()[\"visual-builder__pseudo-editable-element\"]\n )}\n data-testid=\"visual-builder__pseudo-editable-element\"\n style={styles}\n >\n {props.config.textContent}\n </div>\n );\n}\n\nexport default PseudoEditableFieldComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AAEvB,2BAAoC;AACpC,4CAA+C;AAavC;AANR,SAAS,6BACL,OACW;AACX,QAAM,aAAS,sEAA+B,MAAM,iBAAiB,IAAI;AAEzE,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,0CAAoB,EAAE,yCAAyC;AAAA,MACnE;AAAA,MACA,eAAY;AAAA,MACZ,OAAO;AAAA,MAEN,gBAAM,OAAO;AAAA;AAAA,EAClB;AAER;AAEA,IAAO,8BAAQ;","names":["classNames"]}
@@ -2,25 +2,18 @@ import "../../chunk-5WRI5ZAA.js";
2
2
 
3
3
  // src/visualBuilder/components/pseudoEditableField.tsx
4
4
  import classNames from "classnames";
5
- import getCamelCaseStyles from "../utils/getCamelCaseStyles.js";
6
- import getStyleOfAnElement from "../utils/getStyleOfAnElement.js";
7
5
  import { visualBuilderStyles } from "../visualBuilder.style.js";
6
+ import { getPsuedoEditableElementStyles } from "../utils/getPsuedoEditableStylesElement.js";
8
7
  import { jsx } from "preact/jsx-runtime";
9
8
  function PseudoEditableFieldComponent(props) {
10
- const styles = getCamelCaseStyles(
11
- getStyleOfAnElement(props.editableElement)
12
- );
13
- const rect = props.editableElement.getBoundingClientRect();
14
- styles.position = "absolute";
15
- styles.top = `${rect.top + window.scrollY}px`;
16
- styles.left = `${rect.left + window.scrollX}px`;
17
- styles.height = "auto";
18
- styles.whiteSpace = "pre-line";
19
- styles.textTransform = "none";
9
+ const styles = getPsuedoEditableElementStyles(props.editableElement, true);
20
10
  return /* @__PURE__ */ jsx(
21
11
  "div",
22
12
  {
23
- className: classNames("visual-builder__pseudo-editable-element", visualBuilderStyles()["visual-builder__pseudo-editable-element"]),
13
+ className: classNames(
14
+ "visual-builder__pseudo-editable-element",
15
+ visualBuilderStyles()["visual-builder__pseudo-editable-element"]
16
+ ),
24
17
  "data-testid": "visual-builder__pseudo-editable-element",
25
18
  style: styles,
26
19
  children: props.config.textContent
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/pseudoEditableField.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport getCamelCaseStyles from \"../utils/getCamelCaseStyles\";\nimport getStyleOfAnElement from \"../utils/getStyleOfAnElement\";\nimport React from \"preact/compat\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\n\ninterface PseudoEditableFieldProps {\n editableElement: HTMLElement;\n config: { textContent: string };\n}\n\nfunction PseudoEditableFieldComponent(\n props: PseudoEditableFieldProps\n): JSX.Element {\n const styles = getCamelCaseStyles(\n getStyleOfAnElement(props.editableElement)\n );\n // Get the offsetTop and offsetLeft of the editable element and set the position of the pseudo editable element\n // The pseudo editable element is positioned absolutely at the same location as the editable element\n const rect = props.editableElement.getBoundingClientRect();\n\n styles.position = \"absolute\";\n styles.top = `${rect.top + window.scrollY}px`;\n styles.left = `${rect.left + window.scrollX}px`;\n // setting height to auto so that the element can grow based on the content\n // and the resize observer can detect the change in height\n styles.height = \"auto\";\n styles.whiteSpace = \"pre-line\"\n styles.textTransform = \"none\"\n\n return (\n <div\n className={\n classNames(\"visual-builder__pseudo-editable-element\", visualBuilderStyles()[\"visual-builder__pseudo-editable-element\"])\n }\n data-testid=\"visual-builder__pseudo-editable-element\"\n style={styles}\n >\n {props.config.textContent}\n </div>\n );\n}\n\nexport default PseudoEditableFieldComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AACvB,OAAO,wBAAwB;AAC/B,OAAO,yBAAyB;AAEhC,SAAS,2BAA2B;AA2B5B;AApBR,SAAS,6BACL,OACW;AACX,QAAM,SAAS;AAAA,IACX,oBAAoB,MAAM,eAAe;AAAA,EAC7C;AAGA,QAAM,OAAO,MAAM,gBAAgB,sBAAsB;AAEzD,SAAO,WAAW;AAClB,SAAO,MAAM,GAAG,KAAK,MAAM,OAAO,OAAO;AACzC,SAAO,OAAO,GAAG,KAAK,OAAO,OAAO,OAAO;AAG3C,SAAO,SAAS;AAChB,SAAO,aAAa;AACpB,SAAO,gBAAgB;AAEvB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WACI,WAAW,2CAA2C,oBAAoB,EAAE,yCAAyC,CAAC;AAAA,MAE1H,eAAY;AAAA,MACZ,OAAO;AAAA,MAEN,gBAAM,OAAO;AAAA;AAAA,EAClB;AAER;AAEA,IAAO,8BAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/pseudoEditableField.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React from \"preact/compat\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { getPsuedoEditableElementStyles } from \"../utils/getPsuedoEditableStylesElement\";\n\ninterface PseudoEditableFieldProps {\n editableElement: HTMLElement;\n config: { textContent: string };\n}\n\nfunction PseudoEditableFieldComponent(\n props: PseudoEditableFieldProps\n): JSX.Element {\n const styles = getPsuedoEditableElementStyles(props.editableElement, true);\n\n return (\n <div\n className={classNames(\n \"visual-builder__pseudo-editable-element\",\n visualBuilderStyles()[\"visual-builder__pseudo-editable-element\"]\n )}\n data-testid=\"visual-builder__pseudo-editable-element\"\n style={styles}\n >\n {props.config.textContent}\n </div>\n );\n}\n\nexport default PseudoEditableFieldComponent;\n"],"mappings":";;;AAAA,OAAO,gBAAgB;AAEvB,SAAS,2BAA2B;AACpC,SAAS,sCAAsC;AAavC;AANR,SAAS,6BACL,OACW;AACX,QAAM,SAAS,+BAA+B,MAAM,iBAAiB,IAAI;AAEzE,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA,oBAAoB,EAAE,yCAAyC;AAAA,MACnE;AAAA,MACA,eAAY;AAAA,MACZ,OAAO;AAAA,MAEN,gBAAM,OAAO;AAAA;AAAA,EAClB;AAER;AAEA,IAAO,8BAAQ;","names":[]}
@@ -54,18 +54,29 @@ function addVariantFieldClass(variant_uid, highlightVariantFields) {
54
54
  }
55
55
  });
56
56
  }
57
- function removeVariantFieldClass() {
58
- const variantAndBaseFieldElements = document.querySelectorAll(
59
- ".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field"
60
- );
61
- variantAndBaseFieldElements.forEach((element) => {
62
- element.classList.remove(
63
- "visual-builder__disabled-variant-field",
64
- "visual-builder__variant-field",
65
- (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
66
- "visual-builder__base-field"
57
+ function removeVariantFieldClass(onlyHighlighted = false) {
58
+ if (onlyHighlighted) {
59
+ const variantElements = document.querySelectorAll(
60
+ `.${(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"]}`
67
61
  );
68
- });
62
+ variantElements.forEach((element) => {
63
+ element.classList.remove(
64
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"]
65
+ );
66
+ });
67
+ } else {
68
+ const variantAndBaseFieldElements = document.querySelectorAll(
69
+ ".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field"
70
+ );
71
+ variantAndBaseFieldElements.forEach((element) => {
72
+ element.classList.remove(
73
+ "visual-builder__disabled-variant-field",
74
+ "visual-builder__variant-field",
75
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__variant-field"],
76
+ "visual-builder__base-field"
77
+ );
78
+ });
79
+ }
69
80
  }
70
81
  function setAudienceMode(mode) {
71
82
  import__.VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;
@@ -107,8 +118,8 @@ function useVariantFieldsPostMessageEvent() {
107
118
  );
108
119
  import_visualBuilderPostMessage.default?.on(
109
120
  import_postMessage.VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,
110
- () => {
111
- removeVariantFieldClass();
121
+ (event) => {
122
+ removeVariantFieldClass(event?.data?.onlyHighlighted);
112
123
  }
113
124
  );
114
125
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n };\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\nfunction addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean\n): void {\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!dataCslp) return;\n\n if (dataCslp?.includes(variant_uid)) {\n highlightVariantFields &&\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n element.classList.add(\"visual-builder__variant-field\");\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nfunction removeVariantFieldClass(): void {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field\"\n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__base-field\"\n );\n });\n}\n\nfunction setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nfunction setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nfunction setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\n\nexport function useVariantFieldsPostMessageEvent(): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n setVariant(event.data.variant);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant,\n event.data.variant_data.highlightVariantFields\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n () => {\n removeVariantFieldClass();\n }\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAC9B,2BAAoC;AACpC,sCAAqC;AACrC,yBAA+C;AA2B/C,SAAS,qBACL,aACA,wBACI;AACJ,QAAM,WAAW,SAAS,iBAAiB,aAAa;AACxD,WAAS,QAAQ,CAAC,YAAY;AAC1B,UAAM,WAAW,QAAQ,aAAa,WAAW;AACjD,QAAI,CAAC,SAAU;AAEf,QAAI,UAAU,SAAS,WAAW,GAAG;AACjC,gCACI,QAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,MACzD;AACJ,cAAQ,UAAU,IAAI,+BAA+B;AAAA,IACzD,WAAW,CAAC,SAAS,WAAW,KAAK,GAAG;AACpC,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,OAAO;AACH,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,0BAAgC;AACrC,QAAM,8BAA8B,SAAS;AAAA,IACzC;AAAA,EACJ;AACA,8BAA4B,QAAQ,CAAC,YAAY;AAC7C,YAAQ,UAAU;AAAA,MACd;AAAA,MACA;AAAA,UACA,0CAAoB,EAAE,+BAA+B;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,gBAAgB,MAAqB;AAC1C,yBAAc,yBAAyB,MAAM,eAAe;AAChE;AACA,SAAS,WAAW,KAA0B;AAC1C,yBAAc,yBAAyB,MAAM,UAAU;AAC3D;AACA,SAAS,UAAU,QAAsB;AACrC,yBAAc,yBAAyB,MAAM,SAAS;AAC1D;AAEO,SAAS,mCAAyC;AACrD,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAwB;AACrB,iBAAW,MAAM,KAAK,OAAO;AAAA,IACjC;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAuB;AACpB,gBAAU,MAAM,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAyB;AACtB,sBAAgB,MAAM,KAAK,YAAY;AAAA,IAC3C;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAA8B;AAC3B,8BAAwB;AACxB;AAAA,QACI,MAAM,KAAK,aAAa;AAAA,QACxB,MAAM,KAAK,aAAa;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,MAAM;AACF,8BAAwB;AAAA,IAC5B;AAAA,EACJ;AACJ;","names":["visualBuilderPostMessage"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n };\n };\n}\ninterface RemoveVariantFieldsEvent {\n data: {\n onlyHighlighted?: boolean;\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\nfunction addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean\n): void {\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!dataCslp) return;\n\n if (dataCslp?.includes(variant_uid)) {\n highlightVariantFields &&\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n element.classList.add(\"visual-builder__variant-field\");\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nfunction removeVariantFieldClass(onlyHighlighted: boolean = false): void {\n if (onlyHighlighted) {\n const variantElements = document.querySelectorAll(\n `.${visualBuilderStyles()[\"visual-builder__variant-field\"]}`\n );\n variantElements.forEach((element) => {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n });\n } else {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field\"\n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__base-field\"\n );\n });\n }\n}\n\nfunction setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nfunction setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nfunction setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\n\nexport function useVariantFieldsPostMessageEvent(): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n setVariant(event.data.variant);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant,\n event.data.variant_data.highlightVariantFields\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAC9B,2BAAoC;AACpC,sCAAqC;AACrC,yBAA+C;AAgC/C,SAAS,qBACL,aACA,wBACI;AACJ,QAAM,WAAW,SAAS,iBAAiB,aAAa;AACxD,WAAS,QAAQ,CAAC,YAAY;AAC1B,UAAM,WAAW,QAAQ,aAAa,WAAW;AACjD,QAAI,CAAC,SAAU;AAEf,QAAI,UAAU,SAAS,WAAW,GAAG;AACjC,gCACI,QAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,MACzD;AACJ,cAAQ,UAAU,IAAI,+BAA+B;AAAA,IACzD,WAAW,CAAC,SAAS,WAAW,KAAK,GAAG;AACpC,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,OAAO;AACH,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,wBAAwB,kBAA2B,OAAa;AACrE,MAAI,iBAAiB;AACjB,UAAM,kBAAkB,SAAS;AAAA,MAC7B,QAAI,0CAAoB,EAAE,+BAA+B,CAAC;AAAA,IAC9D;AACA,oBAAgB,QAAQ,CAAC,YAAY;AACjC,cAAQ,UAAU;AAAA,YACd,0CAAoB,EAAE,+BAA+B;AAAA,MACzD;AAAA,IACJ,CAAC;AAAA,EACL,OAAO;AACH,UAAM,8BAA8B,SAAS;AAAA,MACzC;AAAA,IACJ;AACA,gCAA4B,QAAQ,CAAC,YAAY;AAC7C,cAAQ,UAAU;AAAA,QACd;AAAA,QACA;AAAA,YACA,0CAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAEA,SAAS,gBAAgB,MAAqB;AAC1C,yBAAc,yBAAyB,MAAM,eAAe;AAChE;AACA,SAAS,WAAW,KAA0B;AAC1C,yBAAc,yBAAyB,MAAM,UAAU;AAC3D;AACA,SAAS,UAAU,QAAsB;AACrC,yBAAc,yBAAyB,MAAM,SAAS;AAC1D;AAEO,SAAS,mCAAyC;AACrD,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAwB;AACrB,iBAAW,MAAM,KAAK,OAAO;AAAA,IACjC;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAuB;AACpB,gBAAU,MAAM,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAyB;AACtB,sBAAgB,MAAM,KAAK,YAAY;AAAA,IAC3C;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAA8B;AAC3B,8BAAwB;AACxB;AAAA,QACI,MAAM,KAAK,aAAa;AAAA,QACxB,MAAM,KAAK,aAAa;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACA,kCAAAA,SAA0B;AAAA,IACtB,kDAA+B;AAAA,IAC/B,CAAC,UAAoC;AACjC,8BAAwB,OAAO,MAAM,eAAe;AAAA,IACxD;AAAA,EACJ;AACJ;","names":["visualBuilderPostMessage"]}
@@ -22,18 +22,29 @@ function addVariantFieldClass(variant_uid, highlightVariantFields) {
22
22
  }
23
23
  });
24
24
  }
25
- function removeVariantFieldClass() {
26
- const variantAndBaseFieldElements = document.querySelectorAll(
27
- ".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field"
28
- );
29
- variantAndBaseFieldElements.forEach((element) => {
30
- element.classList.remove(
31
- "visual-builder__disabled-variant-field",
32
- "visual-builder__variant-field",
33
- visualBuilderStyles()["visual-builder__variant-field"],
34
- "visual-builder__base-field"
25
+ function removeVariantFieldClass(onlyHighlighted = false) {
26
+ if (onlyHighlighted) {
27
+ const variantElements = document.querySelectorAll(
28
+ `.${visualBuilderStyles()["visual-builder__variant-field"]}`
35
29
  );
36
- });
30
+ variantElements.forEach((element) => {
31
+ element.classList.remove(
32
+ visualBuilderStyles()["visual-builder__variant-field"]
33
+ );
34
+ });
35
+ } else {
36
+ const variantAndBaseFieldElements = document.querySelectorAll(
37
+ ".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field"
38
+ );
39
+ variantAndBaseFieldElements.forEach((element) => {
40
+ element.classList.remove(
41
+ "visual-builder__disabled-variant-field",
42
+ "visual-builder__variant-field",
43
+ visualBuilderStyles()["visual-builder__variant-field"],
44
+ "visual-builder__base-field"
45
+ );
46
+ });
47
+ }
37
48
  }
38
49
  function setAudienceMode(mode) {
39
50
  VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;
@@ -75,8 +86,8 @@ function useVariantFieldsPostMessageEvent() {
75
86
  );
76
87
  visualBuilderPostMessage?.on(
77
88
  VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,
78
- () => {
79
- removeVariantFieldClass();
89
+ (event) => {
90
+ removeVariantFieldClass(event?.data?.onlyHighlighted);
80
91
  }
81
92
  );
82
93
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n };\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\nfunction addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean\n): void {\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!dataCslp) return;\n\n if (dataCslp?.includes(variant_uid)) {\n highlightVariantFields &&\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n element.classList.add(\"visual-builder__variant-field\");\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nfunction removeVariantFieldClass(): void {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field\"\n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__base-field\"\n );\n });\n}\n\nfunction setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nfunction setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nfunction setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\n\nexport function useVariantFieldsPostMessageEvent(): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n setVariant(event.data.variant);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant,\n event.data.variant_data.highlightVariantFields\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n () => {\n removeVariantFieldClass();\n }\n );\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AA2B/C,SAAS,qBACL,aACA,wBACI;AACJ,QAAM,WAAW,SAAS,iBAAiB,aAAa;AACxD,WAAS,QAAQ,CAAC,YAAY;AAC1B,UAAM,WAAW,QAAQ,aAAa,WAAW;AACjD,QAAI,CAAC,SAAU;AAEf,QAAI,UAAU,SAAS,WAAW,GAAG;AACjC,gCACI,QAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,MACzD;AACJ,cAAQ,UAAU,IAAI,+BAA+B;AAAA,IACzD,WAAW,CAAC,SAAS,WAAW,KAAK,GAAG;AACpC,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,OAAO;AACH,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,0BAAgC;AACrC,QAAM,8BAA8B,SAAS;AAAA,IACzC;AAAA,EACJ;AACA,8BAA4B,QAAQ,CAAC,YAAY;AAC7C,YAAQ,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA,oBAAoB,EAAE,+BAA+B;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,gBAAgB,MAAqB;AAC1C,gBAAc,yBAAyB,MAAM,eAAe;AAChE;AACA,SAAS,WAAW,KAA0B;AAC1C,gBAAc,yBAAyB,MAAM,UAAU;AAC3D;AACA,SAAS,UAAU,QAAsB;AACrC,gBAAc,yBAAyB,MAAM,SAAS;AAC1D;AAEO,SAAS,mCAAyC;AACrD,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAwB;AACrB,iBAAW,MAAM,KAAK,OAAO;AAAA,IACjC;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAuB;AACpB,gBAAU,MAAM,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAyB;AACtB,sBAAgB,MAAM,KAAK,YAAY;AAAA,IAC3C;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAA8B;AAC3B,8BAAwB;AACxB;AAAA,QACI,MAAM,KAAK,aAAa;AAAA,QACxB,MAAM,KAAK,aAAa;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,MAAM;AACF,8BAAwB;AAAA,IAC5B;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\ninterface VariantFieldsEvent {\n data: {\n variant_data: {\n variant: string;\n highlightVariantFields: boolean;\n };\n };\n}\ninterface RemoveVariantFieldsEvent {\n data: {\n onlyHighlighted?: boolean;\n };\n}\n\ninterface AudienceEvent {\n data: {\n audienceMode: boolean;\n };\n}\ninterface VariantEvent {\n data: {\n variant: string | null;\n };\n}\n\ninterface LocaleEvent {\n data: {\n locale: string;\n };\n}\nfunction addVariantFieldClass(\n variant_uid: string,\n highlightVariantFields: boolean\n): void {\n const elements = document.querySelectorAll(`[data-cslp]`);\n elements.forEach((element) => {\n const dataCslp = element.getAttribute(\"data-cslp\");\n if (!dataCslp) return;\n\n if (dataCslp?.includes(variant_uid)) {\n highlightVariantFields &&\n element.classList.add(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n element.classList.add(\"visual-builder__variant-field\");\n } else if (!dataCslp.startsWith(\"v2:\")) {\n element.classList.add(\"visual-builder__base-field\");\n } else {\n element.classList.add(\"visual-builder__disabled-variant-field\");\n }\n });\n}\n\nfunction removeVariantFieldClass(onlyHighlighted: boolean = false): void {\n if (onlyHighlighted) {\n const variantElements = document.querySelectorAll(\n `.${visualBuilderStyles()[\"visual-builder__variant-field\"]}`\n );\n variantElements.forEach((element) => {\n element.classList.remove(\n visualBuilderStyles()[\"visual-builder__variant-field\"]\n );\n });\n } else {\n const variantAndBaseFieldElements = document.querySelectorAll(\n \".visual-builder__disabled-variant-field, .visual-builder__variant-field, .visual-builder__base-field\"\n );\n variantAndBaseFieldElements.forEach((element) => {\n element.classList.remove(\n \"visual-builder__disabled-variant-field\",\n \"visual-builder__variant-field\",\n visualBuilderStyles()[\"visual-builder__variant-field\"],\n \"visual-builder__base-field\"\n );\n });\n }\n}\n\nfunction setAudienceMode(mode: boolean): void {\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode = mode;\n}\nfunction setVariant(uid: string | null): void {\n VisualBuilder.VisualBuilderGlobalState.value.variant = uid;\n}\nfunction setLocale(locale: string): void {\n VisualBuilder.VisualBuilderGlobalState.value.locale = locale;\n}\n\nexport function useVariantFieldsPostMessageEvent(): void {\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_VARIANT_ID,\n (event: VariantEvent) => {\n setVariant(event.data.variant);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_LOCALE,\n (event: LocaleEvent) => {\n setLocale(event.data.locale);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SET_AUDIENCE_MODE,\n (event: AudienceEvent) => {\n setAudienceMode(event.data.audienceMode);\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.SHOW_VARIANT_FIELDS,\n (event: VariantFieldsEvent) => {\n removeVariantFieldClass();\n addVariantFieldClass(\n event.data.variant_data.variant,\n event.data.variant_data.highlightVariantFields\n );\n }\n );\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.REMOVE_VARIANT_FIELDS,\n (event: RemoveVariantFieldsEvent) => {\n removeVariantFieldClass(event?.data?.onlyHighlighted);\n }\n );\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AAgC/C,SAAS,qBACL,aACA,wBACI;AACJ,QAAM,WAAW,SAAS,iBAAiB,aAAa;AACxD,WAAS,QAAQ,CAAC,YAAY;AAC1B,UAAM,WAAW,QAAQ,aAAa,WAAW;AACjD,QAAI,CAAC,SAAU;AAEf,QAAI,UAAU,SAAS,WAAW,GAAG;AACjC,gCACI,QAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,MACzD;AACJ,cAAQ,UAAU,IAAI,+BAA+B;AAAA,IACzD,WAAW,CAAC,SAAS,WAAW,KAAK,GAAG;AACpC,cAAQ,UAAU,IAAI,4BAA4B;AAAA,IACtD,OAAO;AACH,cAAQ,UAAU,IAAI,wCAAwC;AAAA,IAClE;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,wBAAwB,kBAA2B,OAAa;AACrE,MAAI,iBAAiB;AACjB,UAAM,kBAAkB,SAAS;AAAA,MAC7B,IAAI,oBAAoB,EAAE,+BAA+B,CAAC;AAAA,IAC9D;AACA,oBAAgB,QAAQ,CAAC,YAAY;AACjC,cAAQ,UAAU;AAAA,QACd,oBAAoB,EAAE,+BAA+B;AAAA,MACzD;AAAA,IACJ,CAAC;AAAA,EACL,OAAO;AACH,UAAM,8BAA8B,SAAS;AAAA,MACzC;AAAA,IACJ;AACA,gCAA4B,QAAQ,CAAC,YAAY;AAC7C,cAAQ,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,oBAAoB,EAAE,+BAA+B;AAAA,QACrD;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAEA,SAAS,gBAAgB,MAAqB;AAC1C,gBAAc,yBAAyB,MAAM,eAAe;AAChE;AACA,SAAS,WAAW,KAA0B;AAC1C,gBAAc,yBAAyB,MAAM,UAAU;AAC3D;AACA,SAAS,UAAU,QAAsB;AACrC,gBAAc,yBAAyB,MAAM,SAAS;AAC1D;AAEO,SAAS,mCAAyC;AACrD,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAwB;AACrB,iBAAW,MAAM,KAAK,OAAO;AAAA,IACjC;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAuB;AACpB,gBAAU,MAAM,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAyB;AACtB,sBAAgB,MAAM,KAAK,YAAY;AAAA,IAC3C;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAA8B;AAC3B,8BAAwB;AACxB;AAAA,QACI,MAAM,KAAK,aAAa;AAAA,QACxB,MAAM,KAAK,aAAa;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB,+BAA+B;AAAA,IAC/B,CAAC,UAAoC;AACjC,8BAAwB,OAAO,MAAM,eAAe;AAAA,IACxD;AAAA,EACJ;AACJ;","names":[]}
@@ -40,11 +40,11 @@ var import_FieldToolbar = __toESM(require("../components/FieldToolbar.cjs"), 1);
40
40
  var import_preact = require("preact");
41
41
  var import_fieldLabelWrapper = __toESM(require("../components/fieldLabelWrapper.cjs"), 1);
42
42
  var import_jsx_runtime = require("preact/jsx-runtime");
43
- function appendFocusedToolbar(eventDetails, focusedToolbarElement) {
43
+ function appendFocusedToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
44
44
  appendFieldPathDropdown(eventDetails, focusedToolbarElement);
45
- appendFieldToolbar(eventDetails, focusedToolbarElement);
45
+ appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);
46
46
  }
47
- function appendFieldToolbar(eventDetails, focusedToolbarElement) {
47
+ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
48
48
  if (focusedToolbarElement.querySelector(
49
49
  ".visual-builder__focused-toolbar__multiple-field-toolbar"
50
50
  ))
@@ -54,7 +54,8 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement) {
54
54
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
55
55
  import_FieldToolbar.default,
56
56
  {
57
- eventDetails
57
+ eventDetails,
58
+ hideOverlay
58
59
  }
59
60
  ),
60
61
  wrapper
@@ -62,7 +63,7 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement) {
62
63
  focusedToolbarElement.append(wrapper);
63
64
  }
64
65
  function appendFieldPathDropdown(eventDetails, focusedToolbarElement) {
65
- if (document.querySelector("visual-builder__focused-toolbar__field-label-wrapper"))
66
+ if (document.querySelector(".visual-builder__focused-toolbar__field-label-wrapper"))
66
67
  return;
67
68
  const { editableElement: targetElement, fieldMetadata } = eventDetails;
68
69
  const targetElementDimension = targetElement.getBoundingClientRect();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/generators/generateToolbar.tsx"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n DATA_CSLP_ATTR_SELECTOR,\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"../utils/constants\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\n\nimport FieldToolbarComponent from \"../components/FieldToolbar\";\nimport { render } from \"preact\";\nimport FieldLabelWrapperComponent from \"../components/fieldLabelWrapper\";\n\nexport function appendFocusedToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement);\n appendFieldToolbar(eventDetails, focusedToolbarElement);\n}\n\nexport function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if (\n focusedToolbarElement.querySelector(\n \".visual-builder__focused-toolbar__multiple-field-toolbar\"\n )\n )\n return;\n const wrapper = document.createDocumentFragment();\n render(\n <FieldToolbarComponent\n eventDetails={eventDetails}\n />,\n wrapper\n );\n\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if(document.querySelector(\"visual-builder__focused-toolbar__field-label-wrapper\"))\n return;\n const { editableElement: targetElement, fieldMetadata } = eventDetails;\n const targetElementDimension = targetElement.getBoundingClientRect();\n\n const distanceFromTop =\n targetElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n targetElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop + targetElementDimension.height + TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n targetElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - targetElementDimension.left;\n\n if (targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER) {\n // Overflow / Cutoff on right edge\n focusedToolbarElement.style.justifyContent = \"flex-end\";\n focusedToolbarElement.style.left = `${\n targetElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else {\n focusedToolbarElement.style.justifyContent = \"flex-start\"; // default\n focusedToolbarElement.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n focusedToolbarElement.style.top = `${adjustedDistanceFromTop}px`;\n\n const parentPaths = collectParentCSLPPaths(targetElement, 2);\n\n const wrapper = document.createDocumentFragment();\n render(\n <FieldLabelWrapperComponent\n fieldMetadata={fieldMetadata}\n eventDetails={eventDetails}\n parentPaths={parentPaths}\n getParentEditableElement={(cslp: string) => {\n const parentElement = targetElement.closest(\n `[${DATA_CSLP_ATTR_SELECTOR}=\"${cslp}\"]`\n ) as HTMLElement | null;\n return parentElement;\n }}\n />,\n wrapper\n );\n\n focusedToolbarElement.appendChild(wrapper);\n}\n\nfunction collectParentCSLPPaths(\n targetElement: Element,\n count: number\n): Array<string> {\n const cslpPaths: Array<string> = [];\n let currentElement = targetElement.parentElement;\n\n while (count > 0 || currentElement === window.document.body) {\n if (!currentElement) {\n return cslpPaths;\n }\n\n if (currentElement.hasAttribute(DATA_CSLP_ATTR_SELECTOR)) {\n cslpPaths.push(\n currentElement.getAttribute(DATA_CSLP_ATTR_SELECTOR) as string\n );\n count--;\n }\n currentElement = currentElement.parentElement;\n }\n\n return cslpPaths;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAMO;AAIP,0BAAkC;AAClC,oBAAuB;AACvB,+BAAuC;AAsB/B;AApBD,SAAS,qBACZ,cACA,uBACI;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D,qBAAmB,cAAc,qBAAqB;AAC1D;AAEO,SAAS,mBACZ,cACA,uBACI;AACJ,MACI,sBAAsB;AAAA,IAClB;AAAA,EACJ;AAEA;AACJ,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,oBAAAA;AAAA,MAAA;AAAA,QACG;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MAAG,SAAS,cAAc,sDAAsD;AAC5E;AACJ,QAAM,EAAE,iBAAiB,eAAe,cAAc,IAAI;AAC1D,QAAM,yBAAyB,cAAc,sBAAsB;AAEnE,QAAM,kBACF,uBAAuB,MAAM,OAAO,UAAU;AAElD,QAAM,0BACF,uBAAuB,MAAM,OAAO,UAAU,mCACxC,kBAAkB,uBAAuB,SAAS,mCAClD;AAEV,QAAM,mBACF,uBAAuB,OAAO;AAClC,QAAM,2BAA2B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,+BACF,OAAO,UAAU,OAAO,aAAa,uBAAuB;AAEhE,MAAI,+BAA+B,oCAAmB;AAElD,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAC/B,uBAAuB,QAAQ,iDACnC;AAAA,EACJ,OAAO;AACH,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAAG,wBAAwB;AAAA,EAClE;AAEA,wBAAsB,MAAM,MAAM,GAAG,uBAAuB;AAE5D,QAAM,cAAc,uBAAuB,eAAe,CAAC;AAE3D,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,yBAAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,0BAA0B,CAAC,SAAiB;AACxC,gBAAM,gBAAgB,cAAc;AAAA,YAChC,IAAI,wCAAuB,KAAK,IAAI;AAAA,UACxC;AACA,iBAAO;AAAA,QACX;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,YAAY,OAAO;AAC7C;AAEA,SAAS,uBACL,eACA,OACa;AACb,QAAM,YAA2B,CAAC;AAClC,MAAI,iBAAiB,cAAc;AAEnC,SAAO,QAAQ,KAAK,mBAAmB,OAAO,SAAS,MAAM;AACzD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,aAAa,wCAAuB,GAAG;AACtD,gBAAU;AAAA,QACN,eAAe,aAAa,wCAAuB;AAAA,MACvD;AACA;AAAA,IACJ;AACA,qBAAiB,eAAe;AAAA,EACpC;AAEA,SAAO;AACX;","names":["FieldToolbarComponent","FieldLabelWrapperComponent"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/generators/generateToolbar.tsx"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n DATA_CSLP_ATTR_SELECTOR,\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"../utils/constants\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\n\nimport FieldToolbarComponent from \"../components/FieldToolbar\";\nimport { render } from \"preact\";\nimport FieldLabelWrapperComponent from \"../components/fieldLabelWrapper\";\n\nexport function appendFocusedToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement);\n appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);\n}\n\nexport function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void\n): void {\n if (\n focusedToolbarElement.querySelector(\n \".visual-builder__focused-toolbar__multiple-field-toolbar\"\n )\n )\n return;\n const wrapper = document.createDocumentFragment();\n render(\n <FieldToolbarComponent\n eventDetails={eventDetails}\n hideOverlay={hideOverlay}\n />,\n wrapper\n );\n\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if(document.querySelector(\".visual-builder__focused-toolbar__field-label-wrapper\"))\n return;\n const { editableElement: targetElement, fieldMetadata } = eventDetails;\n const targetElementDimension = targetElement.getBoundingClientRect();\n\n const distanceFromTop =\n targetElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n targetElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop + targetElementDimension.height + TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n targetElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - targetElementDimension.left;\n\n if (targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER) {\n // Overflow / Cutoff on right edge\n focusedToolbarElement.style.justifyContent = \"flex-end\";\n focusedToolbarElement.style.left = `${\n targetElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else {\n focusedToolbarElement.style.justifyContent = \"flex-start\"; // default\n focusedToolbarElement.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n focusedToolbarElement.style.top = `${adjustedDistanceFromTop}px`;\n\n const parentPaths = collectParentCSLPPaths(targetElement, 2);\n\n const wrapper = document.createDocumentFragment();\n render(\n <FieldLabelWrapperComponent\n fieldMetadata={fieldMetadata}\n eventDetails={eventDetails}\n parentPaths={parentPaths}\n getParentEditableElement={(cslp: string) => {\n const parentElement = targetElement.closest(\n `[${DATA_CSLP_ATTR_SELECTOR}=\"${cslp}\"]`\n ) as HTMLElement | null;\n return parentElement;\n }}\n />,\n wrapper\n );\n\n focusedToolbarElement.appendChild(wrapper);\n}\n\nfunction collectParentCSLPPaths(\n targetElement: Element,\n count: number\n): Array<string> {\n const cslpPaths: Array<string> = [];\n let currentElement = targetElement.parentElement;\n\n while (count > 0 || currentElement === window.document.body) {\n if (!currentElement) {\n return cslpPaths;\n }\n\n if (currentElement.hasAttribute(DATA_CSLP_ATTR_SELECTOR)) {\n cslpPaths.push(\n currentElement.getAttribute(DATA_CSLP_ATTR_SELECTOR) as string\n );\n count--;\n }\n currentElement = currentElement.parentElement;\n }\n\n return cslpPaths;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAMO;AAIP,0BAAkC;AAClC,oBAAuB;AACvB,+BAAuC;AAwB/B;AAtBD,SAAS,qBACZ,cACA,uBACA,aACI;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D,qBAAmB,cAAc,uBAAuB,WAAW;AACvE;AAEO,SAAS,mBACZ,cACA,uBACA,aACI;AACJ,MACI,sBAAsB;AAAA,IAClB;AAAA,EACJ;AAEA;AACJ,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,oBAAAA;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MAAG,SAAS,cAAc,uDAAuD;AAC7E;AACJ,QAAM,EAAE,iBAAiB,eAAe,cAAc,IAAI;AAC1D,QAAM,yBAAyB,cAAc,sBAAsB;AAEnE,QAAM,kBACF,uBAAuB,MAAM,OAAO,UAAU;AAElD,QAAM,0BACF,uBAAuB,MAAM,OAAO,UAAU,mCACxC,kBAAkB,uBAAuB,SAAS,mCAClD;AAEV,QAAM,mBACF,uBAAuB,OAAO;AAClC,QAAM,2BAA2B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,+BACF,OAAO,UAAU,OAAO,aAAa,uBAAuB;AAEhE,MAAI,+BAA+B,oCAAmB;AAElD,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAC/B,uBAAuB,QAAQ,iDACnC;AAAA,EACJ,OAAO;AACH,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAAG,wBAAwB;AAAA,EAClE;AAEA,wBAAsB,MAAM,MAAM,GAAG,uBAAuB;AAE5D,QAAM,cAAc,uBAAuB,eAAe,CAAC;AAE3D,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,yBAAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,0BAA0B,CAAC,SAAiB;AACxC,gBAAM,gBAAgB,cAAc;AAAA,YAChC,IAAI,wCAAuB,KAAK,IAAI;AAAA,UACxC;AACA,iBAAO;AAAA,QACX;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,YAAY,OAAO;AAC7C;AAEA,SAAS,uBACL,eACA,OACa;AACb,QAAM,YAA2B,CAAC;AAClC,MAAI,iBAAiB,cAAc;AAEnC,SAAO,QAAQ,KAAK,mBAAmB,OAAO,SAAS,MAAM;AACzD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,aAAa,wCAAuB,GAAG;AACtD,gBAAU;AAAA,QACN,eAAe,aAAa,wCAAuB;AAAA,MACvD;AACA;AAAA,IACJ;AACA,qBAAiB,eAAe;AAAA,EACpC;AAEA,SAAO;AACX;","names":["FieldToolbarComponent","FieldLabelWrapperComponent"]}
@@ -1,8 +1,8 @@
1
1
  import { VisualBuilderCslpEventDetails } from '../types/visualBuilder.types.cjs';
2
2
  import '../../cslp/types/cslp.types.cjs';
3
3
 
4
- declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
5
- declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
4
+ declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
5
+ declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
6
6
  declare function appendFieldPathDropdown(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
7
7
 
8
8
  export { appendFieldPathDropdown, appendFieldToolbar, appendFocusedToolbar };
@@ -1,8 +1,8 @@
1
1
  import { VisualBuilderCslpEventDetails } from '../types/visualBuilder.types.js';
2
2
  import '../../cslp/types/cslp.types.js';
3
3
 
4
- declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
5
- declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
4
+ declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
5
+ declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
6
6
  declare function appendFieldPathDropdown(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
7
7
 
8
8
  export { appendFieldPathDropdown, appendFieldToolbar, appendFocusedToolbar };
@@ -12,11 +12,11 @@ import FieldToolbarComponent from "../components/FieldToolbar.js";
12
12
  import { render } from "preact";
13
13
  import FieldLabelWrapperComponent from "../components/fieldLabelWrapper.js";
14
14
  import { jsx } from "preact/jsx-runtime";
15
- function appendFocusedToolbar(eventDetails, focusedToolbarElement) {
15
+ function appendFocusedToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
16
16
  appendFieldPathDropdown(eventDetails, focusedToolbarElement);
17
- appendFieldToolbar(eventDetails, focusedToolbarElement);
17
+ appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);
18
18
  }
19
- function appendFieldToolbar(eventDetails, focusedToolbarElement) {
19
+ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
20
20
  if (focusedToolbarElement.querySelector(
21
21
  ".visual-builder__focused-toolbar__multiple-field-toolbar"
22
22
  ))
@@ -26,7 +26,8 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement) {
26
26
  /* @__PURE__ */ jsx(
27
27
  FieldToolbarComponent,
28
28
  {
29
- eventDetails
29
+ eventDetails,
30
+ hideOverlay
30
31
  }
31
32
  ),
32
33
  wrapper
@@ -34,7 +35,7 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement) {
34
35
  focusedToolbarElement.append(wrapper);
35
36
  }
36
37
  function appendFieldPathDropdown(eventDetails, focusedToolbarElement) {
37
- if (document.querySelector("visual-builder__focused-toolbar__field-label-wrapper"))
38
+ if (document.querySelector(".visual-builder__focused-toolbar__field-label-wrapper"))
38
39
  return;
39
40
  const { editableElement: targetElement, fieldMetadata } = eventDetails;
40
41
  const targetElementDimension = targetElement.getBoundingClientRect();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/generators/generateToolbar.tsx"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n DATA_CSLP_ATTR_SELECTOR,\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"../utils/constants\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\n\nimport FieldToolbarComponent from \"../components/FieldToolbar\";\nimport { render } from \"preact\";\nimport FieldLabelWrapperComponent from \"../components/fieldLabelWrapper\";\n\nexport function appendFocusedToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement);\n appendFieldToolbar(eventDetails, focusedToolbarElement);\n}\n\nexport function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if (\n focusedToolbarElement.querySelector(\n \".visual-builder__focused-toolbar__multiple-field-toolbar\"\n )\n )\n return;\n const wrapper = document.createDocumentFragment();\n render(\n <FieldToolbarComponent\n eventDetails={eventDetails}\n />,\n wrapper\n );\n\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if(document.querySelector(\"visual-builder__focused-toolbar__field-label-wrapper\"))\n return;\n const { editableElement: targetElement, fieldMetadata } = eventDetails;\n const targetElementDimension = targetElement.getBoundingClientRect();\n\n const distanceFromTop =\n targetElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n targetElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop + targetElementDimension.height + TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n targetElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - targetElementDimension.left;\n\n if (targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER) {\n // Overflow / Cutoff on right edge\n focusedToolbarElement.style.justifyContent = \"flex-end\";\n focusedToolbarElement.style.left = `${\n targetElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else {\n focusedToolbarElement.style.justifyContent = \"flex-start\"; // default\n focusedToolbarElement.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n focusedToolbarElement.style.top = `${adjustedDistanceFromTop}px`;\n\n const parentPaths = collectParentCSLPPaths(targetElement, 2);\n\n const wrapper = document.createDocumentFragment();\n render(\n <FieldLabelWrapperComponent\n fieldMetadata={fieldMetadata}\n eventDetails={eventDetails}\n parentPaths={parentPaths}\n getParentEditableElement={(cslp: string) => {\n const parentElement = targetElement.closest(\n `[${DATA_CSLP_ATTR_SELECTOR}=\"${cslp}\"]`\n ) as HTMLElement | null;\n return parentElement;\n }}\n />,\n wrapper\n );\n\n focusedToolbarElement.appendChild(wrapper);\n}\n\nfunction collectParentCSLPPaths(\n targetElement: Element,\n count: number\n): Array<string> {\n const cslpPaths: Array<string> = [];\n let currentElement = targetElement.parentElement;\n\n while (count > 0 || currentElement === window.document.body) {\n if (!currentElement) {\n return cslpPaths;\n }\n\n if (currentElement.hasAttribute(DATA_CSLP_ATTR_SELECTOR)) {\n cslpPaths.push(\n currentElement.getAttribute(DATA_CSLP_ATTR_SELECTOR) as string\n );\n count--;\n }\n currentElement = currentElement.parentElement;\n }\n\n return cslpPaths;\n}\n"],"mappings":";;;AACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAIP,OAAO,2BAA2B;AAClC,SAAS,cAAc;AACvB,OAAO,gCAAgC;AAsB/B;AApBD,SAAS,qBACZ,cACA,uBACI;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D,qBAAmB,cAAc,qBAAqB;AAC1D;AAEO,SAAS,mBACZ,cACA,uBACI;AACJ,MACI,sBAAsB;AAAA,IAClB;AAAA,EACJ;AAEA;AACJ,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MAAG,SAAS,cAAc,sDAAsD;AAC5E;AACJ,QAAM,EAAE,iBAAiB,eAAe,cAAc,IAAI;AAC1D,QAAM,yBAAyB,cAAc,sBAAsB;AAEnE,QAAM,kBACF,uBAAuB,MAAM,OAAO,UAAU;AAElD,QAAM,0BACF,uBAAuB,MAAM,OAAO,UAAU,kBACxC,kBAAkB,uBAAuB,SAAS,kBAClD;AAEV,QAAM,mBACF,uBAAuB,OAAO;AAClC,QAAM,2BAA2B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,+BACF,OAAO,UAAU,OAAO,aAAa,uBAAuB;AAEhE,MAAI,+BAA+B,mBAAmB;AAElD,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAC/B,uBAAuB,QAAQ,gCACnC;AAAA,EACJ,OAAO;AACH,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAAG,wBAAwB;AAAA,EAClE;AAEA,wBAAsB,MAAM,MAAM,GAAG,uBAAuB;AAE5D,QAAM,cAAc,uBAAuB,eAAe,CAAC;AAE3D,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,0BAA0B,CAAC,SAAiB;AACxC,gBAAM,gBAAgB,cAAc;AAAA,YAChC,IAAI,uBAAuB,KAAK,IAAI;AAAA,UACxC;AACA,iBAAO;AAAA,QACX;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,YAAY,OAAO;AAC7C;AAEA,SAAS,uBACL,eACA,OACa;AACb,QAAM,YAA2B,CAAC;AAClC,MAAI,iBAAiB,cAAc;AAEnC,SAAO,QAAQ,KAAK,mBAAmB,OAAO,SAAS,MAAM;AACzD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,aAAa,uBAAuB,GAAG;AACtD,gBAAU;AAAA,QACN,eAAe,aAAa,uBAAuB;AAAA,MACvD;AACA;AAAA,IACJ;AACA,qBAAiB,eAAe;AAAA,EACpC;AAEA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/generators/generateToolbar.tsx"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n DATA_CSLP_ATTR_SELECTOR,\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"../utils/constants\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\n\nimport FieldToolbarComponent from \"../components/FieldToolbar\";\nimport { render } from \"preact\";\nimport FieldLabelWrapperComponent from \"../components/fieldLabelWrapper\";\n\nexport function appendFocusedToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement);\n appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);\n}\n\nexport function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void\n): void {\n if (\n focusedToolbarElement.querySelector(\n \".visual-builder__focused-toolbar__multiple-field-toolbar\"\n )\n )\n return;\n const wrapper = document.createDocumentFragment();\n render(\n <FieldToolbarComponent\n eventDetails={eventDetails}\n hideOverlay={hideOverlay}\n />,\n wrapper\n );\n\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if(document.querySelector(\".visual-builder__focused-toolbar__field-label-wrapper\"))\n return;\n const { editableElement: targetElement, fieldMetadata } = eventDetails;\n const targetElementDimension = targetElement.getBoundingClientRect();\n\n const distanceFromTop =\n targetElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n targetElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop + targetElementDimension.height + TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n targetElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - targetElementDimension.left;\n\n if (targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER) {\n // Overflow / Cutoff on right edge\n focusedToolbarElement.style.justifyContent = \"flex-end\";\n focusedToolbarElement.style.left = `${\n targetElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else {\n focusedToolbarElement.style.justifyContent = \"flex-start\"; // default\n focusedToolbarElement.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n focusedToolbarElement.style.top = `${adjustedDistanceFromTop}px`;\n\n const parentPaths = collectParentCSLPPaths(targetElement, 2);\n\n const wrapper = document.createDocumentFragment();\n render(\n <FieldLabelWrapperComponent\n fieldMetadata={fieldMetadata}\n eventDetails={eventDetails}\n parentPaths={parentPaths}\n getParentEditableElement={(cslp: string) => {\n const parentElement = targetElement.closest(\n `[${DATA_CSLP_ATTR_SELECTOR}=\"${cslp}\"]`\n ) as HTMLElement | null;\n return parentElement;\n }}\n />,\n wrapper\n );\n\n focusedToolbarElement.appendChild(wrapper);\n}\n\nfunction collectParentCSLPPaths(\n targetElement: Element,\n count: number\n): Array<string> {\n const cslpPaths: Array<string> = [];\n let currentElement = targetElement.parentElement;\n\n while (count > 0 || currentElement === window.document.body) {\n if (!currentElement) {\n return cslpPaths;\n }\n\n if (currentElement.hasAttribute(DATA_CSLP_ATTR_SELECTOR)) {\n cslpPaths.push(\n currentElement.getAttribute(DATA_CSLP_ATTR_SELECTOR) as string\n );\n count--;\n }\n currentElement = currentElement.parentElement;\n }\n\n return cslpPaths;\n}\n"],"mappings":";;;AACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAIP,OAAO,2BAA2B;AAClC,SAAS,cAAc;AACvB,OAAO,gCAAgC;AAwB/B;AAtBD,SAAS,qBACZ,cACA,uBACA,aACI;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D,qBAAmB,cAAc,uBAAuB,WAAW;AACvE;AAEO,SAAS,mBACZ,cACA,uBACA,aACI;AACJ,MACI,sBAAsB;AAAA,IAClB;AAAA,EACJ;AAEA;AACJ,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MAAG,SAAS,cAAc,uDAAuD;AAC7E;AACJ,QAAM,EAAE,iBAAiB,eAAe,cAAc,IAAI;AAC1D,QAAM,yBAAyB,cAAc,sBAAsB;AAEnE,QAAM,kBACF,uBAAuB,MAAM,OAAO,UAAU;AAElD,QAAM,0BACF,uBAAuB,MAAM,OAAO,UAAU,kBACxC,kBAAkB,uBAAuB,SAAS,kBAClD;AAEV,QAAM,mBACF,uBAAuB,OAAO;AAClC,QAAM,2BAA2B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,+BACF,OAAO,UAAU,OAAO,aAAa,uBAAuB;AAEhE,MAAI,+BAA+B,mBAAmB;AAElD,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAC/B,uBAAuB,QAAQ,gCACnC;AAAA,EACJ,OAAO;AACH,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAAG,wBAAwB;AAAA,EAClE;AAEA,wBAAsB,MAAM,MAAM,GAAG,uBAAuB;AAE5D,QAAM,cAAc,uBAAuB,eAAe,CAAC;AAE3D,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,0BAA0B,CAAC,SAAiB;AACxC,gBAAM,gBAAgB,cAAc;AAAA,YAChC,IAAI,uBAAuB,KAAK,IAAI;AAAA,UACxC;AACA,iBAAO;AAAA,QACX;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,YAAY,OAAO;AAC7C;AAEA,SAAS,uBACL,eACA,OACa;AACb,QAAM,YAA2B,CAAC;AAClC,MAAI,iBAAiB,cAAc;AAEnC,SAAO,QAAQ,KAAK,mBAAmB,OAAO,SAAS,MAAM;AACzD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,aAAa,uBAAuB,GAAG;AACtD,gBAAU;AAAA,QACN,eAAe,aAAa,uBAAuB;AAAA,MACvD;AACA;AAAA,IACJ;AACA,qBAAiB,eAAe;AAAA,EACpC;AAEA,SAAO;AACX;","names":[]}
@@ -129,7 +129,8 @@ var _VisualBuilder = class _VisualBuilder {
129
129
  (0, import_updateFocussedState.updateFocussedStateOnMutation)(
130
130
  this.overlayWrapper,
131
131
  this.focusedToolbar,
132
- this.visualBuilderContainer
132
+ this.visualBuilderContainer,
133
+ this.resizeObserver
133
134
  );
134
135
  const emptyBlockParents = Array.from(
135
136
  document.querySelectorAll(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/visualBuilder/index.ts"],"sourcesContent":["import { Signal, signal } from \"@preact/signals\";\n\nimport { inIframe } from \"../common/inIframe\";\nimport Config from \"../configManager/configManager\";\nimport {\n useHistoryPostMessageEvent,\n useOnEntryUpdatePostMessageEvent,\n} from \"../livePreview/eventManager/postMessageEvent.hooks\";\nimport {\n ILivePreviewModeConfig,\n ILivePreviewWindowType,\n IVisualBuilderInitEvent,\n} from \"../types/types\";\nimport { generateStartEditingButton } from \"./generators/generateStartEditingButton\";\n\nimport { addFocusOverlay } from \"./generators/generateOverlay\";\nimport { getEntryIdentifiersInCurrentPage } from \"./utils/getEntryIdentifiersInCurrentPage\";\nimport visualBuilderPostMessage from \"./utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./utils/types/postMessage.types\";\n\nimport { setup } from \"goober\";\nimport { debounce, isEqual } from \"lodash-es\";\nimport { h } from \"preact\";\nimport { extractDetailsFromCslp } from \"../cslp\";\nimport initUI from \"./components\";\nimport { useDraftFieldsPostMessageEvent } from \"./eventManager/useDraftFieldsPostMessageEvent\";\nimport { useHideFocusOverlayPostMessageEvent } from \"./eventManager/useHideFocusOverlayPostMessageEvent\";\nimport { useScrollToField } from \"./eventManager/useScrollToField\";\nimport { useVariantFieldsPostMessageEvent } from \"./eventManager/useVariantsPostMessageEvent\";\nimport {\n generateEmptyBlocks,\n removeEmptyBlocks,\n} from \"./generators/generateEmptyBlock\";\nimport { addEventListeners, removeEventListeners } from \"./listeners\";\nimport { addKeyboardShortcuts } from \"./listeners/keyboardShortcuts\";\nimport { FieldSchemaMap } from \"./utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"./utils/isFieldDisabled\";\nimport {\n updateFocussedState,\n updateFocussedStateOnMutation,\n} from \"./utils/updateFocussedState\";\nimport { useHighlightCommentIcon } from \"./eventManager/useHighlightCommentIcon\";\nimport { updateHighlightedCommentIconPosition } from \"./generators/generateHighlightedComment\";\nimport { useRecalculateVariantDataCSLPValues } from \"./eventManager/useRecalculateVariantDataCSLPValues\";\n\ninterface VisualBuilderGlobalStateImpl {\n previousSelectedEditableDOM: HTMLElement | Element | null;\n previousHoveredTargetDOM: Element | null;\n previousEmptyBlockParents: Element[] | [];\n focusFieldValue: string | null;\n audienceMode: boolean;\n locale: string;\n variant: string | null;\n}\n\nexport class VisualBuilder {\n private customCursor: HTMLDivElement | null = null;\n private overlayWrapper: HTMLDivElement | null = null;\n private visualBuilderContainer: HTMLDivElement | null = null;\n private focusedToolbar: HTMLDivElement | null = null;\n\n static VisualBuilderGlobalState: Signal<VisualBuilderGlobalStateImpl> =\n signal({\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n audienceMode: false,\n locale: Config.get().stackDetails.masterLocale || \"en-us\",\n variant: null,\n });\n\n private handlePositionChange(editableElement: HTMLElement) {\n updateFocussedState({\n editableElement,\n visualBuilderContainer: this.visualBuilderContainer,\n overlayWrapper: this.overlayWrapper,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n }\n\n private scrollEventHandler = () => {\n updateHighlightedCommentIconPosition(); // Update icons position\n };\n\n private resizeEventHandler = () => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n updateHighlightedCommentIconPosition();\n if (previousSelectedEditableDOM) {\n this.handlePositionChange(\n previousSelectedEditableDOM as HTMLElement\n );\n }\n };\n\n private resizeObserver = new ResizeObserver(([entry]) => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!this.overlayWrapper || !previousSelectedEditableDOM) {\n return;\n }\n\n // if previous selected editable element is not same as the current\n // target and the target is also not psuedo-editable then return\n if (\n !entry.target.isSameNode(previousSelectedEditableDOM) &&\n !entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n )\n ) {\n return;\n }\n\n const isPsuedoEditableElement = entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n );\n\n // the \"actual\" editable element when the current target is psuedo-editable\n // is the previous selected editable element instead of the closest data-cslp element\n // (cant use closest because the psuedo editable is absolute positioned)\n // (Note - why do we even need the closest? we do an early exit if entry.target\n // is not the previous selected editable element, needs more investigation)\n const editableElement = (\n isPsuedoEditableElement\n ? previousSelectedEditableDOM\n : entry.target.closest(\"[data-cslp]\")\n ) as HTMLElement | null;\n\n if (isPsuedoEditableElement) {\n // if the current target is psuedo-editable, then the resizing occurred by typing\n // into the psuedo editable, simply update the focus overlay\n addFocusOverlay(entry.target, this.overlayWrapper);\n\n // TODO check if we can now resize the actual editable element\n // when psuedo editable element is resized, avoid infinite loops\n } else if (editableElement) {\n this.handlePositionChange(editableElement);\n }\n\n // update the overlay if field is disabled\n const cslpData =\n editableElement && editableElement.getAttribute(\"data-cslp\");\n\n if (!editableElement || !cslpData) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n ).then((fieldSchema) => {\n if (!fieldSchema) {\n return;\n }\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement,\n fieldMetadata,\n });\n if (isDisabled) {\n addFocusOverlay(\n editableElement,\n this.overlayWrapper as HTMLDivElement,\n isDisabled\n );\n }\n });\n });\n\n private mutationObserver = new MutationObserver(\n debounce(\n async () => {\n updateFocussedStateOnMutation(\n this.overlayWrapper,\n this.focusedToolbar,\n this.visualBuilderContainer\n );\n const emptyBlockParents = Array.from(\n document.querySelectorAll(\n \".visual-builder__empty-block-parent\"\n )\n );\n\n const previousEmptyBlockParents = VisualBuilder\n .VisualBuilderGlobalState.value\n .previousEmptyBlockParents as Element[];\n\n if (!isEqual(emptyBlockParents, previousEmptyBlockParents)) {\n const noMoreEmptyBlockParent =\n previousEmptyBlockParents.filter(\n (x) => !emptyBlockParents.includes(x)\n );\n const newEmptyBlockParent = emptyBlockParents.filter(\n (x) => !previousEmptyBlockParents.includes(x)\n );\n\n removeEmptyBlocks(noMoreEmptyBlockParent);\n await generateEmptyBlocks(newEmptyBlockParent);\n\n VisualBuilder.VisualBuilderGlobalState.value = {\n ...VisualBuilder.VisualBuilderGlobalState.value,\n previousEmptyBlockParents: emptyBlockParents,\n };\n }\n },\n 100,\n { trailing: true }\n )\n );\n\n constructor() {\n // Handles changes in element positions due to sidebar toggling or window resizing,\n // triggering a redraw of the visual builder\n window.addEventListener(\"resize\", this.resizeEventHandler);\n window.addEventListener(\"scroll\", this.scrollEventHandler);\n initUI({\n resizeObserver: this.resizeObserver,\n });\n\n // Initializing goober for css-in-js\n setup(h);\n\n this.visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n this.overlayWrapper = document.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n this.customCursor = document.querySelector(\".visual-builder__cursor\");\n this.focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const config = Config.get();\n\n if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {\n return;\n }\n visualBuilderPostMessage\n ?.send<IVisualBuilderInitEvent>(\"init\", {\n isSSR: config.ssr,\n href: window.location.href,\n })\n .then((data) => {\n const {\n windowType = ILivePreviewWindowType.BUILDER,\n stackDetails,\n } = data || {};\n Config.set(\"windowType\", windowType);\n Config.set(\n \"stackDetails.masterLocale\",\n stackDetails?.masterLocale || \"en-us\"\n );\n\n addEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n addKeyboardShortcuts({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n useScrollToField();\n useHighlightCommentIcon();\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_ALL_ENTRIES_IN_CURRENT_PAGE,\n getEntryIdentifiersInCurrentPage\n );\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.SEND_VARIANT_AND_LOCALE\n );\n\n useHideFocusOverlayPostMessageEvent({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n\n // These events are used to sync the data when we made some changes in the entry without invoking live preview module.\n useHistoryPostMessageEvent();\n useOnEntryUpdatePostMessageEvent();\n useRecalculateVariantDataCSLPValues();\n useDraftFieldsPostMessageEvent();\n useVariantFieldsPostMessageEvent();\n })\n .catch(() => {\n if (!inIframe()) {\n generateStartEditingButton(this.visualBuilderContainer);\n }\n });\n }\n\n // TODO: write test cases\n destroy = (): void => {\n // Remove event listeners\n window.removeEventListener(\"resize\", this.resizeEventHandler);\n window.removeEventListener(\"scroll\", this.scrollEventHandler);\n\n // Remove custom event listeners\n removeEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n // Disconnect observers\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n\n // Clear global state\n VisualBuilder.VisualBuilderGlobalState.value = {\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n audienceMode: false,\n locale: \"en-us\",\n variant: null,\n };\n\n // Remove DOM elements\n if (this.visualBuilderContainer) {\n window.document.body.removeChild(this.visualBuilderContainer);\n }\n if (this.customCursor) {\n this.customCursor.remove();\n }\n if (this.overlayWrapper) {\n this.overlayWrapper.remove();\n }\n if (this.focusedToolbar) {\n this.focusedToolbar.remove();\n }\n\n // Nullify references\n this.customCursor = null;\n this.overlayWrapper = null;\n this.visualBuilderContainer = null;\n this.focusedToolbar = null;\n };\n}\n"],"mappings":"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","names":["initUI","Config","visualBuilderPostMessage"]}
1
+ {"version":3,"sources":["../../../src/visualBuilder/index.ts"],"sourcesContent":["import { Signal, signal } from \"@preact/signals\";\n\nimport { inIframe } from \"../common/inIframe\";\nimport Config from \"../configManager/configManager\";\nimport {\n useHistoryPostMessageEvent,\n useOnEntryUpdatePostMessageEvent,\n} from \"../livePreview/eventManager/postMessageEvent.hooks\";\nimport {\n ILivePreviewModeConfig,\n ILivePreviewWindowType,\n IVisualBuilderInitEvent,\n} from \"../types/types\";\nimport { generateStartEditingButton } from \"./generators/generateStartEditingButton\";\n\nimport { addFocusOverlay } from \"./generators/generateOverlay\";\nimport { getEntryIdentifiersInCurrentPage } from \"./utils/getEntryIdentifiersInCurrentPage\";\nimport visualBuilderPostMessage from \"./utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./utils/types/postMessage.types\";\n\nimport { setup } from \"goober\";\nimport { debounce, isEqual } from \"lodash-es\";\nimport { h } from \"preact\";\nimport { extractDetailsFromCslp } from \"../cslp\";\nimport initUI from \"./components\";\nimport { useDraftFieldsPostMessageEvent } from \"./eventManager/useDraftFieldsPostMessageEvent\";\nimport { useHideFocusOverlayPostMessageEvent } from \"./eventManager/useHideFocusOverlayPostMessageEvent\";\nimport { useScrollToField } from \"./eventManager/useScrollToField\";\nimport { useVariantFieldsPostMessageEvent } from \"./eventManager/useVariantsPostMessageEvent\";\nimport {\n generateEmptyBlocks,\n removeEmptyBlocks,\n} from \"./generators/generateEmptyBlock\";\nimport { addEventListeners, removeEventListeners } from \"./listeners\";\nimport { addKeyboardShortcuts } from \"./listeners/keyboardShortcuts\";\nimport { FieldSchemaMap } from \"./utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"./utils/isFieldDisabled\";\nimport {\n updateFocussedState,\n updateFocussedStateOnMutation,\n} from \"./utils/updateFocussedState\";\nimport { useHighlightCommentIcon } from \"./eventManager/useHighlightCommentIcon\";\nimport { updateHighlightedCommentIconPosition } from \"./generators/generateHighlightedComment\";\nimport { useRecalculateVariantDataCSLPValues } from \"./eventManager/useRecalculateVariantDataCSLPValues\";\n\ninterface VisualBuilderGlobalStateImpl {\n previousSelectedEditableDOM: HTMLElement | Element | null;\n previousHoveredTargetDOM: Element | null;\n previousEmptyBlockParents: Element[] | [];\n focusFieldValue: string | null;\n audienceMode: boolean;\n locale: string;\n variant: string | null;\n}\n\nexport class VisualBuilder {\n private customCursor: HTMLDivElement | null = null;\n private overlayWrapper: HTMLDivElement | null = null;\n private visualBuilderContainer: HTMLDivElement | null = null;\n private focusedToolbar: HTMLDivElement | null = null;\n\n static VisualBuilderGlobalState: Signal<VisualBuilderGlobalStateImpl> =\n signal({\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n audienceMode: false,\n locale: Config.get().stackDetails.masterLocale || \"en-us\",\n variant: null,\n });\n\n private handlePositionChange(editableElement: HTMLElement) {\n updateFocussedState({\n editableElement,\n visualBuilderContainer: this.visualBuilderContainer,\n overlayWrapper: this.overlayWrapper,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n }\n\n private scrollEventHandler = () => {\n updateHighlightedCommentIconPosition(); // Update icons position\n };\n\n private resizeEventHandler = () => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n updateHighlightedCommentIconPosition();\n if (previousSelectedEditableDOM) {\n this.handlePositionChange(\n previousSelectedEditableDOM as HTMLElement\n );\n }\n };\n\n private resizeObserver = new ResizeObserver(([entry]) => {\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!this.overlayWrapper || !previousSelectedEditableDOM) {\n return;\n }\n\n // if previous selected editable element is not same as the current\n // target and the target is also not psuedo-editable then return\n if (\n !entry.target.isSameNode(previousSelectedEditableDOM) &&\n !entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n )\n ) {\n return;\n }\n\n const isPsuedoEditableElement = entry.target.classList.contains(\n \"visual-builder__pseudo-editable-element\"\n );\n\n // the \"actual\" editable element when the current target is psuedo-editable\n // is the previous selected editable element instead of the closest data-cslp element\n // (cant use closest because the psuedo editable is absolute positioned)\n // (Note - why do we even need the closest? we do an early exit if entry.target\n // is not the previous selected editable element, needs more investigation)\n const editableElement = (\n isPsuedoEditableElement\n ? previousSelectedEditableDOM\n : entry.target.closest(\"[data-cslp]\")\n ) as HTMLElement | null;\n\n if (isPsuedoEditableElement) {\n // if the current target is psuedo-editable, then the resizing occurred by typing\n // into the psuedo editable, simply update the focus overlay\n addFocusOverlay(entry.target, this.overlayWrapper);\n\n // TODO check if we can now resize the actual editable element\n // when psuedo editable element is resized, avoid infinite loops\n } else if (editableElement) {\n this.handlePositionChange(editableElement);\n }\n\n // update the overlay if field is disabled\n const cslpData =\n editableElement && editableElement.getAttribute(\"data-cslp\");\n\n if (!editableElement || !cslpData) {\n return;\n }\n\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n ).then((fieldSchema) => {\n if (!fieldSchema) {\n return;\n }\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement,\n fieldMetadata,\n });\n if (isDisabled) {\n addFocusOverlay(\n editableElement,\n this.overlayWrapper as HTMLDivElement,\n isDisabled\n );\n }\n });\n });\n\n private mutationObserver = new MutationObserver(\n debounce(\n async () => {\n updateFocussedStateOnMutation(\n this.overlayWrapper,\n this.focusedToolbar,\n this.visualBuilderContainer,\n this.resizeObserver\n );\n const emptyBlockParents = Array.from(\n document.querySelectorAll(\n \".visual-builder__empty-block-parent\"\n )\n );\n\n const previousEmptyBlockParents = VisualBuilder\n .VisualBuilderGlobalState.value\n .previousEmptyBlockParents as Element[];\n\n if (!isEqual(emptyBlockParents, previousEmptyBlockParents)) {\n const noMoreEmptyBlockParent =\n previousEmptyBlockParents.filter(\n (x) => !emptyBlockParents.includes(x)\n );\n const newEmptyBlockParent = emptyBlockParents.filter(\n (x) => !previousEmptyBlockParents.includes(x)\n );\n\n removeEmptyBlocks(noMoreEmptyBlockParent);\n await generateEmptyBlocks(newEmptyBlockParent);\n\n VisualBuilder.VisualBuilderGlobalState.value = {\n ...VisualBuilder.VisualBuilderGlobalState.value,\n previousEmptyBlockParents: emptyBlockParents,\n };\n }\n },\n 100,\n { trailing: true }\n )\n );\n\n constructor() {\n // Handles changes in element positions due to sidebar toggling or window resizing,\n // triggering a redraw of the visual builder\n window.addEventListener(\"resize\", this.resizeEventHandler);\n window.addEventListener(\"scroll\", this.scrollEventHandler);\n initUI({\n resizeObserver: this.resizeObserver,\n });\n\n // Initializing goober for css-in-js\n setup(h);\n\n this.visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n this.overlayWrapper = document.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n this.customCursor = document.querySelector(\".visual-builder__cursor\");\n this.focusedToolbar = document.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const config = Config.get();\n\n if (!config.enable || config.mode < ILivePreviewModeConfig.BUILDER) {\n return;\n }\n visualBuilderPostMessage\n ?.send<IVisualBuilderInitEvent>(\"init\", {\n isSSR: config.ssr,\n href: window.location.href,\n })\n .then((data) => {\n const {\n windowType = ILivePreviewWindowType.BUILDER,\n stackDetails,\n } = data || {};\n Config.set(\"windowType\", windowType);\n Config.set(\n \"stackDetails.masterLocale\",\n stackDetails?.masterLocale || \"en-us\"\n );\n\n addEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n addKeyboardShortcuts({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n useScrollToField();\n useHighlightCommentIcon();\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.GET_ALL_ENTRIES_IN_CURRENT_PAGE,\n getEntryIdentifiersInCurrentPage\n );\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.SEND_VARIANT_AND_LOCALE\n );\n\n useHideFocusOverlayPostMessageEvent({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n });\n\n // These events are used to sync the data when we made some changes in the entry without invoking live preview module.\n useHistoryPostMessageEvent();\n useOnEntryUpdatePostMessageEvent();\n useRecalculateVariantDataCSLPValues();\n useDraftFieldsPostMessageEvent();\n useVariantFieldsPostMessageEvent();\n })\n .catch(() => {\n if (!inIframe()) {\n generateStartEditingButton(this.visualBuilderContainer);\n }\n });\n }\n\n // TODO: write test cases\n destroy = (): void => {\n // Remove event listeners\n window.removeEventListener(\"resize\", this.resizeEventHandler);\n window.removeEventListener(\"scroll\", this.scrollEventHandler);\n\n // Remove custom event listeners\n removeEventListeners({\n overlayWrapper: this.overlayWrapper,\n visualBuilderContainer: this.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: this.focusedToolbar,\n resizeObserver: this.resizeObserver,\n customCursor: this.customCursor,\n });\n\n // Disconnect observers\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n\n // Clear global state\n VisualBuilder.VisualBuilderGlobalState.value = {\n previousSelectedEditableDOM: null,\n previousHoveredTargetDOM: null,\n previousEmptyBlockParents: [],\n focusFieldValue: null,\n audienceMode: false,\n locale: \"en-us\",\n variant: null,\n };\n\n // Remove DOM elements\n if (this.visualBuilderContainer) {\n window.document.body.removeChild(this.visualBuilderContainer);\n }\n if (this.customCursor) {\n this.customCursor.remove();\n }\n if (this.overlayWrapper) {\n this.overlayWrapper.remove();\n }\n if (this.focusedToolbar) {\n this.focusedToolbar.remove();\n }\n\n // Nullify references\n this.customCursor = null;\n this.overlayWrapper = null;\n this.visualBuilderContainer = null;\n this.focusedToolbar = null;\n };\n}\n"],"mappings":"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","names":["initUI","Config","visualBuilderPostMessage"]}
@@ -109,7 +109,8 @@ var _VisualBuilder = class _VisualBuilder {
109
109
  updateFocussedStateOnMutation(
110
110
  this.overlayWrapper,
111
111
  this.focusedToolbar,
112
- this.visualBuilderContainer
112
+ this.visualBuilderContainer,
113
+ this.resizeObserver
113
114
  );
114
115
  const emptyBlockParents = Array.from(
115
116
  document.querySelectorAll(