@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
@@ -35,6 +35,7 @@ __export(Tooltip_exports, {
35
35
  module.exports = __toCommonJS(Tooltip_exports);
36
36
  var import_hooks = require("preact/hooks");
37
37
  var import_collab = require("../../../collab.style.cjs");
38
+ var import_collabUtils = require("../../../utils/collabUtils.cjs");
38
39
  var import_classnames = __toESM(require("classnames"), 1);
39
40
  var import_jsx_runtime = require("preact/jsx-runtime");
40
41
  var Tooltip = (props) => {
@@ -47,44 +48,24 @@ var Tooltip = (props) => {
47
48
  ...otherProps
48
49
  } = props;
49
50
  const [isVisible, setIsVisible] = (0, import_hooks.useState)(false);
51
+ const [actualPosition, setActualPosition] = (0, import_hooks.useState)(position);
50
52
  const tooltipRef = (0, import_hooks.useRef)(null);
51
53
  const targetRef = (0, import_hooks.useRef)(null);
54
+ const prevChildrenRef = (0, import_hooks.useRef)(children);
52
55
  (0, import_hooks.useEffect)(() => {
53
- const positionTooltip = () => {
54
- if (!isVisible || !tooltipRef.current || !targetRef.current) return;
55
- const targetRect = targetRef.current.getBoundingClientRect();
56
- const tooltipRect = tooltipRef.current.getBoundingClientRect();
57
- const margin = 8;
58
- const positions = {
59
- bottom: {
60
- top: targetRect.bottom + margin,
61
- left: targetRect.left + (targetRect.width - tooltipRect.width) / 2
62
- },
63
- top: {
64
- top: targetRect.top - tooltipRect.height - margin,
65
- left: targetRect.left + (targetRect.width - tooltipRect.width) / 2
66
- },
67
- left: {
68
- top: targetRect.top + (targetRect.height - tooltipRect.height) / 2,
69
- left: targetRect.left - tooltipRect.width - margin
70
- },
71
- right: {
72
- top: targetRect.top + (targetRect.height - tooltipRect.height) / 2,
73
- left: targetRect.right + margin
74
- }
75
- };
76
- const coords = positions[position];
77
- Object.assign(tooltipRef.current.style, {
78
- top: `${coords.top}px`,
79
- left: `${coords.left}px`
80
- });
81
- };
82
- positionTooltip();
83
- window.addEventListener("scroll", positionTooltip);
84
- window.addEventListener("resize", positionTooltip);
56
+ if (prevChildrenRef.current !== children) {
57
+ setIsVisible(false);
58
+ prevChildrenRef.current = children;
59
+ }
60
+ }, [children]);
61
+ (0, import_hooks.useEffect)(() => {
62
+ const updateTooltip = () => (0, import_collabUtils.positionTooltip)(tooltipRef, targetRef, position, setActualPosition);
63
+ updateTooltip();
64
+ window.addEventListener("scroll", updateTooltip);
65
+ window.addEventListener("resize", updateTooltip);
85
66
  return () => {
86
- window.removeEventListener("scroll", positionTooltip);
87
- window.removeEventListener("resize", positionTooltip);
67
+ window.removeEventListener("scroll", updateTooltip);
68
+ window.removeEventListener("resize", updateTooltip);
88
69
  };
89
70
  }, [isVisible, position]);
90
71
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
@@ -108,10 +89,13 @@ var Tooltip = (props) => {
108
89
  ref: tooltipRef,
109
90
  className: (0, import_classnames.default)(
110
91
  "collab-tooltip",
111
- (0, import_collab.collabStyles)()["collab-tooltip"]
92
+ `collab-tooltip--${actualPosition}`,
93
+ (0, import_collab.collabStyles)()["collab-tooltip"],
94
+ (0, import_collab.collabStyles)()[`collab-tooltip--${actualPosition}`]
112
95
  ),
113
96
  role: "tooltip",
114
97
  "aria-hidden": !isVisible,
98
+ "data-position": actualPosition,
115
99
  children: content
116
100
  }
117
101
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/visualBuilder/components/Collab/Tooltip/Tooltip.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport React from \"preact/compat\";\nimport { useState, useRef, useEffect } from \"preact/hooks\";\nimport { collabStyles } from \"../../../collab.style\";\nimport classNames from \"classnames\";\n\ninterface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n className?: string;\n testId?: string;\n}\n\ninterface PositionCoords {\n top: number;\n left: number;\n}\n\ninterface Positions {\n bottom: PositionCoords;\n top: PositionCoords;\n left: PositionCoords;\n right: PositionCoords;\n}\n\nconst Tooltip = (props: TooltipProps): JSX.Element => {\n const {\n content,\n children,\n position = \"bottom\",\n className,\n testId,\n ...otherProps\n } = props;\n const [isVisible, setIsVisible] = useState<boolean>(false);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const targetRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const positionTooltip = (): void => {\n if (!isVisible || !tooltipRef.current || !targetRef.current) return;\n\n const targetRect: DOMRect =\n targetRef.current.getBoundingClientRect();\n const tooltipRect: DOMRect =\n tooltipRef.current.getBoundingClientRect();\n const margin: number = 8;\n\n const positions: Positions = {\n bottom: {\n top: targetRect.bottom + margin,\n left:\n targetRect.left +\n (targetRect.width - tooltipRect.width) / 2,\n },\n top: {\n top: targetRect.top - tooltipRect.height - margin,\n left:\n targetRect.left +\n (targetRect.width - tooltipRect.width) / 2,\n },\n left: {\n top:\n targetRect.top +\n (targetRect.height - tooltipRect.height) / 2,\n left: targetRect.left - tooltipRect.width - margin,\n },\n right: {\n top:\n targetRect.top +\n (targetRect.height - tooltipRect.height) / 2,\n left: targetRect.right + margin,\n },\n };\n\n const coords: PositionCoords = positions[position];\n Object.assign(tooltipRef.current.style, {\n top: `${coords.top}px`,\n left: `${coords.left}px`,\n });\n };\n\n positionTooltip();\n window.addEventListener(\"scroll\", positionTooltip);\n window.addEventListener(\"resize\", positionTooltip);\n\n return () => {\n window.removeEventListener(\"scroll\", positionTooltip);\n window.removeEventListener(\"resize\", positionTooltip);\n };\n }, [isVisible, position]);\n\n return (\n <div\n ref={targetRef}\n className={classNames(\n \"collab-tooltip--wrapper\",\n collabStyles()[\"collab-tooltip--wrapper\"],\n className\n )}\n onMouseEnter={() => setIsVisible(true)}\n onMouseLeave={() => setIsVisible(false)}\n data-testid={testId}\n {...otherProps}\n >\n {children}\n {isVisible && (\n <div\n ref={tooltipRef}\n className={classNames(\n \"collab-tooltip\",\n collabStyles()[\"collab-tooltip\"]\n )}\n role=\"tooltip\"\n aria-hidden={!isVisible}\n >\n {content}\n </div>\n )}\n </div>\n );\n};\n\nTooltip.defaultProps = {\n testId: \"collab-tooltip\",\n} as Partial<TooltipProps>;\n\nexport default Tooltip;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA4C;AAC5C,oBAA6B;AAC7B,wBAAuB;AA0Ff;AApER,IAAM,UAAU,CAAC,UAAqC;AAClD,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,IAAI;AACJ,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAkB,KAAK;AACzD,QAAM,iBAAa,qBAAuB,IAAI;AAC9C,QAAM,gBAAY,qBAAuB,IAAI;AAE7C,8BAAU,MAAM;AACZ,UAAM,kBAAkB,MAAY;AAChC,UAAI,CAAC,aAAa,CAAC,WAAW,WAAW,CAAC,UAAU,QAAS;AAE7D,YAAM,aACF,UAAU,QAAQ,sBAAsB;AAC5C,YAAM,cACF,WAAW,QAAQ,sBAAsB;AAC7C,YAAM,SAAiB;AAEvB,YAAM,YAAuB;AAAA,QACzB,QAAQ;AAAA,UACJ,KAAK,WAAW,SAAS;AAAA,UACzB,MACI,WAAW,QACV,WAAW,QAAQ,YAAY,SAAS;AAAA,QACjD;AAAA,QACA,KAAK;AAAA,UACD,KAAK,WAAW,MAAM,YAAY,SAAS;AAAA,UAC3C,MACI,WAAW,QACV,WAAW,QAAQ,YAAY,SAAS;AAAA,QACjD;AAAA,QACA,MAAM;AAAA,UACF,KACI,WAAW,OACV,WAAW,SAAS,YAAY,UAAU;AAAA,UAC/C,MAAM,WAAW,OAAO,YAAY,QAAQ;AAAA,QAChD;AAAA,QACA,OAAO;AAAA,UACH,KACI,WAAW,OACV,WAAW,SAAS,YAAY,UAAU;AAAA,UAC/C,MAAM,WAAW,QAAQ;AAAA,QAC7B;AAAA,MACJ;AAEA,YAAM,SAAyB,UAAU,QAAQ;AACjD,aAAO,OAAO,WAAW,QAAQ,OAAO;AAAA,QACpC,KAAK,GAAG,OAAO,GAAG;AAAA,QAClB,MAAM,GAAG,OAAO,IAAI;AAAA,MACxB,CAAC;AAAA,IACL;AAEA,oBAAgB;AAChB,WAAO,iBAAiB,UAAU,eAAe;AACjD,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM;AACT,aAAO,oBAAoB,UAAU,eAAe;AACpD,aAAO,oBAAoB,UAAU,eAAe;AAAA,IACxD;AAAA,EACJ,GAAG,CAAC,WAAW,QAAQ,CAAC;AAExB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,KAAK;AAAA,MACL,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,4BAAa,EAAE,yBAAyB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,cAAc,MAAM,aAAa,KAAK;AAAA,MACtC,eAAa;AAAA,MACZ,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACG;AAAA,UAAC;AAAA;AAAA,YACG,KAAK;AAAA,YACL,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,4BAAa,EAAE,gBAAgB;AAAA,YACnC;AAAA,YACA,MAAK;AAAA,YACL,eAAa,CAAC;AAAA,YAEb;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EAER;AAER;AAEA,QAAQ,eAAe;AAAA,EACnB,QAAQ;AACZ;AAEA,IAAO,kBAAQ;","names":["classNames"]}
1
+ {"version":3,"sources":["../../../../../../src/visualBuilder/components/Collab/Tooltip/Tooltip.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport React from \"preact/compat\";\nimport { useState, useRef, useEffect } from \"preact/hooks\";\nimport { collabStyles } from \"../../../collab.style\";\nimport { positionTooltip } from \"../../../utils/collabUtils\";\nimport classNames from \"classnames\";\n\ninterface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n className?: string;\n testId?: string;\n}\n\ninterface PositionCoords {\n top: number;\n left: number;\n}\n\ninterface Positions {\n bottom: PositionCoords;\n top: PositionCoords;\n left: PositionCoords;\n right: PositionCoords;\n}\n\nconst Tooltip = (props: TooltipProps): JSX.Element => {\n const {\n content,\n children,\n position = \"bottom\",\n className,\n testId,\n ...otherProps\n } = props;\n const [isVisible, setIsVisible] = useState<boolean>(false);\n const [actualPosition, setActualPosition] = useState<\n \"top\" | \"bottom\" | \"left\" | \"right\"\n >(position);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const targetRef = useRef<HTMLDivElement>(null);\n\n const prevChildrenRef = useRef(children);\n\n useEffect(() => {\n if (prevChildrenRef.current !== children) {\n setIsVisible(false);\n prevChildrenRef.current = children;\n }\n }, [children]);\n\n useEffect(() => {\n const updateTooltip = () =>\n positionTooltip(tooltipRef, targetRef, position, setActualPosition);\n\n updateTooltip();\n window.addEventListener(\"scroll\", updateTooltip);\n window.addEventListener(\"resize\", updateTooltip);\n\n return () => {\n window.removeEventListener(\"scroll\", updateTooltip);\n window.removeEventListener(\"resize\", updateTooltip);\n };\n }, [isVisible, position]);\n\n return (\n <div\n ref={targetRef}\n className={classNames(\n \"collab-tooltip--wrapper\",\n collabStyles()[\"collab-tooltip--wrapper\"],\n className\n )}\n onMouseEnter={() => setIsVisible(true)}\n onMouseLeave={() => setIsVisible(false)}\n data-testid={testId}\n {...otherProps}\n >\n {children}\n {isVisible && (\n <div\n ref={tooltipRef}\n className={classNames(\n \"collab-tooltip\",\n `collab-tooltip--${actualPosition}`,\n collabStyles()[\"collab-tooltip\"],\n collabStyles()[`collab-tooltip--${actualPosition}`]\n )}\n role=\"tooltip\"\n aria-hidden={!isVisible}\n data-position={actualPosition}\n >\n {content}\n </div>\n )}\n </div>\n );\n};\n\nTooltip.defaultProps = {\n testId: \"collab-tooltip\",\n} as Partial<TooltipProps>;\n\nexport default Tooltip;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA4C;AAC5C,oBAA6B;AAC7B,yBAAgC;AAChC,wBAAuB;AA8Df;AAxCR,IAAM,UAAU,CAAC,UAAqC;AAClD,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,IAAI;AACJ,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAkB,KAAK;AACzD,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,uBAE1C,QAAQ;AACV,QAAM,iBAAa,qBAAuB,IAAI;AAC9C,QAAM,gBAAY,qBAAuB,IAAI;AAE7C,QAAM,sBAAkB,qBAAO,QAAQ;AAEvC,8BAAU,MAAM;AACZ,QAAI,gBAAgB,YAAY,UAAU;AACtC,mBAAa,KAAK;AAClB,sBAAgB,UAAU;AAAA,IAC9B;AAAA,EACJ,GAAG,CAAC,QAAQ,CAAC;AAEb,8BAAU,MAAM;AACZ,UAAM,gBAAgB,UAClB,oCAAgB,YAAY,WAAW,UAAU,iBAAiB;AAEtE,kBAAc;AACd,WAAO,iBAAiB,UAAU,aAAa;AAC/C,WAAO,iBAAiB,UAAU,aAAa;AAE/C,WAAO,MAAM;AACT,aAAO,oBAAoB,UAAU,aAAa;AAClD,aAAO,oBAAoB,UAAU,aAAa;AAAA,IACtD;AAAA,EACJ,GAAG,CAAC,WAAW,QAAQ,CAAC;AAExB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,KAAK;AAAA,MACL,eAAW,kBAAAA;AAAA,QACP;AAAA,YACA,4BAAa,EAAE,yBAAyB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,cAAc,MAAM,aAAa,KAAK;AAAA,MACtC,eAAa;AAAA,MACZ,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACG;AAAA,UAAC;AAAA;AAAA,YACG,KAAK;AAAA,YACL,eAAW,kBAAAA;AAAA,cACP;AAAA,cACA,mBAAmB,cAAc;AAAA,kBACjC,4BAAa,EAAE,gBAAgB;AAAA,kBAC/B,4BAAa,EAAE,mBAAmB,cAAc,EAAE;AAAA,YACtD;AAAA,YACA,MAAK;AAAA,YACL,eAAa,CAAC;AAAA,YACd,iBAAe;AAAA,YAEd;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EAER;AAER;AAEA,QAAQ,eAAe;AAAA,EACnB,QAAQ;AACZ;AAEA,IAAO,kBAAQ;","names":["classNames"]}
@@ -3,6 +3,7 @@ import "../../../../chunk-5WRI5ZAA.js";
3
3
  // src/visualBuilder/components/Collab/Tooltip/Tooltip.tsx
4
4
  import { useState, useRef, useEffect } from "preact/hooks";
5
5
  import { collabStyles } from "../../../collab.style.js";
6
+ import { positionTooltip } from "../../../utils/collabUtils.js";
6
7
  import classNames from "classnames";
7
8
  import { jsx, jsxs } from "preact/jsx-runtime";
8
9
  var Tooltip = (props) => {
@@ -15,44 +16,24 @@ var Tooltip = (props) => {
15
16
  ...otherProps
16
17
  } = props;
17
18
  const [isVisible, setIsVisible] = useState(false);
19
+ const [actualPosition, setActualPosition] = useState(position);
18
20
  const tooltipRef = useRef(null);
19
21
  const targetRef = useRef(null);
22
+ const prevChildrenRef = useRef(children);
20
23
  useEffect(() => {
21
- const positionTooltip = () => {
22
- if (!isVisible || !tooltipRef.current || !targetRef.current) return;
23
- const targetRect = targetRef.current.getBoundingClientRect();
24
- const tooltipRect = tooltipRef.current.getBoundingClientRect();
25
- const margin = 8;
26
- const positions = {
27
- bottom: {
28
- top: targetRect.bottom + margin,
29
- left: targetRect.left + (targetRect.width - tooltipRect.width) / 2
30
- },
31
- top: {
32
- top: targetRect.top - tooltipRect.height - margin,
33
- left: targetRect.left + (targetRect.width - tooltipRect.width) / 2
34
- },
35
- left: {
36
- top: targetRect.top + (targetRect.height - tooltipRect.height) / 2,
37
- left: targetRect.left - tooltipRect.width - margin
38
- },
39
- right: {
40
- top: targetRect.top + (targetRect.height - tooltipRect.height) / 2,
41
- left: targetRect.right + margin
42
- }
43
- };
44
- const coords = positions[position];
45
- Object.assign(tooltipRef.current.style, {
46
- top: `${coords.top}px`,
47
- left: `${coords.left}px`
48
- });
49
- };
50
- positionTooltip();
51
- window.addEventListener("scroll", positionTooltip);
52
- window.addEventListener("resize", positionTooltip);
24
+ if (prevChildrenRef.current !== children) {
25
+ setIsVisible(false);
26
+ prevChildrenRef.current = children;
27
+ }
28
+ }, [children]);
29
+ useEffect(() => {
30
+ const updateTooltip = () => positionTooltip(tooltipRef, targetRef, position, setActualPosition);
31
+ updateTooltip();
32
+ window.addEventListener("scroll", updateTooltip);
33
+ window.addEventListener("resize", updateTooltip);
53
34
  return () => {
54
- window.removeEventListener("scroll", positionTooltip);
55
- window.removeEventListener("resize", positionTooltip);
35
+ window.removeEventListener("scroll", updateTooltip);
36
+ window.removeEventListener("resize", updateTooltip);
56
37
  };
57
38
  }, [isVisible, position]);
58
39
  return /* @__PURE__ */ jsxs(
@@ -76,10 +57,13 @@ var Tooltip = (props) => {
76
57
  ref: tooltipRef,
77
58
  className: classNames(
78
59
  "collab-tooltip",
79
- collabStyles()["collab-tooltip"]
60
+ `collab-tooltip--${actualPosition}`,
61
+ collabStyles()["collab-tooltip"],
62
+ collabStyles()[`collab-tooltip--${actualPosition}`]
80
63
  ),
81
64
  role: "tooltip",
82
65
  "aria-hidden": !isVisible,
66
+ "data-position": actualPosition,
83
67
  children: content
84
68
  }
85
69
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/visualBuilder/components/Collab/Tooltip/Tooltip.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport React from \"preact/compat\";\nimport { useState, useRef, useEffect } from \"preact/hooks\";\nimport { collabStyles } from \"../../../collab.style\";\nimport classNames from \"classnames\";\n\ninterface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n className?: string;\n testId?: string;\n}\n\ninterface PositionCoords {\n top: number;\n left: number;\n}\n\ninterface Positions {\n bottom: PositionCoords;\n top: PositionCoords;\n left: PositionCoords;\n right: PositionCoords;\n}\n\nconst Tooltip = (props: TooltipProps): JSX.Element => {\n const {\n content,\n children,\n position = \"bottom\",\n className,\n testId,\n ...otherProps\n } = props;\n const [isVisible, setIsVisible] = useState<boolean>(false);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const targetRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const positionTooltip = (): void => {\n if (!isVisible || !tooltipRef.current || !targetRef.current) return;\n\n const targetRect: DOMRect =\n targetRef.current.getBoundingClientRect();\n const tooltipRect: DOMRect =\n tooltipRef.current.getBoundingClientRect();\n const margin: number = 8;\n\n const positions: Positions = {\n bottom: {\n top: targetRect.bottom + margin,\n left:\n targetRect.left +\n (targetRect.width - tooltipRect.width) / 2,\n },\n top: {\n top: targetRect.top - tooltipRect.height - margin,\n left:\n targetRect.left +\n (targetRect.width - tooltipRect.width) / 2,\n },\n left: {\n top:\n targetRect.top +\n (targetRect.height - tooltipRect.height) / 2,\n left: targetRect.left - tooltipRect.width - margin,\n },\n right: {\n top:\n targetRect.top +\n (targetRect.height - tooltipRect.height) / 2,\n left: targetRect.right + margin,\n },\n };\n\n const coords: PositionCoords = positions[position];\n Object.assign(tooltipRef.current.style, {\n top: `${coords.top}px`,\n left: `${coords.left}px`,\n });\n };\n\n positionTooltip();\n window.addEventListener(\"scroll\", positionTooltip);\n window.addEventListener(\"resize\", positionTooltip);\n\n return () => {\n window.removeEventListener(\"scroll\", positionTooltip);\n window.removeEventListener(\"resize\", positionTooltip);\n };\n }, [isVisible, position]);\n\n return (\n <div\n ref={targetRef}\n className={classNames(\n \"collab-tooltip--wrapper\",\n collabStyles()[\"collab-tooltip--wrapper\"],\n className\n )}\n onMouseEnter={() => setIsVisible(true)}\n onMouseLeave={() => setIsVisible(false)}\n data-testid={testId}\n {...otherProps}\n >\n {children}\n {isVisible && (\n <div\n ref={tooltipRef}\n className={classNames(\n \"collab-tooltip\",\n collabStyles()[\"collab-tooltip\"]\n )}\n role=\"tooltip\"\n aria-hidden={!isVisible}\n >\n {content}\n </div>\n )}\n </div>\n );\n};\n\nTooltip.defaultProps = {\n testId: \"collab-tooltip\",\n} as Partial<TooltipProps>;\n\nexport default Tooltip;\n"],"mappings":";;;AAEA,SAAS,UAAU,QAAQ,iBAAiB;AAC5C,SAAS,oBAAoB;AAC7B,OAAO,gBAAgB;AA0Ff,SAcQ,KAdR;AApER,IAAM,UAAU,CAAC,UAAqC;AAClD,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,IAAI;AACJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,YAAY,OAAuB,IAAI;AAE7C,YAAU,MAAM;AACZ,UAAM,kBAAkB,MAAY;AAChC,UAAI,CAAC,aAAa,CAAC,WAAW,WAAW,CAAC,UAAU,QAAS;AAE7D,YAAM,aACF,UAAU,QAAQ,sBAAsB;AAC5C,YAAM,cACF,WAAW,QAAQ,sBAAsB;AAC7C,YAAM,SAAiB;AAEvB,YAAM,YAAuB;AAAA,QACzB,QAAQ;AAAA,UACJ,KAAK,WAAW,SAAS;AAAA,UACzB,MACI,WAAW,QACV,WAAW,QAAQ,YAAY,SAAS;AAAA,QACjD;AAAA,QACA,KAAK;AAAA,UACD,KAAK,WAAW,MAAM,YAAY,SAAS;AAAA,UAC3C,MACI,WAAW,QACV,WAAW,QAAQ,YAAY,SAAS;AAAA,QACjD;AAAA,QACA,MAAM;AAAA,UACF,KACI,WAAW,OACV,WAAW,SAAS,YAAY,UAAU;AAAA,UAC/C,MAAM,WAAW,OAAO,YAAY,QAAQ;AAAA,QAChD;AAAA,QACA,OAAO;AAAA,UACH,KACI,WAAW,OACV,WAAW,SAAS,YAAY,UAAU;AAAA,UAC/C,MAAM,WAAW,QAAQ;AAAA,QAC7B;AAAA,MACJ;AAEA,YAAM,SAAyB,UAAU,QAAQ;AACjD,aAAO,OAAO,WAAW,QAAQ,OAAO;AAAA,QACpC,KAAK,GAAG,OAAO,GAAG;AAAA,QAClB,MAAM,GAAG,OAAO,IAAI;AAAA,MACxB,CAAC;AAAA,IACL;AAEA,oBAAgB;AAChB,WAAO,iBAAiB,UAAU,eAAe;AACjD,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM;AACT,aAAO,oBAAoB,UAAU,eAAe;AACpD,aAAO,oBAAoB,UAAU,eAAe;AAAA,IACxD;AAAA,EACJ,GAAG,CAAC,WAAW,QAAQ,CAAC;AAExB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,KAAK;AAAA,MACL,WAAW;AAAA,QACP;AAAA,QACA,aAAa,EAAE,yBAAyB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,cAAc,MAAM,aAAa,KAAK;AAAA,MACtC,eAAa;AAAA,MACZ,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACG;AAAA,UAAC;AAAA;AAAA,YACG,KAAK;AAAA,YACL,WAAW;AAAA,cACP;AAAA,cACA,aAAa,EAAE,gBAAgB;AAAA,YACnC;AAAA,YACA,MAAK;AAAA,YACL,eAAa,CAAC;AAAA,YAEb;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EAER;AAER;AAEA,QAAQ,eAAe;AAAA,EACnB,QAAQ;AACZ;AAEA,IAAO,kBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/visualBuilder/components/Collab/Tooltip/Tooltip.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport React from \"preact/compat\";\nimport { useState, useRef, useEffect } from \"preact/hooks\";\nimport { collabStyles } from \"../../../collab.style\";\nimport { positionTooltip } from \"../../../utils/collabUtils\";\nimport classNames from \"classnames\";\n\ninterface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n className?: string;\n testId?: string;\n}\n\ninterface PositionCoords {\n top: number;\n left: number;\n}\n\ninterface Positions {\n bottom: PositionCoords;\n top: PositionCoords;\n left: PositionCoords;\n right: PositionCoords;\n}\n\nconst Tooltip = (props: TooltipProps): JSX.Element => {\n const {\n content,\n children,\n position = \"bottom\",\n className,\n testId,\n ...otherProps\n } = props;\n const [isVisible, setIsVisible] = useState<boolean>(false);\n const [actualPosition, setActualPosition] = useState<\n \"top\" | \"bottom\" | \"left\" | \"right\"\n >(position);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const targetRef = useRef<HTMLDivElement>(null);\n\n const prevChildrenRef = useRef(children);\n\n useEffect(() => {\n if (prevChildrenRef.current !== children) {\n setIsVisible(false);\n prevChildrenRef.current = children;\n }\n }, [children]);\n\n useEffect(() => {\n const updateTooltip = () =>\n positionTooltip(tooltipRef, targetRef, position, setActualPosition);\n\n updateTooltip();\n window.addEventListener(\"scroll\", updateTooltip);\n window.addEventListener(\"resize\", updateTooltip);\n\n return () => {\n window.removeEventListener(\"scroll\", updateTooltip);\n window.removeEventListener(\"resize\", updateTooltip);\n };\n }, [isVisible, position]);\n\n return (\n <div\n ref={targetRef}\n className={classNames(\n \"collab-tooltip--wrapper\",\n collabStyles()[\"collab-tooltip--wrapper\"],\n className\n )}\n onMouseEnter={() => setIsVisible(true)}\n onMouseLeave={() => setIsVisible(false)}\n data-testid={testId}\n {...otherProps}\n >\n {children}\n {isVisible && (\n <div\n ref={tooltipRef}\n className={classNames(\n \"collab-tooltip\",\n `collab-tooltip--${actualPosition}`,\n collabStyles()[\"collab-tooltip\"],\n collabStyles()[`collab-tooltip--${actualPosition}`]\n )}\n role=\"tooltip\"\n aria-hidden={!isVisible}\n data-position={actualPosition}\n >\n {content}\n </div>\n )}\n </div>\n );\n};\n\nTooltip.defaultProps = {\n testId: \"collab-tooltip\",\n} as Partial<TooltipProps>;\n\nexport default Tooltip;\n"],"mappings":";;;AAEA,SAAS,UAAU,QAAQ,iBAAiB;AAC5C,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,OAAO,gBAAgB;AA8Df,SAcQ,KAdR;AAxCR,IAAM,UAAU,CAAC,UAAqC;AAClD,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,IAAI;AACJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAE1C,QAAQ;AACV,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,YAAY,OAAuB,IAAI;AAE7C,QAAM,kBAAkB,OAAO,QAAQ;AAEvC,YAAU,MAAM;AACZ,QAAI,gBAAgB,YAAY,UAAU;AACtC,mBAAa,KAAK;AAClB,sBAAgB,UAAU;AAAA,IAC9B;AAAA,EACJ,GAAG,CAAC,QAAQ,CAAC;AAEb,YAAU,MAAM;AACZ,UAAM,gBAAgB,MAClB,gBAAgB,YAAY,WAAW,UAAU,iBAAiB;AAEtE,kBAAc;AACd,WAAO,iBAAiB,UAAU,aAAa;AAC/C,WAAO,iBAAiB,UAAU,aAAa;AAE/C,WAAO,MAAM;AACT,aAAO,oBAAoB,UAAU,aAAa;AAClD,aAAO,oBAAoB,UAAU,aAAa;AAAA,IACtD;AAAA,EACJ,GAAG,CAAC,WAAW,QAAQ,CAAC;AAExB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,KAAK;AAAA,MACL,WAAW;AAAA,QACP;AAAA,QACA,aAAa,EAAE,yBAAyB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,cAAc,MAAM,aAAa,KAAK;AAAA,MACtC,eAAa;AAAA,MACZ,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACG;AAAA,UAAC;AAAA;AAAA,YACG,KAAK;AAAA,YACL,WAAW;AAAA,cACP;AAAA,cACA,mBAAmB,cAAc;AAAA,cACjC,aAAa,EAAE,gBAAgB;AAAA,cAC/B,aAAa,EAAE,mBAAmB,cAAc,EAAE;AAAA,YACtD;AAAA,YACA,MAAK;AAAA,YACL,eAAa,CAAC;AAAA,YACd,iBAAe;AAAA,YAEd;AAAA;AAAA,QACL;AAAA;AAAA;AAAA,EAER;AAER;AAEA,QAAQ,eAAe;AAAA,EACnB,QAAQ;AACZ;AAEA,IAAO,kBAAQ;","names":[]}
@@ -52,6 +52,7 @@ var import_icons2 = require("./icons/index.cjs");
52
52
  var import_getCsDataOfElement = require("../utils/getCsDataOfElement.cjs");
53
53
  var import_variant = require("./icons/variant.cjs");
54
54
  var import_FieldRevertComponent = require("./FieldRevert/FieldRevertComponent.cjs");
55
+ var import_loading = require("./icons/loading.cjs");
55
56
  var import_jsx_runtime = require("preact/jsx-runtime");
56
57
  var TOOLTIP_TOP_EDGE_BUFFER = 96;
57
58
  function handleReplaceAsset(fieldMetadata) {
@@ -84,25 +85,22 @@ function handleEdit(fieldMetadata) {
84
85
  );
85
86
  }
86
87
  function handleFormFieldFocus(eventDetails) {
87
- const { editableElement, fieldMetadata, cslpData } = eventDetails;
88
- import_visualBuilderPostMessage.default?.send(import_postMessage.VisualBuilderPostMessageEvents.TOGGLE_FORM, {
89
- fieldMetadata,
90
- cslpData
91
- }).then(() => {
92
- import_visualBuilderPostMessage.default?.send(
93
- import_postMessage.VisualBuilderPostMessageEvents.FOCUS_FIELD,
94
- {
95
- DOMEditStack: (0, import_getCsDataOfElement.getDOMEditStack)(editableElement)
96
- }
97
- );
98
- });
88
+ const { editableElement } = eventDetails;
89
+ return import_visualBuilderPostMessage.default?.send(
90
+ import_postMessage.VisualBuilderPostMessageEvents.FOCUS_FIELD,
91
+ {
92
+ DOMEditStack: (0, import_getCsDataOfElement.getDOMEditStack)(editableElement),
93
+ toggleVisibility: true
94
+ }
95
+ );
99
96
  }
100
97
  function FieldToolbarComponent(props) {
101
- const { eventDetails } = props;
98
+ const { eventDetails, isVariant: isVariantOrParentOfVariant } = props;
102
99
  const { fieldMetadata, editableElement: targetElement } = eventDetails;
100
+ const [isFormLoading, setIsFormLoading] = (0, import_compat.useState)(false);
103
101
  const parentPath = fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue || "";
102
+ const isVariant = !!fieldMetadata?.variant || isVariantOrParentOfVariant;
104
103
  const direction = (0, import_getChildrenDirection.default)(targetElement, parentPath);
105
- const isVariant = !!fieldMetadata?.variant;
106
104
  const [fieldSchema, setFieldSchema] = (0, import_compat.useState)(
107
105
  null
108
106
  );
@@ -124,15 +122,12 @@ function FieldToolbarComponent(props) {
124
122
  }
125
123
  fieldType = (0, import_getFieldType.getFieldType)(fieldSchema);
126
124
  isModalEditable = import_constants.ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType);
127
- isReplaceAllowed = import_constants.ALLOWED_REPLACE_FIELDS.includes(fieldType);
128
125
  Icon = import_fields.fieldIcons[fieldType];
129
126
  isMultiple = fieldSchema.multiple || false;
130
127
  if (fieldType === import_types.FieldDataType.REFERENCE)
131
128
  isMultiple = fieldSchema.field_metadata.ref_multiple;
132
129
  isWholeMultipleField = isMultiple && (fieldMetadata.fieldPathWithIndex === fieldMetadata.instance.fieldPathWithIndex || fieldMetadata.multipleFieldMetadata?.index === -1);
133
- if (import_constants.DEFAULT_MULTIPLE_FIELDS.includes(fieldType) && isWholeMultipleField) {
134
- return null;
135
- }
130
+ isReplaceAllowed = import_constants.ALLOWED_REPLACE_FIELDS.includes(fieldType) && !isWholeMultipleField;
136
131
  }
137
132
  const invertTooltipPosition = targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;
138
133
  const editButton = Icon ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -199,14 +194,26 @@ function FieldToolbarComponent(props) {
199
194
  {
200
195
  "visual-builder__tooltip--bottom": invertTooltipPosition,
201
196
  [(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__tooltip--bottom"]]: invertTooltipPosition
197
+ },
198
+ {
199
+ [(0, import_visualBuilder.visualBuilderStyles)()["visual-builder__button--comment-loader"]]: isFormLoading,
200
+ "visual-builder__button--comment-loader": isFormLoading
202
201
  }
203
202
  ),
204
203
  "data-tooltip": "Form",
205
204
  "data-testid": `visual-builder-form`,
206
- onClick: (e) => {
207
- handleFormFieldFocus(eventDetails);
205
+ onClick: async (e) => {
206
+ e.preventDefault();
207
+ e.stopPropagation();
208
+ setIsFormLoading(true);
209
+ try {
210
+ await handleFormFieldFocus(eventDetails);
211
+ } finally {
212
+ setIsFormLoading(false);
213
+ }
208
214
  },
209
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons2.FormIcon, {})
215
+ disabled: isFormLoading,
216
+ children: isFormLoading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_loading.LoadingIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons2.FormIcon, {})
210
217
  }
211
218
  );
