@contentstack/live-preview-utils 3.2.0-alpha.1 → 3.2.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 (484) hide show
  1. package/README.md +2 -2
  2. package/dist/legacy/configManager/config.default.cjs +10 -1
  3. package/dist/legacy/configManager/config.default.cjs.map +1 -1
  4. package/dist/legacy/configManager/config.default.js +10 -1
  5. package/dist/legacy/configManager/config.default.js.map +1 -1
  6. package/dist/legacy/configManager/handleUserConfig.cjs +7 -3
  7. package/dist/legacy/configManager/handleUserConfig.cjs.map +1 -1
  8. package/dist/legacy/configManager/handleUserConfig.js +7 -3
  9. package/dist/legacy/configManager/handleUserConfig.js.map +1 -1
  10. package/dist/legacy/index.cjs +45 -1
  11. package/dist/legacy/index.cjs.map +1 -1
  12. package/dist/legacy/index.d.cts +16 -2
  13. package/dist/legacy/index.d.ts +16 -2
  14. package/dist/legacy/index.js +45 -1
  15. package/dist/legacy/index.js.map +1 -1
  16. package/dist/legacy/livePreview/editButton/editButton.cjs +86 -1
  17. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  18. package/dist/legacy/livePreview/editButton/editButton.d.cts +14 -1
  19. package/dist/legacy/livePreview/editButton/editButton.d.ts +14 -1
  20. package/dist/legacy/livePreview/editButton/editButton.js +85 -1
  21. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  22. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  23. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  24. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +6 -2
  25. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  26. package/dist/legacy/preview/contentstack-live-preview-HOC.js +6 -2
  27. package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
  28. package/dist/legacy/types/types.cjs.map +1 -1
  29. package/dist/legacy/types/types.d.cts +10 -15
  30. package/dist/legacy/types/types.d.ts +10 -15
  31. package/dist/legacy/types/types.js.map +1 -1
  32. package/dist/legacy/visualBuilder/collab.style.cjs +131 -1
  33. package/dist/legacy/visualBuilder/collab.style.cjs.map +1 -1
  34. package/dist/legacy/visualBuilder/collab.style.d.cts +17 -0
  35. package/dist/legacy/visualBuilder/collab.style.d.ts +17 -0
  36. package/dist/legacy/visualBuilder/collab.style.js +131 -1
  37. package/dist/legacy/visualBuilder/collab.style.js.map +1 -1
  38. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs +70 -0
  39. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs.map +1 -0
  40. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.cts +12 -0
  41. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.ts +12 -0
  42. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js +41 -0
  43. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js.map +1 -0
  44. package/dist/legacy/visualBuilder/components/Collab/Button/Button.cjs +32 -10
  45. package/dist/legacy/visualBuilder/components/Collab/Button/Button.cjs.map +1 -1
  46. package/dist/legacy/visualBuilder/components/Collab/Button/Button.d.cts +2 -0
  47. package/dist/legacy/visualBuilder/components/Collab/Button/Button.d.ts +2 -0
  48. package/dist/legacy/visualBuilder/components/Collab/Button/Button.js +33 -11
  49. package/dist/legacy/visualBuilder/components/Collab/Button/Button.js.map +1 -1
  50. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.cjs +11 -4
  51. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.cjs.map +1 -1
  52. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.js +11 -4
  53. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.js.map +1 -1
  54. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.cjs +6 -1
  55. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.cjs.map +1 -1
  56. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.d.cts +1 -0
  57. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.d.ts +1 -0
  58. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.js +6 -1
  59. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.js.map +1 -1
  60. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs +8 -3
  61. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs.map +1 -1
  62. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js +9 -4
  63. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js.map +1 -1
  64. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs +1 -2
  65. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs.map +1 -1
  66. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.js +2 -3
  67. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.js.map +1 -1
  68. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs +2 -5
  69. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs.map +1 -1
  70. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js +3 -9
  71. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js.map +1 -1
  72. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +98 -57
  73. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
  74. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +98 -57
  75. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
  76. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs +92 -0
  77. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs.map +1 -0
  78. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.cts +13 -0
  79. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.ts +13 -0
  80. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js +63 -0
  81. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js.map +1 -0
  82. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs +1 -0
  83. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs.map +1 -1
  84. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js +1 -0
  85. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js.map +1 -1
  86. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs +19 -50
  87. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs.map +1 -1
  88. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js +21 -52
  89. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js.map +1 -1
  90. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.cjs +29 -18
  91. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.cjs.map +1 -1
  92. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.js +29 -18
  93. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.js.map +1 -1
  94. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.cjs +19 -35
  95. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.cjs.map +1 -1
  96. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.js +19 -35
  97. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.js.map +1 -1
  98. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +28 -22
  99. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  100. package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +1 -0
  101. package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +1 -0
  102. package/dist/legacy/visualBuilder/components/FieldToolbar.js +29 -24
  103. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  104. package/dist/legacy/visualBuilder/components/addInstanceButton.cjs +39 -11
  105. package/dist/legacy/visualBuilder/components/addInstanceButton.cjs.map +1 -1
  106. package/dist/legacy/visualBuilder/components/addInstanceButton.d.cts +5 -0
  107. package/dist/legacy/visualBuilder/components/addInstanceButton.d.ts +5 -0
  108. package/dist/legacy/visualBuilder/components/addInstanceButton.js +39 -11
  109. package/dist/legacy/visualBuilder/components/addInstanceButton.js.map +1 -1
  110. package/dist/legacy/visualBuilder/components/startEditingButton.cjs +38 -11
  111. package/dist/legacy/visualBuilder/components/startEditingButton.cjs.map +1 -1
  112. package/dist/legacy/visualBuilder/components/startEditingButton.d.cts +7 -2
  113. package/dist/legacy/visualBuilder/components/startEditingButton.d.ts +7 -2
  114. package/dist/legacy/visualBuilder/components/startEditingButton.js +34 -11
  115. package/dist/legacy/visualBuilder/components/startEditingButton.js.map +1 -1
  116. package/dist/legacy/visualBuilder/eventManager/useCollab.cjs +57 -19
  117. package/dist/legacy/visualBuilder/eventManager/useCollab.cjs.map +1 -1
  118. package/dist/legacy/visualBuilder/eventManager/useCollab.js +57 -19
  119. package/dist/legacy/visualBuilder/eventManager/useCollab.js.map +1 -1
  120. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs +7 -2
  121. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs.map +1 -1
  122. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js +7 -2
  123. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js.map +1 -1
  124. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
  125. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  126. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
  127. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  128. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
  129. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
  130. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
  131. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
  132. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
  133. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
  134. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +5 -0
  135. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  136. package/dist/legacy/visualBuilder/generators/generateOverlay.js +5 -0
  137. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  138. package/dist/legacy/visualBuilder/generators/generateThread.cjs +103 -18
  139. package/dist/legacy/visualBuilder/generators/generateThread.cjs.map +1 -1
  140. package/dist/legacy/visualBuilder/generators/generateThread.d.cts +3 -1
  141. package/dist/legacy/visualBuilder/generators/generateThread.d.ts +3 -1
  142. package/dist/legacy/visualBuilder/generators/generateThread.js +101 -17
  143. package/dist/legacy/visualBuilder/generators/generateThread.js.map +1 -1
  144. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +13 -5
  145. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  146. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +2 -2
  147. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +2 -2
  148. package/dist/legacy/visualBuilder/generators/generateToolbar.js +13 -5
  149. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  150. package/dist/legacy/visualBuilder/hooks/useCollabOperations.cjs +9 -8
  151. package/dist/legacy/visualBuilder/hooks/useCollabOperations.cjs.map +1 -1
  152. package/dist/legacy/visualBuilder/hooks/useCollabOperations.js +9 -8
  153. package/dist/legacy/visualBuilder/hooks/useCollabOperations.js.map +1 -1
  154. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.cjs +23 -5
  155. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.cjs.map +1 -1
  156. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.cts +1 -0
  157. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.ts +1 -0
  158. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.js +23 -5
  159. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.js.map +1 -1
  160. package/dist/legacy/visualBuilder/index.cjs +16 -11
  161. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  162. package/dist/legacy/visualBuilder/index.d.cts +1 -0
  163. package/dist/legacy/visualBuilder/index.d.ts +1 -0
  164. package/dist/legacy/visualBuilder/index.js +14 -5
  165. package/dist/legacy/visualBuilder/index.js.map +1 -1
  166. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +81 -20
  167. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  168. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
  169. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
  170. package/dist/legacy/visualBuilder/listeners/mouseClick.js +81 -20
  171. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  172. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +3 -1
  173. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  174. package/dist/legacy/visualBuilder/listeners/mouseHover.js +3 -1
  175. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  176. package/dist/legacy/visualBuilder/types/collab.types.cjs.map +1 -1
  177. package/dist/legacy/visualBuilder/types/collab.types.d.cts +22 -1
  178. package/dist/legacy/visualBuilder/types/collab.types.d.ts +22 -1
  179. package/dist/legacy/visualBuilder/utils/collabUtils.cjs +105 -2
  180. package/dist/legacy/visualBuilder/utils/collabUtils.cjs.map +1 -1
  181. package/dist/legacy/visualBuilder/utils/collabUtils.d.cts +25 -1
  182. package/dist/legacy/visualBuilder/utils/collabUtils.d.ts +25 -1
  183. package/dist/legacy/visualBuilder/utils/collabUtils.js +100 -2
  184. package/dist/legacy/visualBuilder/utils/collabUtils.js.map +1 -1
  185. package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs +94 -0
  186. package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
  187. package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
  188. package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
  189. package/dist/legacy/visualBuilder/utils/enableInlineEditing.js +74 -0
  190. package/dist/legacy/visualBuilder/utils/enableInlineEditing.js.map +1 -0
  191. package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs +8 -0
  192. package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
  193. package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
  194. package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
  195. package/dist/legacy/visualBuilder/utils/getChildrenDirection.js +8 -0
  196. package/dist/legacy/visualBuilder/utils/getChildrenDirection.js.map +1 -1
  197. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +24 -112
  198. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  199. package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
  200. package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
  201. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +22 -116
  202. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  203. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
  204. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
  205. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
  206. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
  207. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js +58 -0
  208. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
  209. package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs +35 -0
  210. package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
  211. package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
  212. package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
  213. package/dist/legacy/visualBuilder/utils/isFieldMultiple.js +12 -0
  214. package/dist/legacy/visualBuilder/utils/isFieldMultiple.js.map +1 -0
  215. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +14 -20
  216. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  217. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
  218. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
  219. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +14 -20
  220. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  221. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
  222. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
  223. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
  224. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
  225. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js +21 -0
  226. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
  227. package/dist/legacy/visualBuilder/utils/types/index.types.cjs.map +1 -1
  228. package/dist/legacy/visualBuilder/utils/types/index.types.d.cts +6 -1
  229. package/dist/legacy/visualBuilder/utils/types/index.types.d.ts +6 -1
  230. package/dist/legacy/visualBuilder/utils/types/index.types.js.map +1 -1
  231. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -1
  232. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  233. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
  234. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
  235. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -1
  236. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  237. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +27 -5
  238. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  239. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +6 -1
  240. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +6 -1
  241. package/dist/legacy/visualBuilder/visualBuilder.style.js +27 -5
  242. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  243. package/dist/modern/configManager/config.default.cjs +10 -1
  244. package/dist/modern/configManager/config.default.cjs.map +1 -1
  245. package/dist/modern/configManager/config.default.js +10 -1
  246. package/dist/modern/configManager/config.default.js.map +1 -1
  247. package/dist/modern/configManager/handleUserConfig.cjs +4 -0
  248. package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
  249. package/dist/modern/configManager/handleUserConfig.js +4 -0
  250. package/dist/modern/configManager/handleUserConfig.js.map +1 -1
  251. package/dist/modern/index.cjs +45 -1
  252. package/dist/modern/index.cjs.map +1 -1
  253. package/dist/modern/index.d.cts +16 -2
  254. package/dist/modern/index.d.ts +16 -2
  255. package/dist/modern/index.js +45 -1
  256. package/dist/modern/index.js.map +1 -1
  257. package/dist/modern/livePreview/editButton/editButton.cjs +85 -1
  258. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  259. package/dist/modern/livePreview/editButton/editButton.d.cts +14 -1
  260. package/dist/modern/livePreview/editButton/editButton.d.ts +14 -1
  261. package/dist/modern/livePreview/editButton/editButton.js +84 -1
  262. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  263. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  264. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  265. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +6 -2
  266. package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  267. package/dist/modern/preview/contentstack-live-preview-HOC.js +6 -2
  268. package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
  269. package/dist/modern/types/types.cjs.map +1 -1
  270. package/dist/modern/types/types.d.cts +10 -15
  271. package/dist/modern/types/types.d.ts +10 -15
  272. package/dist/modern/types/types.js.map +1 -1
  273. package/dist/modern/visualBuilder/collab.style.cjs +131 -1
  274. package/dist/modern/visualBuilder/collab.style.cjs.map +1 -1
  275. package/dist/modern/visualBuilder/collab.style.d.cts +17 -0
  276. package/dist/modern/visualBuilder/collab.style.d.ts +17 -0
  277. package/dist/modern/visualBuilder/collab.style.js +131 -1
  278. package/dist/modern/visualBuilder/collab.style.js.map +1 -1
  279. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs +70 -0
  280. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs.map +1 -0
  281. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.cts +12 -0
  282. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.ts +12 -0
  283. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js +41 -0
  284. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js.map +1 -0
  285. package/dist/modern/visualBuilder/components/Collab/Button/Button.cjs +32 -10
  286. package/dist/modern/visualBuilder/components/Collab/Button/Button.cjs.map +1 -1
  287. package/dist/modern/visualBuilder/components/Collab/Button/Button.d.cts +2 -0
  288. package/dist/modern/visualBuilder/components/Collab/Button/Button.d.ts +2 -0
  289. package/dist/modern/visualBuilder/components/Collab/Button/Button.js +33 -11
  290. package/dist/modern/visualBuilder/components/Collab/Button/Button.js.map +1 -1
  291. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.cjs +7 -1
  292. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.cjs.map +1 -1
  293. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.js +7 -1
  294. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.js.map +1 -1
  295. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.cjs +6 -1
  296. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.cjs.map +1 -1
  297. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.d.cts +1 -0
  298. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.d.ts +1 -0
  299. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.js +6 -1
  300. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.js.map +1 -1
  301. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs +8 -3
  302. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs.map +1 -1
  303. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js +9 -4
  304. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js.map +1 -1
  305. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs +1 -2
  306. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs.map +1 -1
  307. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.js +2 -3
  308. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.js.map +1 -1
  309. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs +2 -5
  310. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs.map +1 -1
  311. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js +3 -9
  312. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js.map +1 -1
  313. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +94 -57
  314. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
  315. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +94 -57
  316. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
  317. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs +92 -0
  318. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs.map +1 -0
  319. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.cts +13 -0
  320. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.ts +13 -0
  321. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js +63 -0
  322. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js.map +1 -0
  323. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs +1 -0
  324. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs.map +1 -1
  325. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js +1 -0
  326. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js.map +1 -1
  327. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs +19 -50
  328. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs.map +1 -1
  329. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js +21 -52
  330. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js.map +1 -1
  331. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.cjs +29 -18
  332. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.cjs.map +1 -1
  333. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.js +29 -18
  334. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.js.map +1 -1
  335. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.cjs +19 -35
  336. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.cjs.map +1 -1
  337. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.js +19 -35
  338. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.js.map +1 -1
  339. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +28 -21
  340. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  341. package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +1 -0
  342. package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +1 -0
  343. package/dist/modern/visualBuilder/components/FieldToolbar.js +29 -23
  344. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  345. package/dist/modern/visualBuilder/components/addInstanceButton.cjs +38 -11
  346. package/dist/modern/visualBuilder/components/addInstanceButton.cjs.map +1 -1
  347. package/dist/modern/visualBuilder/components/addInstanceButton.d.cts +5 -0
  348. package/dist/modern/visualBuilder/components/addInstanceButton.d.ts +5 -0
  349. package/dist/modern/visualBuilder/components/addInstanceButton.js +38 -11
  350. package/dist/modern/visualBuilder/components/addInstanceButton.js.map +1 -1
  351. package/dist/modern/visualBuilder/components/startEditingButton.cjs +38 -11
  352. package/dist/modern/visualBuilder/components/startEditingButton.cjs.map +1 -1
  353. package/dist/modern/visualBuilder/components/startEditingButton.d.cts +7 -2
  354. package/dist/modern/visualBuilder/components/startEditingButton.d.ts +7 -2
  355. package/dist/modern/visualBuilder/components/startEditingButton.js +34 -11
  356. package/dist/modern/visualBuilder/components/startEditingButton.js.map +1 -1
  357. package/dist/modern/visualBuilder/eventManager/useCollab.cjs +45 -11
  358. package/dist/modern/visualBuilder/eventManager/useCollab.cjs.map +1 -1
  359. package/dist/modern/visualBuilder/eventManager/useCollab.js +45 -11
  360. package/dist/modern/visualBuilder/eventManager/useCollab.js.map +1 -1
  361. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs +5 -0
  362. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs.map +1 -1
  363. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js +5 -0
  364. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js.map +1 -1
  365. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
  366. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  367. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
  368. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  369. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
  370. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
  371. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
  372. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
  373. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
  374. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
  375. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +5 -0
  376. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  377. package/dist/modern/visualBuilder/generators/generateOverlay.js +5 -0
  378. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  379. package/dist/modern/visualBuilder/generators/generateThread.cjs +102 -16
  380. package/dist/modern/visualBuilder/generators/generateThread.cjs.map +1 -1
  381. package/dist/modern/visualBuilder/generators/generateThread.d.cts +3 -1
  382. package/dist/modern/visualBuilder/generators/generateThread.d.ts +3 -1
  383. package/dist/modern/visualBuilder/generators/generateThread.js +100 -15
  384. package/dist/modern/visualBuilder/generators/generateThread.js.map +1 -1
  385. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +13 -5
  386. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  387. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +2 -2
  388. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +2 -2
  389. package/dist/modern/visualBuilder/generators/generateToolbar.js +13 -5
  390. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  391. package/dist/modern/visualBuilder/hooks/useCollabOperations.cjs +9 -8
  392. package/dist/modern/visualBuilder/hooks/useCollabOperations.cjs.map +1 -1
  393. package/dist/modern/visualBuilder/hooks/useCollabOperations.js +9 -8
  394. package/dist/modern/visualBuilder/hooks/useCollabOperations.js.map +1 -1
  395. package/dist/modern/visualBuilder/hooks/useCommentTextArea.cjs +22 -5
  396. package/dist/modern/visualBuilder/hooks/useCommentTextArea.cjs.map +1 -1
  397. package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.cts +1 -0
  398. package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.ts +1 -0
  399. package/dist/modern/visualBuilder/hooks/useCommentTextArea.js +22 -5
  400. package/dist/modern/visualBuilder/hooks/useCommentTextArea.js.map +1 -1
  401. package/dist/modern/visualBuilder/index.cjs +16 -11
  402. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  403. package/dist/modern/visualBuilder/index.d.cts +1 -0
  404. package/dist/modern/visualBuilder/index.d.ts +1 -0
  405. package/dist/modern/visualBuilder/index.js +14 -5
  406. package/dist/modern/visualBuilder/index.js.map +1 -1
  407. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +78 -18
  408. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  409. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
  410. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
  411. package/dist/modern/visualBuilder/listeners/mouseClick.js +78 -18
  412. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  413. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +3 -1
  414. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  415. package/dist/modern/visualBuilder/listeners/mouseHover.js +3 -1
  416. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  417. package/dist/modern/visualBuilder/types/collab.types.cjs.map +1 -1
  418. package/dist/modern/visualBuilder/types/collab.types.d.cts +22 -1
  419. package/dist/modern/visualBuilder/types/collab.types.d.ts +22 -1
  420. package/dist/modern/visualBuilder/utils/collabUtils.cjs +105 -2
  421. package/dist/modern/visualBuilder/utils/collabUtils.cjs.map +1 -1
  422. package/dist/modern/visualBuilder/utils/collabUtils.d.cts +25 -1
  423. package/dist/modern/visualBuilder/utils/collabUtils.d.ts +25 -1
  424. package/dist/modern/visualBuilder/utils/collabUtils.js +100 -2
  425. package/dist/modern/visualBuilder/utils/collabUtils.js.map +1 -1
  426. package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs +94 -0
  427. package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
  428. package/dist/modern/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
  429. package/dist/modern/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
  430. package/dist/modern/visualBuilder/utils/enableInlineEditing.js +74 -0
  431. package/dist/modern/visualBuilder/utils/enableInlineEditing.js.map +1 -0
  432. package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs +8 -0
  433. package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
  434. package/dist/modern/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
  435. package/dist/modern/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
  436. package/dist/modern/visualBuilder/utils/getChildrenDirection.js +8 -0
  437. package/dist/modern/visualBuilder/utils/getChildrenDirection.js.map +1 -1
  438. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +23 -111
  439. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  440. package/dist/modern/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
  441. package/dist/modern/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
  442. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +21 -115
  443. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  444. package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
  445. package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
  446. package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
  447. package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
  448. package/dist/modern/visualBuilder/utils/handleInlineEditableField.js +58 -0
  449. package/dist/modern/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
  450. package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs +35 -0
  451. package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
  452. package/dist/modern/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
  453. package/dist/modern/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
  454. package/dist/modern/visualBuilder/utils/isFieldMultiple.js +12 -0
  455. package/dist/modern/visualBuilder/utils/isFieldMultiple.js.map +1 -0
  456. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +14 -18
  457. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  458. package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
  459. package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
  460. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +14 -18
  461. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  462. package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
  463. package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
  464. package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
  465. package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
  466. package/dist/modern/visualBuilder/utils/pasteAsPlainText.js +21 -0
  467. package/dist/modern/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
  468. package/dist/modern/visualBuilder/utils/types/index.types.cjs.map +1 -1
  469. package/dist/modern/visualBuilder/utils/types/index.types.d.cts +6 -1
  470. package/dist/modern/visualBuilder/utils/types/index.types.d.ts +6 -1
  471. package/dist/modern/visualBuilder/utils/types/index.types.js.map +1 -1
  472. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -1
  473. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  474. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
  475. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
  476. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -1
  477. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  478. package/dist/modern/visualBuilder/visualBuilder.style.cjs +27 -5
  479. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  480. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +6 -1
  481. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +6 -1
  482. package/dist/modern/visualBuilder/visualBuilder.style.js +27 -5
  483. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  484. package/package.json +4 -3
