@webiny/app-website-builder 6.0.0 → 6.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/BaseEditor/commandHandlers/CreateElement.js +8 -1
  2. package/BaseEditor/commandHandlers/CreateElement.js.map +1 -1
  3. package/BaseEditor/commandHandlers/DeleteElement.js +8 -3
  4. package/BaseEditor/commandHandlers/DeleteElement.js.map +1 -1
  5. package/BaseEditor/commandHandlers/MoveElement.js +12 -1
  6. package/BaseEditor/commandHandlers/MoveElement.js.map +1 -1
  7. package/BaseEditor/commands.d.ts +4 -0
  8. package/BaseEditor/commands.js +2 -0
  9. package/BaseEditor/commands.js.map +1 -1
  10. package/BaseEditor/config/EditorConfig.d.ts +494 -2
  11. package/BaseEditor/config/EditorConfig.js +20 -5
  12. package/BaseEditor/config/EditorConfig.js.map +1 -1
  13. package/BaseEditor/config/Element.d.ts +2 -2
  14. package/BaseEditor/config/Element.js.map +1 -1
  15. package/BaseEditor/config/ElementOverlay.d.ts +18 -0
  16. package/BaseEditor/config/ElementOverlay.js +49 -0
  17. package/BaseEditor/config/ElementOverlay.js.map +1 -0
  18. package/BaseEditor/config/IconButton.d.ts +1 -1
  19. package/BaseEditor/config/IconButton.js.map +1 -1
  20. package/BaseEditor/config/IsNotReadOnly.d.ts +5 -0
  21. package/BaseEditor/config/IsNotReadOnly.js +13 -0
  22. package/BaseEditor/config/IsNotReadOnly.js.map +1 -0
  23. package/BaseEditor/config/IsReadOnly.d.ts +5 -0
  24. package/BaseEditor/config/IsReadOnly.js +13 -0
  25. package/BaseEditor/config/IsReadOnly.js.map +1 -0
  26. package/BaseEditor/config/Layout.js +13 -4
  27. package/BaseEditor/config/Layout.js.map +1 -1
  28. package/BaseEditor/config/Sidebar/Layout.js +2 -0
  29. package/BaseEditor/config/Sidebar/Layout.js.map +1 -1
  30. package/BaseEditor/config/Sidebar/Tab.d.ts +1 -1
  31. package/BaseEditor/config/Sidebar/Tab.js +1 -1
  32. package/BaseEditor/config/Sidebar/Tab.js.map +1 -1
  33. package/BaseEditor/config/Toolbar/Layout.js +1 -1
  34. package/BaseEditor/config/Toolbar/Layout.js.map +1 -1
  35. package/BaseEditor/config/Toolbar/Toolbar.js +2 -1
  36. package/BaseEditor/config/Toolbar/Toolbar.js.map +1 -1
  37. package/BaseEditor/config/TopBar/Layout.js +1 -0
  38. package/BaseEditor/config/TopBar/Layout.js.map +1 -1
  39. package/BaseEditor/config/TopBar/MenuItem.d.ts +1 -1
  40. package/BaseEditor/config/TopBar/MenuItem.js.map +1 -1
  41. package/BaseEditor/defaultConfig/Content/{Preview → AddressBar}/AddressBar.js +7 -6
  42. package/BaseEditor/defaultConfig/Content/AddressBar/AddressBar.js.map +1 -0
  43. package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/PreviewDomain.js +2 -2
  44. package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/RefreshPreview.js +2 -2
  45. package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/usePreviewLink.js +2 -2
  46. package/BaseEditor/defaultConfig/Content/Breadcrumbs/Breadcrumbs.js +2 -1
  47. package/BaseEditor/defaultConfig/Content/Breadcrumbs/Breadcrumbs.js.map +1 -1
  48. package/BaseEditor/defaultConfig/Content/Breadcrumbs/styles.js +9 -67
  49. package/BaseEditor/defaultConfig/Content/Breadcrumbs/styles.js.map +1 -1
  50. package/BaseEditor/defaultConfig/Content/ContentPreviewConfig.d.ts +2 -0
  51. package/BaseEditor/defaultConfig/Content/ContentPreviewConfig.js +22 -0
  52. package/BaseEditor/defaultConfig/Content/ContentPreviewConfig.js.map +1 -0
  53. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.d.ts +1 -0
  54. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js +54 -11
  55. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
  56. package/BaseEditor/defaultConfig/Content/Preview/Iframe.js +27 -13
  57. package/BaseEditor/defaultConfig/Content/Preview/Iframe.js.map +1 -1
  58. package/BaseEditor/defaultConfig/Content/Preview/KeyboardShortcuts.js +4 -11
  59. package/BaseEditor/defaultConfig/Content/Preview/KeyboardShortcuts.js.map +1 -1
  60. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementDropLines.d.ts +1 -1
  61. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementDropLines.js +44 -4
  62. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementDropLines.js.map +1 -1
  63. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlay.d.ts +1 -10
  64. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlay.js +13 -8
  65. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlay.js.map +1 -1
  66. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlayProvider.d.ts +16 -0
  67. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlayProvider.js +19 -0
  68. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlayProvider.js.map +1 -0
  69. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.js +9 -10
  70. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.js.map +1 -1
  71. package/BaseEditor/defaultConfig/Content/Preview/Preview.js +2 -3
  72. package/BaseEditor/defaultConfig/Content/Preview/Preview.js.map +1 -1
  73. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.d.ts +6 -0
  74. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js +16 -0
  75. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js.map +1 -0
  76. package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js +36 -1
  77. package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js.map +1 -1
  78. package/BaseEditor/defaultConfig/Content/Preview/useElementComponentManifest.d.ts +1 -1
  79. package/BaseEditor/defaultConfig/Content/Preview/useElementComponentManifest.js +6 -5
  80. package/BaseEditor/defaultConfig/Content/Preview/useElementComponentManifest.js.map +1 -1
  81. package/BaseEditor/defaultConfig/Content/Preview/useIframeUrl.js +1 -1
  82. package/BaseEditor/defaultConfig/Content/Preview/useIframeUrl.js.map +1 -1
  83. package/BaseEditor/defaultConfig/Content/Preview/useProximityDropzone.d.ts +2 -1
  84. package/BaseEditor/defaultConfig/Content/Preview/useProximityDropzone.js +4 -2
  85. package/BaseEditor/defaultConfig/Content/Preview/useProximityDropzone.js.map +1 -1
  86. package/BaseEditor/defaultConfig/Content/Preview/useResponsiveContainer.d.ts +3 -3
  87. package/BaseEditor/defaultConfig/Content/Preview/useResponsiveContainer.js +18 -13
  88. package/BaseEditor/defaultConfig/Content/Preview/useResponsiveContainer.js.map +1 -1
  89. package/BaseEditor/defaultConfig/Content/{Preview/usePreviewDomain.js → usePreviewDomain.js} +1 -1
  90. package/BaseEditor/defaultConfig/DefaultEditorConfig.js +2 -9
  91. package/BaseEditor/defaultConfig/DefaultEditorConfig.js.map +1 -1
  92. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.d.ts +19 -1
  93. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js +3 -2
  94. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js.map +1 -1
  95. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useBindingsForElement.d.ts +11 -11
  96. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js +15 -4
  97. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js.map +1 -1
  98. package/BaseEditor/defaultConfig/Toolbar/InsertElements/useComponentGroups.js +3 -2
  99. package/BaseEditor/defaultConfig/Toolbar/InsertElements/useComponentGroups.js.map +1 -1
  100. package/BaseEditor/hooks/useCreateElement.d.ts +5 -0
  101. package/BaseEditor/hooks/useCreateElement.js +14 -0
  102. package/BaseEditor/hooks/useCreateElement.js.map +1 -0
  103. package/BaseEditor/hooks/useDeleteElement.d.ts +3 -0
  104. package/BaseEditor/hooks/useDeleteElement.js +16 -0
  105. package/BaseEditor/hooks/useDeleteElement.js.map +1 -0
  106. package/BaseEditor/hooks/useElementInputs.d.ts +10 -0
  107. package/BaseEditor/hooks/useElementInputs.js +33 -0
  108. package/BaseEditor/hooks/useElementInputs.js.map +1 -0
  109. package/BaseEditor/hooks/useElementOverlay.d.ts +1 -0
  110. package/BaseEditor/hooks/useElementOverlay.js +3 -0
  111. package/BaseEditor/hooks/useElementOverlay.js.map +1 -0
  112. package/BaseEditor/hooks/useHighlightedElement.d.ts +2 -0
  113. package/BaseEditor/hooks/useHighlightedElement.js +26 -0
  114. package/BaseEditor/hooks/useHighlightedElement.js.map +1 -0
  115. package/BaseEditor/hooks/useReservedUISpace.d.ts +10 -0
  116. package/BaseEditor/hooks/useReservedUISpace.js +48 -0
  117. package/BaseEditor/hooks/useReservedUISpace.js.map +1 -0
  118. package/BaseEditor/hooks/useUpdateElement.d.ts +3 -0
  119. package/BaseEditor/hooks/useUpdateElement.js +14 -0
  120. package/BaseEditor/hooks/useUpdateElement.js.map +1 -0
  121. package/DocumentEditor/StateInspector.js +16 -43
  122. package/DocumentEditor/StateInspector.js.map +1 -1
  123. package/Extension.js +1 -8
  124. package/Extension.js.map +1 -1
  125. package/components/TrashBin/adapters/TrashBinBulkActionsGraphQLGateway.d.ts +16 -0
  126. package/components/TrashBin/adapters/TrashBinBulkActionsGraphQLGateway.js +30 -0
  127. package/components/TrashBin/adapters/TrashBinBulkActionsGraphQLGateway.js.map +1 -0
  128. package/components/TrashBin/adapters/TrashBinDeletePageGraphQLGateway.d.ts +11 -0
  129. package/components/TrashBin/adapters/TrashBinDeletePageGraphQLGateway.js +30 -0
  130. package/components/TrashBin/adapters/TrashBinDeletePageGraphQLGateway.js.map +1 -0
  131. package/components/TrashBin/adapters/TrashBinItemMapper.d.ts +5 -0
  132. package/components/TrashBin/adapters/TrashBinItemMapper.js +18 -0
  133. package/components/TrashBin/adapters/TrashBinItemMapper.js.map +1 -0
  134. package/components/TrashBin/adapters/TrashBinListPagesGraphQLGateway.d.ts +16 -0
  135. package/components/TrashBin/adapters/TrashBinListPagesGraphQLGateway.js +32 -0
  136. package/components/TrashBin/adapters/TrashBinListPagesGraphQLGateway.js.map +1 -0
  137. package/components/TrashBin/adapters/TrashBinRestorePageGraphQLGateway.d.ts +14 -0
  138. package/components/TrashBin/adapters/TrashBinRestorePageGraphQLGateway.js +30 -0
  139. package/components/TrashBin/adapters/TrashBinRestorePageGraphQLGateway.js.map +1 -0
  140. package/components/TrashBin/adapters/graphql/bulkActionsMutation.d.ts +15 -0
  141. package/components/TrashBin/adapters/graphql/bulkActionsMutation.js +20 -0
  142. package/components/TrashBin/adapters/graphql/bulkActionsMutation.js.map +1 -0
  143. package/components/TrashBin/adapters/graphql/listQuery.d.ts +21 -0
  144. package/components/TrashBin/adapters/graphql/listQuery.js +20 -0
  145. package/components/TrashBin/adapters/graphql/listQuery.js.map +1 -0
  146. package/components/TrashBin/adapters/graphql/permanentDeleteMutation.d.ts +15 -0
  147. package/components/TrashBin/adapters/graphql/permanentDeleteMutation.js +18 -0
  148. package/components/TrashBin/adapters/graphql/permanentDeleteMutation.js.map +1 -0
  149. package/components/TrashBin/adapters/graphql/restoreMutation.d.ts +14 -0
  150. package/components/TrashBin/adapters/graphql/restoreMutation.js +20 -0
  151. package/components/TrashBin/adapters/graphql/restoreMutation.js.map +1 -0
  152. package/components/TrashBin/adapters/index.d.ts +6 -0
  153. package/components/TrashBin/adapters/index.js +8 -0
  154. package/components/TrashBin/adapters/index.js.map +1 -0
  155. package/components/TrashBin/adapters/usePageFields.d.ts +1 -0
  156. package/components/TrashBin/adapters/usePageFields.js +14 -0
  157. package/components/TrashBin/adapters/usePageFields.js.map +1 -0
  158. package/components/TrashBin/components/TrashBin.d.ts +2 -0
  159. package/components/TrashBin/components/TrashBin.js +70 -0
  160. package/components/TrashBin/components/TrashBin.js.map +1 -0
  161. package/components/TrashBin/components/TrashBin.styled.d.ts +13 -0
  162. package/components/TrashBin/components/TrashBin.styled.js +44 -0
  163. package/components/TrashBin/components/TrashBin.styled.js.map +1 -0
  164. package/components/TrashBin/components/TrashBinButton.d.ts +5 -0
  165. package/components/TrashBin/components/TrashBinButton.js +17 -0
  166. package/components/TrashBin/components/TrashBinButton.js.map +1 -0
  167. package/components/TrashBin/components/index.d.ts +1 -0
  168. package/components/TrashBin/components/index.js +3 -0
  169. package/components/TrashBin/components/index.js.map +1 -0
  170. package/components/TrashBin/index.d.ts +1 -0
  171. package/components/TrashBin/index.js +3 -0
  172. package/components/TrashBin/index.js.map +1 -0
  173. package/editorSdk/Editor.d.ts +6 -0
  174. package/editorSdk/Editor.js +8 -1
  175. package/editorSdk/Editor.js.map +1 -1
  176. package/editorSdk/utils/$createElement.d.ts +2 -1
  177. package/editorSdk/utils/$createElement.js +40 -1
  178. package/editorSdk/utils/$createElement.js.map +1 -1
  179. package/editorSdk/utils/$deleteElement.d.ts +2 -2
  180. package/editorSdk/utils/$deleteElement.js +58 -14
  181. package/editorSdk/utils/$deleteElement.js.map +1 -1
  182. package/editorSdk/utils/$getElementInputValues.d.ts +5 -0
  183. package/editorSdk/utils/$getElementInputValues.js +76 -0
  184. package/editorSdk/utils/$getElementInputValues.js.map +1 -0
  185. package/editorSdk/utils/$getElementsOfType.d.ts +2 -0
  186. package/editorSdk/utils/$getElementsOfType.js +5 -0
  187. package/editorSdk/utils/$getElementsOfType.js.map +1 -0
  188. package/editorSdk/utils/$getFirstElementOfType.d.ts +2 -0
  189. package/editorSdk/utils/$getFirstElementOfType.js +5 -0
  190. package/editorSdk/utils/$getFirstElementOfType.js.map +1 -0
  191. package/editorSdk/utils/$moveElement.d.ts +3 -2
  192. package/editorSdk/utils/$moveElement.js +14 -1
  193. package/editorSdk/utils/$moveElement.js.map +1 -1
  194. package/editorSdk/utils/$previewElementInputs.d.ts +6 -0
  195. package/editorSdk/utils/$previewElementInputs.js +39 -0
  196. package/editorSdk/utils/$previewElementInputs.js.map +1 -0
  197. package/editorSdk/utils/$updateElementInputs.d.ts +7 -0
  198. package/editorSdk/utils/$updateElementInputs.js +50 -0
  199. package/editorSdk/utils/$updateElementInputs.js.map +1 -0
  200. package/editorSdk/utils/executeOnChange.d.ts +33 -0
  201. package/editorSdk/utils/executeOnChange.js +246 -0
  202. package/editorSdk/utils/executeOnChange.js.map +1 -0
  203. package/editorSdk/utils/index.d.ts +6 -0
  204. package/editorSdk/utils/index.js +6 -0
  205. package/editorSdk/utils/index.js.map +1 -1
  206. package/exports/admin/website-builder/page/editor.d.ts +34 -2
  207. package/exports/admin/website-builder/page/editor.js +34 -2
  208. package/exports/admin/website-builder/page/editor.js.map +1 -1
  209. package/exports/admin/website-builder.d.ts +1 -0
  210. package/exports/admin/website-builder.js +1 -0
  211. package/exports/admin/website-builder.js.map +1 -1
  212. package/features/pages/deletePage/DeletePage.test.js +2 -1
  213. package/features/pages/deletePage/DeletePage.test.js.map +1 -1
  214. package/features/pages/deletePage/DeletePageGqlGateway.d.ts +2 -1
  215. package/features/pages/deletePage/DeletePageGqlGateway.js +3 -2
  216. package/features/pages/deletePage/DeletePageGqlGateway.js.map +1 -1
  217. package/features/pages/deletePage/DeletePageRepository.d.ts +1 -1
  218. package/features/pages/deletePage/DeletePageRepository.js +2 -2
  219. package/features/pages/deletePage/DeletePageRepository.js.map +1 -1
  220. package/features/pages/deletePage/DeletePageUseCase.js +1 -1
  221. package/features/pages/deletePage/DeletePageUseCase.js.map +1 -1
  222. package/features/pages/deletePage/IDeletePageGateway.d.ts +1 -1
  223. package/features/pages/deletePage/IDeletePageGateway.js.map +1 -1
  224. package/features/pages/deletePage/IDeletePageRepository.d.ts +1 -1
  225. package/features/pages/deletePage/IDeletePageRepository.js.map +1 -1
  226. package/features/pages/deletePage/IDeletePageUseCase.d.ts +1 -0
  227. package/features/pages/deletePage/IDeletePageUseCase.js.map +1 -1
  228. package/index.d.ts +1 -1
  229. package/index.js +1 -1
  230. package/index.js.map +1 -1
  231. package/modules/pages/PageEditor/DefaultPageEditorConfig.js +6 -5
  232. package/modules/pages/PageEditor/DefaultPageEditorConfig.js.map +1 -1
  233. package/modules/pages/PageEditor/PageAutoSave.js +5 -5
  234. package/modules/pages/PageEditor/PageAutoSave.js.map +1 -1
  235. package/modules/pages/PageEditor/PageEditorConfig.d.ts +569 -88
  236. package/modules/pages/PageEditor/PageEditorConfig.js +23 -3
  237. package/modules/pages/PageEditor/PageEditorConfig.js.map +1 -1
  238. package/modules/pages/PageEditor/PageSettings/PageSettings.d.ts +30 -0
  239. package/modules/pages/PageEditor/PageSettings/PageSettings.js +84 -0
  240. package/modules/pages/PageEditor/PageSettings/PageSettings.js.map +1 -0
  241. package/modules/pages/PageEditor/PageSettings/PageSettingsConfig.d.ts +2 -0
  242. package/modules/pages/PageEditor/PageSettings/PageSettingsConfig.js +98 -0
  243. package/modules/pages/PageEditor/PageSettings/PageSettingsConfig.js.map +1 -0
  244. package/modules/pages/PageEditor/PageSettings/elements/GeneralImage.d.ts +2 -0
  245. package/modules/pages/PageEditor/PageSettings/elements/GeneralImage.js +31 -0
  246. package/modules/pages/PageEditor/PageSettings/elements/GeneralImage.js.map +1 -0
  247. package/modules/pages/PageEditor/PageSettings/elements/GeneralPath.d.ts +2 -0
  248. package/modules/pages/PageEditor/PageSettings/elements/GeneralPath.js +16 -0
  249. package/modules/pages/PageEditor/PageSettings/elements/GeneralPath.js.map +1 -0
  250. package/modules/pages/PageEditor/PageSettings/elements/GeneralSnippet.d.ts +2 -0
  251. package/modules/pages/PageEditor/PageSettings/elements/GeneralSnippet.js +14 -0
  252. package/modules/pages/PageEditor/PageSettings/elements/GeneralSnippet.js.map +1 -0
  253. package/modules/pages/PageEditor/PageSettings/elements/GeneralTags.d.ts +2 -0
  254. package/modules/pages/PageEditor/PageSettings/elements/GeneralTags.js +14 -0
  255. package/modules/pages/PageEditor/PageSettings/elements/GeneralTags.js.map +1 -0
  256. package/modules/pages/PageEditor/PageSettings/elements/GeneralTitle.d.ts +2 -0
  257. package/modules/pages/PageEditor/PageSettings/elements/GeneralTitle.js +16 -0
  258. package/modules/pages/PageEditor/PageSettings/elements/GeneralTitle.js.map +1 -0
  259. package/modules/pages/PageEditor/PageSettings/elements/SchemaEditor.d.ts +2 -0
  260. package/modules/pages/PageEditor/PageSettings/elements/SchemaEditor.js +31 -0
  261. package/modules/pages/PageEditor/PageSettings/elements/SchemaEditor.js.map +1 -0
  262. package/modules/pages/PageEditor/PageSettings/elements/SeoCanonicalUrl.d.ts +2 -0
  263. package/modules/pages/PageEditor/PageSettings/elements/SeoCanonicalUrl.js +26 -0
  264. package/modules/pages/PageEditor/PageSettings/elements/SeoCanonicalUrl.js.map +1 -0
  265. package/modules/pages/PageEditor/PageSettings/elements/SeoDescription.d.ts +2 -0
  266. package/modules/pages/PageEditor/PageSettings/elements/SeoDescription.js +15 -0
  267. package/modules/pages/PageEditor/PageSettings/elements/SeoDescription.js.map +1 -0
  268. package/modules/pages/PageEditor/PageSettings/elements/SeoMetaTags.d.ts +2 -0
  269. package/modules/pages/PageEditor/PageSettings/elements/SeoMetaTags.js +18 -0
  270. package/modules/pages/PageEditor/PageSettings/elements/SeoMetaTags.js.map +1 -0
  271. package/modules/pages/PageEditor/PageSettings/elements/SeoNoFollow.d.ts +2 -0
  272. package/modules/pages/PageEditor/PageSettings/elements/SeoNoFollow.js +16 -0
  273. package/modules/pages/PageEditor/PageSettings/elements/SeoNoFollow.js.map +1 -0
  274. package/modules/pages/PageEditor/PageSettings/elements/SeoNoIndex.d.ts +2 -0
  275. package/modules/pages/PageEditor/PageSettings/elements/SeoNoIndex.js +16 -0
  276. package/modules/pages/PageEditor/PageSettings/elements/SeoNoIndex.js.map +1 -0
  277. package/modules/pages/PageEditor/PageSettings/elements/SeoTitle.d.ts +2 -0
  278. package/modules/pages/PageEditor/PageSettings/elements/SeoTitle.js +15 -0
  279. package/modules/pages/PageEditor/PageSettings/elements/SeoTitle.js.map +1 -0
  280. package/modules/pages/PageEditor/PageSettings/elements/SocialDescription.d.ts +2 -0
  281. package/modules/pages/PageEditor/PageSettings/elements/SocialDescription.js +15 -0
  282. package/modules/pages/PageEditor/PageSettings/elements/SocialDescription.js.map +1 -0
  283. package/modules/pages/PageEditor/PageSettings/elements/SocialImage.d.ts +2 -0
  284. package/modules/pages/PageEditor/PageSettings/elements/SocialImage.js +31 -0
  285. package/modules/pages/PageEditor/PageSettings/elements/SocialImage.js.map +1 -0
  286. package/modules/pages/PageEditor/PageSettings/elements/SocialMetaTags.d.ts +2 -0
  287. package/modules/pages/PageEditor/PageSettings/elements/SocialMetaTags.js +18 -0
  288. package/modules/pages/PageEditor/PageSettings/elements/SocialMetaTags.js.map +1 -0
  289. package/modules/pages/PageEditor/PageSettings/elements/SocialTitle.d.ts +2 -0
  290. package/modules/pages/PageEditor/PageSettings/elements/SocialTitle.js +15 -0
  291. package/modules/pages/PageEditor/PageSettings/elements/SocialTitle.js.map +1 -0
  292. package/modules/pages/PageEditor/TopBar/RevisionsMenu.js.map +1 -1
  293. package/modules/pages/PageEditor/TopBar/Settings/PageSettingsDialog.d.ts +2 -0
  294. package/modules/pages/PageEditor/TopBar/Settings/PageSettingsDialog.js +37 -0
  295. package/modules/pages/PageEditor/TopBar/Settings/PageSettingsDialog.js.map +1 -0
  296. package/modules/pages/PageEditor/TopBar/Settings/PageSettingsDrawer.d.ts +3 -0
  297. package/modules/pages/PageEditor/TopBar/Settings/PageSettingsDrawer.js +73 -0
  298. package/modules/pages/PageEditor/TopBar/Settings/PageSettingsDrawer.js.map +1 -0
  299. package/modules/pages/PageEditor/TopBar/Settings/SettingsDialogBody.d.ts +5 -1
  300. package/modules/pages/PageEditor/TopBar/Settings/SettingsDialogBody.js +15 -229
  301. package/modules/pages/PageEditor/TopBar/Settings/SettingsDialogBody.js.map +1 -1
  302. package/modules/pages/PageEditor/TopBar/SettingsButton.d.ts +6 -0
  303. package/modules/pages/PageEditor/TopBar/SettingsButton.js +45 -27
  304. package/modules/pages/PageEditor/TopBar/SettingsButton.js.map +1 -1
  305. package/modules/pages/PageEditor/TopBar/Title.js +10 -0
  306. package/modules/pages/PageEditor/TopBar/Title.js.map +1 -1
  307. package/modules/pages/PageEditor/usePageEditorConfig.d.ts +20 -0
  308. package/modules/pages/PageEditor/usePageEditorConfig.js +13 -0
  309. package/modules/pages/PageEditor/usePageEditorConfig.js.map +1 -0
  310. package/modules/pages/PagesList/components/BulkActions/BulkActionDelete.js +2 -1
  311. package/modules/pages/PagesList/components/BulkActions/BulkActionDelete.js.map +1 -1
  312. package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js +9 -1
  313. package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js.map +1 -1
  314. package/modules/pages/PagesList/components/Table/Actions/Delete.js +1 -1
  315. package/modules/pages/PagesList/components/Table/Actions/Delete.js.map +1 -1
  316. package/modules/pages/PagesList/hooks/useDeletePageConfirmationDialog.js +4 -3
  317. package/modules/pages/PagesList/hooks/useDeletePageConfirmationDialog.js.map +1 -1
  318. package/modules/pages/PagesList/hooks/usePagePreviewLink.js +1 -1
  319. package/modules/pages/PagesList/hooks/usePagePreviewLink.js.map +1 -1
  320. package/modules/pages/PagesListConfig.js +4 -0
  321. package/modules/pages/PagesListConfig.js.map +1 -1
  322. package/modules/pages/configs/list/Browser/PageAction.d.ts +1 -0
  323. package/modules/pages/configs/list/Browser/PageAction.js +3 -1
  324. package/modules/pages/configs/list/Browser/PageAction.js.map +1 -1
  325. package/modules/pages/configs/list/Browser/index.d.ts +1 -0
  326. package/modules/pages/configs/list/PageListConfig.d.ts +2 -0
  327. package/modules/redirects/configs/list/Browser/RedirectAction.d.ts +1 -0
  328. package/modules/redirects/configs/list/Browser/RedirectAction.js +3 -1
  329. package/modules/redirects/configs/list/Browser/RedirectAction.js.map +1 -1
  330. package/modules/redirects/configs/list/Browser/index.d.ts +1 -0
  331. package/modules/redirects/configs/list/RedirectListConfig.d.ts +1 -0
  332. package/package.json +35 -42
  333. package/presentation/navigation/NextjsConfig/markdownComponents.js +3 -1
  334. package/presentation/navigation/NextjsConfig/markdownComponents.js.map +1 -1
  335. package/types.d.ts +1 -0
  336. package/types.js.map +1 -1
  337. package/BaseEditor/defaultConfig/Content/Preview/AddressBar.js.map +0 -1
  338. /package/BaseEditor/defaultConfig/Content/{Preview → AddressBar}/AddressBar.d.ts +0 -0
  339. /package/BaseEditor/defaultConfig/Content/{Preview → AddressBar}/BreakpointSelector.d.ts +0 -0
  340. /package/BaseEditor/defaultConfig/Content/{Preview → AddressBar}/BreakpointSelector.js +0 -0
  341. /package/BaseEditor/defaultConfig/Content/{Preview → AddressBar}/BreakpointSelector.js.map +0 -0
  342. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/OpenInNewTab.d.ts +0 -0
  343. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/OpenInNewTab.js +0 -0
  344. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/OpenInNewTab.js.map +0 -0
  345. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/PreviewDomain.d.ts +0 -0
  346. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/PreviewDomain.js.map +0 -0
  347. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/PreviewInNewTab.d.ts +0 -0
  348. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/PreviewInNewTab.js +0 -0
  349. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/PreviewInNewTab.js.map +0 -0
  350. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/RefreshPreview.d.ts +0 -0
  351. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/RefreshPreview.js.map +0 -0
  352. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/usePreviewLink.d.ts +0 -0
  353. /package/BaseEditor/defaultConfig/Content/{Preview/AddressBar → AddressBar}/usePreviewLink.js.map +0 -0
  354. /package/BaseEditor/defaultConfig/Content/{Preview/usePreviewDomain.d.ts → usePreviewDomain.d.ts} +0 -0
  355. /package/BaseEditor/defaultConfig/Content/{Preview/usePreviewDomain.js.map → usePreviewDomain.js.map} +0 -0
  356. /package/BaseEditor/defaultConfig/Content/{Preview/useSubscribeToLocalStorage.d.ts → useSubscribeToLocalStorage.d.ts} +0 -0
  357. /package/BaseEditor/defaultConfig/Content/{Preview/useSubscribeToLocalStorage.js → useSubscribeToLocalStorage.js} +0 -0
  358. /package/BaseEditor/defaultConfig/Content/{Preview/useSubscribeToLocalStorage.js.map → useSubscribeToLocalStorage.js.map} +0 -0