212
219
  const toggleVariantDropdown = () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/FieldToolbar.tsx"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport getChildrenDirection from \"../utils/getChildrenDirection\";\nimport {\n ALLOWED_MODAL_EDITABLE_FIELD,\n ALLOWED_REPLACE_FIELDS,\n DEFAULT_MULTIPLE_FIELDS,\n} from \"../utils/constants\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport {\n handleDeleteInstance,\n handleMoveInstance,\n} from \"../utils/instanceHandlers\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { FieldDataType, ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n CaretIcon,\n DeleteIcon,\n MoveLeftIcon,\n MoveRightIcon,\n ReplaceAssetIcon,\n} from \"./icons\";\nimport { fieldIcons } from \"./icons/fields\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport CommentIcon from \"./CommentIcon\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { IReferenceContentTypeSchema } from \"../../cms/types/contentTypeSchema.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FormIcon } from \"./icons\";\nimport { getDOMEditStack } from \"../utils/getCsDataOfElement\";\nimport { VariantIcon } from \"./icons/variant\";\nimport {\n BASE_VARIANT_STATUS,\n FieldRevertComponent,\n getFieldVariantStatus,\n IVariantStatus,\n VariantRevertDropdown,\n} from \"./FieldRevert/FieldRevertComponent\";\n\nexport type FieldDetails = Pick<\n VisualBuilderCslpEventDetails,\n \"editableElement\" | \"fieldMetadata\"\n>;\n\nconst TOOLTIP_TOP_EDGE_BUFFER = 96;\n\ninterface MultipleFieldToolbarProps {\n eventDetails: VisualBuilderCslpEventDetails;\n hideOverlay: () => void;\n}\n\nfunction handleReplaceAsset(fieldMetadata: CslpData) {\n // TODO avoid sending whole fieldMetadata\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_ASSET_MODAL,\n {\n fieldMetadata,\n }\n );\n}\n\nfunction handleReplaceReference(fieldMetadata: CslpData) {\n const isMultipleInstance =\n fieldMetadata.multipleFieldMetadata.index > -1 &&\n fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.multipleFieldMetadata.parentDetails?.parentPath;\n const entryPath = isMultipleInstance\n ? fieldMetadata.instance.fieldPathWithIndex\n : fieldMetadata.fieldPathWithIndex;\n\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REFERENCE_MODAL,\n {\n entry_uid: fieldMetadata.entry_uid,\n content_type_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n fieldPath: fieldMetadata.fieldPath,\n fieldPathWithIndex: fieldMetadata.fieldPathWithIndex,\n entryPath,\n }\n );\n}\n\nfunction handleEdit(fieldMetadata: CslpData) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_FIELD_EDIT_MODAL,\n { fieldMetadata }\n );\n}\n\nfunction handleFormFieldFocus(eventDetails: VisualBuilderCslpEventDetails) {\n const { editableElement, fieldMetadata, cslpData } = eventDetails;\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.TOGGLE_FORM, {\n fieldMetadata,\n cslpData,\n })\n .then(() => {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.FOCUS_FIELD,\n {\n DOMEditStack: getDOMEditStack(editableElement),\n }\n );\n });\n}\n\nfunction FieldToolbarComponent(\n props: MultipleFieldToolbarProps\n): JSX.Element | null {\n const { eventDetails } = props;\n const { fieldMetadata, editableElement: targetElement } = eventDetails;\n\n const parentPath =\n fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue ||\n \"\";\n const direction = getChildrenDirection(targetElement, parentPath);\n const isVariant = !!fieldMetadata?.variant;\n const [fieldSchema, setFieldSchema] = useState<ISchemaFieldMap | null>(\n null\n );\n const [fieldVariantStatus, setFieldVariantStatus] =\n useState<IVariantStatus>(BASE_VARIANT_STATUS);\n const [isOpenVariantRevert, setIsOpenVariantRevert] =\n useState<boolean>(false);\n\n let isModalEditable = false;\n let isReplaceAllowed = false;\n let isMultiple = false;\n let Icon = null;\n let fieldType = null;\n let isWholeMultipleField = false;\n\n if (fieldSchema) {\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement: targetElement,\n fieldMetadata,\n });\n\n // field is disabled, no actions needed\n if (isDisabled) {\n return null;\n }\n\n fieldType = getFieldType(fieldSchema);\n isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType);\n isReplaceAllowed = ALLOWED_REPLACE_FIELDS.includes(fieldType);\n\n Icon = fieldIcons[fieldType];\n\n isMultiple = fieldSchema.multiple || false;\n if (fieldType === FieldDataType.REFERENCE)\n isMultiple = (fieldSchema as IReferenceContentTypeSchema)\n .field_metadata.ref_multiple;\n\n // field is multiple but an instance is not selected\n // instead the whole field (all instances) is selected.\n // Currently, when whole featured_blogs is selected in canvas,\n // the fieldPathWithIndex and instance.fieldPathWithIndex are the same\n // cannot rely on -1 index, as the non-negative index then refers to the index of\n // the featured_blogs block in page_components\n // It is not needed except taxanomy.\n isWholeMultipleField =\n isMultiple &&\n (fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.instance.fieldPathWithIndex ||\n fieldMetadata.multipleFieldMetadata?.index === -1);\n\n if (\n DEFAULT_MULTIPLE_FIELDS.includes(fieldType) &&\n isWholeMultipleField\n ) {\n return null;\n }\n }\n\n const invertTooltipPosition =\n targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;\n\n const editButton = Icon ? (\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__edit-button\"\n className={classNames(\n \"visual-builder__button visual-builder__button--secondary visual-builder__button--edit\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__button--edit\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Edit\"}\n onClick={(e) => {\n // TODO the listener for field path is attached to the common parent requiring\n // propagation to be stopped, should ideally only attach onClick to fieldpath dropdown\n e.preventDefault();\n e.stopPropagation();\n handleEdit(fieldMetadata);\n }}\n >\n <Icon />\n </button>\n ) : null;\n\n const replaceButton = fieldType ? (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Replace\"}\n data-testid={`visual-builder-replace-${fieldType}`}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n if (fieldType === FieldDataType.REFERENCE) {\n handleReplaceReference(fieldMetadata);\n return;\n } else if (fieldType === FieldDataType.FILE) {\n handleReplaceAsset(fieldMetadata);\n return;\n }\n }}\n >\n <ReplaceAssetIcon />\n </button>\n ) : null;\n\n const formButton = (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Form\"}\n data-testid={`visual-builder-form`}\n onClick={(e) => {\n handleFormFieldFocus(eventDetails);\n }}\n >\n <FormIcon />\n </button>\n );\n\n const toggleVariantDropdown = () => {\n setIsOpenVariantRevert(!isOpenVariantRevert);\n };\n\n const closeVariantDropdown = () => {\n setIsOpenVariantRevert(false);\n };\n\n const variantButton = (\n <button\n className={classNames(\n \"visual-builder__variant-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n visualBuilderStyles()[\"visual-builder__variant-button\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={isOpenVariantRevert} />\n </button>\n );\n\n const totalElementCount = targetElement?.parentNode?.childElementCount ?? 1;\n const indexOfElement = fieldMetadata?.multipleFieldMetadata?.index;\n\n const disableMoveLeft = indexOfElement === 0; // first element\n const disableMoveRight = indexOfElement === totalElementCount - 1; // last element\n\n useEffect(() => {\n async function fetchFieldSchema() {\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n if (fieldSchema) {\n setFieldSchema(fieldSchema);\n }\n const variantStatus = await getFieldVariantStatus(fieldMetadata);\n setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);\n }\n fetchFieldSchema();\n }, [fieldMetadata]);\n\n useEffect(() => {\n const event = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n (args: { data: { path: string } }) => {\n if (\n args.data?.path ===\n fieldMetadata.instance.fieldPathWithIndex\n ) {\n props.hideOverlay();\n }\n }\n );\n return () => {\n event?.unregister();\n };\n }, []);\n\n const multipleFieldToolbarButtonClasses = classNames(\n \"visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n );\n\n return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__multiple-field-toolbar\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__multiple-field-toolbar\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar\"\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__button-group\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__button-group\"\n ]\n )}\n >\n <>\n {isVariant ? (\n <VariantRevertDropdown\n fieldDataName={fieldMetadata.fieldPathWithIndex}\n fieldMetadata={fieldMetadata}\n variantStatus={fieldVariantStatus}\n isOpen={isOpenVariantRevert}\n closeDropdown={closeVariantDropdown}\n invertTooltipPosition={invertTooltipPosition}\n toggleVariantDropdown={toggleVariantDropdown}\n />\n ) : null}\n {isMultiple && !isWholeMultipleField ? (\n <>\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move up\"\n : \"Move left\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"previous\"\n );\n }}\n disabled={disableMoveLeft}\n >\n <MoveLeftIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={disableMoveLeft}\n />\n </button>\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move down\"\n : \"Move right\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"next\"\n );\n }}\n disabled={disableMoveRight}\n >\n <MoveRightIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={disableMoveRight}\n />\n </button>\n\n {isModalEditable ? editButton : null}\n {formButton}\n {isReplaceAllowed ? replaceButton : null}\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__delete-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\"Delete\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDeleteInstance(fieldMetadata);\n }}\n >\n <DeleteIcon />\n </button>\n </>\n ) : (\n <>\n {isModalEditable ? editButton : null}\n {isReplaceAllowed ? replaceButton : null}\n {formButton}\n {fieldSchema ? (\n <CommentIcon\n fieldMetadata={fieldMetadata}\n fieldSchema={fieldSchema}\n invertTooltipPosition={\n invertTooltipPosition\n }\n />\n ) : null}\n </>\n )}\n </>\n </div>\n </div>\n </div>\n );\n}\n\nexport default FieldToolbarComponent;\n"],"mappings":"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","names":["import_icons","visualBuilderPostMessage","getChildrenDirection","classNames","fieldSchema","CommentIcon"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/FieldToolbar.tsx"],"sourcesContent":["import { CslpData } from \"../../cslp/types/cslp.types\";\nimport getChildrenDirection from \"../utils/getChildrenDirection\";\nimport {\n ALLOWED_MODAL_EDITABLE_FIELD,\n ALLOWED_REPLACE_FIELDS,\n DEFAULT_MULTIPLE_FIELDS,\n} from \"../utils/constants\";\nimport { getFieldType } from \"../utils/getFieldType\";\nimport {\n handleDeleteInstance,\n handleMoveInstance,\n} from \"../utils/instanceHandlers\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { FieldDataType, ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n CaretIcon,\n DeleteIcon,\n MoveLeftIcon,\n MoveRightIcon,\n ReplaceAssetIcon,\n} from \"./icons\";\nimport { fieldIcons } from \"./icons/fields\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport CommentIcon from \"./CommentIcon\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { IReferenceContentTypeSchema } from \"../../cms/types/contentTypeSchema.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FormIcon } from \"./icons\";\nimport { getDOMEditStack } from \"../utils/getCsDataOfElement\";\nimport { VariantIcon } from \"./icons/variant\";\nimport {\n BASE_VARIANT_STATUS,\n FieldRevertComponent,\n getFieldVariantStatus,\n IVariantStatus,\n VariantRevertDropdown,\n} from \"./FieldRevert/FieldRevertComponent\";\nimport { LoadingIcon } from \"./icons/loading\";\n\nexport type FieldDetails = Pick<\n VisualBuilderCslpEventDetails,\n \"editableElement\" | \"fieldMetadata\"\n>;\n\nconst TOOLTIP_TOP_EDGE_BUFFER = 96;\n\ninterface MultipleFieldToolbarProps {\n eventDetails: VisualBuilderCslpEventDetails;\n hideOverlay: () => void;\n isVariant?: boolean;\n}\n\nfunction handleReplaceAsset(fieldMetadata: CslpData) {\n // TODO avoid sending whole fieldMetadata\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_ASSET_MODAL,\n {\n fieldMetadata,\n }\n );\n}\n\nfunction handleReplaceReference(fieldMetadata: CslpData) {\n const isMultipleInstance =\n fieldMetadata.multipleFieldMetadata.index > -1 &&\n fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.multipleFieldMetadata.parentDetails?.parentPath;\n const entryPath = isMultipleInstance\n ? fieldMetadata.instance.fieldPathWithIndex\n : fieldMetadata.fieldPathWithIndex;\n\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REFERENCE_MODAL,\n {\n entry_uid: fieldMetadata.entry_uid,\n content_type_uid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n fieldPath: fieldMetadata.fieldPath,\n fieldPathWithIndex: fieldMetadata.fieldPathWithIndex,\n entryPath,\n }\n );\n}\n\nfunction handleEdit(fieldMetadata: CslpData) {\n visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_FIELD_EDIT_MODAL,\n { fieldMetadata }\n );\n}\n\nfunction handleFormFieldFocus(eventDetails: VisualBuilderCslpEventDetails) {\n const { editableElement } = eventDetails;\n return visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.FOCUS_FIELD,\n {\n DOMEditStack: getDOMEditStack(editableElement),\n toggleVisibility: true,\n }\n );\n}\n\nfunction FieldToolbarComponent(\n props: MultipleFieldToolbarProps\n): JSX.Element | null {\n const { eventDetails, isVariant: isVariantOrParentOfVariant } = props;\n const { fieldMetadata, editableElement: targetElement } = eventDetails;\n const [isFormLoading, setIsFormLoading] = useState(false);\n\n const parentPath =\n fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue ||\n \"\";\n const isVariant = !!fieldMetadata?.variant || isVariantOrParentOfVariant;\n const direction = getChildrenDirection(targetElement, parentPath);\n const [fieldSchema, setFieldSchema] = useState<ISchemaFieldMap | null>(\n null\n );\n const [fieldVariantStatus, setFieldVariantStatus] =\n useState<IVariantStatus>(BASE_VARIANT_STATUS);\n const [isOpenVariantRevert, setIsOpenVariantRevert] =\n useState<boolean>(false);\n\n let isModalEditable = false;\n let isReplaceAllowed = false;\n let isMultiple = false;\n let Icon = null;\n let fieldType = null;\n let isWholeMultipleField = false;\n\n if (fieldSchema) {\n const { isDisabled } = isFieldDisabled(fieldSchema, {\n editableElement: targetElement,\n fieldMetadata,\n });\n\n // field is disabled, no actions needed\n if (isDisabled) {\n return null;\n }\n\n fieldType = getFieldType(fieldSchema);\n isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType);\n\n Icon = fieldIcons[fieldType];\n\n isMultiple = fieldSchema.multiple || false;\n if (fieldType === FieldDataType.REFERENCE)\n isMultiple = (fieldSchema as IReferenceContentTypeSchema)\n .field_metadata.ref_multiple;\n\n // field is multiple but an instance is not selected\n // instead the whole field (all instances) is selected.\n // Currently, when whole featured_blogs is selected in canvas,\n // the fieldPathWithIndex and instance.fieldPathWithIndex are the same\n // cannot rely on -1 index, as the non-negative index then refers to the index of\n // the featured_blogs block in page_components\n // It is not needed except taxanomy.\n isWholeMultipleField =\n isMultiple &&\n (fieldMetadata.fieldPathWithIndex ===\n fieldMetadata.instance.fieldPathWithIndex ||\n fieldMetadata.multipleFieldMetadata?.index === -1);\n\n isReplaceAllowed = ALLOWED_REPLACE_FIELDS.includes(fieldType) && !isWholeMultipleField;\n // if (\n // DEFAULT_MULTIPLE_FIELDS.includes(fieldType) &&\n // isWholeMultipleField &&\n // !isVariant\n // ) {\n // return null;\n // }\n }\n\n const invertTooltipPosition =\n targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;\n\n const editButton = Icon ? (\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__edit-button\"\n className={classNames(\n \"visual-builder__button visual-builder__button--secondary visual-builder__button--edit\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__button--edit\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Edit\"}\n onClick={(e) => {\n // TODO the listener for field path is attached to the common parent requiring\n // propagation to be stopped, should ideally only attach onClick to fieldpath dropdown\n e.preventDefault();\n e.stopPropagation();\n handleEdit(fieldMetadata);\n }}\n >\n <Icon />\n </button>\n ) : null;\n\n const replaceButton = fieldType ? (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Replace\"}\n data-testid={`visual-builder-replace-${fieldType}`}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n if (fieldType === FieldDataType.REFERENCE) {\n handleReplaceReference(fieldMetadata);\n return;\n } else if (fieldType === FieldDataType.FILE) {\n handleReplaceAsset(fieldMetadata);\n return;\n }\n }}\n >\n <ReplaceAssetIcon />\n </button>\n ) : null;\n\n const formButton = (\n <button\n className={classNames(\n \"visual-builder__replace-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n },\n {\n [visualBuilderStyles()[\"visual-builder__button--comment-loader\"]]: isFormLoading,\n \"visual-builder__button--comment-loader\": isFormLoading\n }\n )}\n data-tooltip={\"Form\"}\n data-testid={`visual-builder-form`}\n onClick={async (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsFormLoading(true);\n try {\n await handleFormFieldFocus(eventDetails);\n } finally {\n setIsFormLoading(false);\n }\n }}\n disabled={isFormLoading}\n >\n {isFormLoading ? <LoadingIcon /> : <FormIcon />}\n </button>\n );\n\n const toggleVariantDropdown = () => {\n setIsOpenVariantRevert(!isOpenVariantRevert);\n };\n\n const closeVariantDropdown = () => {\n setIsOpenVariantRevert(false);\n };\n\n const variantButton = (\n <button\n className={classNames(\n \"visual-builder__variant-button visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n visualBuilderStyles()[\"visual-builder__variant-button\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n )}\n data-tooltip={\"Variant Revert\"}\n data-testid={`visual-builder-canvas-variant-revert`}\n onClick={toggleVariantDropdown}\n >\n <VariantIcon />\n <CaretIcon open={isOpenVariantRevert} />\n </button>\n );\n\n const totalElementCount = targetElement?.parentNode?.childElementCount ?? 1;\n const indexOfElement = fieldMetadata?.multipleFieldMetadata?.index;\n\n const disableMoveLeft = indexOfElement === 0; // first element\n const disableMoveRight = indexOfElement === totalElementCount - 1; // last element\n\n useEffect(() => {\n async function fetchFieldSchema() {\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n if (fieldSchema) {\n setFieldSchema(fieldSchema);\n }\n const variantStatus = await getFieldVariantStatus(fieldMetadata);\n setFieldVariantStatus(variantStatus ?? BASE_VARIANT_STATUS);\n }\n fetchFieldSchema();\n }, [fieldMetadata]);\n\n useEffect(() => {\n const event = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n (args: { data: { path: string } }) => {\n if (\n args.data?.path ===\n fieldMetadata.instance.fieldPathWithIndex\n ) {\n props.hideOverlay();\n }\n }\n );\n return () => {\n event?.unregister();\n };\n }, []);\n\n const multipleFieldToolbarButtonClasses = classNames(\n \"visual-builder__button visual-builder__button--secondary\",\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\"visual-builder__button--secondary\"],\n visualBuilderStyles()[\"visual-builder__tooltip\"],\n {\n \"visual-builder__tooltip--bottom\": invertTooltipPosition,\n [visualBuilderStyles()[\"visual-builder__tooltip--bottom\"]]:\n invertTooltipPosition,\n }\n );\n\n return (\n <div\n className={classNames(\n \"visual-builder__field-toolbar-container\",\n visualBuilderStyles()[\"visual-builder__field-toolbar-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__multiple-field-toolbar\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__multiple-field-toolbar\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar\"\n >\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__button-group\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__button-group\"\n ]\n )}\n >\n <>\n {isVariant ? (\n <VariantRevertDropdown\n fieldDataName={fieldMetadata.fieldPathWithIndex}\n fieldMetadata={fieldMetadata}\n variantStatus={fieldVariantStatus}\n isOpen={isOpenVariantRevert}\n closeDropdown={closeVariantDropdown}\n invertTooltipPosition={invertTooltipPosition}\n toggleVariantDropdown={toggleVariantDropdown}\n />\n ) : null}\n {isMultiple && !isWholeMultipleField ? (\n <>\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move up\"\n : \"Move left\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"previous\"\n );\n }}\n disabled={disableMoveLeft}\n >\n <MoveLeftIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={disableMoveLeft}\n />\n </button>\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\n direction === \"vertical\"\n ? \"Move down\"\n : \"Move right\"\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleMoveInstance(\n fieldMetadata,\n \"next\"\n );\n }}\n disabled={disableMoveRight}\n >\n <MoveRightIcon\n className={classNames({\n \"visual-builder__rotate--90\":\n direction === \"vertical\",\n [visualBuilderStyles()[\n \"visual-builder__rotate--90\"\n ]]: direction === \"vertical\",\n })}\n disabled={disableMoveRight}\n />\n </button>\n\n {isModalEditable ? editButton : null}\n {formButton}\n {isReplaceAllowed ? replaceButton : null}\n\n <button\n data-testid=\"visual-builder__focused-toolbar__multiple-field-toolbar__delete-button\"\n className={\n multipleFieldToolbarButtonClasses\n }\n data-tooltip={\"Delete\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleDeleteInstance(fieldMetadata);\n }}\n >\n <DeleteIcon />\n </button>\n </>\n ) : (\n <>\n {isModalEditable ? editButton : null}\n {isReplaceAllowed ? replaceButton : null}\n {formButton}\n {fieldSchema ? (\n <CommentIcon\n fieldMetadata={fieldMetadata}\n fieldSchema={fieldSchema}\n invertTooltipPosition={\n invertTooltipPosition\n }\n />\n ) : null}\n </>\n )}\n </>\n </div>\n </div>\n </div>\n );\n}\n\nexport default FieldToolbarComponent;\n"],"mappings":"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","names":["import_icons","visualBuilderPostMessage","getChildrenDirection","classNames","fieldSchema","CommentIcon"]}
