@webiny/app-website-builder 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2

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 (364) hide show
  1. package/BaseEditor/config/Sidebar/Tab.d.ts +0 -4
  2. package/BaseEditor/config/Sidebar/Tab.js +5 -21
  3. package/BaseEditor/config/Sidebar/Tab.js.map +1 -1
  4. package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js +6 -66
  5. package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js.map +1 -1
  6. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
  7. package/BaseEditor/defaultConfig/Content/Preview/Iframe.d.ts +2 -2
  8. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.d.ts +2 -2
  9. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js +1 -1
  10. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js.map +1 -1
  11. package/BaseEditor/defaultConfig/Content/usePreviewDomain.d.ts +1 -6
  12. package/BaseEditor/defaultConfig/Content/usePreviewDomain.js +1 -26
  13. package/BaseEditor/defaultConfig/DocumentStateEditor/DocumentStateEditor.d.ts +2 -2
  14. package/BaseEditor/defaultConfig/ElementInputRenderers.js +16 -0
  15. package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
  16. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js +1 -6
  17. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js.map +1 -1
  18. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettings.js +11 -2
  19. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettings.js.map +1 -1
  20. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js +2 -5
  21. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js.map +1 -1
  22. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.d.ts +22 -0
  23. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.js +17 -0
  24. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.js.map +1 -0
  25. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.d.ts +1 -0
  26. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js +64 -0
  27. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js.map +1 -0
  28. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js +7 -2
  29. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js.map +1 -1
  30. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.d.ts +6 -2
  31. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.d.ts +6 -2
  32. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js +12 -1
  33. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map +1 -1
  34. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.d.ts +6 -2
  35. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.d.ts +6 -2
  36. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.d.ts +2 -2
  37. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.d.ts +2 -2
  38. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.d.ts +2 -2
  39. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.d.ts +2 -2
  40. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.d.ts +6 -2
  41. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.d.ts +2 -2
  42. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.d.ts +2 -2
  43. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.d.ts +2 -2
  44. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.d.ts +2 -2
  45. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js +1 -1
  46. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js.map +1 -1
  47. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js +7 -7
  48. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js.map +1 -1
  49. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js +2 -5
  50. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js.map +1 -1
  51. package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.d.ts +2 -2
  52. package/DocumentEditor/DocumentEditor.d.ts +14 -5
  53. package/DocumentEditor/DocumentEditor.js +10 -6
  54. package/DocumentEditor/DocumentEditor.js.map +1 -1
  55. package/DocumentEditor/StateInspector.d.ts +4 -2
  56. package/Extension.js +15 -2
  57. package/Extension.js.map +1 -1
  58. package/domain/Page/Page.d.ts +2 -0
  59. package/domain/Page/Page.js +1 -0
  60. package/domain/Page/Page.js.map +1 -1
  61. package/domain/PageRevision/PageRevision.d.ts +11 -0
  62. package/domain/PageRevision/PageRevision.js +20 -0
  63. package/domain/PageRevision/PageRevision.js.map +1 -1
  64. package/ecommerce/components/ResourcePage.d.ts +6 -2
  65. package/ecommerce/components/ResourcesList.d.ts +4 -4
  66. package/ecommerce/components/ResourcesPicker.d.ts +9 -4
  67. package/editorSdk/CommandBus.js.map +1 -1
  68. package/features/experiments/ExperimentsGateway.d.ts +30 -0
  69. package/features/experiments/ExperimentsGateway.js +326 -0
  70. package/features/experiments/ExperimentsGateway.js.map +1 -0
  71. package/features/experiments/abstractions.d.ts +25 -0
  72. package/features/experiments/abstractions.js +5 -0
  73. package/features/experiments/abstractions.js.map +1 -0
  74. package/features/experiments/feature.d.ts +3 -0
  75. package/features/experiments/feature.js +17 -0
  76. package/features/experiments/feature.js.map +1 -0
  77. package/features/experiments/index.d.ts +3 -0
  78. package/features/experiments/index.js +2 -0
  79. package/features/experiments/types.d.ts +61 -0
  80. package/features/experiments/types.js +0 -0
  81. package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js +41 -1
  82. package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js.map +1 -1
  83. package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.d.ts +3 -2
  84. package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js +8 -2
  85. package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js.map +1 -1
  86. package/features/pages/deletePage/DeletePageGateway.js +6 -1
  87. package/features/pages/deletePage/DeletePageGateway.js.map +1 -1
  88. package/features/pages/deletePage/DeletePageGateway.test.d.ts +1 -0
  89. package/features/pages/deletePage/DeletePageGateway.test.js +104 -0
  90. package/features/pages/deletePage/DeletePageGateway.test.js.map +1 -0
  91. package/features/pages/deletePage/DeletePageUseCase.d.ts +1 -1
  92. package/features/pages/deletePage/DeletePageUseCase.js +1 -0
  93. package/features/pages/deletePage/DeletePageUseCase.js.map +1 -1
  94. package/features/pages/deletePage/DeletePageUseCaseWithLoading.d.ts +1 -1
  95. package/features/pages/deletePage/DeletePageUseCaseWithLoading.js +1 -1
  96. package/features/pages/deletePage/DeletePageUseCaseWithLoading.js.map +1 -1
  97. package/features/pages/deletePage/DeletePageUseCaseWithLoading.test.d.ts +1 -0
  98. package/features/pages/deletePage/DeletePageUseCaseWithLoading.test.js +66 -0
  99. package/features/pages/deletePage/DeletePageUseCaseWithLoading.test.js.map +1 -0
  100. package/features/pages/deletePage/abstractions.d.ts +1 -1
  101. package/features/pages/deletePage/abstractions.js.map +1 -1
  102. package/features/pages/deletePageRevision/DeletePageRevision.test.d.ts +1 -0
  103. package/features/pages/deletePageRevision/DeletePageRevision.test.js +67 -0
  104. package/features/pages/deletePageRevision/DeletePageRevision.test.js.map +1 -0
  105. package/features/pages/deletePageRevision/DeletePageRevisionGateway.d.ts +1 -1
  106. package/features/pages/deletePageRevision/DeletePageRevisionGateway.js +8 -4
  107. package/features/pages/deletePageRevision/DeletePageRevisionGateway.js.map +1 -1
  108. package/features/pages/deletePageRevision/DeletePageRevisionGateway.test.d.ts +1 -0
  109. package/features/pages/deletePageRevision/DeletePageRevisionGateway.test.js +101 -0
  110. package/features/pages/deletePageRevision/DeletePageRevisionGateway.test.js.map +1 -0
  111. package/features/pages/deletePageRevision/DeletePageRevisionRepository.d.ts +4 -2
  112. package/features/pages/deletePageRevision/DeletePageRevisionRepository.js +7 -3
  113. package/features/pages/deletePageRevision/DeletePageRevisionRepository.js.map +1 -1
  114. package/features/pages/deletePageRevision/DeletePageRevisionUseCase.d.ts +1 -1
  115. package/features/pages/deletePageRevision/DeletePageRevisionUseCase.js +2 -1
  116. package/features/pages/deletePageRevision/DeletePageRevisionUseCase.js.map +1 -1
  117. package/features/pages/deletePageRevision/DeletePageRevisionUseCaseWithLoading.d.ts +1 -1
  118. package/features/pages/deletePageRevision/DeletePageRevisionUseCaseWithLoading.js +1 -1
  119. package/features/pages/deletePageRevision/DeletePageRevisionUseCaseWithLoading.js.map +1 -1
  120. package/features/pages/deletePageRevision/DeletePageRevisionUseCaseWithLoading.test.d.ts +1 -0
  121. package/features/pages/deletePageRevision/DeletePageRevisionUseCaseWithLoading.test.js +58 -0
  122. package/features/pages/deletePageRevision/DeletePageRevisionUseCaseWithLoading.test.js.map +1 -0
  123. package/features/pages/deletePageRevision/abstractions.d.ts +3 -4
  124. package/features/pages/deletePageRevision/abstractions.js.map +1 -1
  125. package/features/pages/getPage/PageGatewayDto.d.ts +2 -0
  126. package/features/pages/publishPage/PublishPage.test.js +41 -1
  127. package/features/pages/publishPage/PublishPage.test.js.map +1 -1
  128. package/features/pages/publishPage/PublishPageRepository.d.ts +3 -2
  129. package/features/pages/publishPage/PublishPageRepository.js +15 -4
  130. package/features/pages/publishPage/PublishPageRepository.js.map +1 -1
  131. package/features/pages/shared/feature.d.ts +3 -1
  132. package/features/pages/shared/feature.js +4 -2
  133. package/features/pages/shared/feature.js.map +1 -1
  134. package/features/pages/shared/pageGraphQLFields.js +1 -0
  135. package/features/pages/shared/pageGraphQLFields.js.map +1 -1
  136. package/features/pages/trashBin/WbTrashBinBulkActionGateway.js +7 -1
  137. package/features/pages/trashBin/WbTrashBinBulkActionGateway.js.map +1 -1
  138. package/features/pages/trashBin/WbTrashBinBulkActionGateway.test.d.ts +1 -0
  139. package/features/pages/trashBin/WbTrashBinBulkActionGateway.test.js +112 -0
  140. package/features/pages/trashBin/WbTrashBinBulkActionGateway.test.js.map +1 -0
  141. package/features/pages/trashBin/WbTrashBinDeleteGateway.js +7 -1
  142. package/features/pages/trashBin/WbTrashBinDeleteGateway.js.map +1 -1
  143. package/features/pages/trashBin/WbTrashBinDeleteGateway.test.d.ts +1 -0
  144. package/features/pages/trashBin/WbTrashBinDeleteGateway.test.js +104 -0
  145. package/features/pages/trashBin/WbTrashBinDeleteGateway.test.js.map +1 -0
  146. package/features/pages/unpublishPage/UnpublishPage.test.js +4 -1
  147. package/features/pages/unpublishPage/UnpublishPage.test.js.map +1 -1
  148. package/features/pages/unpublishPage/UnpublishPageRepository.d.ts +3 -2
  149. package/features/pages/unpublishPage/UnpublishPageRepository.js +12 -4
  150. package/features/pages/unpublishPage/UnpublishPageRepository.js.map +1 -1
  151. package/features/permissions/feature.d.ts +1 -1
  152. package/inputRenderers/ColorPickerInput.d.ts +3 -0
  153. package/inputRenderers/ColorPickerInput.js +29 -0
  154. package/inputRenderers/ColorPickerInput.js.map +1 -0
  155. package/inputRenderers/ContentEntryInput.js +2 -0
  156. package/inputRenderers/ContentEntryInput.js.map +1 -1
  157. package/inputRenderers/DateTimeInput.d.ts +9 -0
  158. package/inputRenderers/DateTimeInput.js +21 -0
  159. package/inputRenderers/DateTimeInput.js.map +1 -0
  160. package/inputRenderers/DateTimeInput.test.d.ts +1 -0
  161. package/inputRenderers/DateTimeInput.test.js +27 -0
  162. package/inputRenderers/DateTimeInput.test.js.map +1 -0
  163. package/inputRenderers/FileInput.js +1 -1
  164. package/inputRenderers/FileInput.js.map +1 -1
  165. package/inputRenderers/RadioInput.d.ts +3 -0
  166. package/inputRenderers/RadioInput.js +20 -0
  167. package/inputRenderers/RadioInput.js.map +1 -0
  168. package/inputRenderers/TagsInput.d.ts +3 -0
  169. package/inputRenderers/TagsInput.js +22 -0
  170. package/inputRenderers/TagsInput.js.map +1 -0
  171. package/modules/AbTesting.d.ts +2 -0
  172. package/modules/AbTesting.js +19 -0
  173. package/modules/AbTesting.js.map +1 -0
  174. package/package.json +32 -30
  175. package/presentation/components/LanguageCodeTag.js +5 -4
  176. package/presentation/components/LanguageCodeTag.js.map +1 -1
  177. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.d.ts +30 -0
  178. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js +202 -0
  179. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js.map +1 -0
  180. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.d.ts +65 -0
  181. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js +5 -0
  182. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js.map +1 -0
  183. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.d.ts +12 -0
  184. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js +149 -0
  185. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js.map +1 -0
  186. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.d.ts +17 -0
  187. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js +122 -0
  188. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js.map +1 -0
  189. package/presentation/experiments/ExperimentForm/feature.d.ts +3 -0
  190. package/presentation/experiments/ExperimentForm/feature.js +17 -0
  191. package/presentation/experiments/ExperimentForm/feature.js.map +1 -0
  192. package/presentation/experiments/ExperimentForm/index.d.ts +3 -0
  193. package/presentation/experiments/ExperimentForm/index.js +3 -0
  194. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.d.ts +18 -0
  195. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js +25 -0
  196. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js.map +1 -0
  197. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.d.ts +67 -0
  198. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js +224 -0
  199. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js.map +1 -0
  200. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.d.ts +10 -0
  201. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js +5 -0
  202. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js.map +1 -0
  203. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.d.ts +58 -0
  204. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js +5 -0
  205. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js.map +1 -0
  206. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.d.ts +15 -0
  207. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js +110 -0
  208. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js.map +1 -0
  209. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.d.ts +9 -0
  210. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js +178 -0
  211. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js.map +1 -0
  212. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.d.ts +11 -0
  213. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js +51 -0
  214. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js.map +1 -0
  215. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.d.ts +14 -0
  216. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js +147 -0
  217. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js.map +1 -0
  218. package/presentation/experiments/ExperimentsEditor/feature.d.ts +3 -0
  219. package/presentation/experiments/ExperimentsEditor/feature.js +21 -0
  220. package/presentation/experiments/ExperimentsEditor/feature.js.map +1 -0
  221. package/presentation/experiments/ExperimentsEditor/index.d.ts +4 -0
  222. package/presentation/experiments/ExperimentsEditor/index.js +3 -0
  223. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.d.ts +39 -0
  224. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js +219 -0
  225. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js.map +1 -0
  226. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.d.ts +52 -0
  227. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js +5 -0
  228. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js.map +1 -0
  229. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.d.ts +10 -0
  230. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js +296 -0
  231. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js.map +1 -0
  232. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.d.ts +2 -0
  233. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js +92 -0
  234. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js.map +1 -0
  235. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.d.ts +6 -0
  236. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js +103 -0
  237. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js.map +1 -0
  238. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.d.ts +9 -0
  239. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js +58 -0
  240. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js.map +1 -0
  241. package/presentation/experiments/ExperimentsManager/feature.d.ts +3 -0
  242. package/presentation/experiments/ExperimentsManager/feature.js +17 -0
  243. package/presentation/experiments/ExperimentsManager/feature.js.map +1 -0
  244. package/presentation/experiments/ExperimentsManager/index.d.ts +4 -0
  245. package/presentation/experiments/ExperimentsManager/index.js +3 -0
  246. package/presentation/experiments/VariantPageEditorConfig.d.ts +7 -0
  247. package/presentation/experiments/VariantPageEditorConfig.js +26 -0
  248. package/presentation/experiments/VariantPageEditorConfig.js.map +1 -0
  249. package/presentation/experiments/config/ExperimentsEditorConfig.d.ts +8 -0
  250. package/presentation/experiments/config/ExperimentsEditorConfig.js +21 -0
  251. package/presentation/experiments/config/ExperimentsEditorConfig.js.map +1 -0
  252. package/presentation/experiments/config/VariantAutoSave.d.ts +5 -0
  253. package/presentation/experiments/config/VariantAutoSave.js +41 -0
  254. package/presentation/experiments/config/VariantAutoSave.js.map +1 -0
  255. package/presentation/experiments/shared/variantColors.d.ts +11 -0
  256. package/presentation/experiments/shared/variantColors.js +13 -0
  257. package/presentation/experiments/shared/variantColors.js.map +1 -0
  258. package/presentation/experiments/shared/variantDocument.d.ts +16 -0
  259. package/presentation/experiments/shared/variantDocument.js +31 -0
  260. package/presentation/experiments/shared/variantDocument.js.map +1 -0
  261. package/presentation/pages/CreatePage/AddLanguageWhenEnabledModifier.d.ts +24 -0
  262. package/presentation/pages/CreatePage/AddLanguageWhenEnabledModifier.js +43 -0
  263. package/presentation/pages/CreatePage/AddLanguageWhenEnabledModifier.js.map +1 -0
  264. package/presentation/pages/CreatePage/CreatePage.test.js +98 -0
  265. package/presentation/pages/CreatePage/CreatePage.test.js.map +1 -1
  266. package/presentation/pages/CreatePage/CreatePageDialog.d.ts +2 -2
  267. package/presentation/pages/CreatePage/CreatePagePresenter.js +1 -1
  268. package/presentation/pages/CreatePage/CreatePagePresenter.js.map +1 -1
  269. package/presentation/pages/CreatePage/WithLanguageSelector.js +3 -3
  270. package/presentation/pages/CreatePage/WithLanguageSelector.js.map +1 -1
  271. package/presentation/pages/CreatePage/feature.js +2 -4
  272. package/presentation/pages/CreatePage/feature.js.map +1 -1
  273. package/presentation/pages/CreatePage/index.d.ts +1 -0
  274. package/presentation/pages/CreatePage/index.js +1 -0
  275. package/presentation/pages/PageEditor/PageEditor.experiments.d.ts +2 -0
  276. package/presentation/pages/PageEditor/PageEditor.experiments.js +54 -0
  277. package/presentation/pages/PageEditor/PageEditor.experiments.js.map +1 -0
  278. package/presentation/pages/PageEditor/PageEditorSurface.d.ts +15 -0
  279. package/presentation/pages/PageEditor/PageEditorSurface.js +63 -0
  280. package/presentation/pages/PageEditor/PageEditorSurface.js.map +1 -0
  281. package/presentation/pages/PageEditor/Revisions/RevisionListDrawer.js +4 -0
  282. package/presentation/pages/PageEditor/Revisions/RevisionListDrawer.js.map +1 -1
  283. package/presentation/pages/PageEditor/Revisions/RevisionListItem.d.ts +4 -2
  284. package/presentation/pages/PageEditor/Revisions/RevisionListItem.js +11 -21
  285. package/presentation/pages/PageEditor/Revisions/RevisionListItem.js.map +1 -1
  286. package/presentation/pages/PageEditor/Revisions/RevisionsList.d.ts +3 -1
  287. package/presentation/pages/PageEditor/Revisions/RevisionsList.js +27 -18
  288. package/presentation/pages/PageEditor/Revisions/RevisionsList.js.map +1 -1
  289. package/presentation/pages/PageEditor/Revisions/useRevision.d.ts +6 -1
  290. package/presentation/pages/PageEditor/Revisions/useRevision.js +88 -15
  291. package/presentation/pages/PageEditor/Revisions/useRevision.js.map +1 -1
  292. package/presentation/pages/PageEditor/Revisions/useRevision.test.d.ts +1 -0
  293. package/presentation/pages/PageEditor/Revisions/useRevision.test.js +121 -0
  294. package/presentation/pages/PageEditor/Revisions/useRevision.test.js.map +1 -0
  295. package/presentation/pages/PageEditor/Revisions/useRevisionList.d.ts +7 -0
  296. package/presentation/pages/PageEditor/Revisions/useRevisionList.js +24 -0
  297. package/presentation/pages/PageEditor/Revisions/useRevisionList.js.map +1 -0
  298. package/presentation/pages/PageEditor/TopBar/PageSettingsDrawer.d.ts +2 -2
  299. package/presentation/pages/PageEditor/TopBar/RevisionsMenu.d.ts +3 -1
  300. package/presentation/pages/PageEditor/TopBar/RevisionsMenu.js +10 -21
  301. package/presentation/pages/PageEditor/TopBar/RevisionsMenu.js.map +1 -1
  302. package/presentation/pages/PageList/PageListDataSource.js +1 -1
  303. package/presentation/pages/PageList/PageListDataSource.js.map +1 -1
  304. package/presentation/pages/PageList/PageListPresenter.test.d.ts +1 -0
  305. package/presentation/pages/PageList/PageListPresenter.test.js +293 -0
  306. package/presentation/pages/PageList/PageListPresenter.test.js.map +1 -0
  307. package/presentation/pages/PageList/components/BulkActions/BulkActionDelete.d.ts +2 -2
  308. package/presentation/pages/PageList/components/BulkActions/BulkActionDuplicate.d.ts +2 -2
  309. package/presentation/pages/PageList/components/BulkActions/BulkActionMovePage.d.ts +2 -2
  310. package/presentation/pages/PageList/components/BulkActions/BulkActionPublish.d.ts +2 -2
  311. package/presentation/pages/PageList/components/BulkActions/BulkActionUnpublish.d.ts +2 -2
  312. package/presentation/pages/PageList/components/DocumentList.d.ts +2 -2
  313. package/presentation/pages/PageList/components/PagesList.js +2 -1
  314. package/presentation/pages/PageList/components/PagesList.js.map +1 -1
  315. package/presentation/pages/PageList/components/Table/Table.d.ts +2 -2
  316. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.d.ts +9 -0
  317. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.js +40 -0
  318. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.js.map +1 -0
  319. package/presentation/pages/PageList/hooks/useDeletePageConfirmationDialog.js +2 -1
  320. package/presentation/pages/PageList/hooks/useDeletePageConfirmationDialog.js.map +1 -1
  321. package/presentation/pages/PageList/hooks/useDeletePageConfirmationDialog.test.d.ts +1 -0
  322. package/presentation/pages/PageList/hooks/useDeletePageConfirmationDialog.test.js +62 -0
  323. package/presentation/pages/PageList/hooks/useDeletePageConfirmationDialog.test.js.map +1 -0
  324. package/presentation/pages/RevisionList/RevisionListPresenter.d.ts +27 -0
  325. package/presentation/pages/RevisionList/RevisionListPresenter.js +73 -0
  326. package/presentation/pages/RevisionList/RevisionListPresenter.js.map +1 -0
  327. package/presentation/pages/RevisionList/RevisionListPresenter.test.d.ts +1 -0
  328. package/presentation/pages/RevisionList/RevisionListPresenter.test.js +235 -0
  329. package/presentation/pages/RevisionList/RevisionListPresenter.test.js.map +1 -0
  330. package/presentation/pages/RevisionList/abstractions.d.ts +34 -0
  331. package/presentation/pages/RevisionList/abstractions.js +5 -0
  332. package/presentation/pages/RevisionList/abstractions.js.map +1 -0
  333. package/presentation/pages/RevisionList/feature.d.ts +3 -0
  334. package/presentation/pages/RevisionList/feature.js +17 -0
  335. package/presentation/pages/RevisionList/feature.js.map +1 -0
  336. package/presentation/pages/RevisionList/index.d.ts +2 -0
  337. package/presentation/pages/RevisionList/index.js +1 -0
  338. package/presentation/pages/TranslatePage/TranslatePageConfig.js +3 -3
  339. package/presentation/pages/TranslatePage/TranslatePageConfig.js.map +1 -1
  340. package/presentation/pages/TrashBin/WbTrashBin.d.ts +2 -2
  341. package/presentation/pages/bulkActions/BulkDeletePresenter.js +5 -1
  342. package/presentation/pages/bulkActions/BulkDeletePresenter.js.map +1 -1
  343. package/presentation/pages/bulkActions/BulkDeletePresenter.test.d.ts +1 -0
  344. package/presentation/pages/bulkActions/BulkDeletePresenter.test.js +80 -0
  345. package/presentation/pages/bulkActions/BulkDeletePresenter.test.js.map +1 -0
  346. package/presentation/pages/hooks/useDeletePage.d.ts +1 -1
  347. package/presentation/pages/hooks/useDeletePageRevision.d.ts +1 -1
  348. package/presentation/redirects/RedirectList/RedirectListDataSource.js +1 -1
  349. package/presentation/redirects/RedirectList/RedirectListDataSource.js.map +1 -1
  350. package/presentation/redirects/RedirectList/RedirectListPresenter.test.d.ts +1 -0
  351. package/presentation/redirects/RedirectList/RedirectListPresenter.test.js +273 -0
  352. package/presentation/redirects/RedirectList/RedirectListPresenter.test.js.map +1 -0
  353. package/presentation/redirects/RedirectList/components/BulkActionDelete.d.ts +2 -2
  354. package/presentation/redirects/RedirectList/components/BulkActionMove.d.ts +2 -2
  355. package/presentation/redirects/RedirectList/components/CreateRedirectDialog.d.ts +2 -2
  356. package/presentation/redirects/RedirectList/components/DocumentList.d.ts +2 -2
  357. package/presentation/redirects/RedirectList/components/EditRedirectDialog.d.ts +2 -2
  358. package/presentation/redirects/RedirectList/components/Table/Table.d.ts +2 -2
  359. package/shared/fileManagerItemToValue.js +3 -1
  360. package/shared/fileManagerItemToValue.js.map +1 -1
  361. package/shared/fileManagerItemToValue.test.d.ts +1 -0
  362. package/shared/fileManagerItemToValue.test.js +73 -0
  363. package/shared/fileManagerItemToValue.test.js.map +1 -0
  364. package/BaseEditor/defaultConfig/Content/usePreviewDomain.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { jsonPatch } from "@webiny/website-builder-sdk";