@@ -3,9 +3,11 @@ import { IThreadDTO, toggleCollabPopupEvent, MissingThreadsInfo, IThreadRenderSt
3
3
  declare function generateThread(payload: IThreadDTO | any, options?: {
4
4
  isNewThread?: boolean;
5
5
  updateConfig?: boolean;
6
+ hidden?: boolean;
6
7
  }): string | undefined;
7
8
  declare function updateCollabIconPosition(): void;
8
9
  declare function updatePopupPositions(): void;
10
+ declare function updateSuggestionListPosition(): void;
9
11
  declare function calculatePopupPosition(button: HTMLElement, popup: HTMLElement): void;
10
12
  declare function removeAllCollabIcons(): void;
11
13
  declare function hideAllCollabIcons(): void;
@@ -22,4 +24,4 @@ declare function clearAllThreadStatus(): void;
22
24
  declare function processThreadsBatch(threads: IThreadDTO[]): Promise<string[]>;
23
25
  declare function filterUnrenderedThreads(threads: IThreadDTO[]): IThreadDTO[];
24
26
 
25
- export { HighlightThread, calculatePopupPosition, clearAllThreadStatus, clearThreadStatus, filterUnrenderedThreads, generateThread, handleEmptyThreads, handleMissingThreads, hideAllCollabIcons, isCollabThread, processThreadsBatch, removeAllCollabIcons, removeCollabIcon, showAllCollabIcons, threadRenderStatus, toggleCollabPopup, updateCollabIconPosition, updatePopupPositions };
27
+ export { HighlightThread, calculatePopupPosition, clearAllThreadStatus, clearThreadStatus, filterUnrenderedThreads, generateThread, handleEmptyThreads, handleMissingThreads, hideAllCollabIcons, isCollabThread, processThreadsBatch, removeAllCollabIcons, removeCollabIcon, showAllCollabIcons, threadRenderStatus, toggleCollabPopup, updateCollabIconPosition, updatePopupPositions, updateSuggestionListPosition };
@@ -3,9 +3,11 @@ import { IThreadDTO, toggleCollabPopupEvent, MissingThreadsInfo, IThreadRenderSt
3
3
  declare function generateThread(payload: IThreadDTO | any, options?: {
4
4
  isNewThread?: boolean;
5
5
  updateConfig?: boolean;
6
+ hidden?: boolean;
6
7
  }): string | undefined;
7
8
  declare function updateCollabIconPosition(): void;
8
9
  declare function updatePopupPositions(): void;
10
+ declare function updateSuggestionListPosition(): void;
9
11
  declare function calculatePopupPosition(button: HTMLElement, popup: HTMLElement): void;
10
12
  declare function removeAllCollabIcons(): void;
11
13
  declare function hideAllCollabIcons(): void;
@@ -22,4 +24,4 @@ declare function clearAllThreadStatus(): void;
22
24
  declare function processThreadsBatch(threads: IThreadDTO[]): Promise<string[]>;
23
25
  declare function filterUnrenderedThreads(threads: IThreadDTO[]): IThreadDTO[];
24
26
 
25
- export { HighlightThread, calculatePopupPosition, clearAllThreadStatus, clearThreadStatus, filterUnrenderedThreads, generateThread, handleEmptyThreads, handleMissingThreads, hideAllCollabIcons, isCollabThread, processThreadsBatch, removeAllCollabIcons, removeCollabIcon, showAllCollabIcons, threadRenderStatus, toggleCollabPopup, updateCollabIconPosition, updatePopupPositions };
27
+ export { HighlightThread, calculatePopupPosition, clearAllThreadStatus, clearThreadStatus, filterUnrenderedThreads, generateThread, handleEmptyThreads, handleMissingThreads, hideAllCollabIcons, isCollabThread, processThreadsBatch, removeAllCollabIcons, removeCollabIcon, showAllCollabIcons, threadRenderStatus, toggleCollabPopup, updateCollabIconPosition, updatePopupPositions, updateSuggestionListPosition };
@@ -7,13 +7,14 @@ import CollabIndicator from "../components/Collab/CollabIndicator.js";
7
7
  import Config from "../../configManager/configManager.js";
8
8
  import visualBuilderPostMessage from "../utils/visualBuilderPostMessage.js";
9
9
  import { VisualBuilderPostMessageEvents } from "../utils/types/postMessage.types.js";
10
+ import { adjustPositionToViewport } from "../utils/collabUtils.js";
10
11
  import { jsx } from "preact/jsx-runtime";
11
12
  var popupTopOffset = 43;
12
13
  var popupLeftOffset = 9;
13
14
  var hiddenClass = css`
14
15
  display: none;
15
16
  `;
16
- function createPopupContainer(resolvedXPath, relativeX, relativeY, top, left, updateConfig, payload) {
17
+ function createPopupContainer(resolvedXPath, relativeX, relativeY, top, left, updateConfig, hidden, payload) {
17
18
  const popupContainer = document.createElement("div");
18
19
  popupContainer.setAttribute("field-path", resolvedXPath);
19
20
  popupContainer.setAttribute("relative", `x: ${relativeX}, y: ${relativeY}`);
@@ -23,6 +24,7 @@ function createPopupContainer(resolvedXPath, relativeX, relativeY, top, left, up
23
24
  popupContainer.style.zIndex = updateConfig ? "1000" : "999";
24
25
  popupContainer.style.cursor = "pointer";
25
26
  popupContainer.className = "collab-thread";
27
+ if (hidden) popupContainer.classList.add(hiddenClass);
26
28
  if (payload?._id) popupContainer.setAttribute("threaduid", payload._id);
27
29
  return popupContainer;
28
30
  }
@@ -45,7 +47,11 @@ function appendPopupContainer(popupContainer) {
45
47
  }
46
48
  }
47
49
  function generateThread(payload, options = {}) {
48
- const { isNewThread = false, updateConfig = false } = options;
50
+ const {
51
+ isNewThread = false,
52
+ updateConfig = false,
53
+ hidden = false
54
+ } = options;
49
55
  const config = Config.get?.();
50
56
  let relativeX, relativeY, resolvedXPath;
51
57
  if (isNewThread) {
@@ -55,13 +61,24 @@ function generateThread(payload, options = {}) {
55
61
  ({ x: relativeX, y: relativeY } = position);
56
62
  resolvedXPath = elementXPath;
57
63
  }
64
+ if (payload?._id) {
65
+ const existingThread = document.querySelector(
66
+ `div[threaduid='${payload._id}']`
67
+ );
68
+ if (existingThread) {
69
+ return void 0;
70
+ }
71
+ }
58
72
  const element = getElementByXpath(resolvedXPath);
59
73
  if (!element) {
60
74
  return payload._id;
61
75
  }
62
76
  const rect = element.getBoundingClientRect();
63
- const top = rect.top + window.scrollY + relativeY * rect.height;
64
- const left = rect.left + window.scrollX + relativeX * rect.width;
77
+ let top = rect.top + window.scrollY + relativeY * rect.height;
78
+ let left = rect.left + window.scrollX + relativeX * rect.width;
79
+ const adjustedPosition = adjustPositionToViewport({ top, left });
80
+ top = adjustedPosition.top;
81
+ left = adjustedPosition.left;
65
82
  const popupContainer = createPopupContainer(
66
83
  resolvedXPath,
67
84
  relativeX,
@@ -69,9 +86,10 @@ function generateThread(payload, options = {}) {
69
86
  top,
70
87
  left,
71
88
  updateConfig,
89
+ hidden,
72
90
  payload
73
91
  );
74
- if (updateConfig && config?.collab.enable) {
92
+ if (updateConfig && config?.collab?.enable) {
75
93
  if (config?.collab.isFeedbackMode) {
76
94
  Config.set("collab.isFeedbackMode", false);
77
95
  }
@@ -116,10 +134,13 @@ function updateCollabIconPosition() {
116
134
  return;
117
135
  }
118
136
  const rect = targetElement.getBoundingClientRect();
119
- const x = rect.left + rect.width * relativeX + window.scrollX;
120
- const y = rect.top + rect.height * relativeY + window.scrollY;
121
- icon.style.top = `${y - popupTopOffset}px`;
122
- icon.style.left = `${x - popupLeftOffset}px`;
137
+ let left = rect.left + rect.width * relativeX + window.scrollX;
138
+ let top = rect.top + rect.height * relativeY + window.scrollY;
139
+ const adjustedPosition = adjustPositionToViewport({ top, left });
140
+ top = adjustedPosition.top;
141
+ left = adjustedPosition.left;
142
+ icon.style.top = `${top - popupTopOffset}px`;
143
+ icon.style.left = `${left - popupLeftOffset}px`;
123
144
  icon.classList.remove(hiddenClass);
124
145
  });
125
146
  }
@@ -153,6 +174,71 @@ function updatePopupPositions() {
153
174
  }
154
175
  });
155
176
  }
177
+ function updateSuggestionListPosition() {
178
+ const suggestionLists = document.querySelectorAll(
179
+ ".collab-thread-body--input--textarea--suggestionsList"
180
+ );
181
+ if (!suggestionLists.length) return;
182
+ suggestionLists.forEach((list) => {
183
+ if (!(list instanceof HTMLElement)) return;
184
+ const textarea = document.querySelector(
185
+ ".collab-thread-body--input--textarea"
186
+ );
187
+ if (!textarea) return;
188
+ const positionData = list.getAttribute("data-position");
189
+ const parsedData = positionData ? JSON.parse(positionData) : null;
190
+ const showAbove = window.getComputedStyle(list).bottom !== "auto";
191
+ const textareaRect = textarea.getBoundingClientRect();
192
+ if (showAbove) {
193
+ const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight) || 20;
194
+ const paddingTop = parseInt(window.getComputedStyle(textarea).paddingTop) || 8;
195
+ const cursorLineY = parsedData?.cursorLineY || paddingTop + lineHeight;
196
+ list.style.position = "fixed";
197
+ list.style.bottom = `${window.innerHeight - textareaRect.top - cursorLineY + lineHeight}px`;
198
+ list.style.top = "auto";
199
+ } else {
200
+ const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight) || 20;
201
+ const paddingTop = parseInt(window.getComputedStyle(textarea).paddingTop) || 8;
202
+ const cursorLineY = parsedData?.cursorLineY || paddingTop + lineHeight;
203
+ list.style.position = "fixed";
204
+ list.style.top = `${textareaRect.top + cursorLineY}px`;
205
+ list.style.bottom = "auto";
206
+ }
207
+ if (!positionData && textareaRect) {
208
+ const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight) || 20;
209
+ const paddingTop = parseInt(window.getComputedStyle(textarea).paddingTop) || 8;
210
+ const positionInfo = {
211
+ showAbove,
212
+ cursorLineY: paddingTop + lineHeight
213
+ };
214
+ list.setAttribute("data-position", JSON.stringify(positionInfo));
215
+ }
216
+ const listRect = list.getBoundingClientRect();
217
+ if (!showAbove && listRect.bottom > window.innerHeight) {
218
+ const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight) || 20;
219
+ const paddingTop = parseInt(window.getComputedStyle(textarea).paddingTop) || 8;
220
+ const cursorLineY = parsedData?.cursorLineY || paddingTop + lineHeight;
221
+ list.style.bottom = `${window.innerHeight - textareaRect.top - cursorLineY + lineHeight}px`;
222
+ list.style.top = "auto";
223
+ if (positionData) {
224
+ const updatedData = JSON.parse(positionData);
225
+ updatedData.showAbove = true;
226
+ list.setAttribute("data-position", JSON.stringify(updatedData));
227
+ }
228
+ } else if (showAbove && listRect.top < 0) {
229
+ const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight) || 20;
230
+ const paddingTop = parseInt(window.getComputedStyle(textarea).paddingTop) || 8;
231
+ const cursorLineY = parsedData?.cursorLineY || paddingTop + lineHeight;
232
+ list.style.top = `${textareaRect.top + cursorLineY}px`;
233
+ list.style.bottom = "auto";
234
+ if (positionData) {
235
+ const updatedData = JSON.parse(positionData);
236
+ updatedData.showAbove = false;
237
+ list.setAttribute("data-position", JSON.stringify(updatedData));
238
+ }
239
+ }
240
+ });
241
+ }
156
242
  function calculatePopupPosition(button, popup) {
157
243
  const buttonRect = button.getBoundingClientRect();
158
244
  const viewportHeight = window.innerHeight;
@@ -215,8 +301,6 @@ function toggleCollabPopup({
215
301
  );
216
302
  }
217
303
  function HighlightThread(threadUid) {
218
- const config = Config.get?.();
219
- if (config?.collab?.pauseFeedback) return;
220
304
  toggleCollabPopup({ threadUid, action: "open" });
221
305
  }
222
306
  function isCollabThread(target) {
@@ -227,7 +311,7 @@ function isCollabThread(target) {
227
311
  function handleMissingThreads(payload) {
228
312
  visualBuilderPostMessage?.send(
229
313
  VisualBuilderPostMessageEvents.COLLAB_MISSING_THREADS,
230
- { payload }
314
+ payload
231
315
  );
232
316
  }
233
317
  function handleEmptyThreads() {
@@ -241,7 +325,7 @@ function handleEmptyThreads() {
241
325
  });
242
326
  }
243
327
  var retryConfig = {
244
- maxRetries: 3,
328
+ maxRetries: 5,
245
329
  retryDelay: 1e3
246
330
  };
247
331
  var isProcessingThreads = false;
@@ -275,7 +359,7 @@ async function processThread(thread) {
275
359
  let status = getRenderStatus(thread._id);
276
360
  while (status.attempts < retryConfig.maxRetries) {
277
361
  try {
278
- const result = generateThread(thread, { isNewThread: false });
362
+ const result = generateThread(thread);
279
363
  if (result === void 0) {
280
364
  updateRenderStatus(thread._id, true);
281
365
  return void 0;
@@ -351,6 +435,7 @@ export {
351
435
  threadRenderStatus,
352
436
  toggleCollabPopup,
353
437
  updateCollabIconPosition,
354
- updatePopupPositions
438
+ updatePopupPositions,
439
+ updateSuggestionListPosition
355
440
  };
356
441
  //# sourceMappingURL=generateThread.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/generators/generateThread.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport { render } from \"preact\";\nimport { css } from \"goober\";\nimport CollabIndicator from \"../components/Collab/CollabIndicator\";\nimport Config from \"../../configManager/configManager\";\nimport { IThreadDTO, IThreadRenderStatus } from \"../types/collab.types\";\nimport {\n MissingThreadsInfo,\n toggleCollabPopupEvent,\n} from \"../types/collab.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\n\nconst popupTopOffset = 43;\nconst popupLeftOffset = 9;\n\nconst hiddenClass = css`\n display: none;\n`;\n\nfunction createPopupContainer(\n resolvedXPath: string,\n relativeX: number,\n relativeY: number,\n top: number,\n left: number,\n updateConfig: boolean,\n payload: IThreadDTO | any\n): HTMLDivElement {\n const popupContainer = document.createElement(\"div\");\n popupContainer.setAttribute(\"field-path\", resolvedXPath);\n popupContainer.setAttribute(\"relative\", `x: ${relativeX}, y: ${relativeY}`);\n popupContainer.style.position = \"absolute\";\n popupContainer.style.top = `${top - popupTopOffset}px`;\n popupContainer.style.left = `${left - popupLeftOffset}px`;\n popupContainer.style.zIndex = updateConfig ? \"1000\" : \"999\";\n popupContainer.style.cursor = \"pointer\";\n popupContainer.className = \"collab-thread\";\n if (payload?._id) popupContainer.setAttribute(\"threaduid\", payload._id);\n return popupContainer;\n}\n\nfunction appendPopupContainer(popupContainer: HTMLDivElement): void {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n if (visualBuilderContainer) {\n let highlightCommentWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__collab-wrapper\"\n );\n if (!highlightCommentWrapper) {\n highlightCommentWrapper = document.createElement(\"div\");\n highlightCommentWrapper.className =\n \"visual-builder__collab-wrapper\";\n visualBuilderContainer.appendChild(highlightCommentWrapper);\n }\n highlightCommentWrapper.appendChild(popupContainer);\n } else {\n document.body.appendChild(popupContainer);\n }\n}\n\nexport function generateThread(\n payload: IThreadDTO | any,\n options: { isNewThread?: boolean; updateConfig?: boolean } = {}\n): string | undefined {\n const { isNewThread = false, updateConfig = false } = options;\n const config = Config.get?.();\n\n let relativeX: number, relativeY: number, resolvedXPath: string;\n\n if (isNewThread) {\n ({ relativeX, relativeY, xpath: resolvedXPath } = payload);\n } else {\n const { position, elementXPath } = payload;\n ({ x: relativeX, y: relativeY } = position);\n resolvedXPath = elementXPath;\n }\n\n const element = getElementByXpath(resolvedXPath);\n if (!element) {\n return payload._id;\n }\n\n const rect = element.getBoundingClientRect();\n const top = rect.top + window.scrollY + relativeY * rect.height;\n const left = rect.left + window.scrollX + relativeX * rect.width;\n\n const popupContainer = createPopupContainer(\n resolvedXPath,\n relativeX,\n relativeY,\n top,\n left,\n updateConfig,\n payload\n );\n\n if (updateConfig && config?.collab.enable) {\n if (config?.collab.isFeedbackMode) {\n Config.set(\"collab.isFeedbackMode\", false);\n }\n }\n\n render(\n <CollabIndicator\n activeThread={!isNewThread ? payload : undefined}\n newThread={isNewThread}\n />,\n popupContainer\n );\n\n appendPopupContainer(popupContainer);\n\n return undefined;\n}\n\nexport function updateCollabIconPosition() {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n const config = Config.get?.();\n if (config?.collab?.pauseFeedback) return;\n\n icons.forEach((icon) => {\n if (!(icon instanceof HTMLElement)) return;\n\n const path = icon.getAttribute(\"field-path\");\n const relative = icon.getAttribute(\"relative\");\n\n if (!path || !relative) {\n console.error(\"Missing field-path or relative attribute.\");\n return;\n }\n\n const match = relative.match(/x: ([\\d.]+), y: ([\\d.]+)/);\n if (!match) {\n console.error(\"Invalid relative attribute format.\");\n return;\n }\n\n const relativeX = parseFloat(match[1]);\n const relativeY = parseFloat(match[2]);\n\n const targetElement = getElementByXpath(path);\n\n if (!targetElement) {\n icon.classList.add(hiddenClass);\n return;\n }\n\n const rect = targetElement.getBoundingClientRect();\n const x = rect.left + rect.width * relativeX + window.scrollX;\n const y = rect.top + rect.height * relativeY + window.scrollY;\n\n icon.style.top = `${y - popupTopOffset}px`;\n icon.style.left = `${x - popupLeftOffset}px`;\n icon.classList.remove(hiddenClass);\n });\n}\nexport function updatePopupPositions() {\n const popups = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread .collab-popup\"\n );\n\n const config = Config.get?.();\n if (config?.collab?.pauseFeedback) return;\n\n popups.forEach((popup) => {\n if (popup && popup instanceof HTMLElement) {\n const parent = popup.closest(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n\n if (!parent) {\n console.error(\n \"Parent element with class 'collab-thread' not found.\"\n );\n return;\n }\n\n const button = parent.querySelector(\n \".visual-builder__collab-wrapper .collab-thread .collab-indicator\"\n );\n\n if (!button || !(button instanceof HTMLElement)) {\n console.error(\n \"Button with class 'collab-indicator' not found.\"\n );\n return;\n }\n\n calculatePopupPosition(button, popup);\n }\n });\n}\n\nexport function calculatePopupPosition(\n button: HTMLElement,\n popup: HTMLElement\n) {\n const buttonRect = button.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n let popupHeight = popup.offsetHeight || 198;\n let popupWidth = popup.offsetWidth || 334;\n\n const spaceAbove = buttonRect.top;\n const spaceBelow = viewportHeight - buttonRect.bottom;\n\n let top, left;\n\n if (spaceAbove >= popupHeight) {\n top = buttonRect.top - popupHeight - 8;\n } else if (spaceBelow >= popupHeight) {\n top = buttonRect.bottom + 8;\n } else {\n top =\n spaceBelow > spaceAbove\n ? buttonRect.bottom + 8\n : Math.max(buttonRect.top - popupHeight - 8, 0);\n }\n\n left = buttonRect.left + buttonRect.width / 2 - popupWidth / 2;\n\n top = Math.max(top, 0);\n left = Math.max(left, 0);\n left = Math.min(left, viewportWidth - popupWidth);\n\n popup.style.top = `${top}px`;\n popup.style.left = `${left}px`;\n\n requestAnimationFrame(() => {\n const newPopupHeight = popup.offsetHeight;\n if (newPopupHeight !== popupHeight) {\n calculatePopupPosition(button, popup);\n }\n });\n}\n\nexport function removeAllCollabIcons(): void {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => icon?.remove());\n}\n\nexport function hideAllCollabIcons(): void {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => icon?.classList.add(hiddenClass));\n}\n\nexport function showAllCollabIcons(): void {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => icon?.classList.remove(hiddenClass));\n}\n\nexport function removeCollabIcon(threadUid: string): void {\n const thread = document.querySelector(`div[threaduid='${threadUid}']`);\n thread?.remove();\n}\n\nexport function toggleCollabPopup({\n threadUid = \"\",\n action,\n}: toggleCollabPopupEvent): void {\n document.dispatchEvent(\n new CustomEvent(\"toggleCollabPopup\", {\n detail: { threadUid, action },\n })\n );\n}\n\nexport function HighlightThread(threadUid: string): void {\n const config = Config.get?.();\n if (config?.collab?.pauseFeedback) return;\n\n toggleCollabPopup({ threadUid, action: \"open\" });\n}\n\nexport function isCollabThread(target: HTMLElement): boolean {\n return Array.from(target.classList).some((className) =>\n className.startsWith(\"collab\")\n );\n}\n\nexport function handleMissingThreads(payload: MissingThreadsInfo) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_MISSING_THREADS,\n { payload }\n );\n}\n\nexport function handleEmptyThreads() {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => {\n if (!icon.hasAttribute(\"threaduid\")) {\n icon.remove();\n }\n });\n}\n\nconst retryConfig = {\n maxRetries: 3,\n retryDelay: 1000,\n};\n\nlet isProcessingThreads = false;\n\nexport const threadRenderStatus = new Map<string, IThreadRenderStatus>();\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction getRenderStatus(threadId: string): IThreadRenderStatus {\n if (!threadRenderStatus.has(threadId)) {\n threadRenderStatus.set(threadId, {\n threadId,\n attempts: 0,\n isRendered: false,\n });\n }\n return threadRenderStatus.get(threadId)!;\n}\n\nfunction updateRenderStatus(threadId: string, isRendered: boolean): void {\n const status = getRenderStatus(threadId);\n status.isRendered = isRendered;\n threadRenderStatus.set(threadId, status);\n}\n\nexport function clearThreadStatus(threadId: string): void {\n threadRenderStatus.delete(threadId);\n}\n\nexport function clearAllThreadStatus(): void {\n threadRenderStatus.clear();\n isProcessingThreads = false;\n}\n\nasync function processThread(thread: IThreadDTO): Promise<string | undefined> {\n let status = getRenderStatus(thread._id);\n\n while (status.attempts < retryConfig.maxRetries) {\n try {\n const result = generateThread(thread, { isNewThread: false });\n if (result === undefined) {\n updateRenderStatus(thread._id, true);\n return undefined;\n }\n\n status.attempts++;\n updateRenderStatus(thread._id, false);\n\n if (status.attempts < retryConfig.maxRetries) {\n await delay(retryConfig.retryDelay);\n }\n } catch (error) {\n console.error(`Error rendering thread ${thread._id}:`, error);\n status.attempts++;\n if (status.attempts >= retryConfig.maxRetries) {\n break;\n }\n await delay(retryConfig.retryDelay);\n }\n }\n\n return thread._id;\n}\n\nexport async function processThreadsBatch(\n threads: IThreadDTO[]\n): Promise<string[]> {\n if (isProcessingThreads) return [];\n\n try {\n isProcessingThreads = true;\n const unrenderedThreads = filterUnrenderedThreads(threads);\n if (unrenderedThreads.length === 0) return [];\n\n const missingThreadIds = (\n await Promise.all(\n unrenderedThreads.map((thread) => processThread(thread))\n )\n ).filter(Boolean) as string[];\n\n missingThreadIds.forEach(clearThreadStatus);\n return missingThreadIds;\n } finally {\n isProcessingThreads = false;\n }\n}\n\nexport function filterUnrenderedThreads(threads: IThreadDTO[]): IThreadDTO[] {\n return threads.filter((thread) => {\n const existingThread = document.querySelector(\n `[threaduid=\"${thread._id}\"]`\n );\n if (existingThread) {\n updateRenderStatus(thread._id, true);\n return false;\n }\n return true;\n });\n}\n\nfunction getElementByXpath(xpath: string): HTMLElement | null {\n const result = document.evaluate(\n xpath,\n document,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n );\n return result.singleNodeValue as HTMLElement | null;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/generators/generateThread.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport { render } from \"preact\";\nimport { css } from \"goober\";\nimport CollabIndicator from \"../components/Collab/CollabIndicator\";\nimport Config from \"../../configManager/configManager\";\nimport { IThreadDTO, IThreadRenderStatus } from \"../types/collab.types\";\nimport {\n MissingThreadsInfo,\n toggleCollabPopupEvent,\n} from \"../types/collab.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { adjustPositionToViewport } from \"../utils/collabUtils\";\n\nconst popupTopOffset = 43;\nconst popupLeftOffset = 9;\n\nconst hiddenClass = css`\n display: none;\n`;\n\nfunction createPopupContainer(\n resolvedXPath: string,\n relativeX: number,\n relativeY: number,\n top: number,\n left: number,\n updateConfig: boolean,\n hidden: boolean,\n payload: IThreadDTO | any\n): HTMLDivElement {\n const popupContainer = document.createElement(\"div\");\n popupContainer.setAttribute(\"field-path\", resolvedXPath);\n popupContainer.setAttribute(\"relative\", `x: ${relativeX}, y: ${relativeY}`);\n popupContainer.style.position = \"absolute\";\n popupContainer.style.top = `${top - popupTopOffset}px`;\n popupContainer.style.left = `${left - popupLeftOffset}px`;\n popupContainer.style.zIndex = updateConfig ? \"1000\" : \"999\";\n popupContainer.style.cursor = \"pointer\";\n popupContainer.className = \"collab-thread\";\n if (hidden) popupContainer.classList.add(hiddenClass);\n if (payload?._id) popupContainer.setAttribute(\"threaduid\", payload._id);\n return popupContainer;\n}\n\nfunction appendPopupContainer(popupContainer: HTMLDivElement): void {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n );\n if (visualBuilderContainer) {\n let highlightCommentWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__collab-wrapper\"\n );\n if (!highlightCommentWrapper) {\n highlightCommentWrapper = document.createElement(\"div\");\n highlightCommentWrapper.className =\n \"visual-builder__collab-wrapper\";\n visualBuilderContainer.appendChild(highlightCommentWrapper);\n }\n highlightCommentWrapper.appendChild(popupContainer);\n } else {\n document.body.appendChild(popupContainer);\n }\n}\n\nexport function generateThread(\n payload: IThreadDTO | any,\n options: {\n isNewThread?: boolean;\n updateConfig?: boolean;\n hidden?: boolean;\n } = {}\n): string | undefined {\n const {\n isNewThread = false,\n updateConfig = false,\n hidden = false,\n } = options;\n const config = Config.get?.();\n\n let relativeX: number, relativeY: number, resolvedXPath: string;\n\n if (isNewThread) {\n ({ relativeX, relativeY, xpath: resolvedXPath } = payload);\n } else {\n const { position, elementXPath } = payload;\n ({ x: relativeX, y: relativeY } = position);\n resolvedXPath = elementXPath;\n }\n\n // Filter to remove already rendered threads\n if (payload?._id) {\n const existingThread = document.querySelector(\n `div[threaduid='${payload._id}']`\n );\n if (existingThread) {\n return undefined;\n }\n }\n\n const element = getElementByXpath(resolvedXPath);\n if (!element) {\n return payload._id;\n }\n\n const rect = element.getBoundingClientRect();\n let top = rect.top + window.scrollY + relativeY * rect.height;\n let left = rect.left + window.scrollX + relativeX * rect.width;\n\n const adjustedPosition = adjustPositionToViewport({ top, left });\n top = adjustedPosition.top;\n left = adjustedPosition.left;\n\n const popupContainer = createPopupContainer(\n resolvedXPath,\n relativeX,\n relativeY,\n top,\n left,\n updateConfig,\n hidden,\n payload\n );\n\n if (updateConfig && config?.collab?.enable) {\n if (config?.collab.isFeedbackMode) {\n Config.set(\"collab.isFeedbackMode\", false);\n }\n }\n\n render(\n <CollabIndicator\n activeThread={!isNewThread ? payload : undefined}\n newThread={isNewThread}\n />,\n popupContainer\n );\n\n appendPopupContainer(popupContainer);\n\n return undefined;\n}\n\nexport function updateCollabIconPosition() {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n const config = Config.get?.();\n if (config?.collab?.pauseFeedback) return;\n\n icons.forEach((icon) => {\n if (!(icon instanceof HTMLElement)) return;\n\n const path = icon.getAttribute(\"field-path\");\n const relative = icon.getAttribute(\"relative\");\n\n if (!path || !relative) {\n console.error(\"Missing field-path or relative attribute.\");\n return;\n }\n\n const match = relative.match(/x: ([\\d.]+), y: ([\\d.]+)/);\n if (!match) {\n console.error(\"Invalid relative attribute format.\");\n return;\n }\n\n const relativeX = parseFloat(match[1]);\n const relativeY = parseFloat(match[2]);\n\n const targetElement = getElementByXpath(path);\n\n if (!targetElement) {\n icon.classList.add(hiddenClass);\n return;\n }\n\n const rect = targetElement.getBoundingClientRect();\n let left = rect.left + rect.width * relativeX + window.scrollX;\n let top = rect.top + rect.height * relativeY + window.scrollY;\n\n const adjustedPosition = adjustPositionToViewport({ top, left });\n top = adjustedPosition.top;\n left = adjustedPosition.left;\n\n icon.style.top = `${top - popupTopOffset}px`;\n icon.style.left = `${left - popupLeftOffset}px`;\n icon.classList.remove(hiddenClass);\n });\n}\nexport function updatePopupPositions() {\n const popups = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread .collab-popup\"\n );\n\n const config = Config.get?.();\n if (config?.collab?.pauseFeedback) return;\n\n popups.forEach((popup) => {\n if (popup && popup instanceof HTMLElement) {\n const parent = popup.closest(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n\n if (!parent) {\n console.error(\n \"Parent element with class 'collab-thread' not found.\"\n );\n return;\n }\n\n const button = parent.querySelector(\n \".visual-builder__collab-wrapper .collab-thread .collab-indicator\"\n );\n\n if (!button || !(button instanceof HTMLElement)) {\n console.error(\n \"Button with class 'collab-indicator' not found.\"\n );\n return;\n }\n\n calculatePopupPosition(button, popup);\n }\n });\n}\n\nexport function updateSuggestionListPosition() {\n const suggestionLists = document.querySelectorAll(\n \".collab-thread-body--input--textarea--suggestionsList\"\n );\n\n if (!suggestionLists.length) return;\n\n suggestionLists.forEach((list) => {\n if (!(list instanceof HTMLElement)) return;\n\n const textarea = document.querySelector(\n \".collab-thread-body--input--textarea\"\n ) as HTMLTextAreaElement | null;\n\n if (!textarea) return;\n const positionData = list.getAttribute(\"data-position\");\n const parsedData = positionData ? JSON.parse(positionData) : null;\n const showAbove = window.getComputedStyle(list).bottom !== \"auto\";\n const textareaRect = textarea.getBoundingClientRect();\n if (showAbove) {\n const lineHeight =\n parseInt(window.getComputedStyle(textarea).lineHeight) || 20;\n const paddingTop =\n parseInt(window.getComputedStyle(textarea).paddingTop) || 8;\n const cursorLineY =\n parsedData?.cursorLineY || paddingTop + lineHeight;\n\n list.style.position = \"fixed\";\n list.style.bottom = `${window.innerHeight - textareaRect.top - cursorLineY + lineHeight}px`;\n list.style.top = \"auto\";\n } else {\n const lineHeight =\n parseInt(window.getComputedStyle(textarea).lineHeight) || 20;\n const paddingTop =\n parseInt(window.getComputedStyle(textarea).paddingTop) || 8;\n\n const cursorLineY =\n parsedData?.cursorLineY || paddingTop + lineHeight;\n\n list.style.position = \"fixed\";\n list.style.top = `${textareaRect.top + cursorLineY}px`;\n list.style.bottom = \"auto\";\n }\n\n if (!positionData && textareaRect) {\n const lineHeight =\n parseInt(window.getComputedStyle(textarea).lineHeight) || 20;\n const paddingTop =\n parseInt(window.getComputedStyle(textarea).paddingTop) || 8;\n\n const positionInfo = {\n showAbove: showAbove,\n cursorLineY: paddingTop + lineHeight,\n };\n list.setAttribute(\"data-position\", JSON.stringify(positionInfo));\n }\n\n const listRect = list.getBoundingClientRect();\n\n if (!showAbove && listRect.bottom > window.innerHeight) {\n const lineHeight =\n parseInt(window.getComputedStyle(textarea).lineHeight) || 20;\n const paddingTop =\n parseInt(window.getComputedStyle(textarea).paddingTop) || 8;\n const cursorLineY =\n parsedData?.cursorLineY || paddingTop + lineHeight;\n\n list.style.bottom = `${window.innerHeight - textareaRect.top - cursorLineY + lineHeight}px`;\n list.style.top = \"auto\";\n\n if (positionData) {\n const updatedData = JSON.parse(positionData);\n updatedData.showAbove = true;\n list.setAttribute(\"data-position\", JSON.stringify(updatedData));\n }\n } else if (showAbove && listRect.top < 0) {\n const lineHeight =\n parseInt(window.getComputedStyle(textarea).lineHeight) || 20;\n const paddingTop =\n parseInt(window.getComputedStyle(textarea).paddingTop) || 8;\n const cursorLineY =\n parsedData?.cursorLineY || paddingTop + lineHeight;\n\n list.style.top = `${textareaRect.top + cursorLineY}px`;\n list.style.bottom = \"auto\";\n\n if (positionData) {\n const updatedData = JSON.parse(positionData);\n updatedData.showAbove = false;\n list.setAttribute(\"data-position\", JSON.stringify(updatedData));\n }\n }\n });\n}\n\nexport function calculatePopupPosition(\n button: HTMLElement,\n popup: HTMLElement\n) {\n const buttonRect = button.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n let popupHeight = popup.offsetHeight || 198;\n let popupWidth = popup.offsetWidth || 334;\n\n const spaceAbove = buttonRect.top;\n const spaceBelow = viewportHeight - buttonRect.bottom;\n\n let top, left;\n\n if (spaceAbove >= popupHeight) {\n top = buttonRect.top - popupHeight - 8;\n } else if (spaceBelow >= popupHeight) {\n top = buttonRect.bottom + 8;\n } else {\n top =\n spaceBelow > spaceAbove\n ? buttonRect.bottom + 8\n : Math.max(buttonRect.top - popupHeight - 8, 0);\n }\n\n left = buttonRect.left + buttonRect.width / 2 - popupWidth / 2;\n\n top = Math.max(top, 0);\n left = Math.max(left, 0);\n left = Math.min(left, viewportWidth - popupWidth);\n\n popup.style.top = `${top}px`;\n popup.style.left = `${left}px`;\n\n requestAnimationFrame(() => {\n const newPopupHeight = popup.offsetHeight;\n if (newPopupHeight !== popupHeight) {\n calculatePopupPosition(button, popup);\n }\n });\n}\n\nexport function removeAllCollabIcons(): void {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => icon?.remove());\n}\n\nexport function hideAllCollabIcons(): void {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => icon?.classList.add(hiddenClass));\n}\n\nexport function showAllCollabIcons(): void {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => icon?.classList.remove(hiddenClass));\n}\n\nexport function removeCollabIcon(threadUid: string): void {\n const thread = document.querySelector(`div[threaduid='${threadUid}']`);\n thread?.remove();\n}\n\nexport function toggleCollabPopup({\n threadUid = \"\",\n action,\n}: toggleCollabPopupEvent): void {\n document.dispatchEvent(\n new CustomEvent(\"toggleCollabPopup\", {\n detail: { threadUid, action },\n })\n );\n}\n\nexport function HighlightThread(threadUid: string): void {\n toggleCollabPopup({ threadUid, action: \"open\" });\n}\n\nexport function isCollabThread(target: HTMLElement): boolean {\n return Array.from(target.classList).some((className) =>\n className.startsWith(\"collab\")\n );\n}\n\nexport function handleMissingThreads(payload: MissingThreadsInfo) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_MISSING_THREADS,\n payload\n );\n}\n\nexport function handleEmptyThreads() {\n const icons = document.querySelectorAll(\n \".visual-builder__collab-wrapper .collab-thread\"\n );\n icons?.forEach((icon) => {\n if (!icon.hasAttribute(\"threaduid\")) {\n icon.remove();\n }\n });\n}\n\nconst retryConfig = {\n maxRetries: 5,\n retryDelay: 1000,\n};\n\nlet isProcessingThreads = false;\n\nexport const threadRenderStatus = new Map<string, IThreadRenderStatus>();\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction getRenderStatus(threadId: string): IThreadRenderStatus {\n if (!threadRenderStatus.has(threadId)) {\n threadRenderStatus.set(threadId, {\n threadId,\n attempts: 0,\n isRendered: false,\n });\n }\n return threadRenderStatus.get(threadId)!;\n}\n\nfunction updateRenderStatus(threadId: string, isRendered: boolean): void {\n const status = getRenderStatus(threadId);\n status.isRendered = isRendered;\n threadRenderStatus.set(threadId, status);\n}\n\nexport function clearThreadStatus(threadId: string): void {\n threadRenderStatus.delete(threadId);\n}\n\nexport function clearAllThreadStatus(): void {\n threadRenderStatus.clear();\n isProcessingThreads = false;\n}\n\nasync function processThread(thread: IThreadDTO): Promise<string | undefined> {\n let status = getRenderStatus(thread._id);\n\n while (status.attempts < retryConfig.maxRetries) {\n try {\n const result = generateThread(thread);\n if (result === undefined) {\n updateRenderStatus(thread._id, true);\n return undefined;\n }\n\n status.attempts++;\n updateRenderStatus(thread._id, false);\n\n if (status.attempts < retryConfig.maxRetries) {\n await delay(retryConfig.retryDelay);\n }\n } catch (error) {\n console.error(`Error rendering thread ${thread._id}:`, error);\n status.attempts++;\n if (status.attempts >= retryConfig.maxRetries) {\n break;\n }\n await delay(retryConfig.retryDelay);\n }\n }\n\n return thread._id;\n}\n\nexport async function processThreadsBatch(\n threads: IThreadDTO[]\n): Promise<string[]> {\n if (isProcessingThreads) return [];\n\n try {\n isProcessingThreads = true;\n const unrenderedThreads = filterUnrenderedThreads(threads);\n if (unrenderedThreads.length === 0) return [];\n\n const missingThreadIds = (\n await Promise.all(\n unrenderedThreads.map((thread) => processThread(thread))\n )\n ).filter(Boolean) as string[];\n\n missingThreadIds.forEach(clearThreadStatus);\n return missingThreadIds;\n } finally {\n isProcessingThreads = false;\n }\n}\n\nexport function filterUnrenderedThreads(threads: IThreadDTO[]): IThreadDTO[] {\n return threads.filter((thread) => {\n const existingThread = document.querySelector(\n `[threaduid=\"${thread._id}\"]`\n );\n if (existingThread) {\n updateRenderStatus(thread._id, true);\n return false;\n }\n return true;\n });\n}\n\nfunction getElementByXpath(xpath: string): HTMLElement | null {\n const result = document.evaluate(\n xpath,\n document,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n );\n return result.singleNodeValue as HTMLElement | null;\n}\n"],"mappings":"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","names":[]}
@@ -40,11 +40,16 @@ var import_FieldToolbar = __toESM(require("../components/FieldToolbar.cjs"), 1);
40
40
  var import_preact = require("preact");
41
41
  var import_fieldLabelWrapper = __toESM(require("../components/fieldLabelWrapper.cjs"), 1);
42
42
  var import_jsx_runtime = require("preact/jsx-runtime");
43
- function appendFocusedToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
43
+ function appendFocusedToolbar(eventDetails, focusedToolbarElement, hideOverlay, isVariant = false) {
44
44
  appendFieldPathDropdown(eventDetails, focusedToolbarElement);
45
- appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);
45
+ appendFieldToolbar(
46
+ eventDetails,
47
+ focusedToolbarElement,
48
+ hideOverlay,
49
+ isVariant
50
+ );
46
51
  }
47
- function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
52
+ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay, isVariant = false) {
48
53
  if (focusedToolbarElement.querySelector(
49
54
  ".visual-builder__focused-toolbar__multiple-field-toolbar"
50
55
  ))
@@ -55,7 +60,8 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
55
60
  import_FieldToolbar.default,
56
61
  {
57
62
  eventDetails,
58
- hideOverlay
63
+ hideOverlay,
64
+ isVariant
59
65
  }
60
66
  ),
61
67
  wrapper
@@ -63,7 +69,9 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
63
69
  focusedToolbarElement.append(wrapper);
64
70
  }
65
71
  function appendFieldPathDropdown(eventDetails, focusedToolbarElement) {
66
- if (document.querySelector(".visual-builder__focused-toolbar__field-label-wrapper"))
72
+ if (document.querySelector(
73
+ ".visual-builder__focused-toolbar__field-label-wrapper"
74
+ ))
67
75
  return;
68
76
  const { editableElement: targetElement, fieldMetadata } = eventDetails;
69
77
  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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAMO;AAIP,0BAAkC;AAClC,oBAAuB;AACvB,+BAAuC;AAwB/B;AAtBD,SAAS,qBACZ,cACA,uBACA,aACI;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D,qBAAmB,cAAc,uBAAuB,WAAW;AACvE;AAEO,SAAS,mBACZ,cACA,uBACA,aACI;AACJ,MACI,sBAAsB;AAAA,IAClB;AAAA,EACJ;AAEA;AACJ,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,oBAAAA;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MAAG,SAAS,cAAc,uDAAuD;AAC7E;AACJ,QAAM,EAAE,iBAAiB,eAAe,cAAc,IAAI;AAC1D,QAAM,yBAAyB,cAAc,sBAAsB;AAEnE,QAAM,kBACF,uBAAuB,MAAM,OAAO,UAAU;AAElD,QAAM,0BACF,uBAAuB,MAAM,OAAO,UAAU,mCACxC,kBAAkB,uBAAuB,SAAS,mCAClD;AAEV,QAAM,mBACF,uBAAuB,OAAO;AAClC,QAAM,2BAA2B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,+BACF,OAAO,UAAU,OAAO,aAAa,uBAAuB;AAEhE,MAAI,+BAA+B,oCAAmB;AAElD,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAC/B,uBAAuB,QAAQ,iDACnC;AAAA,EACJ,OAAO;AACH,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAAG,wBAAwB;AAAA,EAClE;AAEA,wBAAsB,MAAM,MAAM,GAAG,uBAAuB;AAE5D,QAAM,cAAc,uBAAuB,eAAe,CAAC;AAE3D,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,yBAAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,0BAA0B,CAAC,SAAiB;AACxC,gBAAM,gBAAgB,cAAc;AAAA,YAChC,IAAI,wCAAuB,KAAK,IAAI;AAAA,UACxC;AACA,iBAAO;AAAA,QACX;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,YAAY,OAAO;AAC7C;AAEA,SAAS,uBACL,eACA,OACa;AACb,QAAM,YAA2B,CAAC;AAClC,MAAI,iBAAiB,cAAc;AAEnC,SAAO,QAAQ,KAAK,mBAAmB,OAAO,SAAS,MAAM;AACzD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,aAAa,wCAAuB,GAAG;AACtD,gBAAU;AAAA,QACN,eAAe,aAAa,wCAAuB;AAAA,MACvD;AACA;AAAA,IACJ;AACA,qBAAiB,eAAe;AAAA,EACpC;AAEA,SAAO;AACX;","names":["FieldToolbarComponent","FieldLabelWrapperComponent"]}
1
+ {"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 isVariant: boolean = false\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement);\n appendFieldToolbar(\n eventDetails,\n focusedToolbarElement,\n hideOverlay,\n isVariant\n );\n}\n\nexport function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void,\n isVariant: boolean = false\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 isVariant={isVariant}\n />,\n wrapper\n );\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if (\n document.querySelector(\n \".visual-builder__focused-toolbar__field-label-wrapper\"\n )\n )\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;AA+B/B;AA7BD,SAAS,qBACZ,cACA,uBACA,aACA,YAAqB,OACjB;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEO,SAAS,mBACZ,cACA,uBACA,aACA,YAAqB,OACjB;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,QACA;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AACA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MACI,SAAS;AAAA,IACL;AAAA,EACJ;AAEA;AACJ,QAAM,EAAE,iBAAiB,eAAe,cAAc,IAAI;AAC1D,QAAM,yBAAyB,cAAc,sBAAsB;AAEnE,QAAM,kBACF,uBAAuB,MAAM,OAAO,UAAU;AAElD,QAAM,0BACF,uBAAuB,MAAM,OAAO,UAAU,mCACxC,kBAAkB,uBAAuB,SAAS,mCAClD;AAEV,QAAM,mBACF,uBAAuB,OAAO;AAClC,QAAM,2BAA2B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,+BACF,OAAO,UAAU,OAAO,aAAa,uBAAuB;AAEhE,MAAI,+BAA+B,oCAAmB;AAElD,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAC/B,uBAAuB,QAAQ,iDACnC;AAAA,EACJ,OAAO;AACH,0BAAsB,MAAM,iBAAiB;AAC7C,0BAAsB,MAAM,OAAO,GAAG,wBAAwB;AAAA,EAClE;AAEA,wBAAsB,MAAM,MAAM,GAAG,uBAAuB;AAE5D,QAAM,cAAc,uBAAuB,eAAe,CAAC;AAE3D,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC,yBAAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,0BAA0B,CAAC,SAAiB;AACxC,gBAAM,gBAAgB,cAAc;AAAA,YAChC,IAAI,wCAAuB,KAAK,IAAI;AAAA,UACxC;AACA,iBAAO;AAAA,QACX;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,wBAAsB,YAAY,OAAO;AAC7C;AAEA,SAAS,uBACL,eACA,OACa;AACb,QAAM,YAA2B,CAAC;AAClC,MAAI,iBAAiB,cAAc;AAEnC,SAAO,QAAQ,KAAK,mBAAmB,OAAO,SAAS,MAAM;AACzD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,aAAa,wCAAuB,GAAG;AACtD,gBAAU;AAAA,QACN,eAAe,aAAa,wCAAuB;AAAA,MACvD;AACA;AAAA,IACJ;AACA,qBAAiB,eAAe;AAAA,EACpC;AAEA,SAAO;AACX;","names":["FieldToolbarComponent","FieldLabelWrapperComponent"]}
@@ -1,8 +1,8 @@
1
1
  import { VisualBuilderCslpEventDetails } from '../types/visualBuilder.types.cjs';
2
2
  import '../../cslp/types/cslp.types.cjs';
3
3
 
4
- declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
5
- declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
4
+ declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void, isVariant?: boolean): void;
5
+ declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void, isVariant?: boolean): void;
6
6
  declare function appendFieldPathDropdown(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
7
7
 
8
8
  export { appendFieldPathDropdown, appendFieldToolbar, appendFocusedToolbar };
@@ -1,8 +1,8 @@
1
1
  import { VisualBuilderCslpEventDetails } from '../types/visualBuilder.types.js';
2
2
  import '../../cslp/types/cslp.types.js';
3
3
 
4
- declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
5
- declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void): void;
4
+ declare function appendFocusedToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void, isVariant?: boolean): void;
5
+ declare function appendFieldToolbar(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement, hideOverlay: () => void, isVariant?: boolean): void;
6
6
  declare function appendFieldPathDropdown(eventDetails: VisualBuilderCslpEventDetails, focusedToolbarElement: HTMLDivElement): void;
7
7
 
8
8
  export { appendFieldPathDropdown, appendFieldToolbar, appendFocusedToolbar };
@@ -12,11 +12,16 @@ import FieldToolbarComponent from "../components/FieldToolbar.js";
12
12
  import { render } from "preact";
13
13
  import FieldLabelWrapperComponent from "../components/fieldLabelWrapper.js";
14
14
  import { jsx } from "preact/jsx-runtime";
15
- function appendFocusedToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
15
+ function appendFocusedToolbar(eventDetails, focusedToolbarElement, hideOverlay, isVariant = false) {
16
16
  appendFieldPathDropdown(eventDetails, focusedToolbarElement);
17
- appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);
17
+ appendFieldToolbar(
18
+ eventDetails,
19
+ focusedToolbarElement,
20
+ hideOverlay,
21
+ isVariant
22
+ );
18
23
  }