@@ -5,6 +5,7 @@ type FieldDetails = Pick<VisualBuilderCslpEventDetails, "editableElement" | "fie
5
5
  interface MultipleFieldToolbarProps {
6
6
  eventDetails: VisualBuilderCslpEventDetails;
7
7
  hideOverlay: () => void;
8
+ isVariant?: boolean;
8
9
  }
9
10
  declare function FieldToolbarComponent(props: MultipleFieldToolbarProps): JSX.Element | null;
10
11
 
@@ -5,6 +5,7 @@ type FieldDetails = Pick<VisualBuilderCslpEventDetails, "editableElement" | "fie
5
5
  interface MultipleFieldToolbarProps {
6
6
  eventDetails: VisualBuilderCslpEventDetails;
7
7
  hideOverlay: () => void;
8
+ isVariant?: boolean;
8
9
  }
9
10
  declare function FieldToolbarComponent(props: MultipleFieldToolbarProps): JSX.Element | null;
10
11
 
@@ -4,8 +4,7 @@ import "../../chunk-5WRI5ZAA.js";
4
4
  import getChildrenDirection from "../utils/getChildrenDirection.js";
5
5
  import {
6
6
  ALLOWED_MODAL_EDITABLE_FIELD,
7
- ALLOWED_REPLACE_FIELDS,
8
- DEFAULT_MULTIPLE_FIELDS
7
+ ALLOWED_REPLACE_FIELDS
9
8
  } from "../utils/constants.js";