3
+ import { PreviewedBindings } from "./PreviewedBindings.js";
4
+ const bindingsWithTitle = (title)=>({
5
+ inputs: {
6
+ title: {
7
+ id: "title",
8
+ type: "text",
9
+ static: title
10
+ }
11
+ }
12
+ });
13
+ const updateTo = (target)=>({
14
+ createJsonPatch: (bindings)=>jsonPatch.compare(bindings, target)
15
+ });
16
+ class FakePreview {
17
+ constructor(committed){
18
+ this.bindings = structuredClone(committed);
19
+ }
20
+ apply(patch) {
21
+ jsonPatch.applyPatch(this.bindings, patch, false, true);
22
+ }
23
+ }
24
+ describe("PreviewedBindings", ()=>{
25
+ it("brings the preview back when the value returns to the committed one (undo)", ()=>{
26
+ const committed = bindingsWithTitle("abc");
27
+ const preview = new FakePreview(committed);
28
+ const previewed = new PreviewedBindings();
29
+ preview.apply(previewed.createPatch(updateTo(bindingsWithTitle("abcd")), committed));
30
+ expect(preview.bindings).toEqual(bindingsWithTitle("abcd"));
31
+ const patch = previewed.createPatch(updateTo(bindingsWithTitle("abc")), committed);
32
+ expect(patch).not.toEqual([]);
33
+ preview.apply(patch);
34
+ expect(preview.bindings).toEqual(bindingsWithTitle("abc"));
35
+ });
36
+ it("follows a run of edits", ()=>{
37
+ const committed = bindingsWithTitle("");
38
+ const preview = new FakePreview(committed);
39
+ const previewed = new PreviewedBindings();
40
+ for (const value of [
41
+ "a",
42
+ "ab",
43
+ "abc",
44
+ "ab",
45
+ "a",
46
+ ""
47
+ ]){
48
+ preview.apply(previewed.createPatch(updateTo(bindingsWithTitle(value)), committed));
49
+ expect(preview.bindings).toEqual(bindingsWithTitle(value));
50
+ }
51
+ });
52
+ it("starts over from the committed bindings once they change", ()=>{
53
+ const previewed = new PreviewedBindings();
54
+ const first = bindingsWithTitle("abc");
55
+ previewed.createPatch(updateTo(bindingsWithTitle("abcd")), first);
56
+ const second = bindingsWithTitle("xyz");
57
+ const preview = new FakePreview(second);
58
+ const patch = previewed.createPatch(updateTo(bindingsWithTitle("xyz!")), second);
59
+ preview.apply(patch);
60
+ expect(preview.bindings).toEqual(bindingsWithTitle("xyz!"));
61
+ });
62
+ });
63
+
64
+ //# sourceMappingURL=PreviewedBindings.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { jsonPatch } from \"@webiny/website-builder-sdk\";\nimport type { DocumentElementBindings } from \"@webiny/website-builder-sdk\";\nimport { PreviewedBindings } from \"./PreviewedBindings.js\";\n\nconst bindingsWithTitle = (title: string): DocumentElementBindings => ({\n inputs: { title: { id: \"title\", type: \"text\", static: title } }\n});\n\n// Stands in for InputsUpdater: the patch that turns `bindings` into the updated bindings.\nconst updateTo = (target: DocumentElementBindings) => ({\n createJsonPatch: (bindings: DocumentElementBindings) => jsonPatch.compare(bindings, target)\n});\n\n/**\n * The preview side: like EditingElementRenderer, it applies every patch on top of its own copy.\n */\nclass FakePreview {\n public bindings: DocumentElementBindings;\n\n constructor(committed: DocumentElementBindings) {\n this.bindings = structuredClone(committed);\n }\n\n apply(patch: any[]) {\n jsonPatch.applyPatch(this.bindings, patch, false, true);\n }\n}\n\ndescribe(\"PreviewedBindings\", () => {\n it(\"brings the preview back when the value returns to the committed one (undo)\", () => {\n const committed = bindingsWithTitle(\"abc\");\n const preview = new FakePreview(committed);\n const previewed = new PreviewedBindings();\n\n // Type \"d\".\n preview.apply(previewed.createPatch(updateTo(bindingsWithTitle(\"abcd\")), committed));\n expect(preview.bindings).toEqual(bindingsWithTitle(\"abcd\"));\n\n // Undo back to the committed \"abc\". Diffed against the committed bindings this patch was\n // empty, and the preview stayed on \"abcd\".\n const patch = previewed.createPatch(updateTo(bindingsWithTitle(\"abc\")), committed);\n expect(patch).not.toEqual([]);\n preview.apply(patch);\n expect(preview.bindings).toEqual(bindingsWithTitle(\"abc\"));\n });\n\n it(\"follows a run of edits\", () => {\n const committed = bindingsWithTitle(\"\");\n const preview = new FakePreview(committed);\n const previewed = new PreviewedBindings();\n\n for (const value of [\"a\", \"ab\", \"abc\", \"ab\", \"a\", \"\"]) {\n preview.apply(previewed.createPatch(updateTo(bindingsWithTitle(value)), committed));\n expect(preview.bindings).toEqual(bindingsWithTitle(value));\n }\n });\n\n it(\"starts over from the committed bindings once they change\", () => {\n const previewed = new PreviewedBindings();\n\n const first = bindingsWithTitle(\"abc\");\n previewed.createPatch(updateTo(bindingsWithTitle(\"abcd\")), first);\n\n // A commit (here of \"xyz\") reaches the preview as a document update, not through us.\n const second = bindingsWithTitle(\"xyz\");\n const preview = new FakePreview(second);\n\n const patch = previewed.createPatch(updateTo(bindingsWithTitle(\"xyz!\")), second);\n preview.apply(patch);\n expect(preview.bindings).toEqual(bindingsWithTitle(\"xyz!\"));\n });\n});\n"],"names":["bindingsWithTitle","title","updateTo","target","bindings","jsonPatch","FakePreview","committed","structuredClone","patch","describe","it","preview","previewed","PreviewedBindings","expect","value","first","second"],"mappings":";;;AAKA,MAAMA,oBAAoB,CAACC,QAA4C;QACnE,QAAQ;YAAE,OAAO;gBAAE,IAAI;gBAAS,MAAM;gBAAQ,QAAQA;YAAM;QAAE;IAClE;AAGA,MAAMC,WAAW,CAACC,SAAqC;QACnD,iBAAiB,CAACC,WAAsCC,UAAU,OAAO,CAACD,UAAUD;IACxF;AAKA,MAAMG;IAGF,YAAYC,SAAkC,CAAE;QAC5C,IAAI,CAAC,QAAQ,GAAGC,gBAAgBD;IACpC;IAEA,MAAME,KAAY,EAAE;QAChBJ,UAAU,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAEI,OAAO,OAAO;IACtD;AACJ;AAEAC,SAAS,qBAAqB;IAC1BC,GAAG,8EAA8E;QAC7E,MAAMJ,YAAYP,kBAAkB;QACpC,MAAMY,UAAU,IAAIN,YAAYC;QAChC,MAAMM,YAAY,IAAIC;QAGtBF,QAAQ,KAAK,CAACC,UAAU,WAAW,CAACX,SAASF,kBAAkB,UAAUO;QACzEQ,OAAOH,QAAQ,QAAQ,EAAE,OAAO,CAACZ,kBAAkB;QAInD,MAAMS,QAAQI,UAAU,WAAW,CAACX,SAASF,kBAAkB,SAASO;QACxEQ,OAAON,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5BG,QAAQ,KAAK,CAACH;QACdM,OAAOH,QAAQ,QAAQ,EAAE,OAAO,CAACZ,kBAAkB;IACvD;IAEAW,GAAG,0BAA0B;QACzB,MAAMJ,YAAYP,kBAAkB;QACpC,MAAMY,UAAU,IAAIN,YAAYC;QAChC,MAAMM,YAAY,IAAIC;QAEtB,KAAK,MAAME,SAAS;YAAC;YAAK;YAAM;YAAO;YAAM;YAAK;SAAG,CAAE;YACnDJ,QAAQ,KAAK,CAACC,UAAU,WAAW,CAACX,SAASF,kBAAkBgB,SAAST;YACxEQ,OAAOH,QAAQ,QAAQ,EAAE,OAAO,CAACZ,kBAAkBgB;QACvD;IACJ;IAEAL,GAAG,4DAA4D;QAC3D,MAAME,YAAY,IAAIC;QAEtB,MAAMG,QAAQjB,kBAAkB;QAChCa,UAAU,WAAW,CAACX,SAASF,kBAAkB,UAAUiB;QAG3D,MAAMC,SAASlB,kBAAkB;QACjC,MAAMY,UAAU,IAAIN,YAAYY;QAEhC,MAAMT,QAAQI,UAAU,WAAW,CAACX,SAASF,kBAAkB,UAAUkB;QACzEN,QAAQ,KAAK,CAACH;QACdM,OAAOH,QAAQ,QAAQ,EAAE,OAAO,CAACZ,kBAAkB;IACvD;AACJ"}
@@ -10,6 +10,7 @@ import { useBindingsForElement } from "./useBindingsForElement.js";
10
10
  import { useElementInputsAst } from "../../../hooks/useElementInputsAst.js";
