@contentstack/live-preview-utils 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) 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 +5 -2
  6. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  7. package/dist/legacy/livePreview/editButton/editButton.js +5 -2
  8. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  9. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  10. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  11. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +23 -4
  12. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  13. package/dist/legacy/preview/contentstack-live-preview-HOC.d.cts +2 -1
  14. package/dist/legacy/preview/contentstack-live-preview-HOC.d.ts +2 -1
  15. package/dist/legacy/preview/contentstack-live-preview-HOC.js +23 -4
  16. package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +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/types/types.cjs.map +1 -1
  22. package/dist/legacy/types/types.d.cts +2 -1
  23. package/dist/legacy/types/types.d.ts +2 -1
  24. package/dist/legacy/types/types.js.map +1 -1
  25. package/dist/legacy/utils/addLivePreviewQueryTags.cjs +49 -0
  26. package/dist/legacy/utils/addLivePreviewQueryTags.cjs.map +1 -0
  27. package/dist/legacy/utils/addLivePreviewQueryTags.d.cts +3 -0
  28. package/dist/legacy/utils/addLivePreviewQueryTags.d.ts +3 -0
  29. package/dist/legacy/utils/addLivePreviewQueryTags.js +26 -0
  30. package/dist/legacy/utils/addLivePreviewQueryTags.js.map +1 -0
  31. package/dist/legacy/utils/index.cjs +3 -21
  32. package/dist/legacy/utils/index.cjs.map +1 -1
  33. package/dist/legacy/utils/index.d.cts +4 -2
  34. package/dist/legacy/utils/index.d.ts +4 -2
  35. package/dist/legacy/utils/index.js +1 -19
  36. package/dist/legacy/utils/index.js.map +1 -1
  37. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +62 -15
  38. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  39. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.d.cts +3 -2
  40. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.d.ts +3 -2
  41. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js +63 -17
  42. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  43. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs +41 -0
  44. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs.map +1 -0
  45. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.cts +3 -0
  46. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.ts +3 -0
  47. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.js +22 -0
  48. package/dist/legacy/visualBuilder/components/FieldRevert/useHandleOutsideClick.js.map +1 -0
  49. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +145 -147
  50. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  51. package/dist/legacy/visualBuilder/components/FieldToolbar.js +147 -149
  52. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  53. package/dist/legacy/visualBuilder/components/emptyBlock.cjs +1 -0
  54. package/dist/legacy/visualBuilder/components/emptyBlock.cjs.map +1 -1
  55. package/dist/legacy/visualBuilder/components/emptyBlock.js +1 -0
  56. package/dist/legacy/visualBuilder/components/emptyBlock.js.map +1 -1
  57. package/dist/legacy/visualBuilder/components/icons/variant.cjs +1 -1
  58. package/dist/legacy/visualBuilder/components/icons/variant.cjs.map +1 -1
  59. package/dist/legacy/visualBuilder/components/icons/variant.js +1 -1
  60. package/dist/legacy/visualBuilder/components/icons/variant.js.map +1 -1
  61. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +1 -1
  62. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  63. package/dist/legacy/visualBuilder/generators/generateToolbar.js +1 -1
  64. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  65. package/dist/legacy/visualBuilder/listeners/index.cjs +8 -2
  66. package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
  67. package/dist/legacy/visualBuilder/listeners/index.js +8 -2
  68. package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
  69. package/dist/legacy/visualBuilder/utils/constants.cjs +5 -2
  70. package/dist/legacy/visualBuilder/utils/constants.cjs.map +1 -1
  71. package/dist/legacy/visualBuilder/utils/constants.d.cts +2 -1
  72. package/dist/legacy/visualBuilder/utils/constants.d.ts +2 -1
  73. package/dist/legacy/visualBuilder/utils/constants.js +3 -1
  74. package/dist/legacy/visualBuilder/utils/constants.js.map +1 -1
  75. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs +17 -2
  76. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
  77. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js +17 -2
  78. package/dist/legacy/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
  79. package/dist/legacy/visualBuilder/utils/getFieldType.cjs +6 -5
  80. package/dist/legacy/visualBuilder/utils/getFieldType.cjs.map +1 -1
  81. package/dist/legacy/visualBuilder/utils/getFieldType.js +6 -5
  82. package/dist/legacy/visualBuilder/utils/getFieldType.js.map +1 -1
  83. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +10 -0
  84. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  85. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +10 -0
  86. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  87. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +63 -39
  88. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  89. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +53 -39
  90. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  91. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.cjs +44 -0
  92. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.cjs.map +1 -0
  93. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.d.cts +3 -0
  94. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.d.ts +3 -0
  95. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.js +21 -0
  96. package/dist/legacy/visualBuilder/utils/insertSpaceAtCursor.js.map +1 -0
  97. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +1 -1
  98. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  99. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +1 -1
  100. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  101. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +3 -0
  102. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  103. package/dist/legacy/visualBuilder/visualBuilder.style.js +3 -0
  104. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  105. package/dist/modern/cslp/cslpdata.cjs.map +1 -1
  106. package/dist/modern/cslp/cslpdata.js.map +1 -1
  107. package/dist/modern/livePreview/editButton/editButton.cjs +4 -1
  108. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  109. package/dist/modern/livePreview/editButton/editButton.js +4 -1
  110. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  111. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  112. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  113. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +23 -4
  114. package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  115. package/dist/modern/preview/contentstack-live-preview-HOC.d.cts +2 -1
  116. package/dist/modern/preview/contentstack-live-preview-HOC.d.ts +2 -1
  117. package/dist/modern/preview/contentstack-live-preview-HOC.js +23 -4
  118. package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
  119. package/dist/modern/timeline/compare/compare.cjs +2 -1
  120. package/dist/modern/timeline/compare/compare.cjs.map +1 -1
  121. package/dist/modern/timeline/compare/compare.js +2 -1
  122. package/dist/modern/timeline/compare/compare.js.map +1 -1
  123. package/dist/modern/types/types.cjs.map +1 -1
  124. package/dist/modern/types/types.d.cts +2 -1
  125. package/dist/modern/types/types.d.ts +2 -1
  126. package/dist/modern/types/types.js.map +1 -1
  127. package/dist/modern/utils/addLivePreviewQueryTags.cjs +49 -0
  128. package/dist/modern/utils/addLivePreviewQueryTags.cjs.map +1 -0
  129. package/dist/modern/utils/addLivePreviewQueryTags.d.cts +3 -0
  130. package/dist/modern/utils/addLivePreviewQueryTags.d.ts +3 -0
  131. package/dist/modern/utils/addLivePreviewQueryTags.js +26 -0
  132. package/dist/modern/utils/addLivePreviewQueryTags.js.map +1 -0
  133. package/dist/modern/utils/index.cjs +3 -21
  134. package/dist/modern/utils/index.cjs.map +1 -1
  135. package/dist/modern/utils/index.d.cts +4 -2
  136. package/dist/modern/utils/index.d.ts +4 -2
  137. package/dist/modern/utils/index.js +1 -19
  138. package/dist/modern/utils/index.js.map +1 -1
  139. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +62 -15
  140. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  141. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.d.cts +3 -2
  142. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.d.ts +3 -2
  143. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js +63 -17
  144. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  145. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs +41 -0
  146. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.cjs.map +1 -0
  147. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.cts +3 -0
  148. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.d.ts +3 -0
  149. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.js +22 -0
  150. package/dist/modern/visualBuilder/components/FieldRevert/useHandleOutsideClick.js.map +1 -0
  151. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +144 -146
  152. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  153. package/dist/modern/visualBuilder/components/FieldToolbar.js +146 -148
  154. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  155. package/dist/modern/visualBuilder/components/emptyBlock.cjs +1 -0
  156. package/dist/modern/visualBuilder/components/emptyBlock.cjs.map +1 -1
  157. package/dist/modern/visualBuilder/components/emptyBlock.js +1 -0
  158. package/dist/modern/visualBuilder/components/emptyBlock.js.map +1 -1
  159. package/dist/modern/visualBuilder/components/icons/variant.cjs +1 -1
  160. package/dist/modern/visualBuilder/components/icons/variant.cjs.map +1 -1
  161. package/dist/modern/visualBuilder/components/icons/variant.js +1 -1
  162. package/dist/modern/visualBuilder/components/icons/variant.js.map +1 -1
  163. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +1 -1
  164. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  165. package/dist/modern/visualBuilder/generators/generateToolbar.js +1 -1
  166. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  167. package/dist/modern/visualBuilder/listeners/index.cjs +8 -2
  168. package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
  169. package/dist/modern/visualBuilder/listeners/index.js +8 -2
  170. package/dist/modern/visualBuilder/listeners/index.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/getCsDataOfElement.cjs +17 -2
  178. package/dist/modern/visualBuilder/utils/getCsDataOfElement.cjs.map +1 -1
  179. package/dist/modern/visualBuilder/utils/getCsDataOfElement.js +17 -2
  180. package/dist/modern/visualBuilder/utils/getCsDataOfElement.js.map +1 -1
  181. package/dist/modern/visualBuilder/utils/getFieldType.cjs +5 -5
  182. package/dist/modern/visualBuilder/utils/getFieldType.cjs.map +1 -1
  183. package/dist/modern/visualBuilder/utils/getFieldType.js +5 -5
  184. package/dist/modern/visualBuilder/utils/getFieldType.js.map +1 -1
  185. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +10 -0
  186. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  187. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +10 -0
  188. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  189. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +62 -39
  190. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  191. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +52 -39
  192. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  193. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.cjs +44 -0
  194. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.cjs.map +1 -0
  195. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.d.cts +3 -0
  196. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.d.ts +3 -0
  197. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.js +21 -0
  198. package/dist/modern/visualBuilder/utils/insertSpaceAtCursor.js.map +1 -0
  199. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +1 -1
  200. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  201. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +1 -1
  202. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  203. package/dist/modern/visualBuilder/visualBuilder.style.cjs +3 -0
  204. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  205. package/dist/modern/visualBuilder/visualBuilder.style.js +3 -0
  206. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  207. package/package.json +18 -6
@@ -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 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,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"]}
@@ -35,7 +35,7 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
35
35
  focusedToolbarElement.append(wrapper);
36
36
  }
