@contentstack/live-preview-utils 3.2.0-alpha.1 → 3.2.1

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 (508) 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/logger/logger.cjs +1 -1
  25. package/dist/legacy/logger/logger.cjs.map +1 -1
  26. package/dist/legacy/logger/logger.js +1 -1
  27. package/dist/legacy/logger/logger.js.map +1 -1
  28. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +6 -2
  29. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  30. package/dist/legacy/preview/contentstack-live-preview-HOC.js +6 -2
  31. package/dist/legacy/preview/contentstack-live-preview-HOC.js.map +1 -1
  32. package/dist/legacy/types/types.cjs.map +1 -1
  33. package/dist/legacy/types/types.d.cts +10 -15
  34. package/dist/legacy/types/types.d.ts +10 -15
  35. package/dist/legacy/types/types.js.map +1 -1
  36. package/dist/legacy/visualBuilder/collab.style.cjs +131 -1
  37. package/dist/legacy/visualBuilder/collab.style.cjs.map +1 -1
  38. package/dist/legacy/visualBuilder/collab.style.d.cts +17 -0
  39. package/dist/legacy/visualBuilder/collab.style.d.ts +17 -0
  40. package/dist/legacy/visualBuilder/collab.style.js +131 -1
  41. package/dist/legacy/visualBuilder/collab.style.js.map +1 -1
  42. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs +70 -0
  43. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs.map +1 -0
  44. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.cts +12 -0
  45. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.ts +12 -0
  46. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js +41 -0
  47. package/dist/legacy/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js.map +1 -0
  48. package/dist/legacy/visualBuilder/components/Collab/Button/Button.cjs +32 -10
  49. package/dist/legacy/visualBuilder/components/Collab/Button/Button.cjs.map +1 -1
  50. package/dist/legacy/visualBuilder/components/Collab/Button/Button.d.cts +2 -0
  51. package/dist/legacy/visualBuilder/components/Collab/Button/Button.d.ts +2 -0
  52. package/dist/legacy/visualBuilder/components/Collab/Button/Button.js +33 -11
  53. package/dist/legacy/visualBuilder/components/Collab/Button/Button.js.map +1 -1
  54. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.cjs +11 -4
  55. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.cjs.map +1 -1
  56. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.js +11 -4
  57. package/dist/legacy/visualBuilder/components/Collab/CollabIndicator.js.map +1 -1
  58. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.cjs +6 -1
  59. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.cjs.map +1 -1
  60. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.d.cts +1 -0
  61. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.d.ts +1 -0
  62. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.js +6 -1
  63. package/dist/legacy/visualBuilder/components/Collab/Icon/Icon.js.map +1 -1
  64. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs +8 -3
  65. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs.map +1 -1
  66. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js +9 -4
  67. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js.map +1 -1
  68. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs +1 -2
  69. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs.map +1 -1
  70. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.js +2 -3
  71. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentCard.js.map +1 -1
  72. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs +2 -5
  73. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs.map +1 -1
  74. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js +3 -9
  75. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js.map +1 -1
  76. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +98 -57
  77. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
  78. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +98 -57
  79. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
  80. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs +92 -0
  81. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs.map +1 -0
  82. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.cts +13 -0
  83. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.ts +13 -0
  84. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js +63 -0
  85. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js.map +1 -0
  86. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs +1 -0
  87. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs.map +1 -1
  88. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js +1 -0
  89. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js.map +1 -1
  90. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs +19 -50
  91. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs.map +1 -1
  92. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js +21 -52
  93. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js.map +1 -1
  94. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.cjs +29 -18
  95. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.cjs.map +1 -1
  96. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.js +29 -18
  97. package/dist/legacy/visualBuilder/components/Collab/ThreadPopup/index.js.map +1 -1
  98. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.cjs +19 -35
  99. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.cjs.map +1 -1
  100. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.js +19 -35
  101. package/dist/legacy/visualBuilder/components/Collab/Tooltip/Tooltip.js.map +1 -1
  102. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +28 -22
  103. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  104. package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +1 -0
  105. package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +1 -0
  106. package/dist/legacy/visualBuilder/components/FieldToolbar.js +29 -24
  107. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  108. package/dist/legacy/visualBuilder/components/addInstanceButton.cjs +39 -11
  109. package/dist/legacy/visualBuilder/components/addInstanceButton.cjs.map +1 -1
  110. package/dist/legacy/visualBuilder/components/addInstanceButton.d.cts +5 -0
  111. package/dist/legacy/visualBuilder/components/addInstanceButton.d.ts +5 -0
  112. package/dist/legacy/visualBuilder/components/addInstanceButton.js +39 -11
  113. package/dist/legacy/visualBuilder/components/addInstanceButton.js.map +1 -1
  114. package/dist/legacy/visualBuilder/components/startEditingButton.cjs +38 -11
  115. package/dist/legacy/visualBuilder/components/startEditingButton.cjs.map +1 -1
  116. package/dist/legacy/visualBuilder/components/startEditingButton.d.cts +7 -2
  117. package/dist/legacy/visualBuilder/components/startEditingButton.d.ts +7 -2
  118. package/dist/legacy/visualBuilder/components/startEditingButton.js +34 -11
  119. package/dist/legacy/visualBuilder/components/startEditingButton.js.map +1 -1
  120. package/dist/legacy/visualBuilder/eventManager/useCollab.cjs +57 -19
  121. package/dist/legacy/visualBuilder/eventManager/useCollab.cjs.map +1 -1
  122. package/dist/legacy/visualBuilder/eventManager/useCollab.js +57 -19
  123. package/dist/legacy/visualBuilder/eventManager/useCollab.js.map +1 -1
  124. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs +7 -2
  125. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs.map +1 -1
  126. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js +7 -2
  127. package/dist/legacy/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js.map +1 -1
  128. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
  129. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  130. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
  131. package/dist/legacy/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  132. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
  133. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
  134. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
  135. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
  136. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
  137. package/dist/legacy/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
  138. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +5 -0
  139. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  140. package/dist/legacy/visualBuilder/generators/generateOverlay.js +5 -0
  141. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  142. package/dist/legacy/visualBuilder/generators/generateThread.cjs +103 -18
  143. package/dist/legacy/visualBuilder/generators/generateThread.cjs.map +1 -1
  144. package/dist/legacy/visualBuilder/generators/generateThread.d.cts +3 -1
  145. package/dist/legacy/visualBuilder/generators/generateThread.d.ts +3 -1
  146. package/dist/legacy/visualBuilder/generators/generateThread.js +101 -17
  147. package/dist/legacy/visualBuilder/generators/generateThread.js.map +1 -1
  148. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +13 -5
  149. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  150. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +2 -2
  151. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +2 -2
  152. package/dist/legacy/visualBuilder/generators/generateToolbar.js +13 -5
  153. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  154. package/dist/legacy/visualBuilder/hooks/useCollabOperations.cjs +9 -8
  155. package/dist/legacy/visualBuilder/hooks/useCollabOperations.cjs.map +1 -1
  156. package/dist/legacy/visualBuilder/hooks/useCollabOperations.js +9 -8
  157. package/dist/legacy/visualBuilder/hooks/useCollabOperations.js.map +1 -1
  158. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.cjs +23 -5
  159. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.cjs.map +1 -1
  160. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.cts +1 -0
  161. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.d.ts +1 -0
  162. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.js +23 -5
  163. package/dist/legacy/visualBuilder/hooks/useCommentTextArea.js.map +1 -1
  164. package/dist/legacy/visualBuilder/index.cjs +16 -11
  165. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  166. package/dist/legacy/visualBuilder/index.d.cts +1 -0
  167. package/dist/legacy/visualBuilder/index.d.ts +1 -0
  168. package/dist/legacy/visualBuilder/index.js +14 -5
  169. package/dist/legacy/visualBuilder/index.js.map +1 -1
  170. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +93 -20
  171. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  172. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
  173. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
  174. package/dist/legacy/visualBuilder/listeners/mouseClick.js +93 -20
  175. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  176. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +3 -1
  177. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  178. package/dist/legacy/visualBuilder/listeners/mouseHover.js +3 -1
  179. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  180. package/dist/legacy/visualBuilder/types/collab.types.cjs.map +1 -1
  181. package/dist/legacy/visualBuilder/types/collab.types.d.cts +22 -1
  182. package/dist/legacy/visualBuilder/types/collab.types.d.ts +22 -1
  183. package/dist/legacy/visualBuilder/utils/collabUtils.cjs +108 -4
  184. package/dist/legacy/visualBuilder/utils/collabUtils.cjs.map +1 -1
  185. package/dist/legacy/visualBuilder/utils/collabUtils.d.cts +25 -1
  186. package/dist/legacy/visualBuilder/utils/collabUtils.d.ts +25 -1
  187. package/dist/legacy/visualBuilder/utils/collabUtils.js +103 -4
  188. package/dist/legacy/visualBuilder/utils/collabUtils.js.map +1 -1
  189. package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs +94 -0
  190. package/dist/legacy/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
  191. package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
  192. package/dist/legacy/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
  193. package/dist/legacy/visualBuilder/utils/enableInlineEditing.js +74 -0
  194. package/dist/legacy/visualBuilder/utils/enableInlineEditing.js.map +1 -0
  195. package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs +8 -0
  196. package/dist/legacy/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
  197. package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
  198. package/dist/legacy/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
  199. package/dist/legacy/visualBuilder/utils/getChildrenDirection.js +8 -0
  200. package/dist/legacy/visualBuilder/utils/getChildrenDirection.js.map +1 -1
  201. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +4 -1
  202. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  203. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +4 -1
  204. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  205. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +24 -112
  206. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  207. package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
  208. package/dist/legacy/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
  209. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +22 -116
  210. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  211. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
  212. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
  213. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
  214. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
  215. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js +58 -0
  216. package/dist/legacy/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
  217. package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs +35 -0
  218. package/dist/legacy/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
  219. package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
  220. package/dist/legacy/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
  221. package/dist/legacy/visualBuilder/utils/isFieldMultiple.js +12 -0
  222. package/dist/legacy/visualBuilder/utils/isFieldMultiple.js.map +1 -0
  223. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs +14 -20
  224. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  225. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
  226. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
  227. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js +14 -20
  228. package/dist/legacy/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  229. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
  230. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
  231. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
  232. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
  233. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js +21 -0
  234. package/dist/legacy/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
  235. package/dist/legacy/visualBuilder/utils/types/index.types.cjs.map +1 -1
  236. package/dist/legacy/visualBuilder/utils/types/index.types.d.cts +6 -1
  237. package/dist/legacy/visualBuilder/utils/types/index.types.d.ts +6 -1
  238. package/dist/legacy/visualBuilder/utils/types/index.types.js.map +1 -1
  239. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -1
  240. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  241. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
  242. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
  243. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -1
  244. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  245. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +10 -7
  246. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  247. package/dist/legacy/visualBuilder/utils/updateFocussedState.js +10 -7
  248. package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
  249. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +27 -5
  250. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  251. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +6 -1
  252. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +6 -1
  253. package/dist/legacy/visualBuilder/visualBuilder.style.js +27 -5
  254. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  255. package/dist/modern/configManager/config.default.cjs +10 -1
  256. package/dist/modern/configManager/config.default.cjs.map +1 -1
  257. package/dist/modern/configManager/config.default.js +10 -1
  258. package/dist/modern/configManager/config.default.js.map +1 -1
  259. package/dist/modern/configManager/handleUserConfig.cjs +4 -0
  260. package/dist/modern/configManager/handleUserConfig.cjs.map +1 -1
  261. package/dist/modern/configManager/handleUserConfig.js +4 -0
  262. package/dist/modern/configManager/handleUserConfig.js.map +1 -1
  263. package/dist/modern/index.cjs +45 -1
  264. package/dist/modern/index.cjs.map +1 -1
  265. package/dist/modern/index.d.cts +16 -2
  266. package/dist/modern/index.d.ts +16 -2
  267. package/dist/modern/index.js +45 -1
  268. package/dist/modern/index.js.map +1 -1
  269. package/dist/modern/livePreview/editButton/editButton.cjs +85 -1
  270. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  271. package/dist/modern/livePreview/editButton/editButton.d.cts +14 -1
  272. package/dist/modern/livePreview/editButton/editButton.d.ts +14 -1
  273. package/dist/modern/livePreview/editButton/editButton.js +84 -1
  274. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  275. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  276. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  277. package/dist/modern/logger/logger.cjs +1 -1
  278. package/dist/modern/logger/logger.cjs.map +1 -1
  279. package/dist/modern/logger/logger.js +1 -1
  280. package/dist/modern/logger/logger.js.map +1 -1
  281. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +6 -2
  282. package/dist/modern/preview/contentstack-live-preview-HOC.cjs.map +1 -1
  283. package/dist/modern/preview/contentstack-live-preview-HOC.js +6 -2
  284. package/dist/modern/preview/contentstack-live-preview-HOC.js.map +1 -1
  285. package/dist/modern/types/types.cjs.map +1 -1
  286. package/dist/modern/types/types.d.cts +10 -15
  287. package/dist/modern/types/types.d.ts +10 -15
  288. package/dist/modern/types/types.js.map +1 -1
  289. package/dist/modern/visualBuilder/collab.style.cjs +131 -1
  290. package/dist/modern/visualBuilder/collab.style.cjs.map +1 -1
  291. package/dist/modern/visualBuilder/collab.style.d.cts +17 -0
  292. package/dist/modern/visualBuilder/collab.style.d.ts +17 -0
  293. package/dist/modern/visualBuilder/collab.style.js +131 -1
  294. package/dist/modern/visualBuilder/collab.style.js.map +1 -1
  295. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs +70 -0
  296. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.cjs.map +1 -0
  297. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.cts +12 -0
  298. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.d.ts +12 -0
  299. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js +41 -0
  300. package/dist/modern/visualBuilder/components/Collab/AsyncLoader/AsyncLoader.js.map +1 -0
  301. package/dist/modern/visualBuilder/components/Collab/Button/Button.cjs +32 -10
  302. package/dist/modern/visualBuilder/components/Collab/Button/Button.cjs.map +1 -1
  303. package/dist/modern/visualBuilder/components/Collab/Button/Button.d.cts +2 -0
  304. package/dist/modern/visualBuilder/components/Collab/Button/Button.d.ts +2 -0
  305. package/dist/modern/visualBuilder/components/Collab/Button/Button.js +33 -11
  306. package/dist/modern/visualBuilder/components/Collab/Button/Button.js.map +1 -1
  307. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.cjs +7 -1
  308. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.cjs.map +1 -1
  309. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.js +7 -1
  310. package/dist/modern/visualBuilder/components/Collab/CollabIndicator.js.map +1 -1
  311. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.cjs +6 -1
  312. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.cjs.map +1 -1
  313. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.d.cts +1 -0
  314. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.d.ts +1 -0
  315. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.js +6 -1
  316. package/dist/modern/visualBuilder/components/Collab/Icon/Icon.js.map +1 -1
  317. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs +8 -3
  318. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.cjs.map +1 -1
  319. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js +9 -4
  320. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentActionBar.js.map +1 -1
  321. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs +1 -2
  322. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.cjs.map +1 -1
  323. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.js +2 -3
  324. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentCard.js.map +1 -1
  325. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs +2 -5
  326. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.cjs.map +1 -1
  327. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js +3 -9
  328. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentResolvedText.js.map +1 -1
  329. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs +94 -57
  330. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.cjs.map +1 -1
  331. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js +94 -57
  332. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/CommentTextArea.js.map +1 -1
  333. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs +92 -0
  334. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.cjs.map +1 -0
  335. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.cts +13 -0
  336. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.d.ts +13 -0
  337. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js +63 -0
  338. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadActionBar.js.map +1 -0
  339. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs +1 -0
  340. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.cjs.map +1 -1
  341. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js +1 -0
  342. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadFooter.js.map +1 -1
  343. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs +19 -50
  344. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.cjs.map +1 -1
  345. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js +21 -52
  346. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/ThreadHeader.js.map +1 -1
  347. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.cjs +29 -18
  348. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.cjs.map +1 -1
  349. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.js +29 -18
  350. package/dist/modern/visualBuilder/components/Collab/ThreadPopup/index.js.map +1 -1
  351. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.cjs +19 -35
  352. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.cjs.map +1 -1
  353. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.js +19 -35
  354. package/dist/modern/visualBuilder/components/Collab/Tooltip/Tooltip.js.map +1 -1
  355. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +28 -21
  356. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  357. package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +1 -0
  358. package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +1 -0
  359. package/dist/modern/visualBuilder/components/FieldToolbar.js +29 -23
  360. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  361. package/dist/modern/visualBuilder/components/addInstanceButton.cjs +38 -11
  362. package/dist/modern/visualBuilder/components/addInstanceButton.cjs.map +1 -1
  363. package/dist/modern/visualBuilder/components/addInstanceButton.d.cts +5 -0
  364. package/dist/modern/visualBuilder/components/addInstanceButton.d.ts +5 -0
  365. package/dist/modern/visualBuilder/components/addInstanceButton.js +38 -11
  366. package/dist/modern/visualBuilder/components/addInstanceButton.js.map +1 -1
  367. package/dist/modern/visualBuilder/components/startEditingButton.cjs +38 -11
  368. package/dist/modern/visualBuilder/components/startEditingButton.cjs.map +1 -1
  369. package/dist/modern/visualBuilder/components/startEditingButton.d.cts +7 -2
  370. package/dist/modern/visualBuilder/components/startEditingButton.d.ts +7 -2
  371. package/dist/modern/visualBuilder/components/startEditingButton.js +34 -11
  372. package/dist/modern/visualBuilder/components/startEditingButton.js.map +1 -1
  373. package/dist/modern/visualBuilder/eventManager/useCollab.cjs +45 -11
  374. package/dist/modern/visualBuilder/eventManager/useCollab.cjs.map +1 -1
  375. package/dist/modern/visualBuilder/eventManager/useCollab.js +45 -11
  376. package/dist/modern/visualBuilder/eventManager/useCollab.js.map +1 -1
  377. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs +5 -0
  378. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.cjs.map +1 -1
  379. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js +5 -0
  380. package/dist/modern/visualBuilder/eventManager/useHideFocusOverlayPostMessageEvent.js.map +1 -1
  381. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs +59 -4
  382. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.cjs.map +1 -1
  383. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js +59 -4
  384. package/dist/modern/visualBuilder/eventManager/useRecalculateVariantDataCSLPValues.js.map +1 -1
  385. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs +8 -2
  386. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.cjs.map +1 -1
  387. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.cts +9 -3
  388. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.d.ts +9 -3
  389. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js +8 -2
  390. package/dist/modern/visualBuilder/generators/generateAddInstanceButtons.js.map +1 -1
  391. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +5 -0
  392. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  393. package/dist/modern/visualBuilder/generators/generateOverlay.js +5 -0
  394. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  395. package/dist/modern/visualBuilder/generators/generateThread.cjs +102 -16
  396. package/dist/modern/visualBuilder/generators/generateThread.cjs.map +1 -1
  397. package/dist/modern/visualBuilder/generators/generateThread.d.cts +3 -1
  398. package/dist/modern/visualBuilder/generators/generateThread.d.ts +3 -1
  399. package/dist/modern/visualBuilder/generators/generateThread.js +100 -15
  400. package/dist/modern/visualBuilder/generators/generateThread.js.map +1 -1
  401. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +13 -5
  402. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  403. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +2 -2
  404. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +2 -2
  405. package/dist/modern/visualBuilder/generators/generateToolbar.js +13 -5
  406. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  407. package/dist/modern/visualBuilder/hooks/useCollabOperations.cjs +9 -8
  408. package/dist/modern/visualBuilder/hooks/useCollabOperations.cjs.map +1 -1
  409. package/dist/modern/visualBuilder/hooks/useCollabOperations.js +9 -8
  410. package/dist/modern/visualBuilder/hooks/useCollabOperations.js.map +1 -1
  411. package/dist/modern/visualBuilder/hooks/useCommentTextArea.cjs +22 -5
  412. package/dist/modern/visualBuilder/hooks/useCommentTextArea.cjs.map +1 -1
  413. package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.cts +1 -0
  414. package/dist/modern/visualBuilder/hooks/useCommentTextArea.d.ts +1 -0
  415. package/dist/modern/visualBuilder/hooks/useCommentTextArea.js +22 -5
  416. package/dist/modern/visualBuilder/hooks/useCommentTextArea.js.map +1 -1
  417. package/dist/modern/visualBuilder/index.cjs +16 -11
  418. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  419. package/dist/modern/visualBuilder/index.d.cts +1 -0
  420. package/dist/modern/visualBuilder/index.d.ts +1 -0
  421. package/dist/modern/visualBuilder/index.js +14 -5
  422. package/dist/modern/visualBuilder/index.js.map +1 -1
  423. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +90 -18
  424. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  425. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
  426. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
  427. package/dist/modern/visualBuilder/listeners/mouseClick.js +90 -18
  428. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  429. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +3 -1
  430. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  431. package/dist/modern/visualBuilder/listeners/mouseHover.js +3 -1
  432. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  433. package/dist/modern/visualBuilder/types/collab.types.cjs.map +1 -1
  434. package/dist/modern/visualBuilder/types/collab.types.d.cts +22 -1
  435. package/dist/modern/visualBuilder/types/collab.types.d.ts +22 -1
  436. package/dist/modern/visualBuilder/utils/collabUtils.cjs +108 -4
  437. package/dist/modern/visualBuilder/utils/collabUtils.cjs.map +1 -1
  438. package/dist/modern/visualBuilder/utils/collabUtils.d.cts +25 -1
  439. package/dist/modern/visualBuilder/utils/collabUtils.d.ts +25 -1
  440. package/dist/modern/visualBuilder/utils/collabUtils.js +103 -4
  441. package/dist/modern/visualBuilder/utils/collabUtils.js.map +1 -1
  442. package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs +94 -0
  443. package/dist/modern/visualBuilder/utils/enableInlineEditing.cjs.map +1 -0
  444. package/dist/modern/visualBuilder/utils/enableInlineEditing.d.cts +11 -0
  445. package/dist/modern/visualBuilder/utils/enableInlineEditing.d.ts +11 -0
  446. package/dist/modern/visualBuilder/utils/enableInlineEditing.js +74 -0
  447. package/dist/modern/visualBuilder/utils/enableInlineEditing.js.map +1 -0
  448. package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs +8 -0
  449. package/dist/modern/visualBuilder/utils/getChildrenDirection.cjs.map +1 -1
  450. package/dist/modern/visualBuilder/utils/getChildrenDirection.d.cts +3 -1
  451. package/dist/modern/visualBuilder/utils/getChildrenDirection.d.ts +3 -1
  452. package/dist/modern/visualBuilder/utils/getChildrenDirection.js +8 -0
  453. package/dist/modern/visualBuilder/utils/getChildrenDirection.js.map +1 -1
  454. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +4 -1
  455. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  456. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +4 -1
  457. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  458. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +23 -111
  459. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  460. package/dist/modern/visualBuilder/utils/handleIndividualFields.d.cts +3 -5
  461. package/dist/modern/visualBuilder/utils/handleIndividualFields.d.ts +3 -5
  462. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +21 -115
  463. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  464. package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs +81 -0
  465. package/dist/modern/visualBuilder/utils/handleInlineEditableField.cjs.map +1 -0
  466. package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.cts +16 -0
  467. package/dist/modern/visualBuilder/utils/handleInlineEditableField.d.ts +16 -0
  468. package/dist/modern/visualBuilder/utils/handleInlineEditableField.js +58 -0
  469. package/dist/modern/visualBuilder/utils/handleInlineEditableField.js.map +1 -0
  470. package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs +35 -0
  471. package/dist/modern/visualBuilder/utils/isFieldMultiple.cjs.map +1 -0
  472. package/dist/modern/visualBuilder/utils/isFieldMultiple.d.cts +6 -0
  473. package/dist/modern/visualBuilder/utils/isFieldMultiple.d.ts +6 -0
  474. package/dist/modern/visualBuilder/utils/isFieldMultiple.js +12 -0
  475. package/dist/modern/visualBuilder/utils/isFieldMultiple.js.map +1 -0
  476. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs +14 -18
  477. package/dist/modern/visualBuilder/utils/multipleElementAddButton.cjs.map +1 -1
  478. package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.cts +1 -1
  479. package/dist/modern/visualBuilder/utils/multipleElementAddButton.d.ts +1 -1
  480. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js +14 -18
  481. package/dist/modern/visualBuilder/utils/multipleElementAddButton.js.map +1 -1
  482. package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs +44 -0
  483. package/dist/modern/visualBuilder/utils/pasteAsPlainText.cjs.map +1 -0
  484. package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.cts +5 -0
  485. package/dist/modern/visualBuilder/utils/pasteAsPlainText.d.ts +5 -0
  486. package/dist/modern/visualBuilder/utils/pasteAsPlainText.js +21 -0
  487. package/dist/modern/visualBuilder/utils/pasteAsPlainText.js.map +1 -0
  488. package/dist/modern/visualBuilder/utils/types/index.types.cjs.map +1 -1
  489. package/dist/modern/visualBuilder/utils/types/index.types.d.cts +6 -1
  490. package/dist/modern/visualBuilder/utils/types/index.types.d.ts +6 -1
  491. package/dist/modern/visualBuilder/utils/types/index.types.js.map +1 -1
  492. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -1
  493. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  494. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -1
  495. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -1
  496. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -1
  497. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  498. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +10 -7
  499. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  500. package/dist/modern/visualBuilder/utils/updateFocussedState.js +10 -7
  501. package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
  502. package/dist/modern/visualBuilder/visualBuilder.style.cjs +27 -5
  503. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  504. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +6 -1
  505. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +6 -1
  506. package/dist/modern/visualBuilder/visualBuilder.style.js +27 -5
  507. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  508. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/handleInlineEditableField.ts"],"sourcesContent":["import { ALLOWED_INLINE_EDITABLE_FIELD } from \"./constants\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { FieldDataType, VisualBuilderEditContext } from \"./types/index.types\";\nimport { enableInlineEditing } from \"./enableInlineEditing\";\n\n/**\n * Handles inline editing for supported fields.\n */\nexport function handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement,\n elements,\n}: {\n fieldType: FieldDataType;\n fieldSchema: any;\n fieldMetadata: any;\n expectedFieldData: any;\n editableElement: HTMLElement;\n elements: VisualBuilderEditContext;\n}) {\n if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;\n\n // Instances of ALLOWED_INLINE_EDITABLE_FIELD will always have index at last\n const index = Number(\n fieldMetadata.instance.fieldPathWithIndex.split(\".\").at(-1)\n );\n const isInstance = Number.isFinite(index);\n\n // CASE 1: Handle inline editing for multiple field\n if (isFieldMultiple(fieldSchema)) {\n let expectedFieldInstanceData = null;\n if (Array.isArray(expectedFieldData)) {\n // CASE: Selected element is the multiple field itself.\n // Inline Editing not allowed on field, only allowed on instance.\n // (We receive unreliable `multipleFieldMetadata` in this case)\n if (!isInstance) {\n return;\n }\n\n // CASE: Value does not exist for the provided instance's index\n if (index >= expectedFieldData.length) {\n // TODO: What should be the behavior here?\n } else {\n expectedFieldInstanceData = expectedFieldData.at(index);\n }\n }\n // CASE: ContentType's Field changed from single to multiple, while Entry's Field still single.\n else {\n expectedFieldInstanceData = expectedFieldData;\n }\n\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData,\n editableElement,\n elements,\n });\n }\n // CASE 2: Handle inline editing for a single field\n else {\n let expectedFieldInstanceData = null;\n // CASE: ContentType's Field changed from multiple to single, while Entry's Field still multiple.\n if (isInstance) {\n if (index !== 0) {\n // TODO: Handle this with UX\n // Let user know, CSLP is invalid due to change in Content Type\n return;\n }\n expectedFieldInstanceData = Array.isArray(expectedFieldData)\n ? expectedFieldData.at(0)\n : expectedFieldData;\n }\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,\n editableElement,\n elements,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA8C;AAC9C,6BAAgC;AAEhC,iCAAoC;AAK7B,SAAS,0BAA0B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAOG;AACC,MAAI,CAAC,+CAA8B,SAAS,SAAS,EAAG;AAGxD,QAAM,QAAQ;AAAA,IACV,cAAc,SAAS,mBAAmB,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,EAC9D;AACA,QAAM,aAAa,OAAO,SAAS,KAAK;AAGxC,UAAI,wCAAgB,WAAW,GAAG;AAC9B,QAAI,4BAA4B;AAChC,QAAI,MAAM,QAAQ,iBAAiB,GAAG;AAIlC,UAAI,CAAC,YAAY;AACb;AAAA,MACJ;AAGA,UAAI,SAAS,kBAAkB,QAAQ;AAAA,MAEvC,OAAO;AACH,oCAA4B,kBAAkB,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,OAEK;AACD,kCAA4B;AAAA,IAChC;AAEA,wDAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL,OAEK;AACD,QAAI,4BAA4B;AAEhC,QAAI,YAAY;AACZ,UAAI,UAAU,GAAG;AAGb;AAAA,MACJ;AACA,kCAA4B,MAAM,QAAQ,iBAAiB,IACrD,kBAAkB,GAAG,CAAC,IACtB;AAAA,IACV;AACA,wDAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB,6BAA6B;AAAA,MAChD;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { FieldDataType, VisualBuilderEditContext } from './types/index.types.cjs';