11
11
  import { BreakpointElementMetadata, ElementMetadata, InputMetadata } from "../../../metadata/index.js";
12
12
  import { useElementFactory } from "./useElementFactory.js";
13
+ import { PreviewedBindings } from "./PreviewedBindings.js";
13
14
  class InputValueObject {
14
15
  constructor(value){
15
16
  this.value = value;
@@ -74,6 +75,9 @@ const useInputValue = (elementId, node)=>{
74
75
  rawBindings
75
76
  ]);
76
77
  const [localState, setLocalValue] = useState();
78
+ const previewedBindings = useMemo(()=>new PreviewedBindings(), [
79
+ elementId
80
+ ]);
77
81
  const onChange = useCallback(withTimeout((cb)=>{
78
82
  const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);
79
83
  const valueObject = new InputValueObject(value);
@@ -134,7 +138,7 @@ const useInputValue = (elementId, node)=>{
134
138
  static: valueObject.get()
135
139
  });
136
140
  const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);
137
- const patch = updatedInputs.createJsonPatch(rawBindings);
141
+ const patch = previewedBindings.createPatch(updatedInputs, rawBindings);
138
142
  editor.executeCommand(Commands.PreviewPatchElement, {
139
143
  elementId,
140
144
  patch
@@ -142,7 +146,8 @@ const useInputValue = (elementId, node)=>{
142
146
  }, [
143
147
  elementId,
144
148
  rawBindings,
145
- localState
149
+ localState,
150
+ previewedBindings
146
151
  ]);
147
152
  const setBindingType = useCallback((type)=>{
148
153
  editor.updateDocument((state)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport set from \"lodash/set.js\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils/generateId.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport type { ValueBinding, CreateElementParams } from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { InputAstNode } from \"@webiny/website-builder-sdk\";\nimport {\n functionConverter,\n InputsBindingsProcessor,\n StylesBindingsProcessor,\n createElement\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"~/editorSdk/utils/executeOnChange.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useElementInputsAst } from \"~/BaseEditor/hooks/useElementInputsAst.js\";\nimport {\n BreakpointElementMetadata,\n ElementMetadata,\n InputMetadata,\n type IMetadata\n} from \"~/BaseEditor/metadata/index.js\";\nimport { useElementFactory } from \"./useElementFactory.js\";\n\nexport type OnChangeParams = {\n value: InputValueObject;\n metadata: IMetadata;\n};\n\nexport type InputBindingOnChange = (cb: (params: OnChangeParams) => void) => void;\n\nexport class InputValueObject {\n private value: any;\n\n constructor(value: any) {\n this.value = value;\n }\n\n set(value: any) {\n this.value = value;\n }\n\n get() {\n return this.value;\n }\n\n unset() {\n this.value = undefined;\n }\n}\n\nfunction convertBracketPathToDotPath(path: string): string {\n // Flat binding paths use `/` as the segment separator (e.g. `items/0/label`, `address/city`).\n // lodash `set`/`get` expect `.`-delimited paths, and treat numeric segments as array indexes,\n // so a straight `/` -> `.` conversion handles both nested objects and list items.\n return path.replace(/\\//g, \".\");\n}\n\n/**\n * Reads a value from a deep inputs object using a flat `/`-delimited binding path.\n * Numeric segments are treated as array indexes (e.g. `items/0/label`).\n */\nfunction getDeepValueAtPath(obj: any, path: string): any {\n if (!path) {\n return obj;\n }\n\n const keys = path.split(\"/\").map(key => (/^\\d+$/.test(key) ? Number(key) : key));\n return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), obj);\n}\n\n/**\n * This makes UI interaction smoother (input blur in particular).\n */\nconst withTimeout = <T extends (...args: any[]) => unknown>(cb: T): T => {\n return ((...args: Parameters<T>) => {\n setTimeout(() => {\n cb(...args);\n }, 0);\n }) as unknown as T;\n};\n\nexport const useInputValue = (elementId: string, node: InputAstNode) => {\n const { breakpoint, breakpoints } = useBreakpoint();\n const editor = useDocumentEditor();\n const inputsAst = useElementInputsAst(elementId);\n const elementFactory = useElementFactory();\n\n const breakpointNames = useMemo(() => breakpoints.map(bp => bp.name), []);\n\n // These bindings already include per-breakpoint overrides.\n const { rawBindings, resolvedBindings, inheritanceMap } = useBindingsForElement(elementId);\n\n const stylesProcessor = useMemo(() => {\n return new StylesBindingsProcessor(elementId ?? \"\", breakpointNames, rawBindings);\n }, [elementId, rawBindings]);\n\n const inputsProcessor = useMemo(() => {\n return new InputsBindingsProcessor(\n elementId ?? \"\",\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n }, [elementId, rawBindings]);\n\n // This value is the final calculated breakpoint value.\n // Leaf inputs resolve directly from the flat bindings. Container inputs (object / object-list)\n // have no flat entry of their own, so we resolve their deep value (object / array) from the\n // processor - this is what list fields read to render items and to rewrite the whole array.\n const value = useMemo(() => {\n if (node.children.length > 0) {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n return getDeepValueAtPath(deepInputs, node.path);\n }\n\n return resolvedBindings.inputs[node.path];\n }, [resolvedBindings, node.path, inputsProcessor]);\n\n const inputMetadata = useMemo((): IMetadata => {\n let elementMetadata: IMetadata = new ElementMetadata(elementId, rawBindings.metadata);\n\n if (node.input.responsive) {\n elementMetadata = new BreakpointElementMetadata(\n breakpointNames,\n breakpoint.name,\n elementMetadata\n );\n }\n\n const valueId = value?.id ?? generateAlphaNumericLowerCaseId();\n\n return new InputMetadata(valueId, elementMetadata);\n }, [elementId, breakpoint.name, rawBindings]);\n\n const [localState, setLocalValue] = useState<ValueBinding>();\n\n const onChange = useCallback(\n withTimeout((cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});\n\n // Process input's `onChange`.\n if (node.input.onChange) {\n const callback = functionConverter.deserialize(\n // TODO: we know it's a string, but on the frontend it's a function. Fix types.\n node.input.onChange! as any as string\n );\n\n // Run onChange callback.\n const publicApi = {\n inputs: devFriendlyInputs,\n styles: devFriendlyStyles,\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n\n // Run input's `onChange` callback.\n callback(publicApi, {\n breakpoint: breakpoint.name\n });\n }\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs: devFriendlyInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint: breakpoint.name,\n elementFactory,\n deepStyles: devFriendlyStyles\n });\n\n editor.updateDocument(document => {\n const inputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const styles = stylesProcessor.createUpdate(devFriendlyStyles, breakpoint.name);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n\n inputMetadata.applyToDocument(document);\n\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n breakpoint.name,\n elementFactory\n );\n });\n\n // Clear local value\n setLocalValue(undefined);\n }),\n [elementId, resolvedBindings, breakpoint]\n );\n\n /**\n * In preview, we do not update the editor document. Instead, we create a patch and send it to the preview app.\n */\n const onPreviewChange = useCallback(\n (cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(localState ?? value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n setLocalValue({ static: valueObject.get() });\n\n const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const patch = updatedInputs.createJsonPatch(rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n },\n [elementId, rawBindings, localState]\n );\n\n const setBindingType = useCallback(\n (type: \"static\" | \"expression\") => {\n editor.updateDocument(state => {\n const bindings = state.bindings[elementId];\n const valueBinding = bindings.inputs![node.path];\n\n if (type === \"static\") {\n // Switching to static bindings means we have to remove the expression binding.\n delete valueBinding.expression;\n } else {\n valueBinding.expression = \"$noop\";\n }\n\n state.bindings[elementId] = {\n ...bindings,\n inputs: {\n ...bindings.inputs,\n [node.path]: valueBinding\n }\n };\n });\n },\n [elementId]\n );\n\n const onReset = useCallback(() => {\n onChange(({ value, metadata }) => {\n value.unset();\n metadata.unset();\n });\n }, [onChange]);\n\n return {\n value: localState ?? value,\n metadata: inputMetadata,\n inheritanceMap: inheritanceMap.inputs[node.path],\n onReset,\n onChange,\n onPreviewChange,\n setBindingType\n };\n};\n"],"names":["InputValueObject","value","undefined","convertBracketPathToDotPath","path","getDeepValueAtPath","obj","keys","key","Number","acc","withTimeout","cb","args","setTimeout","useInputValue","elementId","node","breakpoint","breakpoints","useBreakpoint","editor","useDocumentEditor","inputsAst","useElementInputsAst","elementFactory","useElementFactory","breakpointNames","useMemo","bp","rawBindings","resolvedBindings","inheritanceMap","useBindingsForElement","stylesProcessor","StylesBindingsProcessor","inputsProcessor","InputsBindingsProcessor","deepInputs","inputMetadata","elementMetadata","ElementMetadata","BreakpointElementMetadata","valueId","generateAlphaNumericLowerCaseId","InputMetadata","localState","setLocalValue","useState","onChange","useCallback","valueObject","updaterInput","valuePath","devFriendlyInputs","set","JSON","devFriendlyStyles","callback","functionConverter","publicApi","params","createElement","ancestorUpdates","executeOnChange","document","inputs","styles","applyAncestorUpdates","onPreviewChange","updatedInputs","patch","Commands","setBindingType","type","state","bindings","valueBinding","onReset","metadata"],"mappings":"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"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport set from \"lodash/set.js\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils/generateId.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport type { ValueBinding, CreateElementParams } from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { InputAstNode } from \"@webiny/website-builder-sdk\";\nimport {\n functionConverter,\n InputsBindingsProcessor,\n StylesBindingsProcessor,\n createElement\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"~/editorSdk/utils/executeOnChange.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useElementInputsAst } from \"~/BaseEditor/hooks/useElementInputsAst.js\";\nimport {\n BreakpointElementMetadata,\n ElementMetadata,\n InputMetadata,\n type IMetadata\n} from \"~/BaseEditor/metadata/index.js\";\nimport { useElementFactory } from \"./useElementFactory.js\";\nimport { PreviewedBindings } from \"./PreviewedBindings.js\";\n\nexport type OnChangeParams = {\n value: InputValueObject;\n metadata: IMetadata;\n};\n\nexport type InputBindingOnChange = (cb: (params: OnChangeParams) => void) => void;\n\nexport class InputValueObject {\n private value: any;\n\n constructor(value: any) {\n this.value = value;\n }\n\n set(value: any) {\n this.value = value;\n }\n\n get() {\n return this.value;\n }\n\n unset() {\n this.value = undefined;\n }\n}\n\nfunction convertBracketPathToDotPath(path: string): string {\n // Flat binding paths use `/` as the segment separator (e.g. `items/0/label`, `address/city`).\n // lodash `set`/`get` expect `.`-delimited paths, and treat numeric segments as array indexes,\n // so a straight `/` -> `.` conversion handles both nested objects and list items.\n return path.replace(/\\//g, \".\");\n}\n\n/**\n * Reads a value from a deep inputs object using a flat `/`-delimited binding path.\n * Numeric segments are treated as array indexes (e.g. `items/0/label`).\n */\nfunction getDeepValueAtPath(obj: any, path: string): any {\n if (!path) {\n return obj;\n }\n\n const keys = path.split(\"/\").map(key => (/^\\d+$/.test(key) ? Number(key) : key));\n return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), obj);\n}\n\n/**\n * This makes UI interaction smoother (input blur in particular).\n */\nconst withTimeout = <T extends (...args: any[]) => unknown>(cb: T): T => {\n return ((...args: Parameters<T>) => {\n setTimeout(() => {\n cb(...args);\n }, 0);\n }) as unknown as T;\n};\n\nexport const useInputValue = (elementId: string, node: InputAstNode) => {\n const { breakpoint, breakpoints } = useBreakpoint();\n const editor = useDocumentEditor();\n const inputsAst = useElementInputsAst(elementId);\n const elementFactory = useElementFactory();\n\n const breakpointNames = useMemo(() => breakpoints.map(bp => bp.name), []);\n\n // These bindings already include per-breakpoint overrides.\n const { rawBindings, resolvedBindings, inheritanceMap } = useBindingsForElement(elementId);\n\n const stylesProcessor = useMemo(() => {\n return new StylesBindingsProcessor(elementId ?? \"\", breakpointNames, rawBindings);\n }, [elementId, rawBindings]);\n\n const inputsProcessor = useMemo(() => {\n return new InputsBindingsProcessor(\n elementId ?? \"\",\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n }, [elementId, rawBindings]);\n\n // This value is the final calculated breakpoint value.\n // Leaf inputs resolve directly from the flat bindings. Container inputs (object / object-list)\n // have no flat entry of their own, so we resolve their deep value (object / array) from the\n // processor - this is what list fields read to render items and to rewrite the whole array.\n const value = useMemo(() => {\n if (node.children.length > 0) {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n return getDeepValueAtPath(deepInputs, node.path);\n }\n\n return resolvedBindings.inputs[node.path];\n }, [resolvedBindings, node.path, inputsProcessor]);\n\n const inputMetadata = useMemo((): IMetadata => {\n let elementMetadata: IMetadata = new ElementMetadata(elementId, rawBindings.metadata);\n\n if (node.input.responsive) {\n elementMetadata = new BreakpointElementMetadata(\n breakpointNames,\n breakpoint.name,\n elementMetadata\n );\n }\n\n const valueId = value?.id ?? generateAlphaNumericLowerCaseId();\n\n return new InputMetadata(valueId, elementMetadata);\n }, [elementId, breakpoint.name, rawBindings]);\n\n const [localState, setLocalValue] = useState<ValueBinding>();\n\n // See PreviewedBindings: preview patches are diffed against what the preview shows.\n const previewedBindings = useMemo(() => new PreviewedBindings(), [elementId]);\n\n const onChange = useCallback(\n withTimeout((cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});\n\n // Process input's `onChange`.\n if (node.input.onChange) {\n const callback = functionConverter.deserialize(\n // TODO: we know it's a string, but on the frontend it's a function. Fix types.\n node.input.onChange! as any as string\n );\n\n // Run onChange callback.\n const publicApi = {\n inputs: devFriendlyInputs,\n styles: devFriendlyStyles,\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n\n // Run input's `onChange` callback.\n callback(publicApi, {\n breakpoint: breakpoint.name\n });\n }\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs: devFriendlyInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint: breakpoint.name,\n elementFactory,\n deepStyles: devFriendlyStyles\n });\n\n editor.updateDocument(document => {\n const inputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const styles = stylesProcessor.createUpdate(devFriendlyStyles, breakpoint.name);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n\n inputMetadata.applyToDocument(document);\n\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n breakpoint.name,\n elementFactory\n );\n });\n\n // Clear local value\n setLocalValue(undefined);\n }),\n [elementId, resolvedBindings, breakpoint]\n );\n\n /**\n * In preview, we do not update the editor document. Instead, we create a patch and send it to the preview app.\n */\n const onPreviewChange = useCallback(\n (cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(localState ?? value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n setLocalValue({ static: valueObject.get() });\n\n const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n\n const patch = previewedBindings.createPatch(updatedInputs, rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n },\n [elementId, rawBindings, localState, previewedBindings]\n );\n\n const setBindingType = useCallback(\n (type: \"static\" | \"expression\") => {\n editor.updateDocument(state => {\n const bindings = state.bindings[elementId];\n const valueBinding = bindings.inputs![node.path];\n\n if (type === \"static\") {\n // Switching to static bindings means we have to remove the expression binding.\n delete valueBinding.expression;\n } else {\n valueBinding.expression = \"$noop\";\n }\n\n state.bindings[elementId] = {\n ...bindings,\n inputs: {\n ...bindings.inputs,\n [node.path]: valueBinding\n }\n };\n });\n },\n [elementId]\n );\n\n const onReset = useCallback(() => {\n onChange(({ value, metadata }) => {\n value.unset();\n metadata.unset();\n });\n }, [onChange]);\n\n return {\n value: localState ?? value,\n metadata: inputMetadata,\n inheritanceMap: inheritanceMap.inputs[node.path],\n onReset,\n onChange,\n onPreviewChange,\n setBindingType\n };\n};\n"],"names":["InputValueObject","value","undefined","convertBracketPathToDotPath","path","getDeepValueAtPath","obj","keys","key","Number","acc","withTimeout","cb","args","setTimeout","useInputValue","elementId","node","breakpoint","breakpoints","useBreakpoint","editor","useDocumentEditor","inputsAst","useElementInputsAst","elementFactory","useElementFactory","breakpointNames","useMemo","bp","rawBindings","resolvedBindings","inheritanceMap","useBindingsForElement","stylesProcessor","StylesBindingsProcessor","inputsProcessor","InputsBindingsProcessor","deepInputs","inputMetadata","elementMetadata","ElementMetadata","BreakpointElementMetadata","valueId","generateAlphaNumericLowerCaseId","InputMetadata","localState","setLocalValue","useState","previewedBindings","PreviewedBindings","onChange","useCallback","valueObject","updaterInput","valuePath","devFriendlyInputs","set","JSON","devFriendlyStyles","callback","functionConverter","publicApi","params","createElement","ancestorUpdates","executeOnChange","document","inputs","styles","applyAncestorUpdates","onPreviewChange","updatedInputs","patch","Commands","setBindingType","type","state","bindings","valueBinding","onReset","metadata"],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import React from "react";
2
2
  export declare const BackgroundColor: (({ elementId }: {
3
3
  elementId: string;
4
- }) => React.JSX.Element) & {
5
- displayName: string;
4
+ }) => React.JSX.Element) & React.NamedExoticComponent<{
5
+ elementId: string;
6
+ }> & {
7
+ readonly type: ({ elementId }: {
8
+ elementId: string;
9
+ }) => React.JSX.Element;
6
10
  };