37
37
  function appendFieldPathDropdown(eventDetails, focusedToolbarElement) {
38
- if (document.querySelector("visual-builder__focused-toolbar__field-label-wrapper"))
38
+ if (document.querySelector(".visual-builder__focused-toolbar__field-label-wrapper"))
39
39
  return;
40
40
  const { editableElement: targetElement, fieldMetadata } = eventDetails;
41
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 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,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":[]}
@@ -91,10 +91,16 @@ function removeEventListeners(params) {
91
91
  window.removeEventListener("mousemove", mousemoveHandler);
92
92
  }
93
93
  if (mouseleaveHandler) {
94
- document.documentElement.removeEventListener("mouseleave", mouseleaveHandler);
94
+ document.documentElement.removeEventListener(
95
+ "mouseleave",
96
+ mouseleaveHandler
97
+ );
95
98
  }
96
99
  if (mouseenterHandler) {
97
- document.documentElement.removeEventListener("mouseenter", mouseenterHandler);
100
+ document.documentElement.removeEventListener(
101
+ "mouseenter",
102
+ mouseenterHandler
103
+ );
98
104
  }
99
105
  eventListenersMap.clear();
100
106
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/listeners/index.ts"],"sourcesContent":["import EventListenerHandlerParams from \"./types\";\nimport { VisualBuilder } from \"..\";\nimport handleBuilderInteraction from \"./mouseClick\";\nimport handleMouseHover, {\n hideCustomCursor,\n hideHoverOutline,\n showCustomCursor,\n} from \"./mouseHover\";\n\ntype AddEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\n\ntype RemoveEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\nconst eventHandlers = {\n click: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleBuilderInteraction({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n });\n },\n mousemove: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleMouseHover({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n customCursor: params.customCursor,\n });\n },\n mouseleave: (params: AddEventListenersParams) => () => {\n hideCustomCursor(params.customCursor);\n hideHoverOutline(params.visualBuilderContainer);\n },\n mouseenter: (params: AddEventListenersParams) => () => {\n showCustomCursor(params.customCursor);\n },\n};\nconst eventListenersMap = new Map<string, EventListener>();\nexport function addEventListeners(params: AddEventListenersParams): void {\n const clickHandler = eventHandlers.click(params);\n const mousemoveHandler = eventHandlers.mousemove(params);\n const mouseleaveHandler = eventHandlers.mouseleave(params);\n const mouseenterHandler = eventHandlers.mouseenter(params);\n\n eventListenersMap.set(\"click\", clickHandler as EventListener);\n eventListenersMap.set(\"mousemove\", mousemoveHandler as EventListener);\n eventListenersMap.set(\"mouseleave\", mouseleaveHandler);\n eventListenersMap.set(\"mouseenter\", mouseenterHandler);\n\n window.addEventListener(\"click\", clickHandler, { capture: true });\n window.addEventListener(\"mousemove\", mousemoveHandler);\n document.documentElement.addEventListener(\"mouseleave\", mouseleaveHandler);\n document.documentElement.addEventListener(\"mouseenter\", mouseenterHandler);\n}\n\nexport function removeEventListeners(params: RemoveEventListenersParams): void {\n const clickHandler = eventListenersMap.get(\"click\");\n const mousemoveHandler = eventListenersMap.get(\"mousemove\");\n const mouseleaveHandler = eventListenersMap.get(\"mouseleave\");\n const mouseenterHandler = eventListenersMap.get(\"mouseenter\");\n\n if (clickHandler) {\n window.removeEventListener(\"click\", clickHandler, { capture: true });\n }\n if (mousemoveHandler) {\n window.removeEventListener(\"mousemove\", mousemoveHandler);\n }\n if (mouseleaveHandler) {\n document.documentElement.removeEventListener(\"mouseleave\", mouseleaveHandler);\n }\n if (mouseenterHandler) {\n document.documentElement.removeEventListener(\"mouseenter\", mouseenterHandler);\n }\n\n eventListenersMap.clear();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,eAA8B;AAC9B,wBAAqC;AACrC,wBAIO;AAWP,IAAM,gBAAgB;AAAA,EAClB,OAAO,CAAC,WAAoC,CAAC,UAAsB;AAC/D,0BAAAA,SAAyB;AAAA,MACrB;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,6BACI,uBAAc,yBAAyB,MAClC;AAAA,MACT,gBAAgB,OAAO;AAAA,MACvB,gBAAgB,OAAO;AAAA,IAC3B,CAAC;AAAA,EACL;AAAA,EACA,WAAW,CAAC,WAAoC,CAAC,UAAsB;AACnE,0BAAAC,SAAiB;AAAA,MACb;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,cAAc,OAAO;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,4CAAiB,OAAO,YAAY;AACpC,4CAAiB,OAAO,sBAAsB;AAAA,EAClD;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,4CAAiB,OAAO,YAAY;AAAA,EACxC;AACJ;AACA,IAAM,oBAAoB,oBAAI,IAA2B;AAClD,SAAS,kBAAkB,QAAuC;AACrE,QAAM,eAAe,cAAc,MAAM,MAAM;AAC/C,QAAM,mBAAmB,cAAc,UAAU,MAAM;AACvD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AACzD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AAEzD,oBAAkB,IAAI,SAAS,YAA6B;AAC5D,oBAAkB,IAAI,aAAa,gBAAiC;AACpE,oBAAkB,IAAI,cAAc,iBAAiB;AACrD,oBAAkB,IAAI,cAAc,iBAAiB;AAErD,SAAO,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAChE,SAAO,iBAAiB,aAAa,gBAAgB;AACrD,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AACzE,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AAC7E;AAEO,SAAS,qBAAqB,QAA0C;AAC3E,QAAM,eAAe,kBAAkB,IAAI,OAAO;AAClD,QAAM,mBAAmB,kBAAkB,IAAI,WAAW;AAC1D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAC5D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAE5D,MAAI,cAAc;AACd,WAAO,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EACvE;AACA,MAAI,kBAAkB;AAClB,WAAO,oBAAoB,aAAa,gBAAgB;AAAA,EAC5D;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB,oBAAoB,cAAc,iBAAiB;AAAA,EAChF;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB,oBAAoB,cAAc,iBAAiB;AAAA,EAChF;AAEA,oBAAkB,MAAM;AAC5B;","names":["handleBuilderInteraction","handleMouseHover"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/listeners/index.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport handleBuilderInteraction from \"./mouseClick\";\nimport handleMouseHover, {\n hideCustomCursor,\n hideHoverOutline,\n showCustomCursor,\n} from \"./mouseHover\";\nimport EventListenerHandlerParams from \"./types\";\n\ntype AddEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\n\ntype RemoveEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\nconst eventHandlers = {\n click: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleBuilderInteraction({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n });\n },\n mousemove: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleMouseHover({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n customCursor: params.customCursor,\n });\n },\n mouseleave: (params: AddEventListenersParams) => () => {\n hideCustomCursor(params.customCursor);\n hideHoverOutline(params.visualBuilderContainer);\n },\n mouseenter: (params: AddEventListenersParams) => () => {\n showCustomCursor(params.customCursor);\n },\n};\nconst eventListenersMap = new Map<string, EventListener>();\nexport function addEventListeners(params: AddEventListenersParams): void {\n const clickHandler = eventHandlers.click(params);\n const mousemoveHandler = eventHandlers.mousemove(params);\n const mouseleaveHandler = eventHandlers.mouseleave(params);\n const mouseenterHandler = eventHandlers.mouseenter(params);\n\n eventListenersMap.set(\"click\", clickHandler as EventListener);\n eventListenersMap.set(\"mousemove\", mousemoveHandler as EventListener);\n eventListenersMap.set(\"mouseleave\", mouseleaveHandler);\n eventListenersMap.set(\"mouseenter\", mouseenterHandler);\n\n window.addEventListener(\"click\", clickHandler, { capture: true });\n window.addEventListener(\"mousemove\", mousemoveHandler);\n document.documentElement.addEventListener(\"mouseleave\", mouseleaveHandler);\n document.documentElement.addEventListener(\"mouseenter\", mouseenterHandler);\n}\n\nexport function removeEventListeners(params: RemoveEventListenersParams): void {\n const clickHandler = eventListenersMap.get(\"click\");\n const mousemoveHandler = eventListenersMap.get(\"mousemove\");\n const mouseleaveHandler = eventListenersMap.get(\"mouseleave\");\n const mouseenterHandler = eventListenersMap.get(\"mouseenter\");\n\n if (clickHandler) {\n window.removeEventListener(\"click\", clickHandler, { capture: true });\n }\n if (mousemoveHandler) {\n window.removeEventListener(\"mousemove\", mousemoveHandler);\n }\n if (mouseleaveHandler) {\n document.documentElement.removeEventListener(\n \"mouseleave\",\n mouseleaveHandler\n );\n }\n if (mouseenterHandler) {\n document.documentElement.removeEventListener(\n \"mouseenter\",\n mouseenterHandler\n );\n }\n\n eventListenersMap.clear();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAC9B,wBAAqC;AACrC,wBAIO;AAYP,IAAM,gBAAgB;AAAA,EAClB,OAAO,CAAC,WAAoC,CAAC,UAAsB;AAC/D,0BAAAA,SAAyB;AAAA,MACrB;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,6BACI,uBAAc,yBAAyB,MAClC;AAAA,MACT,gBAAgB,OAAO;AAAA,MACvB,gBAAgB,OAAO;AAAA,IAC3B,CAAC;AAAA,EACL;AAAA,EACA,WAAW,CAAC,WAAoC,CAAC,UAAsB;AACnE,0BAAAC,SAAiB;AAAA,MACb;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,cAAc,OAAO;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,4CAAiB,OAAO,YAAY;AACpC,4CAAiB,OAAO,sBAAsB;AAAA,EAClD;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,4CAAiB,OAAO,YAAY;AAAA,EACxC;AACJ;AACA,IAAM,oBAAoB,oBAAI,IAA2B;AAClD,SAAS,kBAAkB,QAAuC;AACrE,QAAM,eAAe,cAAc,MAAM,MAAM;AAC/C,QAAM,mBAAmB,cAAc,UAAU,MAAM;AACvD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AACzD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AAEzD,oBAAkB,IAAI,SAAS,YAA6B;AAC5D,oBAAkB,IAAI,aAAa,gBAAiC;AACpE,oBAAkB,IAAI,cAAc,iBAAiB;AACrD,oBAAkB,IAAI,cAAc,iBAAiB;AAErD,SAAO,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAChE,SAAO,iBAAiB,aAAa,gBAAgB;AACrD,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AACzE,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AAC7E;AAEO,SAAS,qBAAqB,QAA0C;AAC3E,QAAM,eAAe,kBAAkB,IAAI,OAAO;AAClD,QAAM,mBAAmB,kBAAkB,IAAI,WAAW;AAC1D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAC5D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAE5D,MAAI,cAAc;AACd,WAAO,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EACvE;AACA,MAAI,kBAAkB;AAClB,WAAO,oBAAoB,aAAa,gBAAgB;AAAA,EAC5D;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB;AAAA,MACrB;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB;AAAA,MACrB;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,oBAAkB,MAAM;AAC5B;","names":["handleBuilderInteraction","handleMouseHover"]}
@@ -62,10 +62,16 @@ function removeEventListeners(params) {
62
62
  window.removeEventListener("mousemove", mousemoveHandler);
63
63
  }
64
64
  if (mouseleaveHandler) {
65
- document.documentElement.removeEventListener("mouseleave", mouseleaveHandler);
65
+ document.documentElement.removeEventListener(
66
+ "mouseleave",
67
+ mouseleaveHandler
68
+ );
66
69
  }
67
70
  if (mouseenterHandler) {
68
- document.documentElement.removeEventListener("mouseenter", mouseenterHandler);
71
+ document.documentElement.removeEventListener(
72
+ "mouseenter",
73
+ mouseenterHandler
74
+ );
69
75
  }
70
76
  eventListenersMap.clear();
71
77
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/listeners/index.ts"],"sourcesContent":["import EventListenerHandlerParams from \"./types\";\nimport { VisualBuilder } from \"..\";\nimport handleBuilderInteraction from \"./mouseClick\";\nimport handleMouseHover, {\n hideCustomCursor,\n hideHoverOutline,\n showCustomCursor,\n} from \"./mouseHover\";\n\ntype AddEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\n\ntype RemoveEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\nconst eventHandlers = {\n click: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleBuilderInteraction({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n });\n },\n mousemove: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleMouseHover({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n customCursor: params.customCursor,\n });\n },\n mouseleave: (params: AddEventListenersParams) => () => {\n hideCustomCursor(params.customCursor);\n hideHoverOutline(params.visualBuilderContainer);\n },\n mouseenter: (params: AddEventListenersParams) => () => {\n showCustomCursor(params.customCursor);\n },\n};\nconst eventListenersMap = new Map<string, EventListener>();\nexport function addEventListeners(params: AddEventListenersParams): void {\n const clickHandler = eventHandlers.click(params);\n const mousemoveHandler = eventHandlers.mousemove(params);\n const mouseleaveHandler = eventHandlers.mouseleave(params);\n const mouseenterHandler = eventHandlers.mouseenter(params);\n\n eventListenersMap.set(\"click\", clickHandler as EventListener);\n eventListenersMap.set(\"mousemove\", mousemoveHandler as EventListener);\n eventListenersMap.set(\"mouseleave\", mouseleaveHandler);\n eventListenersMap.set(\"mouseenter\", mouseenterHandler);\n\n window.addEventListener(\"click\", clickHandler, { capture: true });\n window.addEventListener(\"mousemove\", mousemoveHandler);\n document.documentElement.addEventListener(\"mouseleave\", mouseleaveHandler);\n document.documentElement.addEventListener(\"mouseenter\", mouseenterHandler);\n}\n\nexport function removeEventListeners(params: RemoveEventListenersParams): void {\n const clickHandler = eventListenersMap.get(\"click\");\n const mousemoveHandler = eventListenersMap.get(\"mousemove\");\n const mouseleaveHandler = eventListenersMap.get(\"mouseleave\");\n const mouseenterHandler = eventListenersMap.get(\"mouseenter\");\n\n if (clickHandler) {\n window.removeEventListener(\"click\", clickHandler, { capture: true });\n }\n if (mousemoveHandler) {\n window.removeEventListener(\"mousemove\", mousemoveHandler);\n }\n if (mouseleaveHandler) {\n document.documentElement.removeEventListener(\"mouseleave\", mouseleaveHandler);\n }\n if (mouseenterHandler) {\n document.documentElement.removeEventListener(\"mouseenter\", mouseenterHandler);\n }\n\n eventListenersMap.clear();\n}\n"],"mappings":";;;AACA,SAAS,qBAAqB;AAC9B,OAAO,8BAA8B;AACrC,OAAO;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAWP,IAAM,gBAAgB;AAAA,EAClB,OAAO,CAAC,WAAoC,CAAC,UAAsB;AAC/D,6BAAyB;AAAA,MACrB;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,6BACI,cAAc,yBAAyB,MAClC;AAAA,MACT,gBAAgB,OAAO;AAAA,MACvB,gBAAgB,OAAO;AAAA,IAC3B,CAAC;AAAA,EACL;AAAA,EACA,WAAW,CAAC,WAAoC,CAAC,UAAsB;AACnE,qBAAiB;AAAA,MACb;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,cAAc,OAAO;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,qBAAiB,OAAO,YAAY;AACpC,qBAAiB,OAAO,sBAAsB;AAAA,EAClD;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,qBAAiB,OAAO,YAAY;AAAA,EACxC;AACJ;AACA,IAAM,oBAAoB,oBAAI,IAA2B;AAClD,SAAS,kBAAkB,QAAuC;AACrE,QAAM,eAAe,cAAc,MAAM,MAAM;AAC/C,QAAM,mBAAmB,cAAc,UAAU,MAAM;AACvD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AACzD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AAEzD,oBAAkB,IAAI,SAAS,YAA6B;AAC5D,oBAAkB,IAAI,aAAa,gBAAiC;AACpE,oBAAkB,IAAI,cAAc,iBAAiB;AACrD,oBAAkB,IAAI,cAAc,iBAAiB;AAErD,SAAO,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAChE,SAAO,iBAAiB,aAAa,gBAAgB;AACrD,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AACzE,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AAC7E;AAEO,SAAS,qBAAqB,QAA0C;AAC3E,QAAM,eAAe,kBAAkB,IAAI,OAAO;AAClD,QAAM,mBAAmB,kBAAkB,IAAI,WAAW;AAC1D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAC5D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAE5D,MAAI,cAAc;AACd,WAAO,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EACvE;AACA,MAAI,kBAAkB;AAClB,WAAO,oBAAoB,aAAa,gBAAgB;AAAA,EAC5D;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB,oBAAoB,cAAc,iBAAiB;AAAA,EAChF;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB,oBAAoB,cAAc,iBAAiB;AAAA,EAChF;AAEA,oBAAkB,MAAM;AAC5B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/listeners/index.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport handleBuilderInteraction from \"./mouseClick\";\nimport handleMouseHover, {\n hideCustomCursor,\n hideHoverOutline,\n showCustomCursor,\n} from \"./mouseHover\";\nimport EventListenerHandlerParams from \"./types\";\n\ntype AddEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\n\ntype RemoveEventListenersParams = Omit<\n EventListenerHandlerParams,\n \"event\" | \"eventDetails\"\n>;\nconst eventHandlers = {\n click: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleBuilderInteraction({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n });\n },\n mousemove: (params: AddEventListenersParams) => (event: MouseEvent) => {\n handleMouseHover({\n event: event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n customCursor: params.customCursor,\n });\n },\n mouseleave: (params: AddEventListenersParams) => () => {\n hideCustomCursor(params.customCursor);\n hideHoverOutline(params.visualBuilderContainer);\n },\n mouseenter: (params: AddEventListenersParams) => () => {\n showCustomCursor(params.customCursor);\n },\n};\nconst eventListenersMap = new Map<string, EventListener>();\nexport function addEventListeners(params: AddEventListenersParams): void {\n const clickHandler = eventHandlers.click(params);\n const mousemoveHandler = eventHandlers.mousemove(params);\n const mouseleaveHandler = eventHandlers.mouseleave(params);\n const mouseenterHandler = eventHandlers.mouseenter(params);\n\n eventListenersMap.set(\"click\", clickHandler as EventListener);\n eventListenersMap.set(\"mousemove\", mousemoveHandler as EventListener);\n eventListenersMap.set(\"mouseleave\", mouseleaveHandler);\n eventListenersMap.set(\"mouseenter\", mouseenterHandler);\n\n window.addEventListener(\"click\", clickHandler, { capture: true });\n window.addEventListener(\"mousemove\", mousemoveHandler);\n document.documentElement.addEventListener(\"mouseleave\", mouseleaveHandler);\n document.documentElement.addEventListener(\"mouseenter\", mouseenterHandler);\n}\n\nexport function removeEventListeners(params: RemoveEventListenersParams): void {\n const clickHandler = eventListenersMap.get(\"click\");\n const mousemoveHandler = eventListenersMap.get(\"mousemove\");\n const mouseleaveHandler = eventListenersMap.get(\"mouseleave\");\n const mouseenterHandler = eventListenersMap.get(\"mouseenter\");\n\n if (clickHandler) {\n window.removeEventListener(\"click\", clickHandler, { capture: true });\n }\n if (mousemoveHandler) {\n window.removeEventListener(\"mousemove\", mousemoveHandler);\n }\n if (mouseleaveHandler) {\n document.documentElement.removeEventListener(\n \"mouseleave\",\n mouseleaveHandler\n );\n }\n if (mouseenterHandler) {\n document.documentElement.removeEventListener(\n \"mouseenter\",\n mouseenterHandler\n );\n }\n\n eventListenersMap.clear();\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B,OAAO,8BAA8B;AACrC,OAAO;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAYP,IAAM,gBAAgB;AAAA,EAClB,OAAO,CAAC,WAAoC,CAAC,UAAsB;AAC/D,6BAAyB;AAAA,MACrB;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,6BACI,cAAc,yBAAyB,MAClC;AAAA,MACT,gBAAgB,OAAO;AAAA,MACvB,gBAAgB,OAAO;AAAA,IAC3B,CAAC;AAAA,EACL;AAAA,EACA,WAAW,CAAC,WAAoC,CAAC,UAAsB;AACnE,qBAAiB;AAAA,MACb;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB,wBAAwB,OAAO;AAAA,MAC/B,cAAc,OAAO;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,qBAAiB,OAAO,YAAY;AACpC,qBAAiB,OAAO,sBAAsB;AAAA,EAClD;AAAA,EACA,YAAY,CAAC,WAAoC,MAAM;AACnD,qBAAiB,OAAO,YAAY;AAAA,EACxC;AACJ;AACA,IAAM,oBAAoB,oBAAI,IAA2B;AAClD,SAAS,kBAAkB,QAAuC;AACrE,QAAM,eAAe,cAAc,MAAM,MAAM;AAC/C,QAAM,mBAAmB,cAAc,UAAU,MAAM;AACvD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AACzD,QAAM,oBAAoB,cAAc,WAAW,MAAM;AAEzD,oBAAkB,IAAI,SAAS,YAA6B;AAC5D,oBAAkB,IAAI,aAAa,gBAAiC;AACpE,oBAAkB,IAAI,cAAc,iBAAiB;AACrD,oBAAkB,IAAI,cAAc,iBAAiB;AAErD,SAAO,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAChE,SAAO,iBAAiB,aAAa,gBAAgB;AACrD,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AACzE,WAAS,gBAAgB,iBAAiB,cAAc,iBAAiB;AAC7E;AAEO,SAAS,qBAAqB,QAA0C;AAC3E,QAAM,eAAe,kBAAkB,IAAI,OAAO;AAClD,QAAM,mBAAmB,kBAAkB,IAAI,WAAW;AAC1D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAC5D,QAAM,oBAAoB,kBAAkB,IAAI,YAAY;AAE5D,MAAI,cAAc;AACd,WAAO,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EACvE;AACA,MAAI,kBAAkB;AAClB,WAAO,oBAAoB,aAAa,gBAAgB;AAAA,EAC5D;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB;AAAA,MACrB;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,mBAAmB;AACnB,aAAS,gBAAgB;AAAA,MACrB;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,oBAAkB,MAAM;AAC5B;","names":[]}
@@ -31,7 +31,8 @@ __export(constants_exports, {
31
31
  TOP_EDGE_BUFFER: () => TOP_EDGE_BUFFER,
32
32
  VISUAL_BUILDER_CHANNEL_ID: () => VISUAL_BUILDER_CHANNEL_ID,
33
33
  VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY: () => VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
34
- numericInputRegex: () => numericInputRegex
34
+ numericInputRegex: () => numericInputRegex,
35
+ unicodeNonBreakingSpace: () => unicodeNonBreakingSpace
35
36
  });