2
+ import '../../cms/types/contentTypeSchema.types.cjs';
3
+
4
+ /**
5
+ * Handles inline editing for supported fields.
6
+ */
7
+ declare function handleInlineEditableField({ fieldType, fieldSchema, fieldMetadata, expectedFieldData, editableElement, elements, }: {
8
+ fieldType: FieldDataType;
9
+ fieldSchema: any;
10
+ fieldMetadata: any;
11
+ expectedFieldData: any;
12
+ editableElement: HTMLElement;
13
+ elements: VisualBuilderEditContext;
14
+ }): void;
15
+
16
+ export { handleInlineEditableField };
@@ -0,0 +1,16 @@
1
+ import { FieldDataType, VisualBuilderEditContext } from './types/index.types.js';
2
+ import '../../cms/types/contentTypeSchema.types.js';
3
+
4
+ /**
5
+ * Handles inline editing for supported fields.
6
+ */
7
+ declare function handleInlineEditableField({ fieldType, fieldSchema, fieldMetadata, expectedFieldData, editableElement, elements, }: {
8
+ fieldType: FieldDataType;
9
+ fieldSchema: any;
10
+ fieldMetadata: any;
11
+ expectedFieldData: any;
12
+ editableElement: HTMLElement;
13
+ elements: VisualBuilderEditContext;
14
+ }): void;
15
+
16
+ export { handleInlineEditableField };
@@ -0,0 +1,58 @@
1
+ import "../../chunk-5WRI5ZAA.js";
2
+
3
+ // src/visualBuilder/utils/handleInlineEditableField.ts
4
+ import { ALLOWED_INLINE_EDITABLE_FIELD } from "./constants.js";
5
+ import { isFieldMultiple } from "./isFieldMultiple.js";
6
+ import { enableInlineEditing } from "./enableInlineEditing.js";
7
+ function handleInlineEditableField({
8
+ fieldType,
9
+ fieldSchema,
10
+ fieldMetadata,
11
+ expectedFieldData,
12
+ editableElement,
13
+ elements
14
+ }) {
15
+ if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;
16
+ const index = Number(
17
+ fieldMetadata.instance.fieldPathWithIndex.split(".").at(-1)
18
+ );
19
+ const isInstance = Number.isFinite(index);
20
+ if (isFieldMultiple(fieldSchema)) {
21
+ let expectedFieldInstanceData = null;
22
+ if (Array.isArray(expectedFieldData)) {
23
+ if (!isInstance) {
24
+ return;
25
+ }
26
+ if (index >= expectedFieldData.length) {
27
+ } else {
28
+ expectedFieldInstanceData = expectedFieldData.at(index);
29
+ }
30
+ } else {
31
+ expectedFieldInstanceData = expectedFieldData;
32
+ }
33
+ enableInlineEditing({
34
+ fieldType,
35
+ expectedFieldData: expectedFieldInstanceData,
36
+ editableElement,
37
+ elements
38
+ });
39
+ } else {
40
+ let expectedFieldInstanceData = null;
41
+ if (isInstance) {
42
+ if (index !== 0) {
43
+ return;
44
+ }
45
+ expectedFieldInstanceData = Array.isArray(expectedFieldData) ? expectedFieldData.at(0) : expectedFieldData;
46
+ }
47
+ enableInlineEditing({
48
+ fieldType,
49
+ expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,
50
+ editableElement,
51
+ elements
52
+ });
53
+ }
54
+ }
55
+ export {
56
+ handleInlineEditableField
57
+ };
58
+ //# sourceMappingURL=handleInlineEditableField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/handleInlineEditableField.ts"],"sourcesContent":["import { ALLOWED_INLINE_EDITABLE_FIELD } from \"./constants\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { FieldDataType, VisualBuilderEditContext } from \"./types/index.types\";\nimport { enableInlineEditing } from \"./enableInlineEditing\";\n\n/**\n * Handles inline editing for supported fields.\n */\nexport function handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement,\n elements,\n}: {\n fieldType: FieldDataType;\n fieldSchema: any;\n fieldMetadata: any;\n expectedFieldData: any;\n editableElement: HTMLElement;\n elements: VisualBuilderEditContext;\n}) {\n if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;\n\n // Instances of ALLOWED_INLINE_EDITABLE_FIELD will always have index at last\n const index = Number(\n fieldMetadata.instance.fieldPathWithIndex.split(\".\").at(-1)\n );\n const isInstance = Number.isFinite(index);\n\n // CASE 1: Handle inline editing for multiple field\n if (isFieldMultiple(fieldSchema)) {\n let expectedFieldInstanceData = null;\n if (Array.isArray(expectedFieldData)) {\n // CASE: Selected element is the multiple field itself.\n // Inline Editing not allowed on field, only allowed on instance.\n // (We receive unreliable `multipleFieldMetadata` in this case)\n if (!isInstance) {\n return;\n }\n\n // CASE: Value does not exist for the provided instance's index\n if (index >= expectedFieldData.length) {\n // TODO: What should be the behavior here?\n } else {\n expectedFieldInstanceData = expectedFieldData.at(index);\n }\n }\n // CASE: ContentType's Field changed from single to multiple, while Entry's Field still single.\n else {\n expectedFieldInstanceData = expectedFieldData;\n }\n\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData,\n editableElement,\n elements,\n });\n }\n // CASE 2: Handle inline editing for a single field\n else {\n let expectedFieldInstanceData = null;\n // CASE: ContentType's Field changed from multiple to single, while Entry's Field still multiple.\n if (isInstance) {\n if (index !== 0) {\n // TODO: Handle this with UX\n // Let user know, CSLP is invalid due to change in Content Type\n return;\n }\n expectedFieldInstanceData = Array.isArray(expectedFieldData)\n ? expectedFieldData.at(0)\n : expectedFieldData;\n }\n enableInlineEditing({\n fieldType,\n expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,\n editableElement,\n elements,\n });\n }\n}\n"],"mappings":";;;AAAA,SAAS,qCAAqC;AAC9C,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAK7B,SAAS,0BAA0B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAOG;AACC,MAAI,CAAC,8BAA8B,SAAS,SAAS,EAAG;AAGxD,QAAM,QAAQ;AAAA,IACV,cAAc,SAAS,mBAAmB,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,EAC9D;AACA,QAAM,aAAa,OAAO,SAAS,KAAK;AAGxC,MAAI,gBAAgB,WAAW,GAAG;AAC9B,QAAI,4BAA4B;AAChC,QAAI,MAAM,QAAQ,iBAAiB,GAAG;AAIlC,UAAI,CAAC,YAAY;AACb;AAAA,MACJ;AAGA,UAAI,SAAS,kBAAkB,QAAQ;AAAA,MAEvC,OAAO;AACH,oCAA4B,kBAAkB,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,OAEK;AACD,kCAA4B;AAAA,IAChC;AAEA,wBAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL,OAEK;AACD,QAAI,4BAA4B;AAEhC,QAAI,YAAY;AACZ,UAAI,UAAU,GAAG;AAGb;AAAA,MACJ;AACA,kCAA4B,MAAM,QAAQ,iBAAiB,IACrD,kBAAkB,GAAG,CAAC,IACtB;AAAA,IACV;AACA,wBAAoB;AAAA,MAChB;AAAA,MACA,mBAAmB,6BAA6B;AAAA,MAChD;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;","names":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/visualBuilder/utils/isFieldMultiple.ts
21
+ var isFieldMultiple_exports = {};
22
+ __export(isFieldMultiple_exports, {
23
+ isFieldMultiple: () => isFieldMultiple
24
+ });
25
+ module.exports = __toCommonJS(isFieldMultiple_exports);
26
+ function isFieldMultiple(fieldSchema) {
27
+ return fieldSchema && (fieldSchema.multiple || fieldSchema.data_type === "reference" && // @ts-expect-error field_metadata will contain ref_multiple
28
+ // for reference fields
29
+ fieldSchema.field_metadata.ref_multiple);
30
+ }
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ isFieldMultiple
34
+ });
35
+ //# sourceMappingURL=isFieldMultiple.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldMultiple.ts"],"sourcesContent":["import { ISchemaFieldMap } from \"./types/index.types\";\n\nexport function isFieldMultiple(fieldSchema: ISchemaFieldMap): boolean {\n return (\n fieldSchema &&\n (fieldSchema.multiple ||\n (fieldSchema.data_type === \"reference\" &&\n // @ts-expect-error field_metadata will contain ref_multiple\n // for reference fields\n fieldSchema.field_metadata.ref_multiple))\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,gBAAgB,aAAuC;AACnE,SACI,gBACC,YAAY,YACR,YAAY,cAAc;AAAA;AAAA,EAGvB,YAAY,eAAe;AAE3C;","names":[]}
@@ -0,0 +1,6 @@
1
+ import { ISchemaFieldMap } from './types/index.types.cjs';
2
+ import '../../cms/types/contentTypeSchema.types.cjs';
3
+
4
+ declare function isFieldMultiple(fieldSchema: ISchemaFieldMap): boolean;
5
+
6
+ export { isFieldMultiple };
@@ -0,0 +1,6 @@
1
+ import { ISchemaFieldMap } from './types/index.types.js';
2
+ import '../../cms/types/contentTypeSchema.types.js';
3
+
4
+ declare function isFieldMultiple(fieldSchema: ISchemaFieldMap): boolean;
5
+
6
+ export { isFieldMultiple };
@@ -0,0 +1,12 @@
1
+ import "../../chunk-5WRI5ZAA.js";
2
+
3
+ // src/visualBuilder/utils/isFieldMultiple.ts
4
+ function isFieldMultiple(fieldSchema) {
5
+ return fieldSchema && (fieldSchema.multiple || fieldSchema.data_type === "reference" && // @ts-expect-error field_metadata will contain ref_multiple
6
+ // for reference fields
7
+ fieldSchema.field_metadata.ref_multiple);
8
+ }
9
+ export {
10
+ isFieldMultiple
11
+ };
12
+ //# sourceMappingURL=isFieldMultiple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldMultiple.ts"],"sourcesContent":["import { ISchemaFieldMap } from \"./types/index.types\";\n\nexport function isFieldMultiple(fieldSchema: ISchemaFieldMap): boolean {\n return (\n fieldSchema &&\n (fieldSchema.multiple ||\n (fieldSchema.data_type === \"reference\" &&\n // @ts-expect-error field_metadata will contain ref_multiple\n // for reference fields\n fieldSchema.field_metadata.ref_multiple))\n );\n}\n"],"mappings":";;;AAEO,SAAS,gBAAgB,aAAuC;AACnE,SACI,gBACC,YAAY,YACR,YAAY,cAAc;AAAA;AAAA,EAGvB,YAAY,eAAe;AAE3C;","names":[]}
@@ -36,11 +36,10 @@ __export(multipleElementAddButton_exports, {
36
36
  });