@@ -2,6 +2,10 @@ import React from "react";
2
2
  export declare const parseValue: (value: string) => undefined;
3
3
  export declare const BackgroundImage: (({ elementId }: {
4
4
  elementId: string;
5
- }) => React.JSX.Element) & {
6
- displayName: string;
5
+ }) => React.JSX.Element) & React.NamedExoticComponent<{
6
+ elementId: string;
7
+ }> & {
8
+ readonly type: ({ elementId }: {
9
+ elementId: string;
10
+ }) => React.JSX.Element;
7
11
  };
@@ -7,6 +7,17 @@ import { BackgroundImageParser } from "./BackgroundImageParser.js";
7
7
  import { useBreakpoint } from "../../../../../hooks/useBreakpoint.js";
8
8
  import { InheritanceLabel } from "../../../InheritanceLabel.js";
9
9
  import { SidebarRow } from "../../SidebarRow.js";
10
+ const toPickerValue = (url, fileInfo)=>{
11
+ if (!url || !fileInfo) return;
12
+ const value = {
13
+ id: fileInfo.id,
14
+ name: fileInfo.name,
15
+ size: fileInfo.size,
16
+ mimeType: fileInfo.type,
17
+ src: fileInfo.url
18
+ };
19
+ return value;
20
+ };
10
21
  const DEFAULT_POSITION = "center";