19
- function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
24
+ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay, isVariant = false) {
20
25
  if (focusedToolbarElement.querySelector(
21
26
  ".visual-builder__focused-toolbar__multiple-field-toolbar"
22
27
  ))
@@ -27,7 +32,8 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
27
32
  FieldToolbarComponent,
28
33
  {
29
34
  eventDetails,
30
- hideOverlay
35
+ hideOverlay,
36
+ isVariant
31
37
  }
32
38
  ),
33
39
  wrapper
@@ -35,7 +41,9 @@ function appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay) {
35
41
  focusedToolbarElement.append(wrapper);
36
42
  }
37
43
  function appendFieldPathDropdown(eventDetails, focusedToolbarElement) {
38
- if (document.querySelector(".visual-builder__focused-toolbar__field-label-wrapper"))
44
+ if (document.querySelector(
45
+ ".visual-builder__focused-toolbar__field-label-wrapper"
46
+ ))
39
47
  return;
40
48
  const { editableElement: targetElement, fieldMetadata } = eventDetails;
41
49
  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,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":[]}
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 isVariant: boolean = false\n): void {\n appendFieldPathDropdown(eventDetails, focusedToolbarElement);\n appendFieldToolbar(\n eventDetails,\n focusedToolbarElement,\n hideOverlay,\n isVariant\n );\n}\n\nexport function appendFieldToolbar(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement,\n hideOverlay: () => void,\n isVariant: boolean = false\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 isVariant={isVariant}\n />,\n wrapper\n );\n focusedToolbarElement.append(wrapper);\n}\n\nexport function appendFieldPathDropdown(\n eventDetails: VisualBuilderCslpEventDetails,\n focusedToolbarElement: HTMLDivElement\n): void {\n if (\n document.querySelector(\n \".visual-builder__focused-toolbar__field-label-wrapper\"\n )\n )\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;AA+B/B;AA7BD,SAAS,qBACZ,cACA,uBACA,aACA,YAAqB,OACjB;AACJ,0BAAwB,cAAc,qBAAqB;AAC3D;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEO,SAAS,mBACZ,cACA,uBACA,aACA,YAAqB,OACjB;AACJ,MACI,sBAAsB;AAAA,IAClB;AAAA,EACJ;AAEA;AACJ,QAAM,UAAU,SAAS,uBAAuB;AAChD;AAAA,IACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AACA,wBAAsB,OAAO,OAAO;AACxC;AAEO,SAAS,wBACZ,cACA,uBACI;AACJ,MACI,SAAS;AAAA,IACL;AAAA,EACJ;AAEA;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":[]}
@@ -37,11 +37,12 @@ var import_visualBuilderPostMessage = __toESM(require("../utils/visualBuilderPos
37
37
  var import_postMessage = require("../utils/types/postMessage.types.cjs");
38
38
  var import_generateThread = require("../generators/generateThread.cjs");
39
39
  var import_configManager = __toESM(require("../../configManager/configManager.cjs"), 1);
40
+ var import_collabUtils = require("../utils/collabUtils.cjs");
40
41
  var useCollabOperations = () => {
41
42
  const createComment = async (payload) => {
42
43
  const data = await import_visualBuilderPostMessage.default?.send(
43
44
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_CREATE_COMMENT,
44
- { payload }
45
+ payload
45
46
  );
46
47
  if (!data) throw new Error("Failed to create comment");
47
48
  return data;
@@ -49,7 +50,7 @@ var useCollabOperations = () => {
49
50
  const editComment = async (payload) => {
50
51
  const data = await import_visualBuilderPostMessage.default?.send(
51
52
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_EDIT_COMMENT,
52
- { payload }
53
+ payload
53
54
  );
54
55
  if (!data) throw new Error("Failed to update comment");
55
56
  return data;
@@ -57,7 +58,7 @@ var useCollabOperations = () => {
57
58
  const deleteComment = async (payload) => {
58
59
  const data = await import_visualBuilderPostMessage.default?.send(
59
60
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_DELETE_COMMENT,
60
- { payload }
61
+ payload
61
62
  );
62
63
  if (!data) throw new Error("Failed to delete comment");
63
64
  return data;
@@ -65,7 +66,7 @@ var useCollabOperations = () => {
65
66
  const resolveThread = async (payload) => {
66
67
  const data = await import_visualBuilderPostMessage.default?.send(
67
68
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_RESOLVE_THREAD,
68
- { payload }
69
+ payload
69
70
  );
70
71
  if (!data) throw new Error("Failed to resolve thread");
71
72
  return data;
@@ -73,7 +74,7 @@ var useCollabOperations = () => {
73
74
  const fetchComments = async (payload) => {
74
75
  return await import_visualBuilderPostMessage.default?.send(
75
76
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_FETCH_COMMENTS,
76
- { payload }
77
+ payload
77
78
  );
78
79
  };
79
80
  const createNewThread = async (buttonRef, inviteMetadata) => {
@@ -98,13 +99,13 @@ var useCollabOperations = () => {
98
99
  elementXPath: fieldPath,
99
100
  position: { x: relativeX, y: relativeY },
100
101
  author: inviteMetadata.currentUser.email,
101
- pageRoute: window.location.pathname,
102
+ pageRoute: (0, import_collabUtils.normalizePath)(window.location.pathname),
102
103
  inviteUid: inviteMetadata.inviteUid,
103
104
  createdBy: inviteMetadata.currentUser.uid
104
105
  };
105
106
  const data = await import_visualBuilderPostMessage.default?.send(
106
107
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_CREATE_THREAD,
107
- { payload }
108
+ payload
108
109
  );
109
110
  parentDiv.setAttribute("threaduid", data.thread._id);
110
111
  return data;
@@ -112,7 +113,7 @@ var useCollabOperations = () => {
112
113
  const deleteThread = async (payload) => {
113
114
  const data = await import_visualBuilderPostMessage.default?.send(
114
115
  import_postMessage.VisualBuilderPostMessageEvents.COLLAB_DELETE_THREAD,
115
- { payload }
116
+ payload
116
117
  );
117
118
  if (!data) throw new Error("Failed to delete thread");
118
119
  (0, import_generateThread.removeCollabIcon)(payload.threadUid);