37
37
  module.exports = __toCommonJS(multipleElementAddButton_exports);
38
38
  var import_generateAddInstanceButtons = require("../generators/generateAddInstanceButtons.cjs");
39
- var import_visualBuilderPostMessage = __toESM(require("./visualBuilderPostMessage.cjs"), 1);
40
- var import_postMessage = require("./types/postMessage.types.cjs");
41
39
  var import_getChildrenDirection = __toESM(require("./getChildrenDirection.cjs"), 1);
42
40
  var import_generateOverlay = require("../generators/generateOverlay.cjs");
43
41
  var import_mouseHover = require("../listeners/mouseHover.cjs");
42
+ var import_signals = require("@preact/signals");
44
43
  var WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4e3;
45
44
  function handleAddButtonsForMultiple(eventDetails, elements, config) {
46
45
  const { editableElement, visualBuilderContainer, resizeObserver } = elements;
@@ -91,27 +90,24 @@ function handleAddButtonsForMultiple(eventDetails, elements, config) {
91
90
  index
92
91
  });
93
92
  };
93
+ const loading = (0, import_signals.signal)(false);
94
94
  const previousButton = (0, import_generateAddInstanceButtons.generateAddInstanceButton)({
95
- onClick: () => {
96
- import_visualBuilderPostMessage.default?.send(import_postMessage.VisualBuilderPostMessageEvents.ADD_INSTANCE, {
97
- fieldMetadata: eventDetails.fieldMetadata,
98
- index: prevIndex
99
- }).then(onMessageSent.bind(null, prevIndex));
100
- },
101
- label,
102
95
  fieldSchema,
103
- value: expectedFieldData
96
+ value: expectedFieldData,
97
+ fieldMetadata: eventDetails.fieldMetadata,
98
+ index: prevIndex,
99
+ onClick: onMessageSent.bind(null, prevIndex),
100
+ loading,
101
+ label
104
102
  });