11
22
  const DEFAULT_SCALING = {
12
23
  backgroundSize: "cover",
@@ -78,7 +89,7 @@ const BackgroundImage = observer(({ elementId })=>{
78
89
  render: ({ showFileManager })=>/*#__PURE__*/ react.createElement(FilePicker, {
79
90
  variant: "secondary",
80
91
  type: "compact",
81
- value: url ? fileInfo : void 0,
92
+ value: toPickerValue(url, fileInfo),
82
93
  onSelectItem: ()=>showFileManager(),
83
94
  onRemoveItem: onRemove
84
95
  })
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js","sources":["../../../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.tsx"],"sourcesContent":["import React, { useEffect, useState, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { FileManager, type FileManagerFileItem } from \"@webiny/app-admin\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { useStyles } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/useStyles.js\";\nimport { BackgroundImageParser } from \"./BackgroundImageParser.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { InheritanceLabel } from \"../../../InheritanceLabel.js\";\nimport { SidebarRow } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js\";\n\ntype FileInfo = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nconst DEFAULT_POSITION = \"center\";\nconst DEFAULT_SCALING = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\"\n};\n\nexport const parseValue = (value: string) => {\n if (!value) {\n return undefined;\n }\n\n return;\n};\n\nexport const BackgroundImage = observer(({ elementId }: { elementId: string }) => {\n const { isBaseBreakpoint } = useBreakpoint();\n const { styles, metadata, onChange, inheritanceMap } = useStyles(elementId);\n const [localValue, setLocalValue] = useState<string | null>(styles.backgroundImage);\n const url = useMemo(() => {\n const parser = new BackgroundImageParser(styles.backgroundImage);\n const rules = parser.getRules();\n const urlRule = rules.find(r => r.type === \"url\");\n if (urlRule && urlRule.type === \"url\") {\n return urlRule.parsed.url;\n }\n return null;\n }, [styles.backgroundImage]);\n\n useEffect(() => {\n if (styles.backgroundImage !== localValue) {\n setLocalValue(styles.backgroundImage);\n }\n }, [styles.backgroundImage]);\n\n const onFileChange = (file: FileManagerFileItem) => {\n onChange(({ styles, metadata }) => {\n styles.set(\"backgroundPosition\", DEFAULT_POSITION);\n styles.set(\"backgroundSize\", DEFAULT_SCALING.backgroundSize);\n styles.set(\"backgroundRepeat\", DEFAULT_SCALING.backgroundRepeat);\n styles.set(\"backgroundImage\", `url(\"${file.src}\")`);\n\n metadata.set(\"backgroundImage\", {\n id: file.id,\n name: file.name,\n size: file.size,\n type: file.type,\n url: file.src || \"\"\n });\n });\n };\n\n const onRemove = () => {\n onChange(({ styles, metadata }) => {\n // On base breakpoint, we unset the image and all styles related to it.\n if (isBaseBreakpoint) {\n styles.unset(\"backgroundImage\");\n styles.unset(\"backgroundPosition\");\n styles.unset(\"backgroundSize\");\n styles.unset(\"backgroundRepeat\");\n } else {\n styles.set(\"backgroundImage\", \"none\");\n }\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const onReset = () => {\n onChange(({ styles }) => {\n styles.unset(\"backgroundImage\");\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const inheritance = inheritanceMap?.backgroundImage ?? {};\n\n const fileInfo = metadata.get<FileInfo>(\"backgroundImage\");\n\n return (\n <SidebarRow\n label={\n <InheritanceLabel\n onReset={onReset}\n isOverridden={inheritance?.overridden ?? false}\n inheritedFrom={inheritance?.inheritedFrom}\n text={\"Image\"}\n />\n }\n >\n <FileManager\n images={true}\n onChange={onFileChange}\n render={({ showFileManager }) => (\n <FilePicker\n variant={\"secondary\"}\n type=\"compact\"\n value={url ? fileInfo : undefined}\n onSelectItem={() => showFileManager()}\n onRemoveItem={onRemove}\n />\n )}\n />\n </SidebarRow>\n );\n});\n"],"names":["DEFAULT_POSITION","DEFAULT_SCALING","parseValue","value","BackgroundImage","observer","elementId","isBaseBreakpoint","useBreakpoint","styles","metadata","onChange","inheritanceMap","useStyles","localValue","setLocalValue","useState","url","useMemo","parser","BackgroundImageParser","rules","urlRule","r","useEffect","onFileChange","file","onRemove","onReset","inheritance","fileInfo","SidebarRow","InheritanceLabel","FileManager","showFileManager","FilePicker","undefined"],"mappings":";;;;;;;;;AAkBA,MAAMA,mBAAmB;AACzB,MAAMC,kBAAkB;IACpB,gBAAgB;IAChB,kBAAkB;AACtB;AAEO,MAAMC,aAAa,CAACC,SAM3B;AAEO,MAAMC,kBAAkBC,SAAS,CAAC,EAAEC,SAAS,EAAyB;IACzE,MAAM,EAAEC,gBAAgB,EAAE,GAAGC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAE,GAAGC,UAAUP;IACjE,MAAM,CAACQ,YAAYC,cAAc,GAAGC,SAAwBP,OAAO,eAAe;IAClF,MAAMQ,MAAMC,QAAQ;QAChB,MAAMC,SAAS,IAAIC,sBAAsBX,OAAO,eAAe;QAC/D,MAAMY,QAAQF,OAAO,QAAQ;QAC7B,MAAMG,UAAUD,MAAM,IAAI,CAACE,CAAAA,IAAKA,AAAW,UAAXA,EAAE,IAAI;QACtC,IAAID,WAAWA,AAAiB,UAAjBA,QAAQ,IAAI,EACvB,OAAOA,QAAQ,MAAM,CAAC,GAAG;QAE7B,OAAO;IACX,GAAG;QAACb,OAAO,eAAe;KAAC;IAE3Be,UAAU;QACN,IAAIf,OAAO,eAAe,KAAKK,YAC3BC,cAAcN,OAAO,eAAe;IAE5C,GAAG;QAACA,OAAO,eAAe;KAAC;IAE3B,MAAMgB,eAAe,CAACC;QAClBf,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAC1BD,OAAO,GAAG,CAAC,sBAAsBT;YACjCS,OAAO,GAAG,CAAC,kBAAkBR,gBAAgB,cAAc;YAC3DQ,OAAO,GAAG,CAAC,oBAAoBR,gBAAgB,gBAAgB;YAC/DQ,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAEiB,KAAK,GAAG,CAAC,EAAE,CAAC;YAElDhB,SAAS,GAAG,CAAC,mBAAmB;gBAC5B,IAAIgB,KAAK,EAAE;gBACX,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG,IAAI;YACrB;QACJ;IACJ;IAEA,MAAMC,WAAW;QACbhB,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAE1B,IAAIH,kBAAkB;gBAClBE,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;YACjB,OACIA,OAAO,GAAG,CAAC,mBAAmB;YAGlCC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMkB,UAAU;QACZjB,SAAS,CAAC,EAAEF,MAAM,EAAE;YAChBA,OAAO,KAAK,CAAC;YAEbC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMmB,cAAcjB,gBAAgB,mBAAmB,CAAC;IAExD,MAAMkB,WAAWpB,SAAS,GAAG,CAAW;IAExC,OAAO,WAAP,GACI,oBAACqB,YAAUA;QACP,qBACI,oBAACC,kBAAgBA;YACb,SAASJ;YACT,cAAcC,aAAa,cAAc;YACzC,eAAeA,aAAa;YAC5B,MAAM;;qBAId,oBAACI,aAAWA;QACR,QAAQ;QACR,UAAUR;QACV,QAAQ,CAAC,EAAES,eAAe,EAAE,iBACxB,oBAACC,YAAUA;gBACP,SAAS;gBACT,MAAK;gBACL,OAAOlB,MAAMa,WAAWM;gBACxB,cAAc,IAAMF;gBACpB,cAAcP;;;AAMtC"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js","sources":["../../../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.tsx"],"sourcesContent":["import React, { useEffect, useState, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { FileManager, type FileManagerFileItem } from \"@webiny/app-admin\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport type { FileItemDto } from \"@webiny/admin-ui\";\nimport { useStyles } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/useStyles.js\";\nimport { BackgroundImageParser } from \"./BackgroundImageParser.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { InheritanceLabel } from \"../../../InheritanceLabel.js\";\nimport { SidebarRow } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js\";\n\ntype FileInfo = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\n/*\n * The FilePicker expects a FileItemDto (`mimeType`, `src`), while the element metadata stores the\n * older shape (`type`, `url`). Without the mapping the picker can't tell the file is an image and\n * shows a generic file icon instead of the thumbnail.\n */\nconst toPickerValue = (url: string | null | undefined, fileInfo: FileInfo | undefined) => {\n if (!url || !fileInfo) {\n return undefined;\n }\n\n const value: FileItemDto = {\n id: fileInfo.id,\n name: fileInfo.name,\n size: fileInfo.size,\n mimeType: fileInfo.type,\n src: fileInfo.url\n };\n return value;\n};\n\nconst DEFAULT_POSITION = \"center\";\nconst DEFAULT_SCALING = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\"\n};\n\nexport const parseValue = (value: string) => {\n if (!value) {\n return undefined;\n }\n\n return;\n};\n\nexport const BackgroundImage = observer(({ elementId }: { elementId: string }) => {\n const { isBaseBreakpoint } = useBreakpoint();\n const { styles, metadata, onChange, inheritanceMap } = useStyles(elementId);\n const [localValue, setLocalValue] = useState<string | null>(styles.backgroundImage);\n const url = useMemo(() => {\n const parser = new BackgroundImageParser(styles.backgroundImage);\n const rules = parser.getRules();\n const urlRule = rules.find(r => r.type === \"url\");\n if (urlRule && urlRule.type === \"url\") {\n return urlRule.parsed.url;\n }\n return null;\n }, [styles.backgroundImage]);\n\n useEffect(() => {\n if (styles.backgroundImage !== localValue) {\n setLocalValue(styles.backgroundImage);\n }\n }, [styles.backgroundImage]);\n\n const onFileChange = (file: FileManagerFileItem) => {\n onChange(({ styles, metadata }) => {\n styles.set(\"backgroundPosition\", DEFAULT_POSITION);\n styles.set(\"backgroundSize\", DEFAULT_SCALING.backgroundSize);\n styles.set(\"backgroundRepeat\", DEFAULT_SCALING.backgroundRepeat);\n styles.set(\"backgroundImage\", `url(\"${file.src}\")`);\n\n metadata.set(\"backgroundImage\", {\n id: file.id,\n name: file.name,\n size: file.size,\n type: file.type,\n url: file.src || \"\"\n });\n });\n };\n\n const onRemove = () => {\n onChange(({ styles, metadata }) => {\n // On base breakpoint, we unset the image and all styles related to it.\n if (isBaseBreakpoint) {\n styles.unset(\"backgroundImage\");\n styles.unset(\"backgroundPosition\");\n styles.unset(\"backgroundSize\");\n styles.unset(\"backgroundRepeat\");\n } else {\n styles.set(\"backgroundImage\", \"none\");\n }\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const onReset = () => {\n onChange(({ styles }) => {\n styles.unset(\"backgroundImage\");\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const inheritance = inheritanceMap?.backgroundImage ?? {};\n\n const fileInfo = metadata.get<FileInfo>(\"backgroundImage\");\n\n return (\n <SidebarRow\n label={\n <InheritanceLabel\n onReset={onReset}\n isOverridden={inheritance?.overridden ?? false}\n inheritedFrom={inheritance?.inheritedFrom}\n text={\"Image\"}\n />\n }\n >\n <FileManager\n images={true}\n onChange={onFileChange}\n render={({ showFileManager }) => (\n <FilePicker\n variant={\"secondary\"}\n type=\"compact\"\n value={toPickerValue(url, fileInfo)}\n onSelectItem={() => showFileManager()}\n onRemoveItem={onRemove}\n />\n )}\n />\n </SidebarRow>\n );\n});\n"],"names":["toPickerValue","url","fileInfo","value","DEFAULT_POSITION","DEFAULT_SCALING","parseValue","BackgroundImage","observer","elementId","isBaseBreakpoint","useBreakpoint","styles","metadata","onChange","inheritanceMap","useStyles","localValue","setLocalValue","useState","useMemo","parser","BackgroundImageParser","rules","urlRule","r","useEffect","onFileChange","file","onRemove","onReset","inheritance","SidebarRow","InheritanceLabel","FileManager","showFileManager","FilePicker"],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import React from "react";
2
2
  export declare const BackgroundPosition: (({ elementId }: {
3
3
  elementId: string;
4
- }) => React.JSX.Element) & {
5
- displayName: string;
4
+ }) => React.JSX.Element) & React.NamedExoticComponent<{
5
+ elementId: string;
6
+ }> & {
7
+ readonly type: ({ elementId }: {
8
+ elementId: string;
9
+ }) => React.JSX.Element;
6
10
  };
@@ -1,6 +1,10 @@
1
1
  import React from "react";
2
2
  export declare const BackgroundScaling: (({ elementId }: {
3
3
  elementId: string;
4
- }) => React.JSX.Element) & {
5
- displayName: string;
4
+ }) => React.JSX.Element) & React.NamedExoticComponent<{
5
+ elementId: string;
6
+ }> & {
7
+ readonly type: ({ elementId }: {
8
+ elementId: string;
9
+ }) => React.JSX.Element;
6
10
  };