@@ -1,4 +1,5 @@
1
- import { ElementFactory } from "@webiny/website-builder-sdk";
1
+ import { ElementFactory, evaluateConstraints } from "@webiny/website-builder-sdk";
2
+ import { executeOnChange, applyAncestorUpdates } from "./executeOnChange.js";
2
3
  export function $createElement(editor, payload) {
3
4
  const {
4
5
  componentName,
@@ -8,7 +9,20 @@ export function $createElement(editor, payload) {
8
9
  bindings
9
10
  } = payload;
10
11
  const componentsManifest = editor.getEditorState().read().components;
12
+ const result = evaluateConstraints({
13
+ componentName,
14
+ parentId,
15
+ slot,
16
+ document: editor.getDocumentState().read(),
17
+ components: componentsManifest
18
+ });
19
+ if (!result.allowed) {
20
+ return result;
21
+ }
11
22
  const elementFactory = new ElementFactory(componentsManifest);
23
+
24
+ // Snapshot element IDs before creation so we can find all new elements.
25
+ const elementsBefore = new Set(Object.keys(editor.getDocumentState().read().elements));
12
26
  const {
13
27
  operations
14
28
  } = elementFactory.createElementFromComponent({
@@ -21,6 +35,31 @@ export function $createElement(editor, payload) {
21
35
  editor.updateDocument(document => {
22
36
  operations.forEach(operation => operation.apply(document));
23
37
  });
38
+
39
+ // Fire onChange + onDescendantChange for every newly created element,
40
+ // not just the root. ElementFactory recursively creates child elements
41
+ // from slot defaults, and those children need callbacks too.
42
+ const editorState = editor.getEditorState().read();
43
+ const breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);
44
+ const baseBreakpoint = breakpointNames[0];
45
+ const document = editor.getDocumentState().read();
46
+ const newElementIds = Object.keys(document.elements).filter(id => !elementsBefore.has(id));
47
+ for (const elementId of newElementIds) {
48
+ const ancestorUpdates = executeOnChange({
49
+ editor,
50
+ elementId,
51
+ action: "create",
52
+ breakpointNames,
53
+ baseBreakpoint,
54
+ elementFactory
55
+ });
56
+ if (ancestorUpdates.length > 0) {
57
+ editor.updateDocument(doc => {
58
+ applyAncestorUpdates(doc, ancestorUpdates, breakpointNames, baseBreakpoint, elementFactory);
59
+ });
60
+ }
61
+ }
62
+ return;
24
63
  }
25
64
 
26
65
  //# sourceMappingURL=$createElement.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ElementFactory","$createElement","editor","payload","componentName","index","parentId","slot","bindings","componentsManifest","getEditorState","read","components","elementFactory","operations","createElementFromComponent","defaults","updateDocument","document","forEach","operation","apply"],"sources":["$createElement.ts"],"sourcesContent":["import type { Editor } from \"../Editor.js\";\nimport type { CommandPayload } from \"~/editorSdk/createCommand.js\";\nimport type { Commands } from \"~/BaseEditor/index.js\";\nimport { ElementFactory } from \"@webiny/website-builder-sdk\";\n\nexport function $createElement(\n editor: Editor,\n payload: CommandPayload<typeof Commands.CreateElement>\n) {\n const { componentName, index, parentId, slot, bindings } = payload;\n const componentsManifest = editor.getEditorState().read().components;\n\n const elementFactory = new ElementFactory(componentsManifest);\n const { operations } = elementFactory.createElementFromComponent({\n componentName,\n parentId,\n slot,\n index,\n bindings: bindings ?? componentsManifest[componentName].defaults ?? {}\n });\n\n editor.updateDocument(document => {\n operations.forEach(operation => operation.apply(document));\n });\n}\n"],"mappings":"AAGA,SAASA,cAAc,QAAQ,6BAA6B;AAE5D,OAAO,SAASC,cAAcA,CAC1BC,MAAc,EACdC,OAAsD,EACxD;EACE,MAAM;IAAEC,aAAa;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,IAAI;IAAEC;EAAS,CAAC,GAAGL,OAAO;EAClE,MAAMM,kBAAkB,GAAGP,MAAM,CAACQ,cAAc,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,UAAU;EAEpE,MAAMC,cAAc,GAAG,IAAIb,cAAc,CAACS,kBAAkB,CAAC;EAC7D,MAAM;IAAEK;EAAW,CAAC,GAAGD,cAAc,CAACE,0BAA0B,CAAC;IAC7DX,aAAa;IACbE,QAAQ;IACRC,IAAI;IACJF,KAAK;IACLG,QAAQ,EAAEA,QAAQ,IAAIC,kBAAkB,CAACL,aAAa,CAAC,CAACY,QAAQ,IAAI,CAAC;EACzE,CAAC,CAAC;EAEFd,MAAM,CAACe,cAAc,CAACC,QAAQ,IAAI;IAC9BJ,UAAU,CAACK,OAAO,CAACC,SAAS,IAAIA,SAAS,CAACC,KAAK,CAACH,QAAQ,CAAC,CAAC;EAC9D,CAAC,CAAC;AACN","ignoreList":[]}
1
+ {"version":3,"names":["ElementFactory","evaluateConstraints","executeOnChange","applyAncestorUpdates","$createElement","editor","payload","componentName","index","parentId","slot","bindings","componentsManifest","getEditorState","read","components","result","document","getDocumentState","allowed","elementFactory","elementsBefore","Set","Object","keys","elements","operations","createElementFromComponent","defaults","updateDocument","forEach","operation","apply","editorState","breakpointNames","viewport","breakpoints","map","bp","name","baseBreakpoint","newElementIds","filter","id","has","elementId","ancestorUpdates","action","length","doc"],"sources":["$createElement.ts"],"sourcesContent":["import type { Editor } from \"../Editor.js\";\nimport type { CommandPayload } from \"~/editorSdk/createCommand.js\";\nimport type { Commands } from \"~/BaseEditor/index.js\";\nimport {\n type ConstraintResult,\n ElementFactory,\n evaluateConstraints\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"./executeOnChange.js\";\n\nexport function $createElement(\n editor: Editor,\n payload: CommandPayload<typeof Commands.CreateElement>\n): ConstraintResult | undefined {\n const { componentName, index, parentId, slot, bindings } = payload;\n const componentsManifest = editor.getEditorState().read().components;\n\n const result = evaluateConstraints({\n componentName,\n parentId,\n slot,\n document: editor.getDocumentState().read(),\n components: componentsManifest\n });\n\n if (!result.allowed) {\n return result;\n }\n\n const elementFactory = new ElementFactory(componentsManifest);\n\n // Snapshot element IDs before creation so we can find all new elements.\n const elementsBefore = new Set(Object.keys(editor.getDocumentState().read().elements));\n\n const { operations } = elementFactory.createElementFromComponent({\n componentName,\n parentId,\n slot,\n index,\n bindings: bindings ?? componentsManifest[componentName].defaults ?? {}\n });\n\n editor.updateDocument(document => {\n operations.forEach(operation => operation.apply(document));\n });\n\n // Fire onChange + onDescendantChange for every newly created element,\n // not just the root. ElementFactory recursively creates child elements\n // from slot defaults, and those children need callbacks too.\n const editorState = editor.getEditorState().read();\n const breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);\n const baseBreakpoint = breakpointNames[0];\n\n const document = editor.getDocumentState().read();\n const newElementIds = Object.keys(document.elements).filter(id => !elementsBefore.has(id));\n\n for (const elementId of newElementIds) {\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n action: \"create\",\n breakpointNames,\n baseBreakpoint,\n elementFactory\n });\n\n if (ancestorUpdates.length > 0) {\n editor.updateDocument(doc => {\n applyAncestorUpdates(\n doc,\n ancestorUpdates,\n breakpointNames,\n baseBreakpoint,\n elementFactory\n );\n });\n }\n }\n\n return;\n}\n"],"mappings":"AAGA,SAEIA,cAAc,EACdC,mBAAmB,QAChB,6BAA6B;AACpC,SAASC,eAAe,EAAEC,oBAAoB;AAE9C,OAAO,SAASC,cAAcA,CAC1BC,MAAc,EACdC,OAAsD,EAC1B;EAC5B,MAAM;IAAEC,aAAa;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,IAAI;IAAEC;EAAS,CAAC,GAAGL,OAAO;EAClE,MAAMM,kBAAkB,GAAGP,MAAM,CAACQ,cAAc,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,UAAU;EAEpE,MAAMC,MAAM,GAAGf,mBAAmB,CAAC;IAC/BM,aAAa;IACbE,QAAQ;IACRC,IAAI;IACJO,QAAQ,EAAEZ,MAAM,CAACa,gBAAgB,CAAC,CAAC,CAACJ,IAAI,CAAC,CAAC;IAC1CC,UAAU,EAAEH;EAChB,CAAC,CAAC;EAEF,IAAI,CAACI,MAAM,CAACG,OAAO,EAAE;IACjB,OAAOH,MAAM;EACjB;EAEA,MAAMI,cAAc,GAAG,IAAIpB,cAAc,CAACY,kBAAkB,CAAC;;EAE7D;EACA,MAAMS,cAAc,GAAG,IAAIC,GAAG,CAACC,MAAM,CAACC,IAAI,CAACnB,MAAM,CAACa,gBAAgB,CAAC,CAAC,CAACJ,IAAI,CAAC,CAAC,CAACW,QAAQ,CAAC,CAAC;EAEtF,MAAM;IAAEC;EAAW,CAAC,GAAGN,cAAc,CAACO,0BAA0B,CAAC;IAC7DpB,aAAa;IACbE,QAAQ;IACRC,IAAI;IACJF,KAAK;IACLG,QAAQ,EAAEA,QAAQ,IAAIC,kBAAkB,CAACL,aAAa,CAAC,CAACqB,QAAQ,IAAI,CAAC;EACzE,CAAC,CAAC;EAEFvB,MAAM,CAACwB,cAAc,CAACZ,QAAQ,IAAI;IAC9BS,UAAU,CAACI,OAAO,CAACC,SAAS,IAAIA,SAAS,CAACC,KAAK,CAACf,QAAQ,CAAC,CAAC;EAC9D,CAAC,CAAC;;EAEF;EACA;EACA;EACA,MAAMgB,WAAW,GAAG5B,MAAM,CAACQ,cAAc,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;EAClD,MAAMoB,eAAe,GAAGD,WAAW,CAACE,QAAQ,CAACC,WAAW,CAACC,GAAG,CAACC,EAAE,IAAIA,EAAE,CAACC,IAAI,CAAC;EAC3E,MAAMC,cAAc,GAAGN,eAAe,CAAC,CAAC,CAAC;EAEzC,MAAMjB,QAAQ,GAAGZ,MAAM,CAACa,gBAAgB,CAAC,CAAC,CAACJ,IAAI,CAAC,CAAC;EACjD,MAAM2B,aAAa,GAAGlB,MAAM,CAACC,IAAI,CAACP,QAAQ,CAACQ,QAAQ,CAAC,CAACiB,MAAM,CAACC,EAAE,IAAI,CAACtB,cAAc,CAACuB,GAAG,CAACD,EAAE,CAAC,CAAC;EAE1F,KAAK,MAAME,SAAS,IAAIJ,aAAa,EAAE;IACnC,MAAMK,eAAe,GAAG5C,eAAe,CAAC;MACpCG,MAAM;MACNwC,SAAS;MACTE,MAAM,EAAE,QAAQ;MAChBb,eAAe;MACfM,cAAc;MACdpB;IACJ,CAAC,CAAC;IAEF,IAAI0B,eAAe,CAACE,MAAM,GAAG,CAAC,EAAE;MAC5B3C,MAAM,CAACwB,cAAc,CAACoB,GAAG,IAAI;QACzB9C,oBAAoB,CAChB8C,GAAG,EACHH,eAAe,EACfZ,eAAe,EACfM,cAAc,EACdpB,cACJ,CAAC;MACL,CAAC,CAAC;IACN;EACJ;EAEA;AACJ","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import type { Document } from "@webiny/website-builder-sdk";
2
- export declare function $deleteElement(document: Document, id: string): void;
1
+ import type { Editor } from "../../editorSdk/Editor.js";
2
+ export declare function $deleteElement(editor: Editor, id: string, ignoreConstraints?: boolean): import("@webiny/website-builder-sdk").ConstraintResult | undefined;
@@ -1,30 +1,74 @@
1
+ import { ElementFactory, evaluateDeleteConstraint } from "@webiny/website-builder-sdk";
1
2
  import { $getElementById } from "./$getElementById.js";
2
3
  import { $removeElementReferenceFromParent } from "./$removeElementReferenceFromParent.js";
3
- export function $deleteElement(document, id) {
4
+ import { Commands } from "../../BaseEditor/index.js";
5
+ import { executeOnChange, applyAncestorUpdates } from "./executeOnChange.js";
6
+ export function $deleteElement(editor, id, ignoreConstraints = false) {
7
+ const document = editor.getDocumentState().read();
4
8
  const elementToDelete = $getElementById(document, id);
5
9
  if (!elementToDelete) {
6
10
  return;
7
11
  }
12
+ if (!ignoreConstraints) {
13
+ const result = evaluateDeleteConstraint({
14
+ elementId: id,
15
+ document,
16
+ components: editor.getEditorState().read().components
17
+ });
18
+ if (!result.allowed) {
19
+ return result;
20
+ }
21
+ }
8
22
 
9
- // Remove the reference to the element from its parent element.
10
- if (elementToDelete.parent) {
11
- $removeElementReferenceFromParent(document, {
23
+ // Fire onChange on the element + onDescendantChange on ancestors BEFORE deletion,
24
+ // while the element and its parent chain are still in the document.
25
+ let ancestorUpdates = [];
26
+ let breakpointNames = [];
27
+ let baseBreakpoint = "";
28
+ let elementFactory;
29
+ if (!ignoreConstraints) {
30
+ const componentsManifest = editor.getEditorState().read().components;
31
+ const editorState = editor.getEditorState().read();
32
+ breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);
33
+ baseBreakpoint = breakpointNames[0];
34
+ elementFactory = new ElementFactory(componentsManifest);
35
+ ancestorUpdates = executeOnChange({
36
+ editor,
12
37
  elementId: id,
13
- parentId: elementToDelete.parent.id,
14
- slot: elementToDelete.parent.slot
38
+ action: "delete",
39
+ breakpointNames,
40
+ baseBreakpoint,
41
+ elementFactory
15
42
  });
16
43
  }
44
+ editor.executeCommand(Commands.DeselectElement);
45
+ editor.updateDocument(document => {
46
+ // Remove the reference to the element from its parent element.
47
+ if (elementToDelete.parent) {
48
+ $removeElementReferenceFromParent(document, {
49
+ elementId: id,
50
+ parentId: elementToDelete.parent.id,
51
+ slot: elementToDelete.parent.slot
52
+ });
53
+ }
17
54
 
18
- // Remove all descendants.
19
- Object.values(document.elements).filter(el => el.parent?.id === id).forEach(element => {
20
- $deleteElement(document, element.id);
21
- });
55
+ // Remove all descendants.
56
+ Object.values(document.elements).filter(el => el.parent?.id === id).forEach(element => {
57
+ $deleteElement(editor, element.id, true);
58
+ });
59
+
60
+ // Delete element bindings.
61
+ delete document.bindings[elementToDelete.id];
22
62
 
23
- // Delete element bindings.
24
- delete document.bindings[elementToDelete.id];
63
+ // Delete the element itself.
64
+ delete document.elements[id];
25
65
 
26
- // Delete the element itself.
27
- delete document.elements[id];
66
+ // Apply ancestor updates from onDescendantChange within the same transaction.
67
+ if (ancestorUpdates.length > 0 && elementFactory) {
68
+ applyAncestorUpdates(document, ancestorUpdates, breakpointNames, baseBreakpoint, elementFactory);
69
+ }
70
+ });
71
+ return;
28
72
  }
29
73
 
30
74
  //# sourceMappingURL=$deleteElement.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["$getElementById","$removeElementReferenceFromParent","$deleteElement","document","id","elementToDelete","parent","elementId","parentId","slot","Object","values","elements","filter","el","forEach","element","bindings"],"sources":["$deleteElement.ts"],"sourcesContent":["import type { Document } from \"@webiny/website-builder-sdk\";\nimport { $getElementById } from \"./$getElementById.js\";\nimport { $removeElementReferenceFromParent } from \"./$removeElementReferenceFromParent.js\";\n\nexport function $deleteElement(document: Document, id: string) {\n const elementToDelete = $getElementById(document, id);\n\n if (!elementToDelete) {\n return;\n }\n\n // Remove the reference to the element from its parent element.\n if (elementToDelete.parent) {\n $removeElementReferenceFromParent(document, {\n elementId: id,\n parentId: elementToDelete.parent.id,\n slot: elementToDelete.parent.slot\n });\n }\n\n // Remove all descendants.\n Object.values(document.elements)\n .filter(el => el.parent?.id === id)\n .forEach(element => {\n $deleteElement(document, element.id);\n });\n\n // Delete element bindings.\n delete document.bindings[elementToDelete.id];\n\n // Delete the element itself.\n delete document.elements[id];\n}\n"],"mappings":"AACA,SAASA,eAAe;AACxB,SAASC,iCAAiC;AAE1C,OAAO,SAASC,cAAcA,CAACC,QAAkB,EAAEC,EAAU,EAAE;EAC3D,MAAMC,eAAe,GAAGL,eAAe,CAACG,QAAQ,EAAEC,EAAE,CAAC;EAErD,IAAI,CAACC,eAAe,EAAE;IAClB;EACJ;;EAEA;EACA,IAAIA,eAAe,CAACC,MAAM,EAAE;IACxBL,iCAAiC,CAACE,QAAQ,EAAE;MACxCI,SAAS,EAAEH,EAAE;MACbI,QAAQ,EAAEH,eAAe,CAACC,MAAM,CAACF,EAAE;MACnCK,IAAI,EAAEJ,eAAe,CAACC,MAAM,CAACG;IACjC,CAAC,CAAC;EACN;;EAEA;EACAC,MAAM,CAACC,MAAM,CAACR,QAAQ,CAACS,QAAQ,CAAC,CAC3BC,MAAM,CAACC,EAAE,IAAIA,EAAE,CAACR,MAAM,EAAEF,EAAE,KAAKA,EAAE,CAAC,CAClCW,OAAO,CAACC,OAAO,IAAI;IAChBd,cAAc,CAACC,QAAQ,EAAEa,OAAO,CAACZ,EAAE,CAAC;EACxC,CAAC,CAAC;;EAEN;EACA,OAAOD,QAAQ,CAACc,QAAQ,CAACZ,eAAe,CAACD,EAAE,CAAC;;EAE5C;EACA,OAAOD,QAAQ,CAACS,QAAQ,CAACR,EAAE,CAAC;AAChC","ignoreList":[]}
1
+ {"version":3,"names":["ElementFactory","evaluateDeleteConstraint","$getElementById","$removeElementReferenceFromParent","Commands","executeOnChange","applyAncestorUpdates","$deleteElement","editor","id","ignoreConstraints","document","getDocumentState","read","elementToDelete","result","elementId","components","getEditorState","allowed","ancestorUpdates","breakpointNames","baseBreakpoint","elementFactory","componentsManifest","editorState","viewport","breakpoints","map","bp","name","action","executeCommand","DeselectElement","updateDocument","parent","parentId","slot","Object","values","elements","filter","el","forEach","element","bindings","length"],"sources":["$deleteElement.ts"],"sourcesContent":["import { ElementFactory, evaluateDeleteConstraint } from \"@webiny/website-builder-sdk\";\nimport { $getElementById } from \"./$getElementById.js\";\nimport { $removeElementReferenceFromParent } from \"./$removeElementReferenceFromParent.js\";\nimport type { Editor } from \"~/editorSdk/Editor.js\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport { executeOnChange, applyAncestorUpdates } from \"./executeOnChange.js\";\n\nexport function $deleteElement(editor: Editor, id: string, ignoreConstraints = false) {\n const document = editor.getDocumentState().read();\n const elementToDelete = $getElementById(document, id);\n\n if (!elementToDelete) {\n return;\n }\n\n if (!ignoreConstraints) {\n const result = evaluateDeleteConstraint({\n elementId: id,\n document,\n components: editor.getEditorState().read().components\n });\n\n if (!result.allowed) {\n return result;\n }\n }\n\n // Fire onChange on the element + onDescendantChange on ancestors BEFORE deletion,\n // while the element and its parent chain are still in the document.\n let ancestorUpdates: ReturnType<typeof executeOnChange> = [];\n let breakpointNames: string[] = [];\n let baseBreakpoint = \"\";\n let elementFactory: ElementFactory | undefined;\n\n if (!ignoreConstraints) {\n const componentsManifest = editor.getEditorState().read().components;\n const editorState = editor.getEditorState().read();\n breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);\n baseBreakpoint = breakpointNames[0];\n elementFactory = new ElementFactory(componentsManifest);\n\n ancestorUpdates = executeOnChange({\n editor,\n elementId: id,\n action: \"delete\",\n breakpointNames,\n baseBreakpoint,\n elementFactory\n });\n }\n\n editor.executeCommand(Commands.DeselectElement);\n\n editor.updateDocument(document => {\n // Remove the reference to the element from its parent element.\n if (elementToDelete.parent) {\n $removeElementReferenceFromParent(document, {\n elementId: id,\n parentId: elementToDelete.parent.id,\n slot: elementToDelete.parent.slot\n });\n }\n\n // Remove all descendants.\n Object.values(document.elements)\n .filter(el => el.parent?.id === id)\n .forEach(element => {\n $deleteElement(editor, element.id, true);\n });\n\n // Delete element bindings.\n delete document.bindings[elementToDelete.id];\n\n // Delete the element itself.\n delete document.elements[id];\n\n // Apply ancestor updates from onDescendantChange within the same transaction.\n if (ancestorUpdates.length > 0 && elementFactory) {\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n baseBreakpoint,\n elementFactory\n );\n }\n });\n\n return;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import type { ComponentManifest, Document } from "@webiny/website-builder-sdk";
2
+ export interface ResolvedElementInputs {
3
+ [key: string]: any;
4
+ }
5
+ export declare function $getElementInputValues(document: Document, components: Record<string, ComponentManifest>, elementId: string | null, depth?: number): ResolvedElementInputs;
@@ -0,0 +1,76 @@
1
+ import { BindingsResolver, ComponentManifestToAstConverter } from "@webiny/website-builder-sdk";
2
+ function resolveElement(document, components, elementId, depth) {
3
+ const element = document.elements[elementId];
4
+ if (!element) {
5
+ return {};
6
+ }
7
+ const manifest = components[element.component.name];
8
+ if (!manifest) {
9
+ return {};
10
+ }
11
+ const elementBindings = document.bindings[elementId] ?? {};
12
+ const inputAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);
13
+ const resolver = new BindingsResolver(document.state);
14
+ const [resolved] = resolver.resolveElement({
15
+ element,
16
+ elementBindings,
17
+ inputAst
18
+ });
19
+ const inputs = resolved?.inputs ?? {};
20
+ if (depth <= 0) {
21
+ return inputs;
22
+ }
23
+ return resolveSlotsByAst(document, components, inputs, inputAst, depth);
24
+ }
25
+
26
+ /**
27
+ * Walk the resolved inputs using the AST to identify slot values,
28
+ * and resolve slot element IDs into their resolved inputs.
29
+ */
30
+ function resolveSlotsByAst(document, components, inputs, ast, depth) {
31
+ const result = {
32
+ ...inputs
33
+ };
34
+ for (const node of ast) {
35
+ const value = inputs[node.name];
36
+ if (value === undefined) {
37
+ continue;
38
+ }
39
+ if (node.type === "slot") {
40
+ result[node.name] = resolveSlotValue(document, components, value, depth);
41
+ } else if (node.children.length > 0) {
42
+ // Object or object-list — recurse into children using their AST.
43
+ if (node.list && Array.isArray(value)) {
44
+ result[node.name] = value.map(item => resolveSlotsByAst(document, components, item, node.children, depth));
45
+ } else if (typeof value === "object" && value !== null && !Array.isArray(value)) {
46
+ result[node.name] = resolveSlotsByAst(document, components, value, node.children, depth);
47
+ }
48
+ }
49
+ }
50
+ return result;
51
+ }
52
+
53
+ /**
54
+ * Resolve a slot value: a single element ID string, or an array of element ID strings.
55
+ */
56
+ function resolveSlotValue(document, components, value, depth) {
57
+ if (typeof value === "string" && document.elements[value]) {
58
+ const resolved = resolveElement(document, components, value, depth - 1);
59
+ return {
60
+ elementId: value,
61
+ ...resolved
62
+ };
63
+ }
64
+ if (Array.isArray(value)) {
65
+ return value.map(item => resolveSlotValue(document, components, item, depth));
66
+ }
67
+ return value;
68
+ }
69
+ export function $getElementInputValues(document, components, elementId, depth = 0) {
70
+ if (!elementId) {
71
+ return {};
72
+ }
73
+ return resolveElement(document, components, elementId, depth);
74
+ }
75
+
76
+ //# sourceMappingURL=$getElementInputValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BindingsResolver","ComponentManifestToAstConverter","resolveElement","document","components","elementId","depth","element","elements","manifest","component","name","elementBindings","bindings","inputAst","convert","inputs","resolver","state","resolved","resolveSlotsByAst","ast","result","node","value","undefined","type","resolveSlotValue","children","length","list","Array","isArray","map","item","$getElementInputValues"],"sources":["$getElementInputValues.ts"],"sourcesContent":["import type { ComponentManifest, Document } from \"@webiny/website-builder-sdk\";\nimport {\n BindingsResolver,\n ComponentManifestToAstConverter,\n type InputAstNode\n} from \"@webiny/website-builder-sdk\";\n\nexport interface ResolvedElementInputs {\n [key: string]: any;\n}\n\nfunction resolveElement(\n document: Document,\n components: Record<string, ComponentManifest>,\n elementId: string,\n depth: number\n): ResolvedElementInputs {\n const element = document.elements[elementId];\n if (!element) {\n return {};\n }\n\n const manifest = components[element.component.name];\n if (!manifest) {\n return {};\n }\n\n const elementBindings = document.bindings[elementId] ?? {};\n const inputAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);\n const resolver = new BindingsResolver(document.state);\n\n const [resolved] = resolver.resolveElement({\n element,\n elementBindings,\n inputAst\n });\n\n const inputs = resolved?.inputs ?? {};\n\n if (depth <= 0) {\n return inputs;\n }\n\n return resolveSlotsByAst(document, components, inputs, inputAst, depth);\n}\n\n/**\n * Walk the resolved inputs using the AST to identify slot values,\n * and resolve slot element IDs into their resolved inputs.\n */\nfunction resolveSlotsByAst(\n document: Document,\n components: Record<string, ComponentManifest>,\n inputs: Record<string, any>,\n ast: InputAstNode[],\n depth: number\n): Record<string, any> {\n const result: Record<string, any> = { ...inputs };\n\n for (const node of ast) {\n const value = inputs[node.name];\n if (value === undefined) {\n continue;\n }\n\n if (node.type === \"slot\") {\n result[node.name] = resolveSlotValue(document, components, value, depth);\n } else if (node.children.length > 0) {\n // Object or object-list — recurse into children using their AST.\n if (node.list && Array.isArray(value)) {\n result[node.name] = value.map(item =>\n resolveSlotsByAst(document, components, item, node.children, depth)\n );\n } else if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n result[node.name] = resolveSlotsByAst(\n document,\n components,\n value,\n node.children,\n depth\n );\n }\n }\n }\n\n return result;\n}\n\n/**\n * Resolve a slot value: a single element ID string, or an array of element ID strings.\n */\nfunction resolveSlotValue(\n document: Document,\n components: Record<string, ComponentManifest>,\n value: any,\n depth: number\n): any {\n if (typeof value === \"string\" && document.elements[value]) {\n const resolved = resolveElement(document, components, value, depth - 1);\n return { elementId: value, ...resolved };\n }\n\n if (Array.isArray(value)) {\n return value.map(item => resolveSlotValue(document, components, item, depth));\n }\n\n return value;\n}\n\nexport function $getElementInputValues(\n document: Document,\n components: Record<string, ComponentManifest>,\n elementId: string | null,\n depth = 0\n) {\n if (!elementId) {\n return {};\n }\n\n return resolveElement(document, components, elementId, depth);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { Document } from "@webiny/website-builder-sdk";
2
+ export declare function $getElementsOfType(document: Document, componentName: string): import("@webiny/website-builder-sdk").DocumentElement[];
@@ -0,0 +1,5 @@
1
+ export function $getElementsOfType(document, componentName) {
2
+ return Object.values(document.elements).filter(el => el.component.name === componentName);
3
+ }
4
+
5
+ //# sourceMappingURL=$getElementsOfType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["$getElementsOfType","document","componentName","Object","values","elements","filter","el","component","name"],"sources":["$getElementsOfType.ts"],"sourcesContent":["import type { Document } from \"@webiny/website-builder-sdk\";\n\nexport function $getElementsOfType(document: Document, componentName: string) {\n return Object.values(document.elements).filter(el => el.component.name === componentName);\n}\n"],"mappings":"AAEA,OAAO,SAASA,kBAAkBA,CAACC,QAAkB,EAAEC,aAAqB,EAAE;EAC1E,OAAOC,MAAM,CAACC,MAAM,CAACH,QAAQ,CAACI,QAAQ,CAAC,CAACC,MAAM,CAACC,EAAE,IAAIA,EAAE,CAACC,SAAS,CAACC,IAAI,KAAKP,aAAa,CAAC;AAC7F","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { Document } from "@webiny/website-builder-sdk";
2
+ export declare function $getFirstElementOfType(document: Document, componentName: string): import("@webiny/website-builder-sdk").DocumentElement | undefined;
@@ -0,0 +1,5 @@
1
+ export function $getFirstElementOfType(document, componentName) {
2
+ return Object.values(document.elements).find(el => el.component.name === componentName);
3
+ }
4
+
5
+ //# sourceMappingURL=$getFirstElementOfType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["$getFirstElementOfType","document","componentName","Object","values","elements","find","el","component","name"],"sources":["$getFirstElementOfType.ts"],"sourcesContent":["import type { Document } from \"@webiny/website-builder-sdk\";\n\nexport function $getFirstElementOfType(document: Document, componentName: string) {\n return Object.values(document.elements).find(el => el.component.name === componentName);\n}\n"],"mappings":"AAEA,OAAO,SAASA,sBAAsBA,CAACC,QAAkB,EAAEC,aAAqB,EAAE;EAC9E,OAAOC,MAAM,CAACC,MAAM,CAACH,QAAQ,CAACI,QAAQ,CAAC,CAACC,IAAI,CAACC,EAAE,IAAIA,EAAE,CAACC,SAAS,CAACC,IAAI,KAAKP,aAAa,CAAC;AAC3F","ignoreList":[]}
@@ -1,9 +1,10 @@
1
- import type { Document } from "@webiny/website-builder-sdk";
1
+ import type { ComponentManifest, ConstraintResult, Document } from "@webiny/website-builder-sdk";
2
2
  interface MoveParams {
3
3
  elementId: string;
4
4
  parentId: string;
5
5
  slot: string;
6
6
  index: number;
7
+ components: Record<string, ComponentManifest>;
7
8
  }
8
- export declare function $moveElement(document: Document, params: MoveParams): void;
9
+ export declare function $moveElement(document: Document, params: MoveParams): ConstraintResult | undefined;
9
10
  export {};
@@ -1,3 +1,4 @@
1
+ import { evaluateConstraints } from "@webiny/website-builder-sdk";
1
2
  import { $getElementById } from "./$getElementById.js";
2
3
  import { $removeElementReferenceFromParent } from "./$removeElementReferenceFromParent.js";
3
4
  import { $addElementReferenceToParent } from "./$addElementReferenceToParent.js";
@@ -6,9 +7,20 @@ export function $moveElement(document, params) {
6
7
  elementId,
7
8
  index,
8
9
  slot,
9
- parentId
10
+ parentId,
11
+ components
10
12
  } = params;
11
13
  const elementToMove = $getElementById(document, elementId);
14
+ const result = evaluateConstraints({
15
+ componentName: elementToMove.component.name,
16
+ parentId,
17
+ slot,
18
+ document,
19
+ components
20
+ });
21
+ if (!result.allowed) {
22
+ return result;
23
+ }
12
24
 
13
25
  // Remove the reference to the element from its parent element.
14
26
  if (elementToMove.parent) {
@@ -32,6 +44,7 @@ export function $moveElement(document, params) {
32
44
  slot,
33
45
  index
34
46
  });
47
+ return;
35
48
  }
36
49
 
37
50
  //# sourceMappingURL=$moveElement.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["$getElementById","$removeElementReferenceFromParent","$addElementReferenceToParent","$moveElement","document","params","elementId","index","slot","parentId","elementToMove","parent","id"],"sources":["$moveElement.ts"],"sourcesContent":["import type { Document } from \"@webiny/website-builder-sdk\";\nimport { $getElementById } from \"./$getElementById.js\";\nimport { $removeElementReferenceFromParent } from \"./$removeElementReferenceFromParent.js\";\nimport { $addElementReferenceToParent } from \"./$addElementReferenceToParent.js\";\n\ninterface MoveParams {\n // ID of the element to move.\n elementId: string;\n // Parent element for the new element.\n parentId: string;\n // Parent element slot (e.g., `children`, `heroBanner`, `tabsList.0.content`).\n slot: string;\n // Index within the slot.\n index: number;\n}\n\nexport function $moveElement(document: Document, params: MoveParams) {\n const { elementId, index, slot, parentId } = params;\n\n const elementToMove = $getElementById(document, elementId);\n\n // Remove the reference to the element from its parent element.\n if (elementToMove.parent) {\n $removeElementReferenceFromParent(document, {\n elementId,\n parentId: elementToMove.parent.id,\n slot: elementToMove.parent.slot\n });\n }\n\n // Assign new parent.\n elementToMove.parent = {\n id: parentId,\n slot\n };\n\n // Add reference to the new parent.\n $addElementReferenceToParent(document, {\n elementId,\n parentId,\n slot,\n index\n });\n}\n"],"mappings":"AACA,SAASA,eAAe;AACxB,SAASC,iCAAiC;AAC1C,SAASC,4BAA4B;AAarC,OAAO,SAASC,YAAYA,CAACC,QAAkB,EAAEC,MAAkB,EAAE;EACjE,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAS,CAAC,GAAGJ,MAAM;EAEnD,MAAMK,aAAa,GAAGV,eAAe,CAACI,QAAQ,EAAEE,SAAS,CAAC;;EAE1D;EACA,IAAII,aAAa,CAACC,MAAM,EAAE;IACtBV,iCAAiC,CAACG,QAAQ,EAAE;MACxCE,SAAS;MACTG,QAAQ,EAAEC,aAAa,CAACC,MAAM,CAACC,EAAE;MACjCJ,IAAI,EAAEE,aAAa,CAACC,MAAM,CAACH;IAC/B,CAAC,CAAC;EACN;;EAEA;EACAE,aAAa,CAACC,MAAM,GAAG;IACnBC,EAAE,EAAEH,QAAQ;IACZD;EACJ,CAAC;;EAED;EACAN,4BAA4B,CAACE,QAAQ,EAAE;IACnCE,SAAS;IACTG,QAAQ;IACRD,IAAI;IACJD;EACJ,CAAC,CAAC;AACN","ignoreList":[]}
1
+ {"version":3,"names":["evaluateConstraints","$getElementById","$removeElementReferenceFromParent","$addElementReferenceToParent","$moveElement","document","params","elementId","index","slot","parentId","components","elementToMove","result","componentName","component","name","allowed","parent","id"],"sources":["$moveElement.ts"],"sourcesContent":["import type { ComponentManifest, ConstraintResult, Document } from \"@webiny/website-builder-sdk\";\nimport { evaluateConstraints } from \"@webiny/website-builder-sdk\";\nimport { $getElementById } from \"./$getElementById.js\";\nimport { $removeElementReferenceFromParent } from \"./$removeElementReferenceFromParent.js\";\nimport { $addElementReferenceToParent } from \"./$addElementReferenceToParent.js\";\n\ninterface MoveParams {\n // ID of the element to move.\n elementId: string;\n // Parent element for the new element.\n parentId: string;\n // Parent element slot (e.g., `children`, `heroBanner`, `tabsList.0.content`).\n slot: string;\n // Index within the slot.\n index: number;\n // All registered component manifests.\n components: Record<string, ComponentManifest>;\n}\n\nexport function $moveElement(document: Document, params: MoveParams): ConstraintResult | undefined {\n const { elementId, index, slot, parentId, components } = params;\n\n const elementToMove = $getElementById(document, elementId);\n\n const result = evaluateConstraints({\n componentName: elementToMove.component.name,\n parentId,\n slot,\n document,\n components\n });\n\n if (!result.allowed) {\n return result;\n }\n\n // Remove the reference to the element from its parent element.\n if (elementToMove.parent) {\n $removeElementReferenceFromParent(document, {\n elementId,\n parentId: elementToMove.parent.id,\n slot: elementToMove.parent.slot\n });\n }\n\n // Assign new parent.\n elementToMove.parent = {\n id: parentId,\n slot\n };\n\n // Add reference to the new parent.\n $addElementReferenceToParent(document, {\n elementId,\n parentId,\n slot,\n index\n });\n\n return;\n}\n"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,eAAe;AACxB,SAASC,iCAAiC;AAC1C,SAASC,4BAA4B;AAerC,OAAO,SAASC,YAAYA,CAACC,QAAkB,EAAEC,MAAkB,EAAgC;EAC/F,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC,IAAI;IAAEC,QAAQ;IAAEC;EAAW,CAAC,GAAGL,MAAM;EAE/D,MAAMM,aAAa,GAAGX,eAAe,CAACI,QAAQ,EAAEE,SAAS,CAAC;EAE1D,MAAMM,MAAM,GAAGb,mBAAmB,CAAC;IAC/Bc,aAAa,EAAEF,aAAa,CAACG,SAAS,CAACC,IAAI;IAC3CN,QAAQ;IACRD,IAAI;IACJJ,QAAQ;IACRM;EACJ,CAAC,CAAC;EAEF,IAAI,CAACE,MAAM,CAACI,OAAO,EAAE;IACjB,OAAOJ,MAAM;EACjB;;EAEA;EACA,IAAID,aAAa,CAACM,MAAM,EAAE;IACtBhB,iCAAiC,CAACG,QAAQ,EAAE;MACxCE,SAAS;MACTG,QAAQ,EAAEE,aAAa,CAACM,MAAM,CAACC,EAAE;MACjCV,IAAI,EAAEG,aAAa,CAACM,MAAM,CAACT;IAC/B,CAAC,CAAC;EACN;;EAEA;EACAG,aAAa,CAACM,MAAM,GAAG;IACnBC,EAAE,EAAET,QAAQ;IACZD;EACJ,CAAC;;EAED;EACAN,4BAA4B,CAACE,QAAQ,EAAE;IACnCE,SAAS;IACTG,QAAQ;IACRD,IAAI;IACJD;EACJ,CAAC,CAAC;EAEF;AACJ","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import type { Editor } from "../Editor.js";
2
+ /**
3
+ * Programmatically update an element's inputs in the preview iframe only (via JSON patch).
4
+ * Does NOT write to the editor document state.
5
+ */
6
+ export declare function $previewElementInputs(editor: Editor, elementId: string, updater: (inputs: Record<string, any>) => void): void;
@@ -0,0 +1,39 @@
1
+ import { toJS } from "mobx";
2
+ import { BindingsProcessor, ComponentManifestToAstConverter, ElementFactory, InputsBindingsProcessor } from "@webiny/website-builder-sdk";
3
+ import { Commands } from "../../BaseEditor/index.js";
4
+
5
+ /**
6
+ * Programmatically update an element's inputs in the preview iframe only (via JSON patch).
7
+ * Does NOT write to the editor document state.
8
+ */
9
+ export function $previewElementInputs(editor, elementId, updater) {
10
+ const document = editor.getDocumentState().read();
11
+ const editorState = editor.getEditorState().read();
12
+ const components = editorState.components;
13
+ const element = document.elements[elementId];
14
+ if (!element) {
15
+ return;
16
+ }
17
+ const manifest = components[element.component.name];
18
+ if (!manifest) {
19
+ return;
20
+ }
21
+ const breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);
22
+ const baseBreakpoint = breakpointNames[0];
23
+ const inputsAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);
24
+ const rawBindings = toJS(document.bindings[elementId]) ?? {};
25
+ const elementFactory = new ElementFactory(components);
26
+ const bindingsProcessor = new BindingsProcessor(breakpointNames);
27
+ const resolvedBindings = bindingsProcessor.getBindings(rawBindings, baseBreakpoint);
28
+ const inputsProcessor = new InputsBindingsProcessor(elementId, inputsAst, breakpointNames, rawBindings, elementFactory);
29
+ const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);
30
+ updater(deepInputs);
31
+ const inputsUpdater = inputsProcessor.createUpdate(deepInputs, baseBreakpoint);
32
+ const patch = inputsUpdater.createJsonPatch(rawBindings);
33
+ editor.executeCommand(Commands.PreviewPatchElement, {
34
+ elementId,
35
+ patch
36
+ });
37
+ }
38
+
39
+ //# sourceMappingURL=$previewElementInputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toJS","BindingsProcessor","ComponentManifestToAstConverter","ElementFactory","InputsBindingsProcessor","Commands","$previewElementInputs","editor","elementId","updater","document","getDocumentState","read","editorState","getEditorState","components","element","elements","manifest","component","name","breakpointNames","viewport","breakpoints","map","bp","baseBreakpoint","inputsAst","convert","inputs","rawBindings","bindings","elementFactory","bindingsProcessor","resolvedBindings","getBindings","inputsProcessor","deepInputs","toDeepInputs","inputsUpdater","createUpdate","patch","createJsonPatch","executeCommand","PreviewPatchElement"],"sources":["$previewElementInputs.ts"],"sourcesContent":["import { toJS } from \"mobx\";\nimport type { Editor } from \"../Editor.js\";\nimport {\n BindingsProcessor,\n ComponentManifestToAstConverter,\n ElementFactory,\n InputsBindingsProcessor\n} from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\n\n/**\n * Programmatically update an element's inputs in the preview iframe only (via JSON patch).\n * Does NOT write to the editor document state.\n */\nexport function $previewElementInputs(\n editor: Editor,\n elementId: string,\n updater: (inputs: Record<string, any>) => void\n): void {\n const document = editor.getDocumentState().read();\n const editorState = editor.getEditorState().read();\n const components = editorState.components;\n\n const element = document.elements[elementId];\n if (!element) {\n return;\n }\n\n const manifest = components[element.component.name];\n if (!manifest) {\n return;\n }\n\n const breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);\n const baseBreakpoint = breakpointNames[0];\n const inputsAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);\n const rawBindings = toJS(document.bindings[elementId]) ?? {};\n const elementFactory = new ElementFactory(components);\n\n const bindingsProcessor = new BindingsProcessor(breakpointNames);\n const resolvedBindings = bindingsProcessor.getBindings(rawBindings, baseBreakpoint);\n\n const inputsProcessor = new InputsBindingsProcessor(\n elementId,\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n updater(deepInputs);\n\n const inputsUpdater = inputsProcessor.createUpdate(deepInputs, baseBreakpoint);\n const patch = inputsUpdater.createJsonPatch(rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n}\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,MAAM;AAE3B,SACIC,iBAAiB,EACjBC,+BAA+B,EAC/BC,cAAc,EACdC,uBAAuB,QACpB,6BAA6B;AACpC,SAASC,QAAQ;;AAEjB;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACjCC,MAAc,EACdC,SAAiB,EACjBC,OAA8C,EAC1C;EACJ,MAAMC,QAAQ,GAAGH,MAAM,CAACI,gBAAgB,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;EACjD,MAAMC,WAAW,GAAGN,MAAM,CAACO,cAAc,CAAC,CAAC,CAACF,IAAI,CAAC,CAAC;EAClD,MAAMG,UAAU,GAAGF,WAAW,CAACE,UAAU;EAEzC,MAAMC,OAAO,GAAGN,QAAQ,CAACO,QAAQ,CAACT,SAAS,CAAC;EAC5C,IAAI,CAACQ,OAAO,EAAE;IACV;EACJ;EAEA,MAAME,QAAQ,GAAGH,UAAU,CAACC,OAAO,CAACG,SAAS,CAACC,IAAI,CAAC;EACnD,IAAI,CAACF,QAAQ,EAAE;IACX;EACJ;EAEA,MAAMG,eAAe,GAAGR,WAAW,CAACS,QAAQ,CAACC,WAAW,CAACC,GAAG,CAACC,EAAE,IAAIA,EAAE,CAACL,IAAI,CAAC;EAC3E,MAAMM,cAAc,GAAGL,eAAe,CAAC,CAAC,CAAC;EACzC,MAAMM,SAAS,GAAGzB,+BAA+B,CAAC0B,OAAO,CAACV,QAAQ,CAACW,MAAM,IAAI,EAAE,CAAC;EAChF,MAAMC,WAAW,GAAG9B,IAAI,CAACU,QAAQ,CAACqB,QAAQ,CAACvB,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5D,MAAMwB,cAAc,GAAG,IAAI7B,cAAc,CAACY,UAAU,CAAC;EAErD,MAAMkB,iBAAiB,GAAG,IAAIhC,iBAAiB,CAACoB,eAAe,CAAC;EAChE,MAAMa,gBAAgB,GAAGD,iBAAiB,CAACE,WAAW,CAACL,WAAW,EAAEJ,cAAc,CAAC;EAEnF,MAAMU,eAAe,GAAG,IAAIhC,uBAAuB,CAC/CI,SAAS,EACTmB,SAAS,EACTN,eAAe,EACfS,WAAW,EACXE,cACJ,CAAC;EAED,MAAMK,UAAU,GAAGD,eAAe,CAACE,YAAY,CAACJ,gBAAgB,CAACL,MAAM,CAAC;EAExEpB,OAAO,CAAC4B,UAAU,CAAC;EAEnB,MAAME,aAAa,GAAGH,eAAe,CAACI,YAAY,CAACH,UAAU,EAAEX,cAAc,CAAC;EAC9E,MAAMe,KAAK,GAAGF,aAAa,CAACG,eAAe,CAACZ,WAAW,CAAC;EAExDvB,MAAM,CAACoC,cAAc,CAACtC,QAAQ,CAACuC,mBAAmB,EAAE;IAAEpC,SAAS;IAAEiC;EAAM,CAAC,CAAC;AAC7E","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { Editor } from "../Editor.js";
2
+ /**
3
+ * Programmatically update an element's inputs using a callback-based API.
4
+ * The updater receives a deep object representation of the element's inputs
5
+ * which can be mutated in place.
6
+ */
7
+ export declare function $updateElementInputs(editor: Editor, elementId: string, updater: (inputs: Record<string, any>) => void): void;
@@ -0,0 +1,50 @@
1
+ import { toJS } from "mobx";
2
+ import { BindingsProcessor, ComponentManifestToAstConverter, ElementFactory, InputsBindingsProcessor } from "@webiny/website-builder-sdk";
3
+ import { executeOnChange, applyAncestorUpdates } from "./executeOnChange.js";
4
+
5
+ /**
6
+ * Programmatically update an element's inputs using a callback-based API.
7
+ * The updater receives a deep object representation of the element's inputs
8
+ * which can be mutated in place.
9
+ */
10
+ export function $updateElementInputs(editor, elementId, updater) {
11
+ const document = editor.getDocumentState().read();
12
+ const editorState = editor.getEditorState().read();
13
+ const components = editorState.components;
14
+ const element = document.elements[elementId];
15
+ if (!element) {
16
+ return;
17
+ }
18
+ const manifest = components[element.component.name];
19
+ if (!manifest) {
20
+ return;
21
+ }
22
+ const breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);
23
+ const baseBreakpoint = breakpointNames[0];
24
+ const inputsAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);
25
+ const rawBindings = toJS(document.bindings[elementId]) ?? {};
26
+ const elementFactory = new ElementFactory(components);
27
+ const bindingsProcessor = new BindingsProcessor(breakpointNames);
28
+ const resolvedBindings = bindingsProcessor.getBindings(rawBindings, baseBreakpoint);
29
+ const inputsProcessor = new InputsBindingsProcessor(elementId, inputsAst, breakpointNames, rawBindings, elementFactory);
30
+ const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);
31
+ updater(deepInputs);
32
+
33
+ // Run manifest.onChange + onDescendantChange on ancestors
34
+ const ancestorUpdates = executeOnChange({
35
+ editor,
36
+ elementId,
37
+ deepInputs,
38
+ action: "update",
39
+ breakpointNames,
40
+ baseBreakpoint,
41
+ elementFactory
42
+ });
43
+ const inputsUpdater = inputsProcessor.createUpdate(deepInputs, baseBreakpoint);
44
+ editor.updateDocument(doc => {
45
+ inputsUpdater.applyToDocument(doc);
46
+ applyAncestorUpdates(doc, ancestorUpdates, breakpointNames, baseBreakpoint, elementFactory);
47
+ });
48
+ }
49
+
50
+ //# sourceMappingURL=$updateElementInputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toJS","BindingsProcessor","ComponentManifestToAstConverter","ElementFactory","InputsBindingsProcessor","executeOnChange","applyAncestorUpdates","$updateElementInputs","editor","elementId","updater","document","getDocumentState","read","editorState","getEditorState","components","element","elements","manifest","component","name","breakpointNames","viewport","breakpoints","map","bp","baseBreakpoint","inputsAst","convert","inputs","rawBindings","bindings","elementFactory","bindingsProcessor","resolvedBindings","getBindings","inputsProcessor","deepInputs","toDeepInputs","ancestorUpdates","action","inputsUpdater","createUpdate","updateDocument","doc","applyToDocument"],"sources":["$updateElementInputs.ts"],"sourcesContent":["import { toJS } from \"mobx\";\nimport type { Editor } from \"../Editor.js\";\nimport {\n BindingsProcessor,\n ComponentManifestToAstConverter,\n ElementFactory,\n InputsBindingsProcessor\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"./executeOnChange.js\";\n\n/**\n * Programmatically update an element's inputs using a callback-based API.\n * The updater receives a deep object representation of the element's inputs\n * which can be mutated in place.\n */\nexport function $updateElementInputs(\n editor: Editor,\n elementId: string,\n updater: (inputs: Record<string, any>) => void\n): void {\n const document = editor.getDocumentState().read();\n const editorState = editor.getEditorState().read();\n const components = editorState.components;\n\n const element = document.elements[elementId];\n if (!element) {\n return;\n }\n\n const manifest = components[element.component.name];\n if (!manifest) {\n return;\n }\n\n const breakpointNames = editorState.viewport.breakpoints.map(bp => bp.name);\n const baseBreakpoint = breakpointNames[0];\n const inputsAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);\n const rawBindings = toJS(document.bindings[elementId]) ?? {};\n const elementFactory = new ElementFactory(components);\n\n const bindingsProcessor = new BindingsProcessor(breakpointNames);\n const resolvedBindings = bindingsProcessor.getBindings(rawBindings, baseBreakpoint);\n\n const inputsProcessor = new InputsBindingsProcessor(\n elementId,\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n updater(deepInputs);\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint,\n elementFactory\n });\n\n const inputsUpdater = inputsProcessor.createUpdate(deepInputs, baseBreakpoint);\n\n editor.updateDocument(doc => {\n inputsUpdater.applyToDocument(doc);\n applyAncestorUpdates(doc, ancestorUpdates, breakpointNames, baseBreakpoint, elementFactory);\n });\n}\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,MAAM;AAE3B,SACIC,iBAAiB,EACjBC,+BAA+B,EAC/BC,cAAc,EACdC,uBAAuB,QACpB,6BAA6B;AACpC,SAASC,eAAe,EAAEC,oBAAoB;;AAE9C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAChCC,MAAc,EACdC,SAAiB,EACjBC,OAA8C,EAC1C;EACJ,MAAMC,QAAQ,GAAGH,MAAM,CAACI,gBAAgB,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;EACjD,MAAMC,WAAW,GAAGN,MAAM,CAACO,cAAc,CAAC,CAAC,CAACF,IAAI,CAAC,CAAC;EAClD,MAAMG,UAAU,GAAGF,WAAW,CAACE,UAAU;EAEzC,MAAMC,OAAO,GAAGN,QAAQ,CAACO,QAAQ,CAACT,SAAS,CAAC;EAC5C,IAAI,CAACQ,OAAO,EAAE;IACV;EACJ;EAEA,MAAME,QAAQ,GAAGH,UAAU,CAACC,OAAO,CAACG,SAAS,CAACC,IAAI,CAAC;EACnD,IAAI,CAACF,QAAQ,EAAE;IACX;EACJ;EAEA,MAAMG,eAAe,GAAGR,WAAW,CAACS,QAAQ,CAACC,WAAW,CAACC,GAAG,CAACC,EAAE,IAAIA,EAAE,CAACL,IAAI,CAAC;EAC3E,MAAMM,cAAc,GAAGL,eAAe,CAAC,CAAC,CAAC;EACzC,MAAMM,SAAS,GAAG1B,+BAA+B,CAAC2B,OAAO,CAACV,QAAQ,CAACW,MAAM,IAAI,EAAE,CAAC;EAChF,MAAMC,WAAW,GAAG/B,IAAI,CAACW,QAAQ,CAACqB,QAAQ,CAACvB,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5D,MAAMwB,cAAc,GAAG,IAAI9B,cAAc,CAACa,UAAU,CAAC;EAErD,MAAMkB,iBAAiB,GAAG,IAAIjC,iBAAiB,CAACqB,eAAe,CAAC;EAChE,MAAMa,gBAAgB,GAAGD,iBAAiB,CAACE,WAAW,CAACL,WAAW,EAAEJ,cAAc,CAAC;EAEnF,MAAMU,eAAe,GAAG,IAAIjC,uBAAuB,CAC/CK,SAAS,EACTmB,SAAS,EACTN,eAAe,EACfS,WAAW,EACXE,cACJ,CAAC;EAED,MAAMK,UAAU,GAAGD,eAAe,CAACE,YAAY,CAACJ,gBAAgB,CAACL,MAAM,CAAC;EAExEpB,OAAO,CAAC4B,UAAU,CAAC;;EAEnB;EACA,MAAME,eAAe,GAAGnC,eAAe,CAAC;IACpCG,MAAM;IACNC,SAAS;IACT6B,UAAU;IACVG,MAAM,EAAE,QAAQ;IAChBnB,eAAe;IACfK,cAAc;IACdM;EACJ,CAAC,CAAC;EAEF,MAAMS,aAAa,GAAGL,eAAe,CAACM,YAAY,CAACL,UAAU,EAAEX,cAAc,CAAC;EAE9EnB,MAAM,CAACoC,cAAc,CAACC,GAAG,IAAI;IACzBH,aAAa,CAACI,eAAe,CAACD,GAAG,CAAC;IAClCvC,oBAAoB,CAACuC,GAAG,EAAEL,eAAe,EAAElB,eAAe,EAAEK,cAAc,EAAEM,cAAc,CAAC;EAC/F,CAAC,CAAC;AACN","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ import type { Editor } from "../Editor.js";
2
+ import type { OnChangeAction, ComponentManifest, Document } from "@webiny/website-builder-sdk";
3
+ import { ElementFactory } from "@webiny/website-builder-sdk";
4
+ export interface AncestorUpdate {
5
+ elementId: string;
6
+ manifest: ComponentManifest;
7
+ inputs: Record<string, any>;
8
+ }
9
+ interface ExecuteOnChangeParams {
10
+ editor: Editor;
11
+ elementId: string;
12
+ /** When provided, used as-is. When omitted, resolved from the document. */
13
+ deepInputs?: Record<string, any>;
14
+ action: OnChangeAction;
15
+ breakpointNames: string[];
16
+ baseBreakpoint: string;
17
+ elementFactory: ElementFactory;
18
+ /** Optional deep styles — only available from the sidebar UI path. */
19
+ deepStyles?: Record<string, any>;
20
+ }
21
+ /**
22
+ * Runs manifest.onChange on the element, then walks up the ancestor chain
23
+ * firing onDescendantChange on each ancestor that defines it.
24
+ *
25
+ * Returns an array of ancestor updates that must be flushed inside
26
+ * editor.updateDocument().
27
+ */
28
+ export declare function executeOnChange(params: ExecuteOnChangeParams): AncestorUpdate[];
29
+ /**
30
+ * Apply collected ancestor updates inside editor.updateDocument().
31
+ */
32
+ export declare function applyAncestorUpdates(doc: Document, updates: AncestorUpdate[], breakpointNames: string[], baseBreakpoint: string, elementFactory: ElementFactory): void;
33
+ export {};