10
9
  import { getFieldType } from "../utils/getFieldType.js";
11
10
  import {
@@ -37,6 +36,7 @@ import {
37
36
  getFieldVariantStatus,
38
37
  VariantRevertDropdown
39
38
  } from "./FieldRevert/FieldRevertComponent.js";
39
+ import { LoadingIcon } from "./icons/loading.js";
40
40
  import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
41
41
  var TOOLTIP_TOP_EDGE_BUFFER = 96;
42
42
  function handleReplaceAsset(fieldMetadata) {
@@ -69,25 +69,22 @@ function handleEdit(fieldMetadata) {
69
69
  );
70
70
  }
71
71
  function handleFormFieldFocus(eventDetails) {
72
- const { editableElement, fieldMetadata, cslpData } = eventDetails;
73
- visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.TOGGLE_FORM, {
74
- fieldMetadata,
75
- cslpData
76
- }).then(() => {
77
- visualBuilderPostMessage?.send(
78
- VisualBuilderPostMessageEvents.FOCUS_FIELD,
79
- {
80
- DOMEditStack: getDOMEditStack(editableElement)
81
- }
82
- );
83
- });
72
+ const { editableElement } = eventDetails;
73
+ return visualBuilderPostMessage?.send(
74
+ VisualBuilderPostMessageEvents.FOCUS_FIELD,
75
+ {
76
+ DOMEditStack: getDOMEditStack(editableElement),
77
+ toggleVisibility: true
78
+ }
79
+ );
84
80
  }