36
37
  module.exports = __toCommonJS(constants_exports);
37
38
  var import_types = require("./types/index.types.cjs");
@@ -66,6 +67,7 @@ var DEFAULT_MULTIPLE_FIELDS = [
66
67
  import_types.FieldDataType.GROUP,
67
68
  import_types.FieldDataType.BLOCK
68
69
  ];
70
+ var unicodeNonBreakingSpace = "\xA0";
69
71
  // Annotate the CommonJS export names for ESM import in node:
70
72
  0 && (module.exports = {
71
73
  ALLOWED_INLINE_EDITABLE_FIELD,
@@ -79,6 +81,7 @@ var DEFAULT_MULTIPLE_FIELDS = [
79
81
  TOP_EDGE_BUFFER,
80
82
  VISUAL_BUILDER_CHANNEL_ID,
81
83
  VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
82
- numericInputRegex
84
+ numericInputRegex,
85
+ unicodeNonBreakingSpace
83
86
  });
84
87
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/constants.ts"],"sourcesContent":["import { FieldDataType } from \"./types/index.types\";\n\nexport const numericInputRegex = /^-?\\d*(\\.\\d*)?([eE][-+]?\\d*)?$/;\n\nexport const VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY = \"data-cslp-field-type\";\n\nexport const VISUAL_BUILDER_CHANNEL_ID = \"visual-builder\";\n\nexport const LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX = 2;\n\n// Minimum distance from top edge to prevent toolbar from being hidden\nexport const TOP_EDGE_BUFFER = 42;\nexport const RIGHT_EDGE_BUFFER = 180;\n\nexport const TOOLBAR_EDGE_BUFFER = 8;\n\nexport const DATA_CSLP_ATTR_SELECTOR = \"data-cslp\";\n\n/**\n * The field that can be directly modified using contenteditable=true.\n * This includes all text fields like title and numbers.\n */\nexport const ALLOWED_INLINE_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.SINGLELINE,\n FieldDataType.MULTILINE,\n FieldDataType.NUMBER,\n];\n\nexport const ALLOWED_MODAL_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.HTML_RTE,\n FieldDataType.MARKDOWN_RTE,\n FieldDataType.JSON_RTE,\n FieldDataType.CUSTOM_FIELD,\n FieldDataType.LINK,\n FieldDataType.ISODATE,\n FieldDataType.URL,\n];\n\nexport const ALLOWED_REPLACE_FIELDS: FieldDataType[] = [\n FieldDataType.REFERENCE,\n FieldDataType.FILE,\n];\n\nexport const DEFAULT_MULTIPLE_FIELDS: FieldDataType[] = [\n FieldDataType.GLOBAL_FIELD,\n FieldDataType.GROUP,\n FieldDataType.BLOCK,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAEvB,IAAM,oBAAoB;AAE1B,IAAM,0CAA0C;AAEhD,IAAM,4BAA4B;AAElC,IAAM,mCAAmC;AAGzC,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAE1B,IAAM,sBAAsB;AAE5B,IAAM,0BAA0B;AAMhC,IAAM,gCAAiD;AAAA,EAC1D,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,+BAAgD;AAAA,EACzD,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,yBAA0C;AAAA,EACnD,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,0BAA2C;AAAA,EACpD,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAClB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/constants.ts"],"sourcesContent":["import { FieldDataType } from \"./types/index.types\";\n\nexport const numericInputRegex = /^-?\\d*(\\.\\d*)?([eE][-+]?\\d*)?$/;\n\nexport const VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY = \"data-cslp-field-type\";\n\nexport const VISUAL_BUILDER_CHANNEL_ID = \"visual-builder\";\n\nexport const LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX = 2;\n\n// Minimum distance from top edge to prevent toolbar from being hidden\nexport const TOP_EDGE_BUFFER = 42;\nexport const RIGHT_EDGE_BUFFER = 180;\n\nexport const TOOLBAR_EDGE_BUFFER = 8;\n\nexport const DATA_CSLP_ATTR_SELECTOR = \"data-cslp\";\n\n/**\n * The field that can be directly modified using contenteditable=true.\n * This includes all text fields like title and numbers.\n */\nexport const ALLOWED_INLINE_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.SINGLELINE,\n FieldDataType.MULTILINE,\n FieldDataType.NUMBER,\n];\n\nexport const ALLOWED_MODAL_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.HTML_RTE,\n FieldDataType.MARKDOWN_RTE,\n FieldDataType.JSON_RTE,\n FieldDataType.CUSTOM_FIELD,\n FieldDataType.LINK,\n FieldDataType.ISODATE,\n FieldDataType.URL,\n];\n\nexport const ALLOWED_REPLACE_FIELDS: FieldDataType[] = [\n FieldDataType.REFERENCE,\n FieldDataType.FILE,\n];\n\nexport const DEFAULT_MULTIPLE_FIELDS: FieldDataType[] = [\n FieldDataType.GLOBAL_FIELD,\n FieldDataType.GROUP,\n FieldDataType.BLOCK,\n];\n\nexport const unicodeNonBreakingSpace = \"\\u00A0\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAEvB,IAAM,oBAAoB;AAE1B,IAAM,0CAA0C;AAEhD,IAAM,4BAA4B;AAElC,IAAM,mCAAmC;AAGzC,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAE1B,IAAM,sBAAsB;AAE5B,IAAM,0BAA0B;AAMhC,IAAM,gCAAiD;AAAA,EAC1D,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,+BAAgD;AAAA,EACzD,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,yBAA0C;AAAA,EACnD,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,0BAA2C;AAAA,EACpD,2BAAc;AAAA,EACd,2BAAc;AAAA,EACd,2BAAc;AAClB;AAEO,IAAM,0BAA0B;","names":[]}
@@ -17,5 +17,6 @@ declare const ALLOWED_INLINE_EDITABLE_FIELD: FieldDataType[];
17
17
  declare const ALLOWED_MODAL_EDITABLE_FIELD: FieldDataType[];
18
18
  declare const ALLOWED_REPLACE_FIELDS: FieldDataType[];
19
19
  declare const DEFAULT_MULTIPLE_FIELDS: FieldDataType[];
20
+ declare const unicodeNonBreakingSpace = "\u00A0";
20
21
 