@@ -2,7 +2,7 @@ import React from "react";
2
2
  interface BorderColorProps {
3
3
  elementId: string;
4
4
  }
5
- export declare const BorderColor: (({ elementId }: BorderColorProps) => React.JSX.Element) & {
6
- displayName: string;
5
+ export declare const BorderColor: (({ elementId }: BorderColorProps) => React.JSX.Element) & React.NamedExoticComponent<BorderColorProps> & {
6
+ readonly type: ({ elementId }: BorderColorProps) => React.JSX.Element;
7
7
  };
8
8
  export {};
@@ -2,7 +2,7 @@ import React from "react";
2
2
  interface BorderRadiusProps {
3
3
  elementId: string;
4
4
  }
5
- export declare const BorderRadius: (({ elementId }: BorderRadiusProps) => React.JSX.Element) & {
6
- displayName: string;
5
+ export declare const BorderRadius: (({ elementId }: BorderRadiusProps) => React.JSX.Element) & React.NamedExoticComponent<BorderRadiusProps> & {
6
+ readonly type: ({ elementId }: BorderRadiusProps) => React.JSX.Element;
7
7
  };
8
8
  export {};
@@ -2,7 +2,7 @@ import React from "react";
2
2
  interface BorderStyleProps {
3
3
  elementId: string;
4
4
  }
5
- export declare const BorderStyle: (({ elementId }: BorderStyleProps) => React.JSX.Element) & {
6
- displayName: string;
5
+ export declare const BorderStyle: (({ elementId }: BorderStyleProps) => React.JSX.Element) & React.NamedExoticComponent<BorderStyleProps> & {
6
+ readonly type: ({ elementId }: BorderStyleProps) => React.JSX.Element;
7
7
  };
8
8
  export {};
@@ -2,7 +2,7 @@ import React from "react";
2
2
  interface BorderWidthProps {
3
3
  elementId: string;
4
4
  }
5
- export declare const BorderWidth: (({ elementId }: BorderWidthProps) => React.JSX.Element) & {
6
- displayName: string;
5
+ export declare const BorderWidth: (({ elementId }: BorderWidthProps) => React.JSX.Element) & React.NamedExoticComponent<BorderWidthProps> & {
6
+ readonly type: ({ elementId }: BorderWidthProps) => React.JSX.Element;
7
7
  };
8
8
  export {};
@@ -13,6 +13,10 @@ import React from "react";
13
13
  */
14
14
  export declare const Alignment: (({ elementId }: {
15
15
  elementId: string;
16
- }) => React.JSX.Element) & {
17
- displayName: string;
16
+ }) => React.JSX.Element) & React.NamedExoticComponent<{
17
+ elementId: string;
18
+ }> & {
19
+ readonly type: ({ elementId }: {
20
+ elementId: string;
21
+ }) => React.JSX.Element;
18
22
  };
@@ -7,7 +7,7 @@ interface LengthWithUnitInputProps {
7
7
  unitOptions: UnitOption[];
8
8
  defaultValue?: string;
9
9
  }
10
- export declare const LengthWithUnitInput: (({ elementId, label, propertyName, defaultValue, unitOptions }: LengthWithUnitInputProps) => React.JSX.Element) & {
11
- displayName: string;
10
+ export declare const LengthWithUnitInput: (({ elementId, label, propertyName, defaultValue, unitOptions }: LengthWithUnitInputProps) => React.JSX.Element) & React.NamedExoticComponent<LengthWithUnitInputProps> & {
11
+ readonly type: ({ elementId, label, propertyName, defaultValue, unitOptions }: LengthWithUnitInputProps) => React.JSX.Element;
12
12
  };
13
13
  export {};
@@ -3,7 +3,7 @@ interface MarginProps {
3
3
  elementId: string;
4
4
  children: React.ReactNode;
5
5
  }
6
- export declare const Margin: (({ elementId, children }: MarginProps) => React.JSX.Element) & {
7
- displayName: string;
6
+ export declare const Margin: (({ elementId, children }: MarginProps) => React.JSX.Element) & React.NamedExoticComponent<MarginProps> & {
7
+ readonly type: ({ elementId, children }: MarginProps) => React.JSX.Element;
8
8
  };
9
9
  export {};
@@ -2,7 +2,7 @@ import React from "react";
2
2
  interface PaddingProps {
3
3
  elementId: string;
4
4
  }
5
- export declare const Padding: (({ elementId }: PaddingProps) => React.JSX.Element) & {
6
- displayName: string;
5
+ export declare const Padding: (({ elementId }: PaddingProps) => React.JSX.Element) & React.NamedExoticComponent<PaddingProps> & {
6
+ readonly type: ({ elementId }: PaddingProps) => React.JSX.Element;
7
7
  };
8
8
  export {};
@@ -2,6 +2,6 @@ import React from "react";
2
2
  export interface VisibilityProps {
3
3
  elementId: string;
4
4
  }
5
- export declare const Visibility: (({ elementId }: VisibilityProps) => React.JSX.Element) & {
6
- displayName: string;
5
+ export declare const Visibility: (({ elementId }: VisibilityProps) => React.JSX.Element) & React.NamedExoticComponent<VisibilityProps> & {
6
+ readonly type: ({ elementId }: VisibilityProps) => React.JSX.Element;
7
7
  };
@@ -17,7 +17,7 @@ const SidebarRow = ({ label, tooltip, children })=>/*#__PURE__*/ react.createEle
17
17
  }) : /*#__PURE__*/ react.createElement("div", {
18
18
  className: "w-xs shrink-0"
19
19
  })), /*#__PURE__*/ react.createElement("div", {
20
- className: "flex-1"
20
+ className: "flex-1 min-w-0"
21
21
  }, children));
22
22
  export { SidebarRow };
23
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as InfoIcon } from \"@webiny/icons/info.svg\";\n\ninterface SidebarRowProps {\n label: React.ReactNode;\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const SidebarRow = ({ label, tooltip, children }: SidebarRowProps) => {\n return (\n <div className={\"flex items-start gap-xxs\"}>\n <div\n className={\n \"w-[80px] pt-sm flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong\"\n }\n >\n {label}\n\n {tooltip ? (\n <Tooltip\n trigger={\n <Icon\n icon={<InfoIcon />}\n size={\"xs\"}\n label={\"More information\"}\n color={\"neutral-light\"}\n />\n }\n content={tooltip}\n side={\"left\"}\n />\n ) : (\n <div className={\"w-xs shrink-0\"} />\n )}\n </div>\n <div className={\"flex-1\"}>{children}</div>\n </div>\n );\n};\n"],"names":["SidebarRow","label","tooltip","children","Tooltip","Icon","InfoIcon"],"mappings":";;;AAUO,MAAMA,aAAa,CAAC,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,EAAmB,GAC7D,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WACI;OAGHF,OAEAC,UAAU,WAAVA,GACG,oBAACE,SAAOA;QACJ,uBACI,oBAACC,MAAIA;YACD,oBAAM,oBAACC,gBAAQA;YACf,MAAM;YACN,OAAO;YACP,OAAO;;QAGf,SAASJ;QACT,MAAM;uBAGV,oBAAC;QAAI,WAAW;uBAGxB,oBAAC;QAAI,WAAW;OAAWC"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as InfoIcon } from \"@webiny/icons/info.svg\";\n\ninterface SidebarRowProps {\n label: React.ReactNode;\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const SidebarRow = ({ label, tooltip, children }: SidebarRowProps) => {\n return (\n <div className={\"flex items-start gap-xxs\"}>\n <div\n className={\n \"w-[80px] pt-sm flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong\"\n }\n >\n {label}\n\n {tooltip ? (\n <Tooltip\n trigger={\n <Icon\n icon={<InfoIcon />}\n size={\"xs\"}\n label={\"More information\"}\n color={\"neutral-light\"}\n />\n }\n content={tooltip}\n side={\"left\"}\n />\n ) : (\n <div className={\"w-xs shrink-0\"} />\n )}\n </div>\n {/* min-w-0 lets the cell shrink below its content's intrinsic width, so long\n unbroken values (e.g. a hashed file name) truncate instead of widening the\n row and pushing controls past the sidebar edge. */}\n <div className={\"flex-1 min-w-0\"}>{children}</div>\n </div>\n );\n};\n"],"names":["SidebarRow","label","tooltip","children","Tooltip","Icon","InfoIcon"],"mappings":";;;AAUO,MAAMA,aAAa,CAAC,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,EAAmB,GAC7D,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WACI;OAGHF,OAEAC,UAAU,WAAVA,GACG,oBAACE,SAAOA;QACJ,uBACI,oBAACC,MAAIA;YACD,oBAAM,oBAACC,gBAAQA;YACf,MAAM;YACN,OAAO;YACP,OAAO;;QAGf,SAASJ;QACT,MAAM;uBAGV,oBAAC;QAAI,WAAW;uBAMxB,oBAAC;QAAI,WAAW;OAAmBC"}
@@ -12,9 +12,13 @@ import { Layout } from "./Groups/Layout.js";
12
12
  const StyleProperties = ()=>{
13
13
  const [element] = useActiveElement();
14
14
  if (!element) return null;
15
- return /*#__PURE__*/ react.createElement(ElementStyleProperties, {
15
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
16
+ className: "pt-md mb-md px-sm"
17
+ }, /*#__PURE__*/ react.createElement(ElementPreview, {
18
+ element: element
19
+ })), /*#__PURE__*/ react.createElement(ElementStyleProperties, {
16
20
  element: element
17
- });
21
+ }));
18
22
  };