105
103
  const nextButton = (0, import_generateAddInstanceButtons.generateAddInstanceButton)({
106
- onClick: () => {
107
- import_visualBuilderPostMessage.default?.send(import_postMessage.VisualBuilderPostMessageEvents.ADD_INSTANCE, {
108
- fieldMetadata: eventDetails.fieldMetadata,
109
- index: nextIndex
110
- }).then(onMessageSent.bind(null, nextIndex));
111
- },
112
- label,
113
104
  fieldSchema,
114
- value: expectedFieldData
105
+ value: expectedFieldData,
106
+ fieldMetadata: eventDetails.fieldMetadata,
107
+ index: nextIndex,
108
+ onClick: onMessageSent.bind(null, nextIndex),
109
+ loading,
110
+ label
115
111
  });
116
112
  if (!visualBuilderContainer.contains(previousButton)) {
117
113
  visualBuilderContainer.appendChild(previousButton);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n const previousButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n })\n .then(onMessageSent.bind(null, prevIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n const nextButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n })\n .then(onMessageSent.bind(null, nextIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function that observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["getChildrenDirection","visualBuilderPostMessage","addInstanceButtons"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { signal } from \"@preact/signals\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n // this is a shared loading state between the\n // next and previous button for the duration\n // between the add-instance post message being\n // sent and receiving a response for it.\n const loading = signal(false);\n\n const previousButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n onClick: onMessageSent.bind(null, prevIndex),\n loading,\n label,\n });\n\n const nextButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n onClick: onMessageSent.bind(null, nextIndex),\n loading,\n label,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["getChildrenDirection","addInstanceButtons"]}
@@ -29,7 +29,7 @@ declare function removeAddInstanceButtons(elements: {
29
29
  eventTarget: EventTarget | null;
30
30
  }, forceRemoveAll?: boolean): void;
31
31
  /**
32
- * This function that observes the parent element and focuses the newly added instance.
32
+ * This function observes the parent element and focuses the newly added instance.
33
33
  *
34
34
  * @param parentCslp The parent cslp value.
35
35
  * @param index The index of the new instance.
@@ -29,7 +29,7 @@ declare function removeAddInstanceButtons(elements: {
29
29
  eventTarget: EventTarget | null;
30
30
  }, forceRemoveAll?: boolean): void;
31
31
  /**
32
- * This function that observes the parent element and focuses the newly added instance.
32
+ * This function observes the parent element and focuses the newly added instance.
33
33
  *
34
34
  * @param parentCslp The parent cslp value.
35
35
  * @param index The index of the new instance.
@@ -5,11 +5,10 @@ import {
5
5
  generateAddInstanceButton,
6
6
  getAddInstanceButtons
7
7
  } from "../generators/generateAddInstanceButtons.js";
8
- import visualBuilderPostMessage from "./visualBuilderPostMessage.js";
9
- import { VisualBuilderPostMessageEvents } from "./types/postMessage.types.js";
10
8
  import getChildrenDirection from "./getChildrenDirection.js";
11
9
  import { hideOverlay } from "../generators/generateOverlay.js";
12
10
  import { hideHoverOutline } from "../listeners/mouseHover.js";
11
+ import { signal } from "@preact/signals";
13
12
  var WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4e3;
14
13
  function handleAddButtonsForMultiple(eventDetails, elements, config) {
15
14
  const { editableElement, visualBuilderContainer, resizeObserver } = elements;
@@ -60,27 +59,24 @@ function handleAddButtonsForMultiple(eventDetails, elements, config) {
60
59
  index
61
60
  });
62
61
  };
62
+ const loading = signal(false);
63
63
  const previousButton = generateAddInstanceButton({
64
- onClick: () => {
65
- visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {
66
- fieldMetadata: eventDetails.fieldMetadata,
67
- index: prevIndex
68
- }).then(onMessageSent.bind(null, prevIndex));
69
- },
70
- label,
71
64
  fieldSchema,
72
- value: expectedFieldData
65
+ value: expectedFieldData,
66
+ fieldMetadata: eventDetails.fieldMetadata,
67
+ index: prevIndex,
68
+ onClick: onMessageSent.bind(null, prevIndex),
69
+ loading,
70
+ label
73
71
  });
74
72
  const nextButton = generateAddInstanceButton({
75
- onClick: () => {
76
- visualBuilderPostMessage?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {
77
- fieldMetadata: eventDetails.fieldMetadata,
78
- index: nextIndex
79
- }).then(onMessageSent.bind(null, nextIndex));
80
- },
81
- label,
82
73
  fieldSchema,
83
- value: expectedFieldData
74
+ value: expectedFieldData,
75
+ fieldMetadata: eventDetails.fieldMetadata,
76
+ index: nextIndex,
77
+ onClick: onMessageSent.bind(null, nextIndex),
78
+ loading,
79
+ label
84
80
  });
85
81
  if (!visualBuilderContainer.contains(previousButton)) {
86
82
  visualBuilderContainer.appendChild(previousButton);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n const previousButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n })\n .then(onMessageSent.bind(null, prevIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n const nextButton = generateAddInstanceButton({\n onClick: () => {\n visualBuilderPostMessage\n ?.send(VisualBuilderPostMessageEvents.ADD_INSTANCE, {\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n })\n .then(onMessageSent.bind(null, nextIndex));\n },\n label,\n fieldSchema,\n value: expectedFieldData,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function that observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["addInstanceButtons"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/multipleElementAddButton.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport {\n generateAddInstanceButton,\n getAddInstanceButtons,\n} from \"../generators/generateAddInstanceButtons\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { hideOverlay } from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { signal } from \"@preact/signals\";\n\nconst WAIT_FOR_NEW_INSTANCE_TIMEOUT = 4000;\n\n/**\n * The function that handles the add instance buttons for multiple fields.\n * @param eventDetails The details containing the field metadata and cslp value.\n * @param elements The elements object that contain the editable element and visual builder wrapper.\n * @param config The configuration object that contains the expected field data and disabled state.\n * @returns void\n */\nexport function handleAddButtonsForMultiple(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: {\n editableElement: Element | null;\n visualBuilderContainer: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n },\n config: {\n fieldSchema: ISchemaFieldMap;\n /**\n * expectedFieldData is the value of the whole multiple field (an array)\n */\n expectedFieldData: any;\n disabled: boolean;\n label: string | undefined;\n }\n): void {\n const { editableElement, visualBuilderContainer, resizeObserver } =\n elements;\n const { expectedFieldData, fieldSchema, disabled, label } = config;\n\n const parentCslpValue =\n eventDetails.fieldMetadata.multipleFieldMetadata?.parentDetails\n ?.parentCslpValue;\n\n if (!editableElement || !parentCslpValue) {\n return;\n }\n\n const direction = getChildrenDirection(editableElement, parentCslpValue);\n if (direction === \"none\" || !visualBuilderContainer) {\n return;\n }\n\n const targetDOMDimension = editableElement.getBoundingClientRect();\n removeAddInstanceButtons(\n {\n visualBuilderContainer: visualBuilderContainer,\n eventTarget: null,\n overlayWrapper: null,\n },\n true\n );\n\n const overlayWrapper = visualBuilderContainer.querySelector(\n \".visual-builder__overlay__wrapper\"\n );\n const focusedToolbar = visualBuilderContainer.querySelector(\n \".visual-builder__focused-toolbar\"\n );\n\n const hideOverlayAndHoverOutline = () => {\n hideHoverOutline(visualBuilderContainer);\n hideOverlay({\n visualBuilderContainer: visualBuilderContainer,\n visualBuilderOverlayWrapper: overlayWrapper as HTMLDivElement,\n focusedToolbar: focusedToolbar as HTMLDivElement,\n resizeObserver,\n });\n };\n\n if (disabled) {\n return;\n }\n\n // is whole field and not a single instance of the multiple field\n const isField =\n eventDetails.fieldMetadata.instance.fieldPathWithIndex ===\n eventDetails.fieldMetadata.fieldPathWithIndex;\n\n const prevIndex = isField\n ? 0\n : eventDetails.fieldMetadata.multipleFieldMetadata.index;\n const nextIndex = isField\n ? expectedFieldData.length\n : eventDetails.fieldMetadata.multipleFieldMetadata.index + 1;\n\n const parentCslp = isField ? eventDetails.cslpData : parentCslpValue;\n\n const onMessageSent = (index: number) => {\n hideOverlayAndHoverOutline();\n observeParentAndFocusNewInstance({\n parentCslp,\n index,\n });\n };\n\n // this is a shared loading state between the\n // next and previous button for the duration\n // between the add-instance post message being\n // sent and receiving a response for it.\n const loading = signal(false);\n\n const previousButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: prevIndex,\n onClick: onMessageSent.bind(null, prevIndex),\n loading,\n label,\n });\n\n const nextButton = generateAddInstanceButton({\n fieldSchema,\n value: expectedFieldData,\n fieldMetadata: eventDetails.fieldMetadata,\n index: nextIndex,\n onClick: onMessageSent.bind(null, nextIndex),\n loading,\n label,\n });\n\n if (!visualBuilderContainer.contains(previousButton)) {\n visualBuilderContainer.appendChild(previousButton);\n }\n\n if (!visualBuilderContainer.contains(nextButton)) {\n visualBuilderContainer.appendChild(nextButton);\n }\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n}\n\nexport function removeAddInstanceButtons(\n elements: {\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n eventTarget: EventTarget | null;\n },\n forceRemoveAll = false\n): void {\n const { visualBuilderContainer, overlayWrapper, eventTarget } = elements;\n\n if (!visualBuilderContainer) {\n return;\n }\n\n if (forceRemoveAll) {\n const addInstanceButtons = getAddInstanceButtons(\n visualBuilderContainer,\n true\n );\n\n addInstanceButtons?.forEach((button) => button.remove());\n }\n\n const addInstanceButtons = getAddInstanceButtons(visualBuilderContainer);\n\n if (!addInstanceButtons) {\n return;\n }\n\n const [previousButton, nextButton] = addInstanceButtons;\n\n if (overlayWrapper?.classList.contains(\"visible\")) {\n return;\n }\n\n if (\n eventTarget &&\n (previousButton.contains(eventTarget as Node) ||\n nextButton.contains(eventTarget as Node))\n ) {\n return;\n }\n\n nextButton.remove();\n previousButton.remove();\n}\n\n/**\n * This function observes the parent element and focuses the newly added instance.\n *\n * @param parentCslp The parent cslp value.\n * @param index The index of the new instance.\n * @returns void\n *\n * We can evolve the retry logic, as different use cases arise.\n * Currently, if the new element is not found after the first mutation, we until\n * WAIT_FOR_NEW_INSTANCE_TIMEOUT, expecting that the new instance/block will be\n * found in later mutations and we can focus + disconnect then.\n * We also ensure there is only one setTimeout scheduled.\n */\nexport function observeParentAndFocusNewInstance({\n parentCslp,\n index,\n}: {\n parentCslp: string;\n index: number;\n}): void {\n const parent = document.querySelector(\n `[data-cslp='${parentCslp}']`\n ) as HTMLElement;\n\n if (parent) {\n const expectedCslp = [parentCslp, index].join(\".\");\n\n let hasObserverDisconnected = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const mutationObserver = new MutationObserver(\n (_mutations, observer) => {\n const newInstance = parent.querySelector(\n `[data-cslp='${expectedCslp}']`\n ) as HTMLElement | null;\n if (newInstance) {\n // this is how we also navigate to parent elements, but parent elements\n // are never primitive fields, the instances can be and this steals\n // focus from the form and puts it on the canvas.\n // So currently for a singleline multiple field, the form opens but we\n // come back to the canvas.\n // TODO - maybe we should not focus the content-editable\n // TODO - temp fix. We remove our empty block div once the new block arrives\n // but we focus the element before that and then the block shifts.\n // For some reason, the window resize event also does not trigger\n setTimeout(() => newInstance.click(), 350);\n observer.disconnect();\n hasObserverDisconnected = true;\n return;\n }\n if (!hasObserverDisconnected && !timeoutId) {\n // disconnect the observer whether we found the new instance or not\n // after timeout\n timeoutId = setTimeout(() => {\n observer.disconnect();\n hasObserverDisconnected = false;\n }, WAIT_FOR_NEW_INSTANCE_TIMEOUT);\n }\n }\n );\n mutationObserver.observe(parent, {\n childList: true,\n // watch subtrees as there may be wrapper elements\n subtree: true,\n // we don't need to watch for attribute changes\n attributes: false,\n });\n }\n}\n"],"mappings":"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","names":["addInstanceButtons"]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/visualBuilder/utils/pasteAsPlainText.ts
21
+ var pasteAsPlainText_exports = {};
22
+ __export(pasteAsPlainText_exports, {
23
+ pasteAsPlainText: () => pasteAsPlainText
24
+ });
25
+ module.exports = __toCommonJS(pasteAsPlainText_exports);
26
+ var import_lodash_es = require("lodash-es");
27
+ var pasteAsPlainText = (0, import_lodash_es.debounce)(
28
+ (e) => {
29
+ e.preventDefault();
30
+ const clipboardData = e.clipboardData;
31
+ document.execCommand(
32
+ "inserttext",
33
+ false,
34
+ clipboardData?.getData("text/plain")
35
+ );
36
+ },
37
+ 100,
38
+ { leading: true }
39
+ );
40
+ // Annotate the CommonJS export names for ESM import in node:
41
+ 0 && (module.exports = {
42
+ pasteAsPlainText
43
+ });
44
+ //# sourceMappingURL=pasteAsPlainText.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/pasteAsPlainText.ts"],"sourcesContent":["import { debounce } from \"lodash-es\";\n\nexport const pasteAsPlainText = debounce(\n (e: Event) => {\n e.preventDefault();\n const clipboardData = (e as ClipboardEvent).clipboardData;\n document.execCommand(\n \"inserttext\",\n false,\n clipboardData?.getData(\"text/plain\")\n );\n },\n 100,\n { leading: true }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AAElB,IAAM,uBAAmB;AAAA,EAC5B,CAAC,MAAa;AACV,MAAE,eAAe;AACjB,UAAM,gBAAiB,EAAqB;AAC5C,aAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,YAAY;AAAA,IACvC;AAAA,EACJ;AAAA,EACA;AAAA,EACA,EAAE,SAAS,KAAK;AACpB;","names":[]}
@@ -0,0 +1,5 @@
1
+ import * as lodash from 'lodash';
2
+
3
+ declare const pasteAsPlainText: lodash.DebouncedFuncLeading<(e: Event) => void>;
4
+
5
+ export { pasteAsPlainText };
@@ -0,0 +1,5 @@
1
+ import * as lodash from 'lodash';
2
+
3
+ declare const pasteAsPlainText: lodash.DebouncedFuncLeading<(e: Event) => void>;
4
+
5
+ export { pasteAsPlainText };
@@ -0,0 +1,21 @@
1
+ import "../../chunk-5WRI5ZAA.js";
2
+
3
+ // src/visualBuilder/utils/pasteAsPlainText.ts
4
+ import { debounce } from "lodash-es";
5
+ var pasteAsPlainText = debounce(
6
+ (e) => {
7
+ e.preventDefault();
8
+ const clipboardData = e.clipboardData;
9
+ document.execCommand(
10
+ "inserttext",
11
+ false,
12
+ clipboardData?.getData("text/plain")
13
+ );
14
+ },
15
+ 100,
16
+ { leading: true }
17
+ );
18
+ export {
19
+ pasteAsPlainText
20
+ };
21
+ //# sourceMappingURL=pasteAsPlainText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/pasteAsPlainText.ts"],"sourcesContent":["import { debounce } from \"lodash-es\";\n\nexport const pasteAsPlainText = debounce(\n (e: Event) => {\n e.preventDefault();\n const clipboardData = (e as ClipboardEvent).clipboardData;\n document.execCommand(\n \"inserttext\",\n false,\n clipboardData?.getData(\"text/plain\")\n );\n },\n 100,\n { leading: true }\n);\n"],"mappings":";;;AAAA,SAAS,gBAAgB;AAElB,IAAM,mBAAmB;AAAA,EAC5B,CAAC,MAAa;AACV,MAAE,eAAe;AACjB,UAAM,gBAAiB,EAAqB;AAC5C,aAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,YAAY;AAAA,IACvC;AAAA,EACJ;AAAA,EACA;AAAA,EACA,EAAE,SAAS,KAAK;AACpB;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n\nexport interface VisualBuilderEditContext {\n visualBuilderContainer: HTMLDivElement;\n resizeObserver: ResizeObserver;\n lastEditedField: Element | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
@@ -42,5 +42,10 @@ declare enum FieldDataType {
42
42
  GLOBAL_FIELD = "global_field",
43
43
  TAXONOMY = "taxonomy"
44
44
  }
45
+ interface VisualBuilderEditContext {
46
+ visualBuilderContainer: HTMLDivElement;
47
+ resizeObserver: ResizeObserver;
48
+ lastEditedField: Element | null;
49
+ }
45
50
 
46
- export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor };
51
+ export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor, type VisualBuilderEditContext };
@@ -42,5 +42,10 @@ declare enum FieldDataType {
42
42
  GLOBAL_FIELD = "global_field",
43
43
  TAXONOMY = "taxonomy"
44
44
  }
45
+ interface VisualBuilderEditContext {
46
+ visualBuilderContainer: HTMLDivElement;
47
+ resizeObserver: ResizeObserver;
48
+ lastEditedField: Element | null;
49
+ }
45
50
 
46
- export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor };
51
+ export { FieldDataType, type ISchemaFieldMap, type ISchemaIndividualFieldMap, type ITraverseSchemaVisitor, type VisualBuilderEditContext };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n"],"mappings":";;;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/index.types.ts"],"sourcesContent":["import {\n IContentTypeRootBlocks,\n IModularBlockSingleBlock,\n} from \"../../../cms/types/contentTypeSchema.types\";\n\nexport type ISchemaIndividualFieldMap = Record<string, ISchemaFieldMap>;\n\nexport type ISchemaFieldMap = (\n | IContentTypeRootBlocks\n | (IModularBlockSingleBlock & {\n data_type: \"block\";\n display_name: string;\n })\n) & {\n non_localizable?: boolean;\n multiple?: boolean;\n field_metadata?: {\n updateRestrict?: boolean;\n isUnlinkedVariant?: boolean;\n };\n};\n\nexport interface ITraverseSchemaVisitor {\n should_visit: (\n fieldSchema: IContentTypeRootBlocks,\n path: string\n ) => boolean;\n visit: (fieldSchema: IContentTypeRootBlocks, path: string) => void;\n\n /**\n * A flat list of all the fields with its schema\n */\n fieldMap: ISchemaIndividualFieldMap;\n}\n\nexport enum FieldDataType {\n CUSTOM_FIELD = \"custom_field\",\n MULTILINE = \"multiline\",\n HTML_RTE = \"html_rte\",\n MARKDOWN_RTE = \"markdown_rte\",\n SELECT = \"select\",\n URL = \"url\",\n SINGLELINE = \"singleline\",\n JSON_RTE = \"json_rte\",\n MODULAR_BLOCK = \"modular_block\",\n LINK = \"link\",\n ISODATE = \"isodate\",\n BOOLEAN = \"boolean\",\n BLOCK = \"block\",\n NUMBER = \"number\",\n REFERENCE = \"reference\",\n GROUP = \"group\",\n EXPERIENCE_CONTAINER = \"experience_container\",\n FILE = \"file\",\n GLOBAL_FIELD = \"global_field\",\n TAXONOMY = \"taxonomy\",\n}\n\nexport interface VisualBuilderEditContext {\n visualBuilderContainer: HTMLDivElement;\n resizeObserver: ResizeObserver;\n lastEditedField: Element | null;\n}\n"],"mappings":";;;AAmCO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AApBH,SAAAA;AAAA,GAAA;","names":["FieldDataType"]}
@@ -66,8 +66,9 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
66
66
  VisualBuilderPostMessageEvents2["GET_LOCALE"] = "get-locale";
67
67
  VisualBuilderPostMessageEvents2["SEND_VARIANT_AND_LOCALE"] = "send-variant-and-locale";
68
68
  VisualBuilderPostMessageEvents2["COLLAB_ENABLE"] = "collab-enable";
69
+ VisualBuilderPostMessageEvents2["COLLAB_DATA_UPDATE"] = "collab-data-update";
69
70
  VisualBuilderPostMessageEvents2["COLLAB_DISABLE"] = "collab-disable";
70
- VisualBuilderPostMessageEvents2["COLLAB_THREAD_REMOVE"] = "collab-thread-remove";
71
+ VisualBuilderPostMessageEvents2["COLLAB_THREADS_REMOVE"] = "collab-threads-remove";
71
72
  VisualBuilderPostMessageEvents2["COLLAB_THREAD_REOPEN"] = "collab-thread-reopen";
72
73
  VisualBuilderPostMessageEvents2["COLLAB_THREAD_HIGHLIGHT"] = "collab-thread-highlight";
73
74
  return VisualBuilderPostMessageEvents2;