21
- export { ALLOWED_INLINE_EDITABLE_FIELD, ALLOWED_MODAL_EDITABLE_FIELD, ALLOWED_REPLACE_FIELDS, DATA_CSLP_ATTR_SELECTOR, DEFAULT_MULTIPLE_FIELDS, LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX, RIGHT_EDGE_BUFFER, TOOLBAR_EDGE_BUFFER, TOP_EDGE_BUFFER, VISUAL_BUILDER_CHANNEL_ID, VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY, numericInputRegex };
22
+ export { ALLOWED_INLINE_EDITABLE_FIELD, ALLOWED_MODAL_EDITABLE_FIELD, ALLOWED_REPLACE_FIELDS, DATA_CSLP_ATTR_SELECTOR, DEFAULT_MULTIPLE_FIELDS, LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX, RIGHT_EDGE_BUFFER, TOOLBAR_EDGE_BUFFER, TOP_EDGE_BUFFER, VISUAL_BUILDER_CHANNEL_ID, VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY, numericInputRegex, unicodeNonBreakingSpace };
@@ -17,5 +17,6 @@ declare const ALLOWED_INLINE_EDITABLE_FIELD: FieldDataType[];
17
17
  declare const ALLOWED_MODAL_EDITABLE_FIELD: FieldDataType[];
18
18
  declare const ALLOWED_REPLACE_FIELDS: FieldDataType[];
19
19
  declare const DEFAULT_MULTIPLE_FIELDS: FieldDataType[];
20
+ declare const unicodeNonBreakingSpace = "\u00A0";
20
21
 
21
- export { ALLOWED_INLINE_EDITABLE_FIELD, ALLOWED_MODAL_EDITABLE_FIELD, ALLOWED_REPLACE_FIELDS, DATA_CSLP_ATTR_SELECTOR, DEFAULT_MULTIPLE_FIELDS, LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX, RIGHT_EDGE_BUFFER, TOOLBAR_EDGE_BUFFER, TOP_EDGE_BUFFER, VISUAL_BUILDER_CHANNEL_ID, VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY, numericInputRegex };
22
+ export { ALLOWED_INLINE_EDITABLE_FIELD, ALLOWED_MODAL_EDITABLE_FIELD, ALLOWED_REPLACE_FIELDS, DATA_CSLP_ATTR_SELECTOR, DEFAULT_MULTIPLE_FIELDS, LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX, RIGHT_EDGE_BUFFER, TOOLBAR_EDGE_BUFFER, TOP_EDGE_BUFFER, VISUAL_BUILDER_CHANNEL_ID, VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY, numericInputRegex, unicodeNonBreakingSpace };
@@ -33,6 +33,7 @@ var DEFAULT_MULTIPLE_FIELDS = [
33
33
  FieldDataType.GROUP,
34
34
  FieldDataType.BLOCK
35
35
  ];
36
+ var unicodeNonBreakingSpace = "\xA0";
36
37
  export {
37
38
  ALLOWED_INLINE_EDITABLE_FIELD,
38
39
  ALLOWED_MODAL_EDITABLE_FIELD,
@@ -45,6 +46,7 @@ export {
45
46
  TOP_EDGE_BUFFER,
46
47
  VISUAL_BUILDER_CHANNEL_ID,
47
48
  VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
48
- numericInputRegex
49
+ numericInputRegex,
50
+ unicodeNonBreakingSpace
49
51
  };
50
52
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/constants.ts"],"sourcesContent":["import { FieldDataType } from \"./types/index.types\";\n\nexport const numericInputRegex = /^-?\\d*(\\.\\d*)?([eE][-+]?\\d*)?$/;\n\nexport const VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY = \"data-cslp-field-type\";\n\nexport const VISUAL_BUILDER_CHANNEL_ID = \"visual-builder\";\n\nexport const LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX = 2;\n\n// Minimum distance from top edge to prevent toolbar from being hidden\nexport const TOP_EDGE_BUFFER = 42;\nexport const RIGHT_EDGE_BUFFER = 180;\n\nexport const TOOLBAR_EDGE_BUFFER = 8;\n\nexport const DATA_CSLP_ATTR_SELECTOR = \"data-cslp\";\n\n/**\n * The field that can be directly modified using contenteditable=true.\n * This includes all text fields like title and numbers.\n */\nexport const ALLOWED_INLINE_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.SINGLELINE,\n FieldDataType.MULTILINE,\n FieldDataType.NUMBER,\n];\n\nexport const ALLOWED_MODAL_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.HTML_RTE,\n FieldDataType.MARKDOWN_RTE,\n FieldDataType.JSON_RTE,\n FieldDataType.CUSTOM_FIELD,\n FieldDataType.LINK,\n FieldDataType.ISODATE,\n FieldDataType.URL,\n];\n\nexport const ALLOWED_REPLACE_FIELDS: FieldDataType[] = [\n FieldDataType.REFERENCE,\n FieldDataType.FILE,\n];\n\nexport const DEFAULT_MULTIPLE_FIELDS: FieldDataType[] = [\n FieldDataType.GLOBAL_FIELD,\n FieldDataType.GROUP,\n FieldDataType.BLOCK,\n];\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAEvB,IAAM,oBAAoB;AAE1B,IAAM,0CAA0C;AAEhD,IAAM,4BAA4B;AAElC,IAAM,mCAAmC;AAGzC,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAE1B,IAAM,sBAAsB;AAE5B,IAAM,0BAA0B;AAMhC,IAAM,gCAAiD;AAAA,EAC1D,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,+BAAgD;AAAA,EACzD,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,yBAA0C;AAAA,EACnD,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,0BAA2C;AAAA,EACpD,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAClB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/constants.ts"],"sourcesContent":["import { FieldDataType } from \"./types/index.types\";\n\nexport const numericInputRegex = /^-?\\d*(\\.\\d*)?([eE][-+]?\\d*)?$/;\n\nexport const VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY = \"data-cslp-field-type\";\n\nexport const VISUAL_BUILDER_CHANNEL_ID = \"visual-builder\";\n\nexport const LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX = 2;\n\n// Minimum distance from top edge to prevent toolbar from being hidden\nexport const TOP_EDGE_BUFFER = 42;\nexport const RIGHT_EDGE_BUFFER = 180;\n\nexport const TOOLBAR_EDGE_BUFFER = 8;\n\nexport const DATA_CSLP_ATTR_SELECTOR = \"data-cslp\";\n\n/**\n * The field that can be directly modified using contenteditable=true.\n * This includes all text fields like title and numbers.\n */\nexport const ALLOWED_INLINE_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.SINGLELINE,\n FieldDataType.MULTILINE,\n FieldDataType.NUMBER,\n];\n\nexport const ALLOWED_MODAL_EDITABLE_FIELD: FieldDataType[] = [\n FieldDataType.HTML_RTE,\n FieldDataType.MARKDOWN_RTE,\n FieldDataType.JSON_RTE,\n FieldDataType.CUSTOM_FIELD,\n FieldDataType.LINK,\n FieldDataType.ISODATE,\n FieldDataType.URL,\n];\n\nexport const ALLOWED_REPLACE_FIELDS: FieldDataType[] = [\n FieldDataType.REFERENCE,\n FieldDataType.FILE,\n];\n\nexport const DEFAULT_MULTIPLE_FIELDS: FieldDataType[] = [\n FieldDataType.GLOBAL_FIELD,\n FieldDataType.GROUP,\n FieldDataType.BLOCK,\n];\n\nexport const unicodeNonBreakingSpace = \"\\u00A0\";\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAEvB,IAAM,oBAAoB;AAE1B,IAAM,0CAA0C;AAEhD,IAAM,4BAA4B;AAElC,IAAM,mCAAmC;AAGzC,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAE1B,IAAM,sBAAsB;AAE5B,IAAM,0BAA0B;AAMhC,IAAM,gCAAiD;AAAA,EAC1D,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,+BAAgD;AAAA,EACzD,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,yBAA0C;AAAA,EACnD,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,0BAA2C;AAAA,EACpD,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAClB;AAEO,IAAM,0BAA0B;","names":[]}
@@ -46,14 +46,29 @@ function getCsDataOfElement(event) {
46
46
  fieldMetadata
47
47
  };
48
48
  }