19
23
  const defaultHidden = [];
20
24
  const ElementStyleProperties = ({ element })=>{
@@ -23,11 +27,7 @@ const ElementStyleProperties = ({ element })=>{
23
27
  const isHidden = useCallback((name)=>hideStyles.includes(name), [
24
28
  hideStyles
25
29
  ]);
26
- return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
27
- className: "pt-md mb-md px-sm"
28
- }, /*#__PURE__*/ react.createElement(ElementPreview, {
29
- element: element
30
- })), /*#__PURE__*/ react.createElement(StyleAccordion, null, isHidden(StyleSettings.Layout) ? null : /*#__PURE__*/ react.createElement(Layout, {
30
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(StyleAccordion, null, isHidden(StyleSettings.Layout) ? null : /*#__PURE__*/ react.createElement(Layout, {
31
31
  elementId: element.id
32
32
  }), isHidden(StyleSettings.MarginPadding) ? null : /*#__PURE__*/ react.createElement(MarginPadding, {
33
33
  elementId: element.id
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { StyleAccordion } from \"./StyleAccordion.js\";\nimport { useActiveElement } from \"~/BaseEditor/hooks/useActiveElement.js\";\nimport type { DocumentElement } from \"@webiny/website-builder-sdk\";\nimport { ElementPreview } from \"~/BaseEditor/defaultConfig/Sidebar/ElementPreview.js\";\nimport { Background } from \"./Groups/Background.js\";\nimport { Border } from \"./Groups/Border.js\";\nimport { MarginPadding } from \"./Groups/MarginPadding.js\";\nimport { VisibilityGroup } from \"./Groups/VisibilityGroup.js\";\nimport { useElementComponentManifest } from \"~/BaseEditor/defaultConfig/Content/Preview/useElementComponentManifest.js\";\nimport { StyleSettings } from \"@webiny/website-builder-sdk\";\nimport { Layout } from \"./Groups/Layout.js\";\n\nexport const StyleProperties = () => {\n const [element] = useActiveElement();\n if (!element) {\n return null;\n }\n\n return <ElementStyleProperties element={element} />;\n};\n\nconst defaultHidden: string[] = [];\n\nconst ElementStyleProperties = ({ element }: { element: DocumentElement }) => {\n const componentManifest = useElementComponentManifest(element.id);\n const hideStyles = componentManifest?.hideStyleSettings ?? defaultHidden;\n\n const isHidden = useCallback(\n (name: string) => {\n return hideStyles.includes(name);\n },\n [hideStyles]\n );\n\n return (\n <>\n <div className={\"pt-md mb-md px-sm\"}>\n <ElementPreview element={element} />\n </div>\n <StyleAccordion>\n {isHidden(StyleSettings.Layout) ? null : <Layout elementId={element.id} />}\n {isHidden(StyleSettings.MarginPadding) ? null : (\n <MarginPadding elementId={element.id} />\n )}\n {isHidden(StyleSettings.Border) ? null : <Border elementId={element.id} />}\n {isHidden(StyleSettings.Background) ? null : <Background elementId={element.id} />}\n {isHidden(StyleSettings.Visibility) ? null : (\n <VisibilityGroup elementId={element.id} />\n )}\n </StyleAccordion>\n </>\n );\n};\n"],"names":["StyleProperties","element","useActiveElement","ElementStyleProperties","defaultHidden","componentManifest","useElementComponentManifest","hideStyles","isHidden","useCallback","name","ElementPreview","StyleAccordion","StyleSettings","Layout","MarginPadding","Border","Background","VisibilityGroup"],"mappings":";;;;;;;;;;;AAaO,MAAMA,kBAAkB;IAC3B,MAAM,CAACC,QAAQ,GAAGC;IAClB,IAAI,CAACD,SACD,OAAO;IAGX,OAAO,WAAP,GAAO,oBAACE,wBAAsBA;QAAC,SAASF;;AAC5C;AAEA,MAAMG,gBAA0B,EAAE;AAElC,MAAMD,yBAAyB,CAAC,EAAEF,OAAO,EAAgC;IACrE,MAAMI,oBAAoBC,4BAA4BL,QAAQ,EAAE;IAChE,MAAMM,aAAaF,mBAAmB,qBAAqBD;IAE3D,MAAMI,WAAWC,YACb,CAACC,OACUH,WAAW,QAAQ,CAACG,OAE/B;QAACH;KAAW;IAGhB,OAAO,WAAP,GACI,wDACI,oBAAC;QAAI,WAAW;qBACZ,oBAACI,gBAAcA;QAAC,SAASV;uBAE7B,oBAACW,gBAAcA,MACVJ,SAASK,cAAc,MAAM,IAAI,OAAO,WAAP,GAAO,oBAACC,QAAMA;QAAC,WAAWb,QAAQ,EAAE;QACrEO,SAASK,cAAc,aAAa,IAAI,OAAO,WAAP,GACrC,oBAACE,eAAaA;QAAC,WAAWd,QAAQ,EAAE;QAEvCO,SAASK,cAAc,MAAM,IAAI,OAAO,WAAP,GAAO,oBAACG,QAAMA;QAAC,WAAWf,QAAQ,EAAE;QACrEO,SAASK,cAAc,UAAU,IAAI,OAAO,WAAP,GAAO,oBAACI,YAAUA;QAAC,WAAWhB,QAAQ,EAAE;QAC7EO,SAASK,cAAc,UAAU,IAAI,OAAO,WAAP,GAClC,oBAACK,iBAAeA;QAAC,WAAWjB,QAAQ,EAAE;;AAK1D"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { StyleAccordion } from \"./StyleAccordion.js\";\nimport { useActiveElement } from \"~/BaseEditor/hooks/useActiveElement.js\";\nimport type { DocumentElement } from \"@webiny/website-builder-sdk\";\nimport { ElementPreview } from \"~/BaseEditor/defaultConfig/Sidebar/ElementPreview.js\";\nimport { Background } from \"./Groups/Background.js\";\nimport { Border } from \"./Groups/Border.js\";\nimport { MarginPadding } from \"./Groups/MarginPadding.js\";\nimport { VisibilityGroup } from \"./Groups/VisibilityGroup.js\";\nimport { useElementComponentManifest } from \"~/BaseEditor/defaultConfig/Content/Preview/useElementComponentManifest.js\";\nimport { StyleSettings } from \"@webiny/website-builder-sdk\";\nimport { Layout } from \"./Groups/Layout.js\";\n\nexport const StyleProperties = () => {\n const [element] = useActiveElement();\n if (!element) {\n return null;\n }\n\n return (\n <>\n <div className={\"pt-md mb-md px-sm\"}>\n <ElementPreview element={element} />\n </div>\n <ElementStyleProperties element={element} />\n </>\n );\n};\n\nconst defaultHidden: string[] = [];\n\nconst ElementStyleProperties = ({ element }: { element: DocumentElement }) => {\n const componentManifest = useElementComponentManifest(element.id);\n const hideStyles = componentManifest?.hideStyleSettings ?? defaultHidden;\n\n const isHidden = useCallback(\n (name: string) => {\n return hideStyles.includes(name);\n },\n [hideStyles]\n );\n\n return (\n <>\n <StyleAccordion>\n {isHidden(StyleSettings.Layout) ? null : <Layout elementId={element.id} />}\n {isHidden(StyleSettings.MarginPadding) ? null : (\n <MarginPadding elementId={element.id} />\n )}\n {isHidden(StyleSettings.Border) ? null : <Border elementId={element.id} />}\n {isHidden(StyleSettings.Background) ? null : <Background elementId={element.id} />}\n {isHidden(StyleSettings.Visibility) ? null : (\n <VisibilityGroup elementId={element.id} />\n )}\n </StyleAccordion>\n </>\n );\n};\n"],"names":["StyleProperties","element","useActiveElement","ElementPreview","ElementStyleProperties","defaultHidden","componentManifest","useElementComponentManifest","hideStyles","isHidden","useCallback","name","StyleAccordion","StyleSettings","Layout","MarginPadding","Border","Background","VisibilityGroup"],"mappings":";;;;;;;;;;;AAaO,MAAMA,kBAAkB;IAC3B,MAAM,CAACC,QAAQ,GAAGC;IAClB,IAAI,CAACD,SACD,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAAC;QAAI,WAAW;qBACZ,oBAACE,gBAAcA;QAAC,SAASF;uBAE7B,oBAACG,wBAAsBA;QAAC,SAASH;;AAG7C;AAEA,MAAMI,gBAA0B,EAAE;AAElC,MAAMD,yBAAyB,CAAC,EAAEH,OAAO,EAAgC;IACrE,MAAMK,oBAAoBC,4BAA4BN,QAAQ,EAAE;IAChE,MAAMO,aAAaF,mBAAmB,qBAAqBD;IAE3D,MAAMI,WAAWC,YACb,CAACC,OACUH,WAAW,QAAQ,CAACG,OAE/B;QAACH;KAAW;IAGhB,OAAO,WAAP,GACI,wDACI,oBAACI,gBAAcA,MACVH,SAASI,cAAc,MAAM,IAAI,OAAO,WAAP,GAAO,oBAACC,QAAMA;QAAC,WAAWb,QAAQ,EAAE;QACrEQ,SAASI,cAAc,aAAa,IAAI,OAAO,WAAP,GACrC,oBAACE,eAAaA;QAAC,WAAWd,QAAQ,EAAE;QAEvCQ,SAASI,cAAc,MAAM,IAAI,OAAO,WAAP,GAAO,oBAACG,QAAMA;QAAC,WAAWf,QAAQ,EAAE;QACrEQ,SAASI,cAAc,UAAU,IAAI,OAAO,WAAP,GAAO,oBAACI,YAAUA;QAAC,WAAWhB,QAAQ,EAAE;QAC7EQ,SAASI,cAAc,UAAU,IAAI,OAAO,WAAP,GAClC,oBAACK,iBAAeA;QAAC,WAAWjB,QAAQ,EAAE;;AAK1D"}
@@ -2,10 +2,7 @@ import react from "react";
2
2
  import { Icon } from "@webiny/admin-ui";
3
3
  import { ReactComponent } from "@webiny/icons/select_all.svg";
4
4
  import { Sidebar } from "../../../config/Sidebar/Sidebar.js";
5
- import { ScrollableContainer } from "../../../config/Sidebar/ScrollableContainer.js";
6
- const StyleSettingsGroup = ()=>/*#__PURE__*/ react.createElement(ScrollableContainer, {
7
- tabIndex: -1
8
- }, /*#__PURE__*/ react.createElement(Sidebar.Group.Tab, {
5
+ const StyleSettingsGroup = ()=>/*#__PURE__*/ react.createElement(Sidebar.Group.Tab, {
9
6
  name: "style",
10
7
  label: "Style",
11
8
  icon: /*#__PURE__*/ react.createElement(Icon, {
@@ -15,7 +12,7 @@ const StyleSettingsGroup = ()=>/*#__PURE__*/ react.createElement(ScrollableConta
15
12
  element: /*#__PURE__*/ react.createElement(Sidebar.Elements, {
16
13
  group: "style"
17
14
  })
18
- }));
15
+ });
19
16
  export { StyleSettingsGroup };
20
17
 
21
18
  //# sourceMappingURL=StyleSettingsGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as SelectAllIcon } from \"@webiny/icons/select_all.svg\";\nimport { Sidebar } from \"~/BaseEditor/config/Sidebar/Sidebar.js\";\nimport { ScrollableContainer } from \"~/BaseEditor/config/Sidebar/ScrollableContainer.js\";\n\nexport const StyleSettingsGroup = () => {\n return (\n <ScrollableContainer tabIndex={-1}>\n <Sidebar.Group.Tab\n name={\"style\"}\n label={\"Style\"}\n icon={<Icon icon={<SelectAllIcon />} label={\"Style\"} />}\n element={<Sidebar.Elements group={\"style\"} />}\n />\n </ScrollableContainer>\n );\n};\n"],"names":["StyleSettingsGroup","ScrollableContainer","Sidebar","Icon","SelectAllIcon"],"mappings":";;;;;AAMO,MAAMA,qBAAqB,IACvB,WAAP,GACI,oBAACC,qBAAmBA;QAAC,UAAU;qBAC3B,oBAACC,QAAQ,KAAK,CAAC,GAAG;QACd,MAAM;QACN,OAAO;QACP,oBAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAaA;YAAK,OAAO;;QAC5C,uBAAS,oBAACF,QAAQ,QAAQ;YAAC,OAAO"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as SelectAllIcon } from \"@webiny/icons/select_all.svg\";\nimport { Sidebar } from \"~/BaseEditor/config/Sidebar/Sidebar.js\";\n\nexport const StyleSettingsGroup = () => {\n return (\n <Sidebar.Group.Tab\n name={\"style\"}\n label={\"Style\"}\n icon={<Icon icon={<SelectAllIcon />} label={\"Style\"} />}\n element={<Sidebar.Elements group={\"style\"} />}\n />\n );\n};\n"],"names":["StyleSettingsGroup","Sidebar","Icon","SelectAllIcon"],"mappings":";;;;AAKO,MAAMA,qBAAqB,IACvB,WAAP,GACI,oBAACC,QAAQ,KAAK,CAAC,GAAG;QACd,MAAM;QACN,OAAO;QACP,oBAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAaA;YAAK,OAAO;;QAC5C,uBAAS,oBAACF,QAAQ,QAAQ;YAAC,OAAO"}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const Navigator: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const Navigator: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -3,14 +3,23 @@ import type { EditorDocument } from "@webiny/website-builder-sdk";
3
3
  import { Editor } from "../editorSdk/Editor.js";
4
4
  export declare const DocumentEditorContext: React.Context<Editor<any> | undefined>;
5
5
  export declare function useDocumentEditor<TDocument extends EditorDocument>(): Editor<TDocument>;
6
- interface DocumentEditorProps<TDocument> {
7
- document: TDocument;
6
+ interface DocumentEditorBaseProps {
8
7
  name: string;
9
8
  children?: React.ReactNode;
9
+ }
10
+ interface DocumentEditorWithDocument<TDocument> extends DocumentEditorBaseProps {
11
+ document: TDocument;
10
12
  readOnly: boolean;
13
+ editor?: never;
14
+ }
15
+ interface DocumentEditorWithEditor extends DocumentEditorBaseProps {
16
+ editor: Editor<any>;
17
+ document?: never;
18
+ readOnly?: never;
11
19
  }
12
- declare function BaseDocumentEditor<TDocument extends EditorDocument>({ document, name, children, readOnly }: DocumentEditorProps<TDocument>): React.JSX.Element;
13
- export declare const DocumentEditor: typeof BaseDocumentEditor & {
14
- displayName: string;
20
+ type DocumentEditorProps<TDocument = any> = DocumentEditorWithDocument<TDocument> | DocumentEditorWithEditor;
21
+ declare function BaseDocumentEditor<TDocument extends EditorDocument>({ name, children, ...props }: DocumentEditorProps<TDocument>): React.JSX.Element;
22
+ export declare const DocumentEditor: typeof BaseDocumentEditor & React.NamedExoticComponent<DocumentEditorProps<import("@webiny/website-builder-sdk").Document>> & {
23
+ readonly type: typeof BaseDocumentEditor;
15
24
  };
16
25
  export {};
@@ -13,13 +13,17 @@ function useDocumentEditor() {
13
13
  if (!context) throw new Error("useDocumentEditor must be used within a <DocumentEditor /> context!");
14
14
  return context;
15
15
  }
16
- function BaseDocumentEditor({ document, name, children, readOnly }) {
17
- const editor = useMemo(()=>new Editor_js_Editor(document, {
18
- isReadOnly: readOnly
19
- }), [
20
- document,
21
- readOnly
16
+ function BaseDocumentEditor({ name, children, ...props }) {
17
+ const internalEditor = useMemo(()=>{
18
+ if ("editor" in props && props.editor) return null;
19
+ return new Editor_js_Editor(props.document, {
20
+ isReadOnly: props.readOnly
21
+ });
22
+ }, [
23
+ "editor" in props ? props.editor : props.document,
24
+ "editor" in props ? null : props.readOnly
22
25
  ]);
26
+ const editor = "editor" in props && props.editor ? props.editor : internalEditor;
23
27
  return /*#__PURE__*/ react.createElement(DndProvider, {
24
28
  backend: HTML5Backend
25
29
  }, /*#__PURE__*/ react.createElement(StateInspector, {