85
81
  function FieldToolbarComponent(props) {
86
- const { eventDetails } = props;
82
+ const { eventDetails, isVariant: isVariantOrParentOfVariant } = props;
87
83
  const { fieldMetadata, editableElement: targetElement } = eventDetails;
84
+ const [isFormLoading, setIsFormLoading] = useState(false);
88
85
  const parentPath = fieldMetadata?.multipleFieldMetadata?.parentDetails?.parentCslpValue || "";
86
+ const isVariant = !!fieldMetadata?.variant || isVariantOrParentOfVariant;
89
87
  const direction = getChildrenDirection(targetElement, parentPath);
90
- const isVariant = !!fieldMetadata?.variant;
91
88
  const [fieldSchema, setFieldSchema] = useState(
92
89
  null
93
90
  );
@@ -109,15 +106,12 @@ function FieldToolbarComponent(props) {
109
106
  }
110
107
  fieldType = getFieldType(fieldSchema);
111
108
  isModalEditable = ALLOWED_MODAL_EDITABLE_FIELD.includes(fieldType);
112
- isReplaceAllowed = ALLOWED_REPLACE_FIELDS.includes(fieldType);
113
109
  Icon = fieldIcons[fieldType];
114
110
  isMultiple = fieldSchema.multiple || false;
115
111
  if (fieldType === FieldDataType.REFERENCE)
116
112
  isMultiple = fieldSchema.field_metadata.ref_multiple;
117
113
  isWholeMultipleField = isMultiple && (fieldMetadata.fieldPathWithIndex === fieldMetadata.instance.fieldPathWithIndex || fieldMetadata.multipleFieldMetadata?.index === -1);
118
- if (DEFAULT_MULTIPLE_FIELDS.includes(fieldType) && isWholeMultipleField) {
119
- return null;
120
- }
114
+ isReplaceAllowed = ALLOWED_REPLACE_FIELDS.includes(fieldType) && !isWholeMultipleField;
121
115
  }