49
+ function getPrefix(cslp) {
50
+ let prefix;
51
+ if (cslp.startsWith("v2:")) {
52
+ const variantPrefix = cslp.split(":")[1];
53
+ const content_type_uid = variantPrefix.split(".")[0];
54
+ const euid = variantPrefix.split(".")[1].split("_")[0];
55
+ const locale = variantPrefix.split(".")[2];
56
+ prefix = `${content_type_uid}.${euid}.${locale}`;
57
+ } else {
58
+ prefix = cslp;
59
+ }
60
+ return prefix.split(".").slice(0, 3).join(".");
61
+ }
49
62
  function getDOMEditStack(ele) {
50
63
  var _a;
51
64
  const cslpSet = [];
52
65
  let curr = ele.closest(`[${import_constants.DATA_CSLP_ATTR_SELECTOR}]`);
53
66
  while (curr) {
54
67
  const cslp = curr.getAttribute(import_constants.DATA_CSLP_ATTR_SELECTOR);
55
- const entryPrefix = cslp.split(".").slice(0, 3).join(".");
56
- const hasSamePrevPrefix = (cslpSet.at(0) || "").startsWith(entryPrefix);
68
+ const entryPrefix = getPrefix(cslp);
69
+ const hasSamePrevPrefix = getPrefix(cslpSet.at(0) || "").startsWith(
70
+ entryPrefix
71
+ );
57
72
  if (!hasSamePrevPrefix) {
58
73
  cslpSet.unshift(cslp);
59
74
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/getCsDataOfElement.ts"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"./constants\";\n\n/**\n * Returns the CSLP data of the closest ancestor element with a `data-cslp` attribute\n * to the target element of a mouse event.\n * @param event - The mouse event.\n * @returns The CSLP data of the closest ancestor element with a `data-cslp` attribute,\n * along with metadata and schema information for the corresponding field.\n */\nexport function getCsDataOfElement(\n event: MouseEvent\n): VisualBuilderCslpEventDetails | undefined {\n const targetElement = event.target as HTMLElement;\n if (!targetElement) {\n return;\n }\n const editableElement = targetElement.closest(\"[data-cslp]\");\n\n if (!editableElement) {\n return;\n }\n const cslpData = editableElement.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n return {\n editableElement: editableElement,\n cslpData,\n fieldMetadata,\n };\n}\n\nexport function getDOMEditStack(ele: Element): CslpData[] {\n const cslpSet: string[] = [];\n let curr: any = ele.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n while (curr) {\n const cslp = curr.getAttribute(DATA_CSLP_ATTR_SELECTOR)!;\n const entryPrefix = cslp.split(\".\").slice(0, 3).join(\".\");\n const hasSamePrevPrefix = (cslpSet.at(0) || \"\").startsWith(entryPrefix);\n if (!hasSamePrevPrefix) {\n cslpSet.unshift(cslp);\n }\n curr = curr.parentElement?.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n }\n return cslpSet.map((cslp) => extractDetailsFromCslp(cslp));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAAuC;AACvC,uBAAwC;AASjC,SAAS,mBACZ,OACyC;AACzC,QAAM,gBAAgB,MAAM;AAC5B,MAAI,CAAC,eAAe;AAChB;AAAA,EACJ;AACA,QAAM,kBAAkB,cAAc,QAAQ,aAAa;AAE3D,MAAI,CAAC,iBAAiB;AAClB;AAAA,EACJ;AACA,QAAM,WAAW,gBAAgB,aAAa,WAAW;AACzD,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AACA,QAAM,oBAAgB,wCAAuB,QAAQ;AAErD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEO,SAAS,gBAAgB,KAA0B;AArC1D;AAsCI,QAAM,UAAoB,CAAC;AAC3B,MAAI,OAAY,IAAI,QAAQ,IAAI,wCAAuB,GAAG;AAC1D,SAAO,MAAM;AACT,UAAM,OAAO,KAAK,aAAa,wCAAuB;AACtD,UAAM,cAAc,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AACxD,UAAM,qBAAqB,QAAQ,GAAG,CAAC,KAAK,IAAI,WAAW,WAAW;AACtE,QAAI,CAAC,mBAAmB;AACpB,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,YAAO,UAAK,kBAAL,mBAAoB,QAAQ,IAAI,wCAAuB;AAAA,EAClE;AACA,SAAO,QAAQ,IAAI,CAAC,aAAS,wCAAuB,IAAI,CAAC;AAC7D;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getCsDataOfElement.ts"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"./constants\";\n\n/**\n * Returns the CSLP data of the closest ancestor element with a `data-cslp` attribute\n * to the target element of a mouse event.\n * @param event - The mouse event.\n * @returns The CSLP data of the closest ancestor element with a `data-cslp` attribute,\n * along with metadata and schema information for the corresponding field.\n */\nexport function getCsDataOfElement(\n event: MouseEvent\n): VisualBuilderCslpEventDetails | undefined {\n const targetElement = event.target as HTMLElement;\n if (!targetElement) {\n return;\n }\n const editableElement = targetElement.closest(\"[data-cslp]\");\n\n if (!editableElement) {\n return;\n }\n const cslpData = editableElement.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n return {\n editableElement: editableElement,\n cslpData,\n fieldMetadata,\n };\n}\n\nfunction getPrefix(cslp: string): string {\n let prefix;\n if (cslp.startsWith(\"v2:\")) {\n // v2: prefix is added to cslp in variant cases\n const variantPrefix = cslp.split(\":\")[1];\n const content_type_uid = variantPrefix.split(\".\")[0];\n const euid = variantPrefix.split(\".\")[1].split(\"_\")[0]; //page.blt7a1e5b297a97bd12_cs8171e34d92207334.en-us\n const locale = variantPrefix.split(\".\")[2];\n prefix = `${content_type_uid}.${euid}.${locale}`;\n } else {\n prefix = cslp;\n }\n return prefix.split(\".\").slice(0, 3).join(\".\");\n}\n\nexport function getDOMEditStack(ele: Element): CslpData[] {\n const cslpSet: string[] = [];\n let curr: any = ele.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n while (curr) {\n const cslp = curr.getAttribute(DATA_CSLP_ATTR_SELECTOR)!;\n const entryPrefix = getPrefix(cslp);\n const hasSamePrevPrefix = getPrefix(cslpSet.at(0) || \"\").startsWith(\n entryPrefix\n );\n if (!hasSamePrevPrefix) {\n cslpSet.unshift(cslp);\n }\n curr = curr.parentElement?.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n }\n return cslpSet.map((cslp) => extractDetailsFromCslp(cslp));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAAuC;AACvC,uBAAwC;AASjC,SAAS,mBACZ,OACyC;AACzC,QAAM,gBAAgB,MAAM;AAC5B,MAAI,CAAC,eAAe;AAChB;AAAA,EACJ;AACA,QAAM,kBAAkB,cAAc,QAAQ,aAAa;AAE3D,MAAI,CAAC,iBAAiB;AAClB;AAAA,EACJ;AACA,QAAM,WAAW,gBAAgB,aAAa,WAAW;AACzD,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AACA,QAAM,oBAAgB,wCAAuB,QAAQ;AAErD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,SAAS,UAAU,MAAsB;AACrC,MAAI;AACJ,MAAI,KAAK,WAAW,KAAK,GAAG;AAExB,UAAM,gBAAgB,KAAK,MAAM,GAAG,EAAE,CAAC;AACvC,UAAM,mBAAmB,cAAc,MAAM,GAAG,EAAE,CAAC;AACnD,UAAM,OAAO,cAAc,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACrD,UAAM,SAAS,cAAc,MAAM,GAAG,EAAE,CAAC;AACzC,aAAS,GAAG,gBAAgB,IAAI,IAAI,IAAI,MAAM;AAAA,EAClD,OAAO;AACH,aAAS;AAAA,EACb;AACA,SAAO,OAAO,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AACjD;AAEO,SAAS,gBAAgB,KAA0B;AApD1D;AAqDI,QAAM,UAAoB,CAAC;AAC3B,MAAI,OAAY,IAAI,QAAQ,IAAI,wCAAuB,GAAG;AAC1D,SAAO,MAAM;AACT,UAAM,OAAO,KAAK,aAAa,wCAAuB;AACtD,UAAM,cAAc,UAAU,IAAI;AAClC,UAAM,oBAAoB,UAAU,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;AAAA,MACrD;AAAA,IACJ;AACA,QAAI,CAAC,mBAAmB;AACpB,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,YAAO,UAAK,kBAAL,mBAAoB,QAAQ,IAAI,wCAAuB;AAAA,EAClE;AACA,SAAO,QAAQ,IAAI,CAAC,aAAS,wCAAuB,IAAI,CAAC;AAC7D;","names":[]}
@@ -23,14 +23,29 @@ function getCsDataOfElement(event) {
23
23
  fieldMetadata
24
24
  };
25
25
  }
26
+ function getPrefix(cslp) {
27
+ let prefix;
28
+ if (cslp.startsWith("v2:")) {
29
+ const variantPrefix = cslp.split(":")[1];
30
+ const content_type_uid = variantPrefix.split(".")[0];
31
+ const euid = variantPrefix.split(".")[1].split("_")[0];
32
+ const locale = variantPrefix.split(".")[2];
33
+ prefix = `${content_type_uid}.${euid}.${locale}`;
34
+ } else {
35
+ prefix = cslp;
36
+ }
37
+ return prefix.split(".").slice(0, 3).join(".");
38
+ }
26
39
  function getDOMEditStack(ele) {
27
40
  var _a;
28
41
  const cslpSet = [];
29
42
  let curr = ele.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);
30
43
  while (curr) {
31
44
  const cslp = curr.getAttribute(DATA_CSLP_ATTR_SELECTOR);
32
- const entryPrefix = cslp.split(".").slice(0, 3).join(".");
33
- const hasSamePrevPrefix = (cslpSet.at(0) || "").startsWith(entryPrefix);
45
+ const entryPrefix = getPrefix(cslp);
46
+ const hasSamePrevPrefix = getPrefix(cslpSet.at(0) || "").startsWith(
47
+ entryPrefix
48
+ );
34
49
  if (!hasSamePrevPrefix) {
35
50
  cslpSet.unshift(cslp);
36
51
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/getCsDataOfElement.ts"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"./constants\";\n\n/**\n * Returns the CSLP data of the closest ancestor element with a `data-cslp` attribute\n * to the target element of a mouse event.\n * @param event - The mouse event.\n * @returns The CSLP data of the closest ancestor element with a `data-cslp` attribute,\n * along with metadata and schema information for the corresponding field.\n */\nexport function getCsDataOfElement(\n event: MouseEvent\n): VisualBuilderCslpEventDetails | undefined {\n const targetElement = event.target as HTMLElement;\n if (!targetElement) {\n return;\n }\n const editableElement = targetElement.closest(\"[data-cslp]\");\n\n if (!editableElement) {\n return;\n }\n const cslpData = editableElement.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n return {\n editableElement: editableElement,\n cslpData,\n fieldMetadata,\n };\n}\n\nexport function getDOMEditStack(ele: Element): CslpData[] {\n const cslpSet: string[] = [];\n let curr: any = ele.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n while (curr) {\n const cslp = curr.getAttribute(DATA_CSLP_ATTR_SELECTOR)!;\n const entryPrefix = cslp.split(\".\").slice(0, 3).join(\".\");\n const hasSamePrevPrefix = (cslpSet.at(0) || \"\").startsWith(entryPrefix);\n if (!hasSamePrevPrefix) {\n cslpSet.unshift(cslp);\n }\n curr = curr.parentElement?.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n }\n return cslpSet.map((cslp) => extractDetailsFromCslp(cslp));\n}\n"],"mappings":";;;AAEA,SAAS,8BAA8B;AACvC,SAAS,+BAA+B;AASjC,SAAS,mBACZ,OACyC;AACzC,QAAM,gBAAgB,MAAM;AAC5B,MAAI,CAAC,eAAe;AAChB;AAAA,EACJ;AACA,QAAM,kBAAkB,cAAc,QAAQ,aAAa;AAE3D,MAAI,CAAC,iBAAiB;AAClB;AAAA,EACJ;AACA,QAAM,WAAW,gBAAgB,aAAa,WAAW;AACzD,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AACA,QAAM,gBAAgB,uBAAuB,QAAQ;AAErD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEO,SAAS,gBAAgB,KAA0B;AArC1D;AAsCI,QAAM,UAAoB,CAAC;AAC3B,MAAI,OAAY,IAAI,QAAQ,IAAI,uBAAuB,GAAG;AAC1D,SAAO,MAAM;AACT,UAAM,OAAO,KAAK,aAAa,uBAAuB;AACtD,UAAM,cAAc,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AACxD,UAAM,qBAAqB,QAAQ,GAAG,CAAC,KAAK,IAAI,WAAW,WAAW;AACtE,QAAI,CAAC,mBAAmB;AACpB,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,YAAO,UAAK,kBAAL,mBAAoB,QAAQ,IAAI,uBAAuB;AAAA,EAClE;AACA,SAAO,QAAQ,IAAI,CAAC,SAAS,uBAAuB,IAAI,CAAC;AAC7D;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getCsDataOfElement.ts"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { extractDetailsFromCslp } from \"../../cslp/cslpdata\";\nimport { DATA_CSLP_ATTR_SELECTOR } from \"./constants\";\n\n/**\n * Returns the CSLP data of the closest ancestor element with a `data-cslp` attribute\n * to the target element of a mouse event.\n * @param event - The mouse event.\n * @returns The CSLP data of the closest ancestor element with a `data-cslp` attribute,\n * along with metadata and schema information for the corresponding field.\n */\nexport function getCsDataOfElement(\n event: MouseEvent\n): VisualBuilderCslpEventDetails | undefined {\n const targetElement = event.target as HTMLElement;\n if (!targetElement) {\n return;\n }\n const editableElement = targetElement.closest(\"[data-cslp]\");\n\n if (!editableElement) {\n return;\n }\n const cslpData = editableElement.getAttribute(\"data-cslp\");\n if (!cslpData) {\n return;\n }\n const fieldMetadata = extractDetailsFromCslp(cslpData);\n\n return {\n editableElement: editableElement,\n cslpData,\n fieldMetadata,\n };\n}\n\nfunction getPrefix(cslp: string): string {\n let prefix;\n if (cslp.startsWith(\"v2:\")) {\n // v2: prefix is added to cslp in variant cases\n const variantPrefix = cslp.split(\":\")[1];\n const content_type_uid = variantPrefix.split(\".\")[0];\n const euid = variantPrefix.split(\".\")[1].split(\"_\")[0]; //page.blt7a1e5b297a97bd12_cs8171e34d92207334.en-us\n const locale = variantPrefix.split(\".\")[2];\n prefix = `${content_type_uid}.${euid}.${locale}`;\n } else {\n prefix = cslp;\n }\n return prefix.split(\".\").slice(0, 3).join(\".\");\n}\n\nexport function getDOMEditStack(ele: Element): CslpData[] {\n const cslpSet: string[] = [];\n let curr: any = ele.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n while (curr) {\n const cslp = curr.getAttribute(DATA_CSLP_ATTR_SELECTOR)!;\n const entryPrefix = getPrefix(cslp);\n const hasSamePrevPrefix = getPrefix(cslpSet.at(0) || \"\").startsWith(\n entryPrefix\n );\n if (!hasSamePrevPrefix) {\n cslpSet.unshift(cslp);\n }\n curr = curr.parentElement?.closest(`[${DATA_CSLP_ATTR_SELECTOR}]`);\n }\n return cslpSet.map((cslp) => extractDetailsFromCslp(cslp));\n}\n"],"mappings":";;;AAEA,SAAS,8BAA8B;AACvC,SAAS,+BAA+B;AASjC,SAAS,mBACZ,OACyC;AACzC,QAAM,gBAAgB,MAAM;AAC5B,MAAI,CAAC,eAAe;AAChB;AAAA,EACJ;AACA,QAAM,kBAAkB,cAAc,QAAQ,aAAa;AAE3D,MAAI,CAAC,iBAAiB;AAClB;AAAA,EACJ;AACA,QAAM,WAAW,gBAAgB,aAAa,WAAW;AACzD,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AACA,QAAM,gBAAgB,uBAAuB,QAAQ;AAErD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,SAAS,UAAU,MAAsB;AACrC,MAAI;AACJ,MAAI,KAAK,WAAW,KAAK,GAAG;AAExB,UAAM,gBAAgB,KAAK,MAAM,GAAG,EAAE,CAAC;AACvC,UAAM,mBAAmB,cAAc,MAAM,GAAG,EAAE,CAAC;AACnD,UAAM,OAAO,cAAc,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACrD,UAAM,SAAS,cAAc,MAAM,GAAG,EAAE,CAAC;AACzC,aAAS,GAAG,gBAAgB,IAAI,IAAI,IAAI,MAAM;AAAA,EAClD,OAAO;AACH,aAAS;AAAA,EACb;AACA,SAAO,OAAO,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AACjD;AAEO,SAAS,gBAAgB,KAA0B;AApD1D;AAqDI,QAAM,UAAoB,CAAC;AAC3B,MAAI,OAAY,IAAI,QAAQ,IAAI,uBAAuB,GAAG;AAC1D,SAAO,MAAM;AACT,UAAM,OAAO,KAAK,aAAa,uBAAuB;AACtD,UAAM,cAAc,UAAU,IAAI;AAClC,UAAM,oBAAoB,UAAU,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;AAAA,MACrD;AAAA,IACJ;AACA,QAAI,CAAC,mBAAmB;AACpB,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,YAAO,UAAK,kBAAL,mBAAoB,QAAQ,IAAI,uBAAuB;AAAA,EAClE;AACA,SAAO,QAAQ,IAAI,CAAC,SAAS,uBAAuB,IAAI,CAAC;AAC7D;","names":[]}
@@ -25,28 +25,29 @@ __export(getFieldType_exports, {
25
25
  module.exports = __toCommonJS(getFieldType_exports);
26
26
  var import_types = require("./types/index.types.cjs");
27
27
  function getFieldType(fieldSchema) {
28
+ var _a, _b, _c, _d, _e;
28
29
  if (!fieldSchema) return;
29
30
  if (Object.hasOwnProperty.call(fieldSchema, "extension_uid")) {
30
31
  return import_types.FieldDataType.CUSTOM_FIELD;
31
32
  }
32
33
  switch (fieldSchema.data_type) {
33
34
  case "text": {
34
- if (fieldSchema == null ? void 0 : fieldSchema.field_metadata.multiline) {
35
+ if ((_a = fieldSchema.field_metadata) == null ? void 0 : _a.multiline) {
35
36
  return import_types.FieldDataType.MULTILINE;
36
- } else if (fieldSchema == null ? void 0 : fieldSchema.field_metadata.allow_rich_text) {
37
+ } else if ((_b = fieldSchema.field_metadata) == null ? void 0 : _b.allow_rich_text) {
37
38
  return import_types.FieldDataType.HTML_RTE;
38
- } else if (fieldSchema == null ? void 0 : fieldSchema.field_metadata.markdown) {
39
+ } else if ((_c = fieldSchema.field_metadata) == null ? void 0 : _c.markdown) {
39
40
  return import_types.FieldDataType.MARKDOWN_RTE;
40
41
  } else if (fieldSchema.enum) {
41
42
  return import_types.FieldDataType.SELECT;
42
- } else if (fieldSchema.uid === "url" && fieldSchema.field_metadata._default) {
43
+ } else if (fieldSchema.uid === "url" && ((_d = fieldSchema.field_metadata) == null ? void 0 : _d._default)) {
43
44
  return import_types.FieldDataType.URL;
44
45
  } else {
45
46
  return import_types.FieldDataType.SINGLELINE;
46
47
  }
47
48
  }
48
49
  case "json": {
49
- if (fieldSchema.field_metadata.allow_json_rte) {
50
+ if ((_e = fieldSchema.field_metadata) == null ? void 0 : _e.allow_json_rte) {
50
51
  return import_types.FieldDataType.JSON_RTE;
51
52
  }
52
53
  break;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/getFieldType.ts"],"sourcesContent":["// @ts-nocheck\nimport { ISchemaFieldMap, FieldDataType } from \"./types/index.types\";\n\nexport function getFieldType(fieldSchema: ISchemaFieldMap): FieldDataType {\n if(!fieldSchema) return;\n if (Object.hasOwnProperty.call(fieldSchema, \"extension_uid\")) {\n return FieldDataType.CUSTOM_FIELD;\n }\n\n switch (fieldSchema.data_type) {\n case \"text\": {\n if (fieldSchema?.field_metadata.multiline) {\n return FieldDataType.MULTILINE;\n } else if (fieldSchema?.field_metadata.allow_rich_text) {\n return FieldDataType.HTML_RTE;\n } else if (fieldSchema?.field_metadata.markdown) {\n return FieldDataType.MARKDOWN_RTE;\n } else if (fieldSchema.enum) {\n return FieldDataType.SELECT;\n } else if (\n fieldSchema.uid === \"url\" &&\n fieldSchema.field_metadata._default\n ) {\n return FieldDataType.URL;\n } else {\n return FieldDataType.SINGLELINE;\n }\n }\n case \"json\": {\n if (fieldSchema.field_metadata.allow_json_rte) {\n return FieldDataType.JSON_RTE;\n }\n break;\n }\n\n case \"blocks\": {\n return \"modular_block\";\n }\n case \"link\":\n case \"isodate\":\n case \"boolean\":\n case \"block\":\n case \"number\":\n case \"reference\":\n case \"group\":\n case \"experience_container\":\n case \"file\":\n case \"taxonomy\":\n case \"global_field\": {\n return FieldDataType[fieldSchema.data_type.toUpperCase()];\n }\n }\n\n return \"\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA+C;AAExC,SAAS,aAAa,aAA6C;AACtE,MAAG,CAAC,YAAa;AACjB,MAAI,OAAO,eAAe,KAAK,aAAa,eAAe,GAAG;AAC1D,WAAO,2BAAc;AAAA,EACzB;AAEA,UAAQ,YAAY,WAAW;AAAA,IAC3B,KAAK,QAAQ;AACT,UAAI,2CAAa,eAAe,WAAW;AACvC,eAAO,2BAAc;AAAA,MACzB,WAAW,2CAAa,eAAe,iBAAiB;AACpD,eAAO,2BAAc;AAAA,MACzB,WAAW,2CAAa,eAAe,UAAU;AAC7C,eAAO,2BAAc;AAAA,MACzB,WAAW,YAAY,MAAM;AACzB,eAAO,2BAAc;AAAA,MACzB,WACI,YAAY,QAAQ,SACpB,YAAY,eAAe,UAC7B;AACE,eAAO,2BAAc;AAAA,MACzB,OAAO;AACH,eAAO,2BAAc;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ;AACT,UAAI,YAAY,eAAe,gBAAgB;AAC3C,eAAO,2BAAc;AAAA,MACzB;AACA;AAAA,IACJ;AAAA,IAEA,KAAK,UAAU;AACX,aAAO;AAAA,IACX;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,gBAAgB;AACjB,aAAO,2BAAc,YAAY,UAAU,YAAY,CAAC;AAAA,IAC5D;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getFieldType.ts"],"sourcesContent":["// @ts-nocheck\nimport { ISchemaFieldMap, FieldDataType } from \"./types/index.types\";\n\nexport function getFieldType(fieldSchema: ISchemaFieldMap): FieldDataType {\n if (!fieldSchema) return;\n if (Object.hasOwnProperty.call(fieldSchema, \"extension_uid\")) {\n return FieldDataType.CUSTOM_FIELD;\n }\n\n switch (fieldSchema.data_type) {\n case \"text\": {\n if (fieldSchema.field_metadata?.multiline) {\n return FieldDataType.MULTILINE;\n } else if (fieldSchema.field_metadata?.allow_rich_text) {\n return FieldDataType.HTML_RTE;\n } else if (fieldSchema.field_metadata?.markdown) {\n return FieldDataType.MARKDOWN_RTE;\n } else if (fieldSchema.enum) {\n return FieldDataType.SELECT;\n } else if (\n fieldSchema.uid === \"url\" &&\n fieldSchema.field_metadata?._default\n ) {\n return FieldDataType.URL;\n } else {\n return FieldDataType.SINGLELINE;\n }\n }\n case \"json\": {\n if (fieldSchema.field_metadata?.allow_json_rte) {\n return FieldDataType.JSON_RTE;\n }\n break;\n }\n\n case \"blocks\": {\n return \"modular_block\";\n }\n case \"link\":\n case \"isodate\":\n case \"boolean\":\n case \"block\":\n case \"number\":\n case \"reference\":\n case \"group\":\n case \"experience_container\":\n case \"file\":\n case \"taxonomy\":\n case \"global_field\": {\n return FieldDataType[fieldSchema.data_type.toUpperCase()];\n }\n }\n\n return \"\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA+C;AAExC,SAAS,aAAa,aAA6C;AAH1E;AAII,MAAI,CAAC,YAAa;AAClB,MAAI,OAAO,eAAe,KAAK,aAAa,eAAe,GAAG;AAC1D,WAAO,2BAAc;AAAA,EACzB;AAEA,UAAQ,YAAY,WAAW;AAAA,IAC3B,KAAK,QAAQ;AACT,WAAI,iBAAY,mBAAZ,mBAA4B,WAAW;AACvC,eAAO,2BAAc;AAAA,MACzB,YAAW,iBAAY,mBAAZ,mBAA4B,iBAAiB;AACpD,eAAO,2BAAc;AAAA,MACzB,YAAW,iBAAY,mBAAZ,mBAA4B,UAAU;AAC7C,eAAO,2BAAc;AAAA,MACzB,WAAW,YAAY,MAAM;AACzB,eAAO,2BAAc;AAAA,MACzB,WACI,YAAY,QAAQ,WACpB,iBAAY,mBAAZ,mBAA4B,WAC9B;AACE,eAAO,2BAAc;AAAA,MACzB,OAAO;AACH,eAAO,2BAAc;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ;AACT,WAAI,iBAAY,mBAAZ,mBAA4B,gBAAgB;AAC5C,eAAO,2BAAc;AAAA,MACzB;AACA;AAAA,IACJ;AAAA,IAEA,KAAK,UAAU;AACX,aAAO;AAAA,IACX;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,gBAAgB;AACjB,aAAO,2BAAc,YAAY,UAAU,YAAY,CAAC;AAAA,IAC5D;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
@@ -3,28 +3,29 @@ import "../../chunk-5WRI5ZAA.js";
3
3
  // src/visualBuilder/utils/getFieldType.ts
4
4
  import { FieldDataType } from "./types/index.types.js";
5
5
  function getFieldType(fieldSchema) {
6
+ var _a, _b, _c, _d, _e;
6
7
  if (!fieldSchema) return;
7
8
  if (Object.hasOwnProperty.call(fieldSchema, "extension_uid")) {
8
9
  return FieldDataType.CUSTOM_FIELD;
9
10
  }
10
11
  switch (fieldSchema.data_type) {
11
12
  case "text": {
12
- if (fieldSchema == null ? void 0 : fieldSchema.field_metadata.multiline) {
13
+ if ((_a = fieldSchema.field_metadata) == null ? void 0 : _a.multiline) {
13
14
  return FieldDataType.MULTILINE;
14
- } else if (fieldSchema == null ? void 0 : fieldSchema.field_metadata.allow_rich_text) {
15
+ } else if ((_b = fieldSchema.field_metadata) == null ? void 0 : _b.allow_rich_text) {
15
16
  return FieldDataType.HTML_RTE;
16
- } else if (fieldSchema == null ? void 0 : fieldSchema.field_metadata.markdown) {
17
+ } else if ((_c = fieldSchema.field_metadata) == null ? void 0 : _c.markdown) {
17
18
  return FieldDataType.MARKDOWN_RTE;
18
19
  } else if (fieldSchema.enum) {
19
20
  return FieldDataType.SELECT;
20
- } else if (fieldSchema.uid === "url" && fieldSchema.field_metadata._default) {
21
+ } else if (fieldSchema.uid === "url" && ((_d = fieldSchema.field_metadata) == null ? void 0 : _d._default)) {
21
22
  return FieldDataType.URL;
22
23
  } else {
23
24
  return FieldDataType.SINGLELINE;
24
25
  }
25
26
  }
26
27
  case "json": {
27
- if (fieldSchema.field_metadata.allow_json_rte) {
28
+ if ((_e = fieldSchema.field_metadata) == null ? void 0 : _e.allow_json_rte) {
28
29
  return FieldDataType.JSON_RTE;
29
30
  }
30
31
  break;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/getFieldType.ts"],"sourcesContent":["// @ts-nocheck\nimport { ISchemaFieldMap, FieldDataType } from \"./types/index.types\";\n\nexport function getFieldType(fieldSchema: ISchemaFieldMap): FieldDataType {\n if(!fieldSchema) return;\n if (Object.hasOwnProperty.call(fieldSchema, \"extension_uid\")) {\n return FieldDataType.CUSTOM_FIELD;\n }\n\n switch (fieldSchema.data_type) {\n case \"text\": {\n if (fieldSchema?.field_metadata.multiline) {\n return FieldDataType.MULTILINE;\n } else if (fieldSchema?.field_metadata.allow_rich_text) {\n return FieldDataType.HTML_RTE;\n } else if (fieldSchema?.field_metadata.markdown) {\n return FieldDataType.MARKDOWN_RTE;\n } else if (fieldSchema.enum) {\n return FieldDataType.SELECT;\n } else if (\n fieldSchema.uid === \"url\" &&\n fieldSchema.field_metadata._default\n ) {\n return FieldDataType.URL;\n } else {\n return FieldDataType.SINGLELINE;\n }\n }\n case \"json\": {\n if (fieldSchema.field_metadata.allow_json_rte) {\n return FieldDataType.JSON_RTE;\n }\n break;\n }\n\n case \"blocks\": {\n return \"modular_block\";\n }\n case \"link\":\n case \"isodate\":\n case \"boolean\":\n case \"block\":\n case \"number\":\n case \"reference\":\n case \"group\":\n case \"experience_container\":\n case \"file\":\n case \"taxonomy\":\n case \"global_field\": {\n return FieldDataType[fieldSchema.data_type.toUpperCase()];\n }\n }\n\n return \"\";\n}\n"],"mappings":";;;AACA,SAA0B,qBAAqB;AAExC,SAAS,aAAa,aAA6C;AACtE,MAAG,CAAC,YAAa;AACjB,MAAI,OAAO,eAAe,KAAK,aAAa,eAAe,GAAG;AAC1D,WAAO,cAAc;AAAA,EACzB;AAEA,UAAQ,YAAY,WAAW;AAAA,IAC3B,KAAK,QAAQ;AACT,UAAI,2CAAa,eAAe,WAAW;AACvC,eAAO,cAAc;AAAA,MACzB,WAAW,2CAAa,eAAe,iBAAiB;AACpD,eAAO,cAAc;AAAA,MACzB,WAAW,2CAAa,eAAe,UAAU;AAC7C,eAAO,cAAc;AAAA,MACzB,WAAW,YAAY,MAAM;AACzB,eAAO,cAAc;AAAA,MACzB,WACI,YAAY,QAAQ,SACpB,YAAY,eAAe,UAC7B;AACE,eAAO,cAAc;AAAA,MACzB,OAAO;AACH,eAAO,cAAc;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ;AACT,UAAI,YAAY,eAAe,gBAAgB;AAC3C,eAAO,cAAc;AAAA,MACzB;AACA;AAAA,IACJ;AAAA,IAEA,KAAK,UAAU;AACX,aAAO;AAAA,IACX;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,gBAAgB;AACjB,aAAO,cAAc,YAAY,UAAU,YAAY,CAAC;AAAA,IAC5D;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getFieldType.ts"],"sourcesContent":["// @ts-nocheck\nimport { ISchemaFieldMap, FieldDataType } from \"./types/index.types\";\n\nexport function getFieldType(fieldSchema: ISchemaFieldMap): FieldDataType {\n if (!fieldSchema) return;\n if (Object.hasOwnProperty.call(fieldSchema, \"extension_uid\")) {\n return FieldDataType.CUSTOM_FIELD;\n }\n\n switch (fieldSchema.data_type) {\n case \"text\": {\n if (fieldSchema.field_metadata?.multiline) {\n return FieldDataType.MULTILINE;\n } else if (fieldSchema.field_metadata?.allow_rich_text) {\n return FieldDataType.HTML_RTE;\n } else if (fieldSchema.field_metadata?.markdown) {\n return FieldDataType.MARKDOWN_RTE;\n } else if (fieldSchema.enum) {\n return FieldDataType.SELECT;\n } else if (\n fieldSchema.uid === \"url\" &&\n fieldSchema.field_metadata?._default\n ) {\n return FieldDataType.URL;\n } else {\n return FieldDataType.SINGLELINE;\n }\n }\n case \"json\": {\n if (fieldSchema.field_metadata?.allow_json_rte) {\n return FieldDataType.JSON_RTE;\n }\n break;\n }\n\n case \"blocks\": {\n return \"modular_block\";\n }\n case \"link\":\n case \"isodate\":\n case \"boolean\":\n case \"block\":\n case \"number\":\n case \"reference\":\n case \"group\":\n case \"experience_container\":\n case \"file\":\n case \"taxonomy\":\n case \"global_field\": {\n return FieldDataType[fieldSchema.data_type.toUpperCase()];\n }\n }\n\n return \"\";\n}\n"],"mappings":";;;AACA,SAA0B,qBAAqB;AAExC,SAAS,aAAa,aAA6C;AAH1E;AAII,MAAI,CAAC,YAAa;AAClB,MAAI,OAAO,eAAe,KAAK,aAAa,eAAe,GAAG;AAC1D,WAAO,cAAc;AAAA,EACzB;AAEA,UAAQ,YAAY,WAAW;AAAA,IAC3B,KAAK,QAAQ;AACT,WAAI,iBAAY,mBAAZ,mBAA4B,WAAW;AACvC,eAAO,cAAc;AAAA,MACzB,YAAW,iBAAY,mBAAZ,mBAA4B,iBAAiB;AACpD,eAAO,cAAc;AAAA,MACzB,YAAW,iBAAY,mBAAZ,mBAA4B,UAAU;AAC7C,eAAO,cAAc;AAAA,MACzB,WAAW,YAAY,MAAM;AACzB,eAAO,cAAc;AAAA,MACzB,WACI,YAAY,QAAQ,WACpB,iBAAY,mBAAZ,mBAA4B,WAC9B;AACE,eAAO,cAAc;AAAA,MACzB,OAAO;AACH,eAAO,cAAc;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ;AACT,WAAI,iBAAY,mBAAZ,mBAA4B,gBAAgB;AAC5C,eAAO,cAAc;AAAA,MACzB;AACA;AAAA,IACJ;AAAA,IAEA,KAAK,UAAU;AACX,aAAO;AAAA,IACX;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,gBAAgB;AACjB,aAAO,cAAc,YAAY,UAAU,YAAY,CAAC;AAAA,IAC5D;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
@@ -29,6 +29,7 @@ var import_generateOverlay = require("../generators/generateOverlay.cjs");
29
29
  var import_constants = require("./constants.cjs");
30
30
  var import_types = require("./types/index.types.cjs");
31
31
  var import_postMessage = require("./types/postMessage.types.cjs");
32
+ var import_insertSpaceAtCursor = require("./insertSpaceAtCursor.cjs");
32
33
  function handleFieldInput(e) {
33
34
  const event = e;
34
35
  const targetElement = event.target;
@@ -59,12 +60,21 @@ function handleFieldKeyDown(e) {
59
60
  const fieldType = targetElement.getAttribute(
60
61
  import_constants.VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
61
62
  );
63
+ if (targetElement.tagName === "BUTTON") {
64
+ handleKeyDownOnButton(event);
65
+ }
62
66
  if (fieldType === import_types.FieldDataType.NUMBER) {
63
67
  handleNumericFieldKeyDown(event);
64
68
  } else if (fieldType === import_types.FieldDataType.SINGLELINE) {
65
69
  handleSingleLineFieldKeyDown(event);
66
70
  }
67
71
  }
72
+ function handleKeyDownOnButton(e) {
73
+ if (e.code === "Space" && e.target) {
74
+ e.preventDefault();
75
+ (0, import_insertSpaceAtCursor.insertSpaceAtCursor)(e.target);
76
+ }
77
+ }
68
78
  function handleSingleLineFieldKeyDown(e) {
69
79
  if (e.code === "Enter") {
70
80
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (event.type === \"input\" && ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)) {\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if(!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n }) \n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error)\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (fieldType === FieldDataType.NUMBER) {\n handleNumericFieldKeyDown(event);\n } else if (fieldType === FieldDataType.SINGLELINE) {\n handleSingleLineFieldKeyDown(event);\n }\n}\n\nfunction handleSingleLineFieldKeyDown(e: KeyboardEvent) {\n if (e.code === \"Enter\") {\n e.preventDefault();\n }\n}\n\nfunction handleNumericFieldKeyDown(event: KeyboardEvent): void {\n const targetElement = event.target as HTMLElement;\n\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"Enter\",\n \"End\",\n \"Home\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n ];\n\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n allowedKeys.includes(event.code)\n ) {\n // Allow Ctrl, Cmd, Alt, and special keys\n return;\n }\n\n if (event.code.includes(\"Digit\")) {\n return;\n }\n\n const nonNumericAllowedCharacters = [\"-\", \".\", \"e\", \"E\"];\n\n if (!nonNumericAllowedCharacters.includes(event.key)) {\n event.preventDefault();\n return;\n }\n\n const selection = {\n startOffset: window.getSelection()?.getRangeAt(0).startOffset || 0,\n endOffset: window.getSelection()?.getRangeAt(0).endOffset || 0,\n };\n\n const existingInput = targetElement.textContent || \"\";\n const currentOutputArr = existingInput.split(\"\");\n currentOutputArr.splice(\n selection.startOffset,\n selection.endOffset - selection.startOffset,\n event.key\n );\n const currentInput = currentOutputArr.join(\"\");\n\n if (!numericInputRegex.test(currentInput)) {\n event.preventDefault();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AACzB,6BAA+B;AAC/B,uBAIO;AACP,mBAA8B;AAC9B,yBAA+C;AAExC,SAAS,iBAAiB,GAAgB;AAC7C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AACA,MAAI,MAAM,SAAS,WAAW,+CAA8B,SAAS,SAA0B,GAAG;AAC9F,uBAAmB;AAAA,EACvB;AACJ;AACA,IAAM,yBAAqB,2BAAS,MAAM;AACtC,MAAI;AACA,UAAM,yBAAyB,SAAS;AAAA,MACpC;AAAA,IACJ;AACA,QAAG,CAAC,uBAAwB;AAC5B,+CAAe;AAAA,MACX;AAAA,MACA,WAAW,kDAA+B;AAAA,IAC9C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD;AACJ,GAAG,GAAG;AAEC,SAAS,mBAAmB,GAAgB;AAC/C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,cAAc,2BAAc,QAAQ;AACpC,8BAA0B,KAAK;AAAA,EACnC,WAAW,cAAc,2BAAc,YAAY;AAC/C,iCAA6B,KAAK;AAAA,EACtC;AACJ;AAEA,SAAS,6BAA6B,GAAkB;AACpD,MAAI,EAAE,SAAS,SAAS;AACpB,MAAE,eAAe;AAAA,EACrB;AACJ;AAEA,SAAS,0BAA0B,OAA4B;AAvD/D;AAwDI,QAAM,gBAAgB,MAAM;AAE5B,QAAM,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MACI,MAAM,WACN,MAAM,WACN,MAAM,UACN,YAAY,SAAS,MAAM,IAAI,GACjC;AAEE;AAAA,EACJ;AAEA,MAAI,MAAM,KAAK,SAAS,OAAO,GAAG;AAC9B;AAAA,EACJ;AAEA,QAAM,8BAA8B,CAAC,KAAK,KAAK,KAAK,GAAG;AAEvD,MAAI,CAAC,4BAA4B,SAAS,MAAM,GAAG,GAAG;AAClD,UAAM,eAAe;AACrB;AAAA,EACJ;AAEA,QAAM,YAAY;AAAA,IACd,eAAa,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,gBAAe;AAAA,IACjE,aAAW,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,cAAa;AAAA,EACjE;AAEA,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,mBAAmB,cAAc,MAAM,EAAE;AAC/C,mBAAiB;AAAA,IACb,UAAU;AAAA,IACV,UAAU,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,EACV;AACA,QAAM,eAAe,iBAAiB,KAAK,EAAE;AAE7C,MAAI,CAAC,mCAAkB,KAAK,YAAY,GAAG;AACvC,UAAM,eAAe;AAAA,EACzB;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport { insertSpaceAtCursor } from \"./insertSpaceAtCursor\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (\n event.type === \"input\" &&\n ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)\n ) {\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if (!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n });\n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error);\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (targetElement.tagName === \"BUTTON\") {\n handleKeyDownOnButton(event);\n }\n if (fieldType === FieldDataType.NUMBER) {\n handleNumericFieldKeyDown(event);\n } else if (fieldType === FieldDataType.SINGLELINE) {\n handleSingleLineFieldKeyDown(event);\n }\n}\n\n// spaces do not work inside a button content-editable\n// this adds a space and moves the cursor ahead, the\n// button press event is also prevented\nfunction handleKeyDownOnButton(e: KeyboardEvent) {\n if (e.code === \"Space\" && e.target) {\n e.preventDefault();\n insertSpaceAtCursor(e.target as HTMLElement);\n }\n}\n\nfunction handleSingleLineFieldKeyDown(e: KeyboardEvent) {\n if (e.code === \"Enter\") {\n e.preventDefault();\n }\n}\n\nfunction handleNumericFieldKeyDown(event: KeyboardEvent): void {\n const targetElement = event.target as HTMLElement;\n\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"Enter\",\n \"End\",\n \"Home\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n ];\n\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n allowedKeys.includes(event.code)\n ) {\n // Allow Ctrl, Cmd, Alt, and special keys\n return;\n }\n\n if (event.code.includes(\"Digit\")) {\n return;\n }\n\n const nonNumericAllowedCharacters = [\"-\", \".\", \"e\", \"E\"];\n\n if (!nonNumericAllowedCharacters.includes(event.key)) {\n event.preventDefault();\n return;\n }\n\n const selection = {\n startOffset: window.getSelection()?.getRangeAt(0).startOffset || 0,\n endOffset: window.getSelection()?.getRangeAt(0).endOffset || 0,\n };\n\n const existingInput = targetElement.textContent || \"\";\n const currentOutputArr = existingInput.split(\"\");\n currentOutputArr.splice(\n selection.startOffset,\n selection.endOffset - selection.startOffset,\n event.key\n );\n const currentInput = currentOutputArr.join(\"\");\n\n if (!numericInputRegex.test(currentInput)) {\n event.preventDefault();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AACzB,6BAA+B;AAC/B,uBAIO;AACP,mBAA8B;AAC9B,yBAA+C;AAC/C,iCAAoC;AAE7B,SAAS,iBAAiB,GAAgB;AAC7C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AACA,MACI,MAAM,SAAS,WACf,+CAA8B,SAAS,SAA0B,GACnE;AACE,uBAAmB;AAAA,EACvB;AACJ;AACA,IAAM,yBAAqB,2BAAS,MAAM;AACtC,MAAI;AACA,UAAM,yBAAyB,SAAS;AAAA,MACpC;AAAA,IACJ;AACA,QAAI,CAAC,uBAAwB;AAC7B,+CAAe;AAAA,MACX;AAAA,MACA,WAAW,kDAA+B;AAAA,IAC9C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD;AACJ,GAAG,GAAG;AAEC,SAAS,mBAAmB,GAAgB;AAC/C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,cAAc,YAAY,UAAU;AACpC,0BAAsB,KAAK;AAAA,EAC/B;AACA,MAAI,cAAc,2BAAc,QAAQ;AACpC,8BAA0B,KAAK;AAAA,EACnC,WAAW,cAAc,2BAAc,YAAY;AAC/C,iCAA6B,KAAK;AAAA,EACtC;AACJ;AAKA,SAAS,sBAAsB,GAAkB;AAC7C,MAAI,EAAE,SAAS,WAAW,EAAE,QAAQ;AAChC,MAAE,eAAe;AACjB,wDAAoB,EAAE,MAAqB;AAAA,EAC/C;AACJ;AAEA,SAAS,6BAA6B,GAAkB;AACpD,MAAI,EAAE,SAAS,SAAS;AACpB,MAAE,eAAe;AAAA,EACrB;AACJ;AAEA,SAAS,0BAA0B,OAA4B;AAxE/D;AAyEI,QAAM,gBAAgB,MAAM;AAE5B,QAAM,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MACI,MAAM,WACN,MAAM,WACN,MAAM,UACN,YAAY,SAAS,MAAM,IAAI,GACjC;AAEE;AAAA,EACJ;AAEA,MAAI,MAAM,KAAK,SAAS,OAAO,GAAG;AAC9B;AAAA,EACJ;AAEA,QAAM,8BAA8B,CAAC,KAAK,KAAK,KAAK,GAAG;AAEvD,MAAI,CAAC,4BAA4B,SAAS,MAAM,GAAG,GAAG;AAClD,UAAM,eAAe;AACrB;AAAA,EACJ;AAEA,QAAM,YAAY;AAAA,IACd,eAAa,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,gBAAe;AAAA,IACjE,aAAW,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,cAAa;AAAA,EACjE;AAEA,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,mBAAmB,cAAc,MAAM,EAAE;AAC/C,mBAAiB;AAAA,IACb,UAAU;AAAA,IACV,UAAU,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,EACV;AACA,QAAM,eAAe,iBAAiB,KAAK,EAAE;AAE7C,MAAI,CAAC,mCAAkB,KAAK,YAAY,GAAG;AACvC,UAAM,eAAe;AAAA,EACzB;AACJ;","names":[]}
@@ -10,6 +10,7 @@ import {
10
10
  } from "./constants.js";
11
11
  import { FieldDataType } from "./types/index.types.js";
12
12
  import { VisualBuilderPostMessageEvents } from "./types/postMessage.types.js";
13
+ import { insertSpaceAtCursor } from "./insertSpaceAtCursor.js";
13
14
  function handleFieldInput(e) {
14
15
  const event = e;
15
16
  const targetElement = event.target;
@@ -40,12 +41,21 @@ function handleFieldKeyDown(e) {
40
41
  const fieldType = targetElement.getAttribute(
41
42
  VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
42
43
  );
44
+ if (targetElement.tagName === "BUTTON") {
45
+ handleKeyDownOnButton(event);
46
+ }
43
47
  if (fieldType === FieldDataType.NUMBER) {
44
48
  handleNumericFieldKeyDown(event);
45
49
  } else if (fieldType === FieldDataType.SINGLELINE) {
46
50
  handleSingleLineFieldKeyDown(event);
47
51
  }
48
52
  }
53
+ function handleKeyDownOnButton(e) {
54
+ if (e.code === "Space" && e.target) {
55
+ e.preventDefault();
56
+ insertSpaceAtCursor(e.target);
57
+ }
58
+ }
49
59
  function handleSingleLineFieldKeyDown(e) {
50
60
  if (e.code === "Enter") {
51
61
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (event.type === \"input\" && ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)) {\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if(!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n }) \n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error)\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (fieldType === FieldDataType.NUMBER) {\n handleNumericFieldKeyDown(event);\n } else if (fieldType === FieldDataType.SINGLELINE) {\n handleSingleLineFieldKeyDown(event);\n }\n}\n\nfunction handleSingleLineFieldKeyDown(e: KeyboardEvent) {\n if (e.code === \"Enter\") {\n e.preventDefault();\n }\n}\n\nfunction handleNumericFieldKeyDown(event: KeyboardEvent): void {\n const targetElement = event.target as HTMLElement;\n\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"Enter\",\n \"End\",\n \"Home\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n ];\n\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n allowedKeys.includes(event.code)\n ) {\n // Allow Ctrl, Cmd, Alt, and special keys\n return;\n }\n\n if (event.code.includes(\"Digit\")) {\n return;\n }\n\n const nonNumericAllowedCharacters = [\"-\", \".\", \"e\", \"E\"];\n\n if (!nonNumericAllowedCharacters.includes(event.key)) {\n event.preventDefault();\n return;\n }\n\n const selection = {\n startOffset: window.getSelection()?.getRangeAt(0).startOffset || 0,\n endOffset: window.getSelection()?.getRangeAt(0).endOffset || 0,\n };\n\n const existingInput = targetElement.textContent || \"\";\n const currentOutputArr = existingInput.split(\"\");\n currentOutputArr.splice(\n selection.startOffset,\n selection.endOffset - selection.startOffset,\n event.key\n );\n const currentInput = currentOutputArr.join(\"\");\n\n if (!numericInputRegex.test(currentInput)) {\n event.preventDefault();\n }\n}\n"],"mappings":";;;AAAA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,qBAAqB;AAC9B,SAAS,sCAAsC;AAExC,SAAS,iBAAiB,GAAgB;AAC7C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AACA,MAAI,MAAM,SAAS,WAAW,8BAA8B,SAAS,SAA0B,GAAG;AAC9F,uBAAmB;AAAA,EACvB;AACJ;AACA,IAAM,qBAAqB,SAAS,MAAM;AACtC,MAAI;AACA,UAAM,yBAAyB,SAAS;AAAA,MACpC;AAAA,IACJ;AACA,QAAG,CAAC,uBAAwB;AAC5B,mBAAe;AAAA,MACX;AAAA,MACA,WAAW,+BAA+B;AAAA,IAC9C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD;AACJ,GAAG,GAAG;AAEC,SAAS,mBAAmB,GAAgB;AAC/C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,cAAc,cAAc,QAAQ;AACpC,8BAA0B,KAAK;AAAA,EACnC,WAAW,cAAc,cAAc,YAAY;AAC/C,iCAA6B,KAAK;AAAA,EACtC;AACJ;AAEA,SAAS,6BAA6B,GAAkB;AACpD,MAAI,EAAE,SAAS,SAAS;AACpB,MAAE,eAAe;AAAA,EACrB;AACJ;AAEA,SAAS,0BAA0B,OAA4B;AAvD/D;AAwDI,QAAM,gBAAgB,MAAM;AAE5B,QAAM,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MACI,MAAM,WACN,MAAM,WACN,MAAM,UACN,YAAY,SAAS,MAAM,IAAI,GACjC;AAEE;AAAA,EACJ;AAEA,MAAI,MAAM,KAAK,SAAS,OAAO,GAAG;AAC9B;AAAA,EACJ;AAEA,QAAM,8BAA8B,CAAC,KAAK,KAAK,KAAK,GAAG;AAEvD,MAAI,CAAC,4BAA4B,SAAS,MAAM,GAAG,GAAG;AAClD,UAAM,eAAe;AACrB;AAAA,EACJ;AAEA,QAAM,YAAY;AAAA,IACd,eAAa,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,gBAAe;AAAA,IACjE,aAAW,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,cAAa;AAAA,EACjE;AAEA,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,mBAAmB,cAAc,MAAM,EAAE;AAC/C,mBAAiB;AAAA,IACb,UAAU;AAAA,IACV,UAAU,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,EACV;AACA,QAAM,eAAe,iBAAiB,KAAK,EAAE;AAE7C,MAAI,CAAC,kBAAkB,KAAK,YAAY,GAAG;AACvC,UAAM,eAAe;AAAA,EACzB;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport { insertSpaceAtCursor } from \"./insertSpaceAtCursor\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (\n event.type === \"input\" &&\n ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)\n ) {\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if (!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n });\n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error);\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (targetElement.tagName === \"BUTTON\") {\n handleKeyDownOnButton(event);\n }\n if (fieldType === FieldDataType.NUMBER) {\n handleNumericFieldKeyDown(event);\n } else if (fieldType === FieldDataType.SINGLELINE) {\n handleSingleLineFieldKeyDown(event);\n }\n}\n\n// spaces do not work inside a button content-editable\n// this adds a space and moves the cursor ahead, the\n// button press event is also prevented\nfunction handleKeyDownOnButton(e: KeyboardEvent) {\n if (e.code === \"Space\" && e.target) {\n e.preventDefault();\n insertSpaceAtCursor(e.target as HTMLElement);\n }\n}\n\nfunction handleSingleLineFieldKeyDown(e: KeyboardEvent) {\n if (e.code === \"Enter\") {\n e.preventDefault();\n }\n}\n\nfunction handleNumericFieldKeyDown(event: KeyboardEvent): void {\n const targetElement = event.target as HTMLElement;\n\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"Enter\",\n \"End\",\n \"Home\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n ];\n\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n allowedKeys.includes(event.code)\n ) {\n // Allow Ctrl, Cmd, Alt, and special keys\n return;\n }\n\n if (event.code.includes(\"Digit\")) {\n return;\n }\n\n const nonNumericAllowedCharacters = [\"-\", \".\", \"e\", \"E\"];\n\n if (!nonNumericAllowedCharacters.includes(event.key)) {\n event.preventDefault();\n return;\n }\n\n const selection = {\n startOffset: window.getSelection()?.getRangeAt(0).startOffset || 0,\n endOffset: window.getSelection()?.getRangeAt(0).endOffset || 0,\n };\n\n const existingInput = targetElement.textContent || \"\";\n const currentOutputArr = existingInput.split(\"\");\n currentOutputArr.splice(\n selection.startOffset,\n selection.endOffset - selection.startOffset,\n event.key\n );\n const currentInput = currentOutputArr.join(\"\");\n\n if (!numericInputRegex.test(currentInput)) {\n event.preventDefault();\n }\n}\n"],"mappings":";;;AAAA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,qBAAqB;AAC9B,SAAS,sCAAsC;AAC/C,SAAS,2BAA2B;AAE7B,SAAS,iBAAiB,GAAgB;AAC7C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AACA,MACI,MAAM,SAAS,WACf,8BAA8B,SAAS,SAA0B,GACnE;AACE,uBAAmB;AAAA,EACvB;AACJ;AACA,IAAM,qBAAqB,SAAS,MAAM;AACtC,MAAI;AACA,UAAM,yBAAyB,SAAS;AAAA,MACpC;AAAA,IACJ;AACA,QAAI,CAAC,uBAAwB;AAC7B,mBAAe;AAAA,MACX;AAAA,MACA,WAAW,+BAA+B;AAAA,IAC9C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD;AACJ,GAAG,GAAG;AAEC,SAAS,mBAAmB,GAAgB;AAC/C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,cAAc,YAAY,UAAU;AACpC,0BAAsB,KAAK;AAAA,EAC/B;AACA,MAAI,cAAc,cAAc,QAAQ;AACpC,8BAA0B,KAAK;AAAA,EACnC,WAAW,cAAc,cAAc,YAAY;AAC/C,iCAA6B,KAAK;AAAA,EACtC;AACJ;AAKA,SAAS,sBAAsB,GAAkB;AAC7C,MAAI,EAAE,SAAS,WAAW,EAAE,QAAQ;AAChC,MAAE,eAAe;AACjB,wBAAoB,EAAE,MAAqB;AAAA,EAC/C;AACJ;AAEA,SAAS,6BAA6B,GAAkB;AACpD,MAAI,EAAE,SAAS,SAAS;AACpB,MAAE,eAAe;AAAA,EACrB;AACJ;AAEA,SAAS,0BAA0B,OAA4B;AAxE/D;AAyEI,QAAM,gBAAgB,MAAM;AAE5B,QAAM,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MACI,MAAM,WACN,MAAM,WACN,MAAM,UACN,YAAY,SAAS,MAAM,IAAI,GACjC;AAEE;AAAA,EACJ;AAEA,MAAI,MAAM,KAAK,SAAS,OAAO,GAAG;AAC9B;AAAA,EACJ;AAEA,QAAM,8BAA8B,CAAC,KAAK,KAAK,KAAK,GAAG;AAEvD,MAAI,CAAC,4BAA4B,SAAS,MAAM,GAAG,GAAG;AAClD,UAAM,eAAe;AACrB;AAAA,EACJ;AAEA,QAAM,YAAY;AAAA,IACd,eAAa,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,gBAAe;AAAA,IACjE,aAAW,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,cAAa;AAAA,EACjE;AAEA,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,mBAAmB,cAAc,MAAM,EAAE;AAC/C,mBAAiB;AAAA,IACb,UAAU;AAAA,IACV,UAAU,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,EACV;AACA,QAAM,eAAe,iBAAiB,KAAK,EAAE;AAE7C,MAAI,CAAC,kBAAkB,KAAK,YAAY,GAAG;AACvC,UAAM,eAAe;AAAA,EACzB;AACJ;","names":[]}