122
116
  const invertTooltipPosition = targetElement.getBoundingClientRect().top <= TOOLTIP_TOP_EDGE_BUFFER;
123
117
  const editButton = Icon ? /* @__PURE__ */ jsx(
@@ -184,14 +178,26 @@ function FieldToolbarComponent(props) {
184
178
  {
185
179
  "visual-builder__tooltip--bottom": invertTooltipPosition,
186
180
  [visualBuilderStyles()["visual-builder__tooltip--bottom"]]: invertTooltipPosition
181
+ },
182
+ {
183
+ [visualBuilderStyles()["visual-builder__button--comment-loader"]]: isFormLoading,
184
+ "visual-builder__button--comment-loader": isFormLoading
187
185
  }
188
186
  ),
189
187
  "data-tooltip": "Form",
190
188
  "data-testid": `visual-builder-form`,
191
- onClick: (e) => {
192
- handleFormFieldFocus(eventDetails);
189
+ onClick: async (e) => {
190
+ e.preventDefault();
191
+ e.stopPropagation();
192
+ setIsFormLoading(true);
193
+ try {
194
+ await handleFormFieldFocus(eventDetails);
195
+ } finally {
196
+ setIsFormLoading(false);
197
+ }
193
198
  },
194
- children: /* @__PURE__ */ jsx(FormIcon, {})
199
+ disabled: isFormLoading,
200
+ children: isFormLoading ? /* @__PURE__ */ jsx(LoadingIcon, {}) : /* @__PURE__ */ jsx(FormIcon, {})
195
201
  }
196
202
  );
197
203
  const toggleVariantDropdown = () => {