@webiny/app-website-builder 6.6.0-alpha.0 → 6.6.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/BaseEditor/commandHandlers/CloneElement.d.ts +1 -0
  2. package/BaseEditor/commandHandlers/CloneElement.js +17 -0
  3. package/BaseEditor/commandHandlers/CloneElement.js.map +1 -0
  4. package/BaseEditor/commandHandlers/index.js +2 -1
  5. package/BaseEditor/commandHandlers/index.js.map +1 -1
  6. package/BaseEditor/commands.d.ts +3 -0
  7. package/BaseEditor/commands.js +2 -0
  8. package/BaseEditor/commands.js.map +1 -1
  9. package/BaseEditor/defaultConfig/Content/AddressBar/usePreviewLink.js +4 -1
  10. package/BaseEditor/defaultConfig/Content/AddressBar/usePreviewLink.js.map +1 -1
  11. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
  12. package/BaseEditor/defaultConfig/Content/Preview/Iframe.d.ts +2 -2
  13. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.d.ts +2 -2
  14. package/BaseEditor/defaultConfig/DefaultEditorConfig.js +9 -0
  15. package/BaseEditor/defaultConfig/DefaultEditorConfig.js.map +1 -1
  16. package/BaseEditor/defaultConfig/DocumentStateEditor/DocumentStateEditor.d.ts +2 -2
  17. package/BaseEditor/defaultConfig/ElementInputRenderers.js +4 -0
  18. package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
  19. package/BaseEditor/defaultConfig/Sidebar/ElementActions/CloneElementAction.d.ts +2 -0
  20. package/BaseEditor/defaultConfig/Sidebar/ElementActions/CloneElementAction.js +25 -0
  21. package/BaseEditor/defaultConfig/Sidebar/ElementActions/CloneElementAction.js.map +1 -0
  22. package/BaseEditor/defaultConfig/Sidebar/ElementActions/DeleteElementAction.d.ts +2 -0
  23. package/BaseEditor/defaultConfig/Sidebar/ElementActions/DeleteElementAction.js +26 -0
  24. package/BaseEditor/defaultConfig/Sidebar/ElementActions/DeleteElementAction.js.map +1 -0
  25. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.js +12 -2
  26. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.js.map +1 -1
  27. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js +1 -6
  28. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js.map +1 -1
  29. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettings.js +11 -2
  30. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettings.js.map +1 -1
  31. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.d.ts +6 -2
  32. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.d.ts +6 -2
  33. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.d.ts +6 -2
  34. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.d.ts +6 -2
  35. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.d.ts +2 -2
  36. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.d.ts +2 -2
  37. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.d.ts +2 -2
  38. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.d.ts +2 -2
  39. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.d.ts +6 -2
  40. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.d.ts +2 -2
  41. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.d.ts +2 -2
  42. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.d.ts +2 -2
  43. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.d.ts +2 -2
  44. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js +7 -7
  45. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js.map +1 -1
  46. package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.d.ts +2 -2
  47. package/DocumentEditor/DocumentEditor.d.ts +14 -5
  48. package/DocumentEditor/DocumentEditor.js +10 -6
  49. package/DocumentEditor/DocumentEditor.js.map +1 -1
  50. package/DocumentEditor/StateInspector.d.ts +4 -2
  51. package/Extension.js +7 -1
  52. package/Extension.js.map +1 -1
  53. package/ecommerce/components/ResourcePage.d.ts +6 -2
  54. package/ecommerce/components/ResourcesList.d.ts +4 -4
  55. package/ecommerce/components/ResourcesPicker.d.ts +9 -4
  56. package/editorSdk/CommandBus.js.map +1 -1
  57. package/editorSdk/utils/$cloneElement.d.ts +2 -0
  58. package/editorSdk/utils/$cloneElement.js +112 -0
  59. package/editorSdk/utils/$cloneElement.js.map +1 -0
  60. package/editorSdk/utils/index.d.ts +1 -0
  61. package/editorSdk/utils/index.js +1 -0
  62. package/features/experiments/ExperimentsGateway.d.ts +30 -0
  63. package/features/experiments/ExperimentsGateway.js +326 -0
  64. package/features/experiments/ExperimentsGateway.js.map +1 -0
  65. package/features/experiments/abstractions.d.ts +25 -0
  66. package/features/experiments/abstractions.js +5 -0
  67. package/features/experiments/abstractions.js.map +1 -0
  68. package/features/experiments/feature.d.ts +3 -0
  69. package/features/experiments/feature.js +17 -0
  70. package/features/experiments/feature.js.map +1 -0
  71. package/features/experiments/index.d.ts +3 -0
  72. package/features/experiments/index.js +2 -0
  73. package/features/experiments/types.d.ts +61 -0
  74. package/features/experiments/types.js +0 -0
  75. package/inputRenderers/ColorPickerInput.d.ts +3 -0
  76. package/inputRenderers/ColorPickerInput.js +29 -0
  77. package/inputRenderers/ColorPickerInput.js.map +1 -0
  78. package/inputRenderers/FileInput.js +93 -8
  79. package/inputRenderers/FileInput.js.map +1 -1
  80. package/inputRenderers/LexicalInput/LexicalEditor.js +15 -8
  81. package/inputRenderers/LexicalInput/LexicalEditor.js.map +1 -1
  82. package/inputRenderers/LexicalInput/TypographyDropDown.js +3 -2
  83. package/inputRenderers/LexicalInput/TypographyDropDown.js.map +1 -1
  84. package/inputRenderers/LexicalInput/wbStaticToolbar.css +72 -103
  85. package/modules/AbTesting.d.ts +2 -0
  86. package/modules/AbTesting.js +19 -0
  87. package/modules/AbTesting.js.map +1 -0
  88. package/package.json +28 -28
  89. package/presentation/components/LanguageCodeTag.js +5 -4
  90. package/presentation/components/LanguageCodeTag.js.map +1 -1
  91. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.d.ts +30 -0
  92. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js +202 -0
  93. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js.map +1 -0
  94. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.d.ts +65 -0
  95. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js +5 -0
  96. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js.map +1 -0
  97. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.d.ts +12 -0
  98. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js +149 -0
  99. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js.map +1 -0
  100. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.d.ts +17 -0
  101. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js +122 -0
  102. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js.map +1 -0
  103. package/presentation/experiments/ExperimentForm/feature.d.ts +3 -0
  104. package/presentation/experiments/ExperimentForm/feature.js +17 -0
  105. package/presentation/experiments/ExperimentForm/feature.js.map +1 -0
  106. package/presentation/experiments/ExperimentForm/index.d.ts +3 -0
  107. package/presentation/experiments/ExperimentForm/index.js +3 -0
  108. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.d.ts +18 -0
  109. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js +25 -0
  110. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js.map +1 -0
  111. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.d.ts +67 -0
  112. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js +224 -0
  113. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js.map +1 -0
  114. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.d.ts +10 -0
  115. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js +5 -0
  116. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js.map +1 -0
  117. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.d.ts +58 -0
  118. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js +5 -0
  119. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js.map +1 -0
  120. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.d.ts +15 -0
  121. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js +110 -0
  122. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js.map +1 -0
  123. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.d.ts +9 -0
  124. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js +178 -0
  125. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js.map +1 -0
  126. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.d.ts +11 -0
  127. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js +51 -0
  128. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js.map +1 -0
  129. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.d.ts +14 -0
  130. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js +147 -0
  131. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js.map +1 -0
  132. package/presentation/experiments/ExperimentsEditor/feature.d.ts +3 -0
  133. package/presentation/experiments/ExperimentsEditor/feature.js +21 -0
  134. package/presentation/experiments/ExperimentsEditor/feature.js.map +1 -0
  135. package/presentation/experiments/ExperimentsEditor/index.d.ts +4 -0
  136. package/presentation/experiments/ExperimentsEditor/index.js +3 -0
  137. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.d.ts +39 -0
  138. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js +219 -0
  139. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js.map +1 -0
  140. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.d.ts +52 -0
  141. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js +5 -0
  142. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js.map +1 -0
  143. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.d.ts +10 -0
  144. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js +296 -0
  145. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js.map +1 -0
  146. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.d.ts +2 -0
  147. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js +92 -0
  148. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js.map +1 -0
  149. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.d.ts +6 -0
  150. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js +103 -0
  151. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js.map +1 -0
  152. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.d.ts +9 -0
  153. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js +58 -0
  154. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js.map +1 -0
  155. package/presentation/experiments/ExperimentsManager/feature.d.ts +3 -0
  156. package/presentation/experiments/ExperimentsManager/feature.js +17 -0
  157. package/presentation/experiments/ExperimentsManager/feature.js.map +1 -0
  158. package/presentation/experiments/ExperimentsManager/index.d.ts +4 -0
  159. package/presentation/experiments/ExperimentsManager/index.js +3 -0
  160. package/presentation/experiments/VariantPageEditorConfig.d.ts +7 -0
  161. package/presentation/experiments/VariantPageEditorConfig.js +26 -0
  162. package/presentation/experiments/VariantPageEditorConfig.js.map +1 -0
  163. package/presentation/experiments/config/ExperimentsEditorConfig.d.ts +8 -0
  164. package/presentation/experiments/config/ExperimentsEditorConfig.js +21 -0
  165. package/presentation/experiments/config/ExperimentsEditorConfig.js.map +1 -0
  166. package/presentation/experiments/config/VariantAutoSave.d.ts +5 -0
  167. package/presentation/experiments/config/VariantAutoSave.js +41 -0
  168. package/presentation/experiments/config/VariantAutoSave.js.map +1 -0
  169. package/presentation/experiments/shared/variantColors.d.ts +11 -0
  170. package/presentation/experiments/shared/variantColors.js +13 -0
  171. package/presentation/experiments/shared/variantColors.js.map +1 -0
  172. package/presentation/experiments/shared/variantDocument.d.ts +16 -0
  173. package/presentation/experiments/shared/variantDocument.js +31 -0
  174. package/presentation/experiments/shared/variantDocument.js.map +1 -0
  175. package/presentation/navigation/Extension.js +9 -5
  176. package/presentation/navigation/Extension.js.map +1 -1
  177. package/presentation/navigation/NextjsConfig/NextjsConfigDialog.d.ts +2 -2
  178. package/presentation/navigation/StarterKitConfigDialog.js +1 -1
  179. package/presentation/navigation/StarterKitConfigDialog.js.map +1 -1
  180. package/presentation/pages/CreatePage/CreatePageDialog.d.ts +2 -2
  181. package/presentation/pages/CreatePage/CreatePagePresenter.js +1 -1
  182. package/presentation/pages/CreatePage/CreatePagePresenter.js.map +1 -1
  183. package/presentation/pages/CreatePage/WithLanguageSelector.js +3 -3
  184. package/presentation/pages/CreatePage/WithLanguageSelector.js.map +1 -1
  185. package/presentation/pages/CreatePage/feature.js +3 -3
  186. package/presentation/pages/CreatePage/feature.js.map +1 -1
  187. package/presentation/pages/PageEditor/PageEditor.experiments.d.ts +2 -0
  188. package/presentation/pages/PageEditor/PageEditor.experiments.js +54 -0
  189. package/presentation/pages/PageEditor/PageEditor.experiments.js.map +1 -0
  190. package/presentation/pages/PageEditor/PageEditorSurface.d.ts +15 -0
  191. package/presentation/pages/PageEditor/PageEditorSurface.js +63 -0
  192. package/presentation/pages/PageEditor/PageEditorSurface.js.map +1 -0
  193. package/presentation/pages/PageEditor/TopBar/PageSettingsDrawer.d.ts +2 -2
  194. package/presentation/pages/PageEditor/pageDocument.d.ts +4 -0
  195. package/presentation/pages/PageEditor/pageDocument.js +15 -0
  196. package/presentation/pages/PageEditor/pageDocument.js.map +1 -0
  197. package/presentation/pages/PageList/components/BulkActions/BulkActionDelete.d.ts +2 -2
  198. package/presentation/pages/PageList/components/BulkActions/BulkActionDuplicate.d.ts +2 -2
  199. package/presentation/pages/PageList/components/BulkActions/BulkActionMovePage.d.ts +2 -2
  200. package/presentation/pages/PageList/components/BulkActions/BulkActionPublish.d.ts +2 -2
  201. package/presentation/pages/PageList/components/BulkActions/BulkActionUnpublish.d.ts +2 -2
  202. package/presentation/pages/PageList/components/DocumentList.d.ts +2 -2
  203. package/presentation/pages/PageList/components/PagesList.js +2 -1
  204. package/presentation/pages/PageList/components/PagesList.js.map +1 -1
  205. package/presentation/pages/PageList/components/Table/Table.d.ts +2 -2
  206. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.d.ts +9 -0
  207. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.js +40 -0
  208. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.js.map +1 -0
  209. package/presentation/pages/TranslatePage/TranslatePageConfig.d.ts +1 -1
  210. package/presentation/pages/TranslatePage/TranslatePageConfig.js +6 -2
  211. package/presentation/pages/TranslatePage/TranslatePageConfig.js.map +1 -1
  212. package/presentation/pages/TranslatePage/TranslatePageDialog.js +22 -10
  213. package/presentation/pages/TranslatePage/TranslatePageDialog.js.map +1 -1
  214. package/presentation/pages/TranslatePage/translatePageSchema.d.ts +1 -1
  215. package/presentation/pages/TranslatePage/translatePageSchema.js +1 -1
  216. package/presentation/pages/TranslatePage/translatePageSchema.js.map +1 -1
  217. package/presentation/pages/TrashBin/WbTrashBin.d.ts +2 -2
  218. package/presentation/redirects/RedirectList/components/BulkActionDelete.d.ts +2 -2
  219. package/presentation/redirects/RedirectList/components/BulkActionMove.d.ts +2 -2
  220. package/presentation/redirects/RedirectList/components/CreateRedirectDialog.d.ts +2 -2
  221. package/presentation/redirects/RedirectList/components/DocumentList.d.ts +2 -2
  222. package/presentation/redirects/RedirectList/components/EditRedirectDialog.d.ts +2 -2
  223. package/presentation/redirects/RedirectList/components/Table/Table.d.ts +2 -2
  224. package/shared/fileManagerItemToValue.d.ts +8 -9
  225. package/shared/fileManagerItemToValue.js +22 -7
  226. package/shared/fileManagerItemToValue.js.map +1 -1
  227. package/inputRenderers/LexicalInput/icons/list-ol.js +0 -20
  228. package/inputRenderers/LexicalInput/icons/list-ol.js.map +0 -1
  229. package/inputRenderers/LexicalInput/icons/list-ol.svg +0 -1
  230. package/inputRenderers/LexicalInput/icons/list-ul.js +0 -18
  231. package/inputRenderers/LexicalInput/icons/list-ul.js.map +0 -1
  232. package/inputRenderers/LexicalInput/icons/list-ul.svg +0 -1
  233. package/static/svg/list-ol.d64946f3.svg +0 -1
  234. package/static/svg/list-ul.1d54da3f.svg +0 -1
@@ -0,0 +1,63 @@
1
+ import react, { useEffect, useRef, useState } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { useFeature } from "@webiny/app";
4
+ import { OverlayLoader } from "@webiny/admin-ui";
5
+ import { DocumentEditor } from "../../../DocumentEditor/DocumentEditor.js";
6
+ import { DefaultEditorConfig } from "../../../BaseEditor/index.js";
7
+ import { EDITOR_NAME } from "./constants.js";
8
+ import { WbPageStatus } from "../../../constants.js";
9
+ import { useGetPage } from "../../../features/pages/index.js";
10
+ import { DefaultPageEditorConfig } from "./DefaultPageEditorConfig.js";
11
+ import { RevisionListDrawer } from "./Revisions/RevisionListDrawer.js";
12
+ import { pageToEditorDocument } from "./pageDocument.js";
13
+ import { ExperimentsEditorPresenterFeature } from "../../experiments/ExperimentsEditor/index.js";
14
+ import { variantToEditorDocument } from "../../experiments/shared/variantDocument.js";
15
+ import { VariantPageEditorConfig } from "../../experiments/VariantPageEditorConfig.js";
16
+ const PageEditorSurface_PageEditorSurface = observer(function({ page }) {
17
+ const { presenter } = useFeature(ExperimentsEditorPresenterFeature);
18
+ const { selectedVariant } = presenter.vm;
19
+ const { getPage } = useGetPage();
20
+ const readOnly = page.status !== WbPageStatus.Draft;
21
+ const [activeDocument, setActiveDocument] = useState(page);
22
+ const [loading, setLoading] = useState(false);
23
+ const initial = useRef(true);
24
+ useEffect(()=>{
25
+ if (initial.current && !selectedVariant) {
26
+ initial.current = false;
27
+ return;
28
+ }
29
+ initial.current = false;
30
+ let cancelled = false;
31
+ setLoading(true);
32
+ const load = selectedVariant ? presenter.getVariant(selectedVariant.id).then((content)=>content ? variantToEditorDocument(content, page) : null) : getPage({
33
+ id: page.id
34
+ }).then(pageToEditorDocument);
35
+ load.then((next)=>{
36
+ if (!cancelled && next) setActiveDocument(next);
37
+ }).finally(()=>{
38
+ if (!cancelled) setLoading(false);
39
+ });
40
+ return ()=>{
41
+ cancelled = true;
42
+ };
43
+ }, [
44
+ selectedVariant,
45
+ presenter,
46
+ getPage,
47
+ page
48
+ ]);
49
+ if (loading) return /*#__PURE__*/ react.createElement(OverlayLoader, {
50
+ text: selectedVariant ? "Loading variant..." : "Loading page..."
51
+ });
52
+ return /*#__PURE__*/ react.createElement(DocumentEditor, {
53
+ key: selectedVariant ? selectedVariant.id : page.id,
54
+ document: activeDocument,
55
+ name: EDITOR_NAME,
56
+ readOnly: readOnly
57
+ }, /*#__PURE__*/ react.createElement(DefaultEditorConfig, null), selectedVariant ? /*#__PURE__*/ react.createElement(VariantPageEditorConfig, null) : /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DefaultPageEditorConfig, null), /*#__PURE__*/ react.createElement(RevisionListDrawer, {
58
+ page: page
59
+ })));
60
+ });
61
+ export { PageEditorSurface_PageEditorSurface as PageEditorSurface };
62
+
63
+ //# sourceMappingURL=PageEditorSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/pages/PageEditor/PageEditorSurface.js","sources":["../../../../src/presentation/pages/PageEditor/PageEditorSurface.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useFeature } from \"@webiny/app\";\nimport { OverlayLoader } from \"@webiny/admin-ui\";\nimport type { EditorPage } from \"@webiny/website-builder-sdk\";\nimport { DocumentEditor } from \"~/DocumentEditor/DocumentEditor.js\";\nimport { DefaultEditorConfig } from \"~/BaseEditor/index.js\";\nimport { EDITOR_NAME } from \"~/presentation/pages/PageEditor/constants.js\";\nimport { WbPageStatus } from \"~/constants.js\";\nimport { useGetPage } from \"~/features/pages/index.js\";\nimport { DefaultPageEditorConfig } from \"./DefaultPageEditorConfig.js\";\nimport { RevisionListDrawer } from \"./Revisions/RevisionListDrawer.js\";\nimport { pageToEditorDocument } from \"./pageDocument.js\";\nimport { ExperimentsEditorPresenterFeature } from \"~/presentation/experiments/ExperimentsEditor/index.js\";\nimport { variantToEditorDocument } from \"~/presentation/experiments/shared/variantDocument.js\";\nimport { VariantPageEditorConfig } from \"~/presentation/experiments/VariantPageEditorConfig.js\";\n\ninterface Props {\n page: EditorPage;\n}\n\n/**\n * Renders the editor for the bucket currently selected in the experiments toolbar: the page itself\n * (control), or a variant loaded as an equivalent document. Switching buckets re-mounts the editor\n * with the matching document and autosave; content is (re)fetched on each switch so returning to a\n * bucket always shows its latest saved state.\n */\nexport const PageEditorSurface = observer(function PageEditorSurface({ page }: Props) {\n const { presenter } = useFeature(ExperimentsEditorPresenterFeature);\n const { selectedVariant } = presenter.vm;\n const { getPage } = useGetPage();\n\n const readOnly = page.status !== WbPageStatus.Draft;\n\n const [activeDocument, setActiveDocument] = useState<EditorPage>(page);\n const [loading, setLoading] = useState(false);\n // The initial control document is already loaded (passed in) — don't refetch it on first render.\n const initial = useRef(true);\n\n useEffect(() => {\n if (initial.current && !selectedVariant) {\n initial.current = false;\n return;\n }\n initial.current = false;\n\n let cancelled = false;\n setLoading(true);\n\n const load: Promise<EditorPage | null> = selectedVariant\n ? presenter\n .getVariant(selectedVariant.id)\n .then(content => (content ? variantToEditorDocument(content, page) : null))\n : getPage({ id: page.id }).then(pageToEditorDocument);\n\n load.then(next => {\n if (!cancelled && next) {\n setActiveDocument(next);\n }\n }).finally(() => {\n if (!cancelled) {\n setLoading(false);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [selectedVariant, presenter, getPage, page]);\n\n if (loading) {\n return <OverlayLoader text={selectedVariant ? \"Loading variant...\" : \"Loading page...\"} />;\n }\n\n return (\n <DocumentEditor<EditorPage>\n key={selectedVariant ? selectedVariant.id : page.id}\n document={activeDocument}\n name={EDITOR_NAME}\n readOnly={readOnly}\n >\n <DefaultEditorConfig />\n {selectedVariant ? (\n <VariantPageEditorConfig />\n ) : (\n <>\n <DefaultPageEditorConfig />\n <RevisionListDrawer page={page} />\n </>\n )}\n </DocumentEditor>\n );\n});\n"],"names":["PageEditorSurface","observer","page","presenter","useFeature","ExperimentsEditorPresenterFeature","selectedVariant","getPage","useGetPage","readOnly","WbPageStatus","activeDocument","setActiveDocument","useState","loading","setLoading","initial","useRef","useEffect","cancelled","load","content","variantToEditorDocument","pageToEditorDocument","next","OverlayLoader","DocumentEditor","EDITOR_NAME","DefaultEditorConfig","VariantPageEditorConfig","DefaultPageEditorConfig","RevisionListDrawer"],"mappings":";;;;;;;;;;;;;;;AA2BO,MAAMA,sCAAoBC,SAAS,SAA2B,EAAEC,IAAI,EAAS;IAChF,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,eAAe,EAAE,GAAGH,UAAU,EAAE;IACxC,MAAM,EAAEI,OAAO,EAAE,GAAGC;IAEpB,MAAMC,WAAWP,KAAK,MAAM,KAAKQ,aAAa,KAAK;IAEnD,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGC,SAAqBX;IACjE,MAAM,CAACY,SAASC,WAAW,GAAGF,SAAS;IAEvC,MAAMG,UAAUC,OAAO;IAEvBC,UAAU;QACN,IAAIF,QAAQ,OAAO,IAAI,CAACV,iBAAiB;YACrCU,QAAQ,OAAO,GAAG;YAClB;QACJ;QACAA,QAAQ,OAAO,GAAG;QAElB,IAAIG,YAAY;QAChBJ,WAAW;QAEX,MAAMK,OAAmCd,kBACnCH,UACK,UAAU,CAACG,gBAAgB,EAAE,EAC7B,IAAI,CAACe,CAAAA,UAAYA,UAAUC,wBAAwBD,SAASnB,QAAQ,QACzEK,QAAQ;YAAE,IAAIL,KAAK,EAAE;QAAC,GAAG,IAAI,CAACqB;QAEpCH,KAAK,IAAI,CAACI,CAAAA;YACN,IAAI,CAACL,aAAaK,MACdZ,kBAAkBY;QAE1B,GAAG,OAAO,CAAC;YACP,IAAI,CAACL,WACDJ,WAAW;QAEnB;QAEA,OAAO;YACHI,YAAY;QAChB;IACJ,GAAG;QAACb;QAAiBH;QAAWI;QAASL;KAAK;IAE9C,IAAIY,SACA,OAAO,WAAP,GAAO,oBAACW,eAAaA;QAAC,MAAMnB,kBAAkB,uBAAuB;;IAGzE,OAAO,WAAP,GACI,oBAACoB,gBAAcA;QACX,KAAKpB,kBAAkBA,gBAAgB,EAAE,GAAGJ,KAAK,EAAE;QACnD,UAAUS;QACV,MAAMgB;QACN,UAAUlB;qBAEV,oBAACmB,qBAAmBA,OACnBtB,kBAAkB,WAAlBA,GACG,oBAACuB,yBAAuBA,QAAAA,WAAAA,GAExB,wDACI,oBAACC,yBAAuBA,OAAAA,WAAAA,GACxB,oBAACC,oBAAkBA;QAAC,MAAM7B;;AAK9C"}
@@ -6,6 +6,6 @@ export interface PageSettingsDrawerProps {
6
6
  onClose: () => void;
7
7
  onSave: () => void;
8
8
  }
9
- export declare const PageSettingsDrawer: (({ presenter, open, onClose, onSave }: PageSettingsDrawerProps) => React.JSX.Element) & {
10
- displayName: string;
9
+ export declare const PageSettingsDrawer: (({ presenter, open, onClose, onSave }: PageSettingsDrawerProps) => React.JSX.Element) & React.NamedExoticComponent<PageSettingsDrawerProps> & {
10
+ readonly type: ({ presenter, open, onClose, onSave }: PageSettingsDrawerProps) => React.JSX.Element;
11
11
  };
@@ -0,0 +1,4 @@
1
+ import type { EditorPage } from "@webiny/website-builder-sdk";
2
+ import type { Page } from "../../../domain/Page/index.js";
3
+ /** Map a loaded page revision onto the editor document shape. */
4
+ export declare const pageToEditorDocument: (page: Page) => EditorPage;
@@ -0,0 +1,15 @@
1
+ const pageToEditorDocument = (page)=>({
2
+ ...page,
3
+ id: page.id,
4
+ version: page.version,
5
+ status: page.status,
6
+ location: page.location,
7
+ properties: page.properties,
8
+ bindings: page.bindings,
9
+ elements: page.elements,
10
+ metadata: page.metadata,
11
+ state: {}
12
+ });
13
+ export { pageToEditorDocument };
14
+
15
+ //# sourceMappingURL=pageDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/pages/PageEditor/pageDocument.js","sources":["../../../../src/presentation/pages/PageEditor/pageDocument.ts"],"sourcesContent":["import type { EditorPage } from \"@webiny/website-builder-sdk\";\nimport type { Page } from \"~/domain/Page/index.js\";\n\n/** Map a loaded page revision onto the editor document shape. */\nexport const pageToEditorDocument = (page: Page): EditorPage => {\n return {\n ...page,\n id: page.id,\n version: page.version,\n status: page.status,\n location: page.location,\n properties: page.properties as EditorPage[\"properties\"],\n bindings: page.bindings,\n elements: page.elements,\n metadata: page.metadata,\n state: {}\n };\n};\n"],"names":["pageToEditorDocument","page"],"mappings":"AAIO,MAAMA,uBAAuB,CAACC,OAC1B;QACH,GAAGA,IAAI;QACP,IAAIA,KAAK,EAAE;QACX,SAASA,KAAK,OAAO;QACrB,QAAQA,KAAK,MAAM;QACnB,UAAUA,KAAK,QAAQ;QACvB,YAAYA,KAAK,UAAU;QAC3B,UAAUA,KAAK,QAAQ;QACvB,UAAUA,KAAK,QAAQ;QACvB,UAAUA,KAAK,QAAQ;QACvB,OAAO,CAAC;IACZ"}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionDelete: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionDelete: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionDuplicate: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionDuplicate: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionMovePage: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionMovePage: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionPublish: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionPublish: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionUnpublish: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionUnpublish: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const DocumentList: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const DocumentList: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -21,6 +21,7 @@ import { WB_PAGE_APP } from "../../../../constants.js";
21
21
  import { Routes } from "../../../../routes.js";
22
22
  import { PageListWithConfig } from "../configs/index.js";
23
23
  import { DocumentList } from "./DocumentList.js";
24
+ import { WbPagesBreadcrumbs } from "./WbPagesBreadcrumbs.js";
24
25
  const PagesListInner = observer(()=>{
25
26
  const { presenter } = useFeature(PageListPresenterFeature);
26
27
  const { route } = useRoute(Routes.Pages.List);
@@ -32,7 +33,7 @@ const PagesListInner = observer(()=>{
32
33
  }, [
33
34
  presenter
34
35
  ]);
35
- return /*#__PURE__*/ react.createElement(DialogsProvider, null, /*#__PURE__*/ react.createElement(PageListWithConfig, null, /*#__PURE__*/ react.createElement(DocumentList, null), /*#__PURE__*/ react.createElement(RouteParamsSync, {
36
+ return /*#__PURE__*/ react.createElement(DialogsProvider, null, /*#__PURE__*/ react.createElement(PageListWithConfig, null, /*#__PURE__*/ react.createElement(WbPagesBreadcrumbs, null), /*#__PURE__*/ react.createElement(DocumentList, null), /*#__PURE__*/ react.createElement(RouteParamsSync, {
36
37
  route: Routes.Pages.List,
37
38
  fields: (fields)=>[
38
39
  fields.create({
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/pages/PageList/components/PagesList.js","sources":["../../../../../src/presentation/pages/PageList/components/PagesList.tsx"],"sourcesContent":["import React, { useMemo, useEffect } from \"react\";\nimport { useRoute, AdminLayout, DialogsProvider } from \"@webiny/app-admin\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { RouteParamsSync } from \"@webiny/app/presentation/router/components/RouteParamsSync.js\";\nimport { observer } from \"mobx-react-lite\";\nimport { FoldersFeature } from \"@webiny/app-aco/features/folders/feature.js\";\nimport { FolderTreePresenterFeature } from \"@webiny/app-aco/presentation/folderTree/feature.js\";\nimport { ListPresenterFeature } from \"@webiny/app-admin/presentation/listPresenter/feature.js\";\nimport { SharedPageInfrastructureFeature } from \"~/features/pages/shared/feature.js\";\nimport { ListPagesFeature } from \"~/features/pages/listPages/feature.js\";\nimport { DeletePageFeature } from \"~/features/pages/deletePage/feature.js\";\nimport { PublishPageFeature } from \"~/features/pages/publishPage/feature.js\";\nimport { UnpublishPageFeature } from \"~/features/pages/unpublishPage/feature.js\";\nimport { MovePageFeature } from \"~/features/pages/movePage/feature.js\";\nimport { DuplicatePageFeature } from \"~/features/pages/duplicatePage/feature.js\";\nimport { WbTrashBinFeature } from \"~/features/pages/trashBin/feature.js\";\nimport { PageListPresenterFeature } from \"~/presentation/pages/PageList/feature.js\";\nimport {\n BulkPublishFeature,\n BulkUnpublishFeature,\n BulkDeleteFeature,\n BulkDuplicateFeature,\n BulkMoveFeature\n} from \"~/presentation/pages/bulkActions/feature.js\";\nimport { TableRowMapper } from \"./Table/TableRowMapper.js\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PageListWithConfig } from \"../configs/index.js\";\nimport { DocumentList } from \"./DocumentList.js\";\n\nconst PagesListInner = observer(() => {\n const { presenter } = useFeature(PageListPresenterFeature);\n const { route } = useRoute(Routes.Pages.List);\n\n useEffect(() => {\n presenter.init({\n initialFolderId: route.params.folderId || \"root\"\n });\n return () => presenter.dispose();\n }, [presenter]);\n\n return (\n <DialogsProvider>\n <PageListWithConfig>\n <DocumentList />\n <RouteParamsSync\n route={Routes.Pages.List}\n fields={fields => [\n fields.create<string>({\n param: \"folderId\",\n read: () => presenter.folders.vm.currentFolderId ?? undefined,\n write: value => {\n presenter.folders.selectFolder(value ?? null);\n }\n }),\n fields.create<string>({\n param: \"search\",\n read: () => presenter.list.vm.search || undefined,\n write: value => {\n if (value) {\n presenter.list.actions.search.set(value);\n } else {\n presenter.list.actions.search.clear();\n }\n }\n })\n ]}\n />\n </PageListWithConfig>\n </DialogsProvider>\n );\n});\n\nexport const PagesList = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n\n SharedPageInfrastructureFeature.register(child);\n FoldersFeature.register(child, { type: WB_PAGE_APP });\n FolderTreePresenterFeature.register(child);\n ListPresenterFeature.register(child);\n ListPagesFeature.register(child);\n DeletePageFeature.register(child);\n PublishPageFeature.register(child);\n UnpublishPageFeature.register(child);\n MovePageFeature.register(child);\n DuplicatePageFeature.register(child);\n WbTrashBinFeature.register(child);\n BulkPublishFeature.register(child);\n BulkUnpublishFeature.register(child);\n BulkDeleteFeature.register(child);\n BulkDuplicateFeature.register(child);\n BulkMoveFeature.register(child);\n child.register(TableRowMapper);\n PageListPresenterFeature.register(child);\n\n return child;\n }, []);\n\n return (\n <AdminLayout title={\"Pages - Website Builder\"}>\n <DiContainerProvider container={scopedContainer}>\n <PagesListInner />\n </DiContainerProvider>\n </AdminLayout>\n );\n};\n"],"names":["PagesListInner","observer","presenter","useFeature","PageListPresenterFeature","route","useRoute","Routes","useEffect","DialogsProvider","PageListWithConfig","DocumentList","RouteParamsSync","fields","undefined","value","PagesList","container","useContainer","scopedContainer","useMemo","child","SharedPageInfrastructureFeature","FoldersFeature","WB_PAGE_APP","FolderTreePresenterFeature","ListPresenterFeature","ListPagesFeature","DeletePageFeature","PublishPageFeature","UnpublishPageFeature","MovePageFeature","DuplicatePageFeature","WbTrashBinFeature","BulkPublishFeature","BulkUnpublishFeature","BulkDeleteFeature","BulkDuplicateFeature","BulkMoveFeature","TableRowMapper","AdminLayout","DiContainerProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAMA,iBAAiBC,SAAS;IAC5B,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASC,OAAO,KAAK,CAAC,IAAI;IAE5CC,UAAU;QACNN,UAAU,IAAI,CAAC;YACX,iBAAiBG,MAAM,MAAM,CAAC,QAAQ,IAAI;QAC9C;QACA,OAAO,IAAMH,UAAU,OAAO;IAClC,GAAG;QAACA;KAAU;IAEd,OAAO,WAAP,GACI,oBAACO,iBAAeA,MAAAA,WAAAA,GACZ,oBAACC,oBAAkBA,MAAAA,WAAAA,GACf,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,iBAAeA;QACZ,OAAOL,OAAO,KAAK,CAAC,IAAI;QACxB,QAAQM,CAAAA,SAAU;gBACdA,OAAO,MAAM,CAAS;oBAClB,OAAO;oBACP,MAAM,IAAMX,UAAU,OAAO,CAAC,EAAE,CAAC,eAAe,IAAIY;oBACpD,OAAOC,CAAAA;wBACHb,UAAU,OAAO,CAAC,YAAY,CAACa,SAAS;oBAC5C;gBACJ;gBACAF,OAAO,MAAM,CAAS;oBAClB,OAAO;oBACP,MAAM,IAAMX,UAAU,IAAI,CAAC,EAAE,CAAC,MAAM,IAAIY;oBACxC,OAAOC,CAAAA;wBACH,IAAIA,OACAb,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAACa;6BAElCb,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;oBAE3C;gBACJ;aACH;;AAKrB;AAEO,MAAMc,YAAY;IACrB,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBC,QAAQ;QAC5B,MAAMC,QAAQJ,UAAU,oBAAoB;QAE5CK,gCAAgC,QAAQ,CAACD;QACzCE,eAAe,QAAQ,CAACF,OAAO;YAAE,MAAMG;QAAY;QACnDC,2BAA2B,QAAQ,CAACJ;QACpCK,qBAAqB,QAAQ,CAACL;QAC9BM,iBAAiB,QAAQ,CAACN;QAC1BO,kBAAkB,QAAQ,CAACP;QAC3BQ,mBAAmB,QAAQ,CAACR;QAC5BS,qBAAqB,QAAQ,CAACT;QAC9BU,gBAAgB,QAAQ,CAACV;QACzBW,qBAAqB,QAAQ,CAACX;QAC9BY,kBAAkB,QAAQ,CAACZ;QAC3Ba,mBAAmB,QAAQ,CAACb;QAC5Bc,qBAAqB,QAAQ,CAACd;QAC9Be,kBAAkB,QAAQ,CAACf;QAC3BgB,qBAAqB,QAAQ,CAAChB;QAC9BiB,gBAAgB,QAAQ,CAACjB;QACzBA,MAAM,QAAQ,CAACkB;QACfnC,yBAAyB,QAAQ,CAACiB;QAElC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACmB,aAAWA;QAAC,OAAO;qBAChB,oBAACC,qBAAmBA;QAAC,WAAWtB;qBAC5B,oBAACnB,gBAAcA;AAI/B"}
1
+ {"version":3,"file":"presentation/pages/PageList/components/PagesList.js","sources":["../../../../../src/presentation/pages/PageList/components/PagesList.tsx"],"sourcesContent":["import React, { useMemo, useEffect } from \"react\";\nimport { useRoute, AdminLayout, DialogsProvider } from \"@webiny/app-admin\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { RouteParamsSync } from \"@webiny/app/presentation/router/components/RouteParamsSync.js\";\nimport { observer } from \"mobx-react-lite\";\nimport { FoldersFeature } from \"@webiny/app-aco/features/folders/feature.js\";\nimport { FolderTreePresenterFeature } from \"@webiny/app-aco/presentation/folderTree/feature.js\";\nimport { ListPresenterFeature } from \"@webiny/app-admin/presentation/listPresenter/feature.js\";\nimport { SharedPageInfrastructureFeature } from \"~/features/pages/shared/feature.js\";\nimport { ListPagesFeature } from \"~/features/pages/listPages/feature.js\";\nimport { DeletePageFeature } from \"~/features/pages/deletePage/feature.js\";\nimport { PublishPageFeature } from \"~/features/pages/publishPage/feature.js\";\nimport { UnpublishPageFeature } from \"~/features/pages/unpublishPage/feature.js\";\nimport { MovePageFeature } from \"~/features/pages/movePage/feature.js\";\nimport { DuplicatePageFeature } from \"~/features/pages/duplicatePage/feature.js\";\nimport { WbTrashBinFeature } from \"~/features/pages/trashBin/feature.js\";\nimport { PageListPresenterFeature } from \"~/presentation/pages/PageList/feature.js\";\nimport {\n BulkPublishFeature,\n BulkUnpublishFeature,\n BulkDeleteFeature,\n BulkDuplicateFeature,\n BulkMoveFeature\n} from \"~/presentation/pages/bulkActions/feature.js\";\nimport { TableRowMapper } from \"./Table/TableRowMapper.js\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PageListWithConfig } from \"../configs/index.js\";\nimport { DocumentList } from \"./DocumentList.js\";\nimport { WbPagesBreadcrumbs } from \"./WbPagesBreadcrumbs.js\";\n\nconst PagesListInner = observer(() => {\n const { presenter } = useFeature(PageListPresenterFeature);\n const { route } = useRoute(Routes.Pages.List);\n\n useEffect(() => {\n presenter.init({\n initialFolderId: route.params.folderId || \"root\"\n });\n return () => presenter.dispose();\n }, [presenter]);\n\n return (\n <DialogsProvider>\n <PageListWithConfig>\n <WbPagesBreadcrumbs />\n <DocumentList />\n <RouteParamsSync\n route={Routes.Pages.List}\n fields={fields => [\n fields.create<string>({\n param: \"folderId\",\n read: () => presenter.folders.vm.currentFolderId ?? undefined,\n write: value => {\n presenter.folders.selectFolder(value ?? null);\n }\n }),\n fields.create<string>({\n param: \"search\",\n read: () => presenter.list.vm.search || undefined,\n write: value => {\n if (value) {\n presenter.list.actions.search.set(value);\n } else {\n presenter.list.actions.search.clear();\n }\n }\n })\n ]}\n />\n </PageListWithConfig>\n </DialogsProvider>\n );\n});\n\nexport const PagesList = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n\n SharedPageInfrastructureFeature.register(child);\n FoldersFeature.register(child, { type: WB_PAGE_APP });\n FolderTreePresenterFeature.register(child);\n ListPresenterFeature.register(child);\n ListPagesFeature.register(child);\n DeletePageFeature.register(child);\n PublishPageFeature.register(child);\n UnpublishPageFeature.register(child);\n MovePageFeature.register(child);\n DuplicatePageFeature.register(child);\n WbTrashBinFeature.register(child);\n BulkPublishFeature.register(child);\n BulkUnpublishFeature.register(child);\n BulkDeleteFeature.register(child);\n BulkDuplicateFeature.register(child);\n BulkMoveFeature.register(child);\n child.register(TableRowMapper);\n PageListPresenterFeature.register(child);\n\n return child;\n }, []);\n\n return (\n <AdminLayout title={\"Pages - Website Builder\"}>\n <DiContainerProvider container={scopedContainer}>\n <PagesListInner />\n </DiContainerProvider>\n </AdminLayout>\n );\n};\n"],"names":["PagesListInner","observer","presenter","useFeature","PageListPresenterFeature","route","useRoute","Routes","useEffect","DialogsProvider","PageListWithConfig","WbPagesBreadcrumbs","DocumentList","RouteParamsSync","fields","undefined","value","PagesList","container","useContainer","scopedContainer","useMemo","child","SharedPageInfrastructureFeature","FoldersFeature","WB_PAGE_APP","FolderTreePresenterFeature","ListPresenterFeature","ListPagesFeature","DeletePageFeature","PublishPageFeature","UnpublishPageFeature","MovePageFeature","DuplicatePageFeature","WbTrashBinFeature","BulkPublishFeature","BulkUnpublishFeature","BulkDeleteFeature","BulkDuplicateFeature","BulkMoveFeature","TableRowMapper","AdminLayout","DiContainerProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAMA,iBAAiBC,SAAS;IAC5B,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASC,OAAO,KAAK,CAAC,IAAI;IAE5CC,UAAU;QACNN,UAAU,IAAI,CAAC;YACX,iBAAiBG,MAAM,MAAM,CAAC,QAAQ,IAAI;QAC9C;QACA,OAAO,IAAMH,UAAU,OAAO;IAClC,GAAG;QAACA;KAAU;IAEd,OAAO,WAAP,GACI,oBAACO,iBAAeA,MAAAA,WAAAA,GACZ,oBAACC,oBAAkBA,MAAAA,WAAAA,GACf,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,iBAAeA;QACZ,OAAON,OAAO,KAAK,CAAC,IAAI;QACxB,QAAQO,CAAAA,SAAU;gBACdA,OAAO,MAAM,CAAS;oBAClB,OAAO;oBACP,MAAM,IAAMZ,UAAU,OAAO,CAAC,EAAE,CAAC,eAAe,IAAIa;oBACpD,OAAOC,CAAAA;wBACHd,UAAU,OAAO,CAAC,YAAY,CAACc,SAAS;oBAC5C;gBACJ;gBACAF,OAAO,MAAM,CAAS;oBAClB,OAAO;oBACP,MAAM,IAAMZ,UAAU,IAAI,CAAC,EAAE,CAAC,MAAM,IAAIa;oBACxC,OAAOC,CAAAA;wBACH,IAAIA,OACAd,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAACc;6BAElCd,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;oBAE3C;gBACJ;aACH;;AAKrB;AAEO,MAAMe,YAAY;IACrB,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBC,QAAQ;QAC5B,MAAMC,QAAQJ,UAAU,oBAAoB;QAE5CK,gCAAgC,QAAQ,CAACD;QACzCE,eAAe,QAAQ,CAACF,OAAO;YAAE,MAAMG;QAAY;QACnDC,2BAA2B,QAAQ,CAACJ;QACpCK,qBAAqB,QAAQ,CAACL;QAC9BM,iBAAiB,QAAQ,CAACN;QAC1BO,kBAAkB,QAAQ,CAACP;QAC3BQ,mBAAmB,QAAQ,CAACR;QAC5BS,qBAAqB,QAAQ,CAACT;QAC9BU,gBAAgB,QAAQ,CAACV;QACzBW,qBAAqB,QAAQ,CAACX;QAC9BY,kBAAkB,QAAQ,CAACZ;QAC3Ba,mBAAmB,QAAQ,CAACb;QAC5Bc,qBAAqB,QAAQ,CAACd;QAC9Be,kBAAkB,QAAQ,CAACf;QAC3BgB,qBAAqB,QAAQ,CAAChB;QAC9BiB,gBAAgB,QAAQ,CAACjB;QACzBA,MAAM,QAAQ,CAACkB;QACfpC,yBAAyB,QAAQ,CAACkB;QAElC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACmB,aAAWA;QAAC,OAAO;qBAChB,oBAACC,qBAAmBA;QAAC,WAAWtB;qBAC5B,oBAACpB,gBAAcA;AAI/B"}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const Table: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const Table: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ /**
3
+ * Emits the pages-list trail (`Website Builder › Pages › <folder path>`) through the React
4
+ * Config API. The folder path comes from the scoped folder-tree presenter, so this is a plain
5
+ * observer that renders `<Breadcrumb>` entries; the header marks the last as current.
6
+ */
7
+ export declare const WbPagesBreadcrumbs: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
8
+ readonly type: () => React.JSX.Element;
9
+ };
@@ -0,0 +1,40 @@
1
+ import react from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { Breadcrumb } from "@webiny/app-admin";
4
+ import { usePageListPresenter } from "../PageListPresenterProvider.js";
5
+ import { Routes } from "../../../../routes.js";
6
+ const WbPagesBreadcrumbs_WbPagesBreadcrumbs = observer(function() {
7
+ const presenter = usePageListPresenter();
8
+ const foldersPresenter = presenter.folders;
9
+ const folders = foldersPresenter.vm;
10
+ const ancestorIds = folders.currentFolderId ? [
11
+ ...foldersPresenter.getAncestorIds(folders.currentFolderId)
12
+ ].reverse() : [];
13
+ const titleById = new Map(folders.folders.map((folder)=>[
14
+ folder.id,
15
+ folder.title
16
+ ]));
17
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Breadcrumb, {
18
+ name: "wb",
19
+ label: "Website Builder"
20
+ }), /*#__PURE__*/ react.createElement(Breadcrumb, {
21
+ name: "wb.pages",
22
+ label: "Pages",
23
+ to: {
24
+ route: Routes.Pages.List
25
+ }
26
+ }), ancestorIds.map((id)=>/*#__PURE__*/ react.createElement(Breadcrumb, {
27
+ key: id,
28
+ name: id,
29
+ label: titleById.get(id) ?? "…",
30
+ to: {
31
+ route: Routes.Pages.List,
32
+ params: {
33
+ folderId: id
34
+ }
35
+ }
36
+ })));
37
+ });
38
+ export { WbPagesBreadcrumbs_WbPagesBreadcrumbs as WbPagesBreadcrumbs };
39
+
40
+ //# sourceMappingURL=WbPagesBreadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/pages/PageList/components/WbPagesBreadcrumbs.js","sources":["../../../../../src/presentation/pages/PageList/components/WbPagesBreadcrumbs.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Breadcrumb } from \"@webiny/app-admin\";\nimport { usePageListPresenter } from \"../PageListPresenterProvider.js\";\nimport { Routes } from \"~/routes.js\";\n\n/**\n * Emits the pages-list trail (`Website Builder › Pages › <folder path>`) through the React\n * Config API. The folder path comes from the scoped folder-tree presenter, so this is a plain\n * observer that renders `<Breadcrumb>` entries; the header marks the last as current.\n */\nexport const WbPagesBreadcrumbs = observer(function WbPagesBreadcrumbs() {\n const presenter = usePageListPresenter();\n const foldersPresenter = presenter.folders;\n const folders = foldersPresenter.vm;\n\n // `getAncestorIds` walks self → root; reverse it to render root → current.\n const ancestorIds = folders.currentFolderId\n ? [...foldersPresenter.getAncestorIds(folders.currentFolderId)].reverse()\n : [];\n const titleById = new Map(folders.folders.map(folder => [folder.id, folder.title]));\n\n return (\n <>\n <Breadcrumb name={\"wb\"} label={\"Website Builder\"} />\n <Breadcrumb name={\"wb.pages\"} label={\"Pages\"} to={{ route: Routes.Pages.List }} />\n {ancestorIds.map(id => (\n <Breadcrumb\n key={id}\n name={id}\n label={titleById.get(id) ?? \"…\"}\n to={{ route: Routes.Pages.List, params: { folderId: id } }}\n />\n ))}\n </>\n );\n});\n"],"names":["WbPagesBreadcrumbs","observer","presenter","usePageListPresenter","foldersPresenter","folders","ancestorIds","titleById","Map","folder","Breadcrumb","Routes","id"],"mappings":";;;;;AAWO,MAAMA,wCAAqBC,SAAS;IACvC,MAAMC,YAAYC;IAClB,MAAMC,mBAAmBF,UAAU,OAAO;IAC1C,MAAMG,UAAUD,iBAAiB,EAAE;IAGnC,MAAME,cAAcD,QAAQ,eAAe,GACrC;WAAID,iBAAiB,cAAc,CAACC,QAAQ,eAAe;KAAE,CAAC,OAAO,KACrE,EAAE;IACR,MAAME,YAAY,IAAIC,IAAIH,QAAQ,OAAO,CAAC,GAAG,CAACI,CAAAA,SAAU;YAACA,OAAO,EAAE;YAAEA,OAAO,KAAK;SAAC;IAEjF,OAAO,WAAP,GACI,wDACI,oBAACC,YAAUA;QAAC,MAAM;QAAM,OAAO;sBAC/B,oBAACA,YAAUA;QAAC,MAAM;QAAY,OAAO;QAAS,IAAI;YAAE,OAAOC,OAAO,KAAK,CAAC,IAAI;QAAC;QAC5EL,YAAY,GAAG,CAACM,CAAAA,KAAAA,WAAAA,GACb,oBAACF,YAAUA;YACP,KAAKE;YACL,MAAMA;YACN,OAAOL,UAAU,GAAG,CAACK,OAAO;YAC5B,IAAI;gBAAE,OAAOD,OAAO,KAAK,CAAC,IAAI;gBAAE,QAAQ;oBAAE,UAAUC;gBAAG;YAAE;;AAK7E"}
@@ -1,2 +1,2 @@
1
1
  import React from "react";
2
- export declare const TranslatePageConfig: () => React.JSX.Element;
2
+ export declare const TranslatePageConfig: () => React.JSX.Element | null;
@@ -1,11 +1,14 @@
1
1
  import react from "react";
2
- import { AdminConfig } from "@webiny/app-admin";
2
+ import { AdminConfig, useFeatureFlags } from "@webiny/app-admin";
3
3
  import { HasPermission } from "../../security/HasPermission.js";
4
4
  import { TranslatePageAction } from "./TranslatePageAction.js";
5
5
  import { TRANSLATE_PAGE_DIALOG, TranslatePageDialog } from "./TranslatePageDialog.js";
6
6
  import { PageListConfig } from "../../../exports/admin/website-builder/page/list.js";
7
7
  const { Browser: Browser } = PageListConfig;
8
- const TranslatePageConfig = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Dialog, {
8
+ const TranslatePageConfig = ()=>{
9
+ const featureFlags = useFeatureFlags();
10
+ if (!featureFlags.isEnabled("aiPowerups.websiteBuilder.pageTranslation")) return null;
11
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Dialog, {
9
12
  name: TRANSLATE_PAGE_DIALOG,
10
13
  element: /*#__PURE__*/ react.createElement(TranslatePageDialog, null)
11
14
  })), /*#__PURE__*/ react.createElement(PageListConfig, null, /*#__PURE__*/ react.createElement(HasPermission, {
@@ -15,6 +18,7 @@ const TranslatePageConfig = ()=>/*#__PURE__*/ react.createElement(react.Fragment
15
18
  name: "translate",
16
19
  element: /*#__PURE__*/ react.createElement(TranslatePageAction, null)
17
20
  }))));
21
+ };
18
22
  export { TranslatePageConfig };
19
23
 
20
24
  //# sourceMappingURL=TranslatePageConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/pages/TranslatePage/TranslatePageConfig.js","sources":["../../../../src/presentation/pages/TranslatePage/TranslatePageConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\nimport { TranslatePageAction } from \"./TranslatePageAction.js\";\nimport { TranslatePageDialog, TRANSLATE_PAGE_DIALOG } from \"./TranslatePageDialog.js\";\nimport { PageListConfig } from \"~/exports/admin/website-builder/page/list.js\";\n\nconst { Browser } = PageListConfig;\n\nexport const TranslatePageConfig = () => {\n return (\n <>\n <AdminConfig>\n <AdminConfig.Dialog\n name={TRANSLATE_PAGE_DIALOG}\n element={<TranslatePageDialog />}\n />\n </AdminConfig>\n <PageListConfig>\n <HasPermission entity=\"page\" action=\"create\">\n <Browser.Page.Action name=\"translate\" element={<TranslatePageAction />} />\n </HasPermission>\n </PageListConfig>\n </>\n );\n};\n"],"names":["Browser","PageListConfig","TranslatePageConfig","AdminConfig","TRANSLATE_PAGE_DIALOG","TranslatePageDialog","HasPermission","TranslatePageAction"],"mappings":";;;;;;AAOA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,sBAAsB,IACxB,WAAP,GACI,wDACI,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,MAAM;QACf,MAAMC;QACN,uBAAS,oBAACC,qBAAmBA;uBAGrC,oBAACJ,gBAAcA,MAAAA,WAAAA,GACX,oBAACK,eAAaA;QAAC,QAAO;QAAO,QAAO;qBAChC,oBAACN,QAAQ,IAAI,CAAC,MAAM;QAAC,MAAK;QAAY,uBAAS,oBAACO,qBAAmBA"}
1
+ {"version":3,"file":"presentation/pages/TranslatePage/TranslatePageConfig.js","sources":["../../../../src/presentation/pages/TranslatePage/TranslatePageConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, useFeatureFlags } from \"@webiny/app-admin\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\nimport { TranslatePageAction } from \"./TranslatePageAction.js\";\nimport { TranslatePageDialog, TRANSLATE_PAGE_DIALOG } from \"./TranslatePageDialog.js\";\nimport { PageListConfig } from \"~/exports/admin/website-builder/page/list.js\";\n\nconst { Browser } = PageListConfig;\n\nexport const TranslatePageConfig = () => {\n const featureFlags = useFeatureFlags();\n\n if (!featureFlags.isEnabled(\"aiPowerups.websiteBuilder.pageTranslation\")) {\n return null;\n }\n\n return (\n <>\n <AdminConfig>\n <AdminConfig.Dialog\n name={TRANSLATE_PAGE_DIALOG}\n element={<TranslatePageDialog />}\n />\n </AdminConfig>\n <PageListConfig>\n <HasPermission entity=\"page\" action=\"create\">\n <Browser.Page.Action name=\"translate\" element={<TranslatePageAction />} />\n </HasPermission>\n </PageListConfig>\n </>\n );\n};\n"],"names":["Browser","PageListConfig","TranslatePageConfig","featureFlags","useFeatureFlags","AdminConfig","TRANSLATE_PAGE_DIALOG","TranslatePageDialog","HasPermission","TranslatePageAction"],"mappings":";;;;;;AAOA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,sBAAsB;IAC/B,MAAMC,eAAeC;IAErB,IAAI,CAACD,aAAa,SAAS,CAAC,8CACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACE,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,MAAM;QACf,MAAMC;QACN,uBAAS,oBAACC,qBAAmBA;uBAGrC,oBAACN,gBAAcA,MAAAA,WAAAA,GACX,oBAACO,eAAaA;QAAC,QAAO;QAAO,QAAO;qBAChC,oBAACR,QAAQ,IAAI,CAAC,MAAM;QAAC,MAAK;QAAY,uBAAS,oBAACS,qBAAmBA;;AAKvF"}
@@ -1,4 +1,4 @@
1
- import react from "react";
1
+ import react, { useState } from "react";
2
2
  import { useDialog } from "@webiny/app-admin";
3
3
  import { Dialog, Grid } from "@webiny/admin-ui";
4
4
  import { useLanguages } from "@webiny/languages/exports/admin/languages.js";
@@ -15,15 +15,21 @@ const TranslatePageDialog = ()=>{
15
15
  const { translatePage } = useTranslatePage();
16
16
  const { goToPageEditor } = useEditPageUrl();
17
17
  const { languages, loading } = useLanguages();
18
+ const [translating, setTranslating] = useState(false);
18
19
  const handleSubmit = async (data)=>{
19
20
  const { languageCode, folderId } = data;
20
- const newPage = await translatePage({
21
- id: params.pageId,
22
- languageCode,
23
- folderId
24
- });
25
- closeDialog();
26
- goToPageEditor(newPage.id);
21
+ setTranslating(true);
22
+ try {
23
+ const newPage = await translatePage({
24
+ id: params.pageId,
25
+ languageCode,
26
+ folderId
27
+ });
28
+ closeDialog();
29
+ goToPageEditor(newPage.id);
30
+ } finally{
31
+ setTranslating(false);
32
+ }
27
33
  };
28
34
  return /*#__PURE__*/ react.createElement(Form, {
29
35
  onSubmit: handleSubmit,
@@ -33,14 +39,20 @@ const TranslatePageDialog = ()=>{
33
39
  }, ({ submit })=>/*#__PURE__*/ react.createElement(Dialog, {
34
40
  open: true,
35
41
  onClose: closeDialog,
42
+ dismissible: !translating,
43
+ loading: translating ? {
44
+ text: "Translating page..."
45
+ } : void 0,
36
46
  title: "Translate Page",
37
47
  description: "Select a target language and destination folder",
38
48
  actions: /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Dialog.CancelAction, {
39
49
  onClick: closeDialog,
40
- text: "Cancel"
50
+ text: "Cancel",
51
+ disabled: translating
41
52
  }), /*#__PURE__*/ react.createElement(Dialog.ConfirmAction, {
42
53
  onClick: submit,
43
- text: loading ? "Loading..." : "Confirm"
54
+ text: loading ? "Loading..." : "Confirm",
55
+ disabled: translating
44
56
  }))
45
57
  }, /*#__PURE__*/ react.createElement(Grid, null, /*#__PURE__*/ react.createElement(Grid.Column, {
46
58
  span: 12
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/pages/TranslatePage/TranslatePageDialog.js","sources":["../../../../src/presentation/pages/TranslatePage/TranslatePageDialog.tsx"],"sourcesContent":["import React from \"react\";\nimport { useDialog } from \"@webiny/app-admin\";\nimport { Dialog, Grid } from \"@webiny/admin-ui\";\nimport { useLanguages } from \"@webiny/languages/exports/admin/languages.js\";\nimport { Bind, Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { FolderPicker } from \"@webiny/app-aco\";\nimport { useTranslatePage } from \"~/presentation/pages/hooks/useTranslatePage.js\";\nimport { useEditPageUrl } from \"~/presentation/pages/PageList/hooks/useEditPageUrl.js\";\nimport { translatePageParams } from \"./translatePageSchema.js\";\nimport { LanguageSelector } from \"~/presentation/components/LanguageSelector.js\";\n\nexport const TRANSLATE_PAGE_DIALOG = \"translatePage\";\n\nexport const TranslatePageDialog = () => {\n const { params, closeDialog } = useDialog(translatePageParams);\n const { translatePage } = useTranslatePage();\n const { goToPageEditor } = useEditPageUrl();\n const { languages, loading } = useLanguages();\n\n const handleSubmit = async (data: Record<string, unknown>) => {\n const { languageCode, folderId } = data as {\n languageCode: string;\n folderId: string;\n };\n\n const newPage = await translatePage({\n id: params.pageId,\n languageCode,\n folderId\n });\n\n closeDialog();\n goToPageEditor(newPage.id);\n };\n\n return (\n <Form onSubmit={handleSubmit} data={{ folderId: params.folderId }}>\n {({ submit }) => (\n <Dialog\n open={true}\n onClose={closeDialog}\n title=\"Translate Page\"\n description=\"Select a target language and destination folder\"\n actions={\n <>\n <Dialog.CancelAction onClick={closeDialog} text=\"Cancel\" />\n <Dialog.ConfirmAction\n onClick={submit}\n text={loading ? \"Loading...\" : \"Confirm\"}\n />\n </>\n }\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind name=\"languageCode\" validators={[validation.create(\"required\")]}>\n <LanguageSelector\n label=\"Target Language\"\n placeholder=\"Select a language\"\n currentLanguage={params.currentLanguage}\n languages={languages}\n />\n </Bind>\n </Grid.Column>\n\n <Grid.Column span={12}>\n <Bind name={\"folderId\"} defaultValue={params.folderId}>\n {({ value, onChange }) => (\n <FolderPicker\n label={\"Destination Folder\"}\n value={value}\n onChange={onChange}\n enableCreate={true}\n />\n )}\n </Bind>\n </Grid.Column>\n </Grid>\n </Dialog>\n )}\n </Form>\n );\n};\n"],"names":["TRANSLATE_PAGE_DIALOG","TranslatePageDialog","params","closeDialog","useDialog","translatePageParams","translatePage","useTranslatePage","goToPageEditor","useEditPageUrl","languages","loading","useLanguages","handleSubmit","data","languageCode","folderId","newPage","Form","submit","Dialog","Grid","Bind","validation","LanguageSelector","value","onChange","FolderPicker"],"mappings":";;;;;;;;;;;AAYO,MAAMA,wBAAwB;AAE9B,MAAMC,sBAAsB;IAC/B,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGC,UAAUC;IAC1C,MAAM,EAAEC,aAAa,EAAE,GAAGC;IAC1B,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAC3B,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGC;IAE/B,MAAMC,eAAe,OAAOC;QACxB,MAAM,EAAEC,YAAY,EAAEC,QAAQ,EAAE,GAAGF;QAKnC,MAAMG,UAAU,MAAMX,cAAc;YAChC,IAAIJ,OAAO,MAAM;YACjBa;YACAC;QACJ;QAEAb;QACAK,eAAeS,QAAQ,EAAE;IAC7B;IAEA,OAAO,WAAP,GACI,oBAACC,MAAIA;QAAC,UAAUL;QAAc,MAAM;YAAE,UAAUX,OAAO,QAAQ;QAAC;OAC3D,CAAC,EAAEiB,MAAM,EAAE,iBACR,oBAACC,QAAMA;YACH,MAAM;YACN,SAASjB;YACT,OAAM;YACN,aAAY;YACZ,uBACI,wDACI,oBAACiB,OAAO,YAAY;gBAAC,SAASjB;gBAAa,MAAK;8BAChD,oBAACiB,OAAO,aAAa;gBACjB,SAASD;gBACT,MAAMR,UAAU,eAAe;;yBAK3C,oBAACU,MAAIA,MAAAA,WAAAA,GACD,oBAACA,KAAK,MAAM;YAAC,MAAM;yBACf,oBAACC,MAAIA;YAAC,MAAK;YAAe,YAAY;gBAACC,WAAW,MAAM,CAAC;aAAY;yBACjE,oBAACC,kBAAgBA;YACb,OAAM;YACN,aAAY;YACZ,iBAAiBtB,OAAO,eAAe;YACvC,WAAWQ;4BAKvB,oBAACW,KAAK,MAAM;YAAC,MAAM;yBACf,oBAACC,MAAIA;YAAC,MAAM;YAAY,cAAcpB,OAAO,QAAQ;WAChD,CAAC,EAAEuB,KAAK,EAAEC,QAAQ,EAAE,iBACjB,oBAACC,cAAYA;gBACT,OAAO;gBACP,OAAOF;gBACP,UAAUC;gBACV,cAAc;;AAUtD"}
1
+ {"version":3,"file":"presentation/pages/TranslatePage/TranslatePageDialog.js","sources":["../../../../src/presentation/pages/TranslatePage/TranslatePageDialog.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { useDialog } from \"@webiny/app-admin\";\nimport { Dialog, Grid } from \"@webiny/admin-ui\";\nimport { useLanguages } from \"@webiny/languages/exports/admin/languages.js\";\nimport { Bind, Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { FolderPicker } from \"@webiny/app-aco\";\nimport { useTranslatePage } from \"~/presentation/pages/hooks/useTranslatePage.js\";\nimport { useEditPageUrl } from \"~/presentation/pages/PageList/hooks/useEditPageUrl.js\";\nimport { translatePageParams } from \"./translatePageSchema.js\";\nimport { LanguageSelector } from \"~/presentation/components/LanguageSelector.js\";\n\nexport const TRANSLATE_PAGE_DIALOG = \"translatePage\";\n\nexport const TranslatePageDialog = () => {\n const { params, closeDialog } = useDialog(translatePageParams);\n const { translatePage } = useTranslatePage();\n const { goToPageEditor } = useEditPageUrl();\n const { languages, loading } = useLanguages();\n const [translating, setTranslating] = useState(false);\n\n const handleSubmit = async (data: Record<string, unknown>) => {\n const { languageCode, folderId } = data as {\n languageCode: string;\n folderId: string;\n };\n\n setTranslating(true);\n\n try {\n const newPage = await translatePage({\n id: params.pageId,\n languageCode,\n folderId\n });\n\n closeDialog();\n goToPageEditor(newPage.id);\n } finally {\n setTranslating(false);\n }\n };\n\n return (\n <Form onSubmit={handleSubmit} data={{ folderId: params.folderId }}>\n {({ submit }) => (\n <Dialog\n open={true}\n onClose={closeDialog}\n dismissible={!translating}\n loading={translating ? { text: \"Translating page...\" } : undefined}\n title=\"Translate Page\"\n description=\"Select a target language and destination folder\"\n actions={\n <>\n <Dialog.CancelAction\n onClick={closeDialog}\n text=\"Cancel\"\n disabled={translating}\n />\n <Dialog.ConfirmAction\n onClick={submit}\n text={loading ? \"Loading...\" : \"Confirm\"}\n disabled={translating}\n />\n </>\n }\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind name=\"languageCode\" validators={[validation.create(\"required\")]}>\n <LanguageSelector\n label=\"Target Language\"\n placeholder=\"Select a language\"\n currentLanguage={params.currentLanguage}\n languages={languages}\n />\n </Bind>\n </Grid.Column>\n\n <Grid.Column span={12}>\n <Bind name={\"folderId\"} defaultValue={params.folderId}>\n {({ value, onChange }) => (\n <FolderPicker\n label={\"Destination Folder\"}\n value={value}\n onChange={onChange}\n enableCreate={true}\n />\n )}\n </Bind>\n </Grid.Column>\n </Grid>\n </Dialog>\n )}\n </Form>\n );\n};\n"],"names":["TRANSLATE_PAGE_DIALOG","TranslatePageDialog","params","closeDialog","useDialog","translatePageParams","translatePage","useTranslatePage","goToPageEditor","useEditPageUrl","languages","loading","useLanguages","translating","setTranslating","useState","handleSubmit","data","languageCode","folderId","newPage","Form","submit","Dialog","undefined","Grid","Bind","validation","LanguageSelector","value","onChange","FolderPicker"],"mappings":";;;;;;;;;;;AAYO,MAAMA,wBAAwB;AAE9B,MAAMC,sBAAsB;IAC/B,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGC,UAAUC;IAC1C,MAAM,EAAEC,aAAa,EAAE,GAAGC;IAC1B,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAC3B,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGC;IAC/B,MAAM,CAACC,aAAaC,eAAe,GAAGC,SAAS;IAE/C,MAAMC,eAAe,OAAOC;QACxB,MAAM,EAAEC,YAAY,EAAEC,QAAQ,EAAE,GAAGF;QAKnCH,eAAe;QAEf,IAAI;YACA,MAAMM,UAAU,MAAMd,cAAc;gBAChC,IAAIJ,OAAO,MAAM;gBACjBgB;gBACAC;YACJ;YAEAhB;YACAK,eAAeY,QAAQ,EAAE;QAC7B,SAAU;YACNN,eAAe;QACnB;IACJ;IAEA,OAAO,WAAP,GACI,oBAACO,MAAIA;QAAC,UAAUL;QAAc,MAAM;YAAE,UAAUd,OAAO,QAAQ;QAAC;OAC3D,CAAC,EAAEoB,MAAM,EAAE,iBACR,oBAACC,QAAMA;YACH,MAAM;YACN,SAASpB;YACT,aAAa,CAACU;YACd,SAASA,cAAc;gBAAE,MAAM;YAAsB,IAAIW;YACzD,OAAM;YACN,aAAY;YACZ,uBACI,wDACI,oBAACD,OAAO,YAAY;gBAChB,SAASpB;gBACT,MAAK;gBACL,UAAUU;8BAEd,oBAACU,OAAO,aAAa;gBACjB,SAASD;gBACT,MAAMX,UAAU,eAAe;gBAC/B,UAAUE;;yBAKtB,oBAACY,MAAIA,MAAAA,WAAAA,GACD,oBAACA,KAAK,MAAM;YAAC,MAAM;yBACf,oBAACC,MAAIA;YAAC,MAAK;YAAe,YAAY;gBAACC,WAAW,MAAM,CAAC;aAAY;yBACjE,oBAACC,kBAAgBA;YACb,OAAM;YACN,aAAY;YACZ,iBAAiB1B,OAAO,eAAe;YACvC,WAAWQ;4BAKvB,oBAACe,KAAK,MAAM;YAAC,MAAM;yBACf,oBAACC,MAAIA;YAAC,MAAM;YAAY,cAAcxB,OAAO,QAAQ;WAChD,CAAC,EAAE2B,KAAK,EAAEC,QAAQ,EAAE,iBACjB,oBAACC,cAAYA;gBACT,OAAO;gBACP,OAAOF;gBACP,UAAUC;gBACV,cAAc;;AAUtD"}
@@ -2,5 +2,5 @@ import { z } from "zod";
2
2
  export declare const translatePageParams: z.ZodObject<{
3
3
  pageId: z.ZodString;
4
4
  folderId: z.ZodString;
5
- currentLanguage: z.ZodString;
5
+ currentLanguage: z.ZodOptional<z.ZodString>;
6
6
  }, z.core.$strip>;
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  const translatePageParams = z.object({
3
3
  pageId: z.string(),
4
4
  folderId: z.string(),
5
- currentLanguage: z.string()
5
+ currentLanguage: z.string().optional()
6
6
  });
7
7
  export { translatePageParams };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/pages/TranslatePage/translatePageSchema.js","sources":["../../../../src/presentation/pages/TranslatePage/translatePageSchema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const translatePageParams = z.object({\n pageId: z.string(),\n folderId: z.string(),\n currentLanguage: z.string()\n});\n"],"names":["translatePageParams","z"],"mappings":";AAEO,MAAMA,sBAAsBC,EAAE,MAAM,CAAC;IACxC,QAAQA,EAAE,MAAM;IAChB,UAAUA,EAAE,MAAM;IAClB,iBAAiBA,EAAE,MAAM;AAC7B"}
1
+ {"version":3,"file":"presentation/pages/TranslatePage/translatePageSchema.js","sources":["../../../../src/presentation/pages/TranslatePage/translatePageSchema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const translatePageParams = z.object({\n pageId: z.string(),\n folderId: z.string(),\n currentLanguage: z.string().optional()\n});\n"],"names":["translatePageParams","z"],"mappings":";AAEO,MAAMA,sBAAsBC,EAAE,MAAM,CAAC;IACxC,QAAQA,EAAE,MAAM;IAChB,UAAUA,EAAE,MAAM;IAClB,iBAAiBA,EAAE,MAAM,GAAG,QAAQ;AACxC"}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const WbTrashBin: (() => React.JSX.Element | null) & {
3
- displayName: string;
2
+ export declare const WbTrashBin: (() => React.JSX.Element | null) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element | null;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionDelete: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionDelete: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const BulkActionMove: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const BulkActionMove: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const CreateRedirectDialog: (() => React.JSX.Element | null) & {
3
- displayName: string;
2
+ export declare const CreateRedirectDialog: (() => React.JSX.Element | null) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element | null;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const DocumentList: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const DocumentList: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const EditRedirectDialog: (() => React.JSX.Element | null) & {
3
- displayName: string;
2
+ export declare const EditRedirectDialog: (() => React.JSX.Element | null) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element | null;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
- export declare const Table: (() => React.JSX.Element) & {
3
- displayName: string;
2
+ export declare const Table: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
4
  };
@@ -1,10 +1,9 @@
1
1
  import type { FileManagerFileItem } from "@webiny/app-admin";
2
- export declare const fileManagerItemToValue: (file: FileManagerFileItem) => {
3
- id: string;
4
- name: string;
5
- size: number;
6
- mimeType: string;
7
- src: string;
8
- width: number | undefined;
9
- height: number | undefined;
10
- };
2
+ import { type Asset } from "@webiny/website-builder-sdk";
3
+ /**
4
+ * Build the unified {@link Asset} value from a picked File Manager item.
5
+ * For images, the per-usage `image` edit is seeded from the asset-level default
6
+ * (set in File Manager); from here it lives on the element value and is editable
7
+ * per placement.
8
+ */
9
+ export declare const fileManagerItemToValue: (file: FileManagerFileItem) => Asset;
@@ -1,12 +1,27 @@
1
- const fileManagerItemToValue = (file)=>({
1
+ import { getAssetCategory } from "@webiny/website-builder-sdk";
2
+ const fileManagerItemToValue = (file)=>{
3
+ const src = file.src || "";
4
+ const asset = {
2
5
  id: file.id,
6
+ src,
7
+ url: src,
3
8
  name: file.name,
4
- size: file.size,
5
- mimeType: file.type,
6
- src: file.src || "",
7
- width: file.width,
8
- height: file.height
9
- });
9
+ type: file.type,
10
+ size: file.size
11
+ };
12
+ if ("image" === getAssetCategory(file.type)) {
13
+ const meta = file.metadata?.image;
14
+ asset.image = {
15
+ width: meta?.width ?? file.width,
16
+ height: meta?.height ?? file.height,
17
+ crop: meta?.crop ?? void 0,
18
+ focalPoint: meta?.focalPoint ?? void 0,
19
+ alt: meta?.alt ?? void 0,
20
+ caption: meta?.caption ?? void 0
21
+ };
22
+ }
23
+ return asset;
24
+ };
10
25
  export { fileManagerItemToValue };
11
26
 
12
27
  //# sourceMappingURL=fileManagerItemToValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared/fileManagerItemToValue.js","sources":["../../src/shared/fileManagerItemToValue.ts"],"sourcesContent":["import type { FileManagerFileItem } from \"@webiny/app-admin\";\n\nexport const fileManagerItemToValue = (file: FileManagerFileItem) => {\n return {\n id: file.id,\n name: file.name,\n size: file.size,\n mimeType: file.type,\n src: file.src || \"\",\n width: file.width,\n height: file.height\n };\n};\n"],"names":["fileManagerItemToValue","file"],"mappings":"AAEO,MAAMA,yBAAyB,CAACC,OAC5B;QACH,IAAIA,KAAK,EAAE;QACX,MAAMA,KAAK,IAAI;QACf,MAAMA,KAAK,IAAI;QACf,UAAUA,KAAK,IAAI;QACnB,KAAKA,KAAK,GAAG,IAAI;QACjB,OAAOA,KAAK,KAAK;QACjB,QAAQA,KAAK,MAAM;IACvB"}
1
+ {"version":3,"file":"shared/fileManagerItemToValue.js","sources":["../../src/shared/fileManagerItemToValue.ts"],"sourcesContent":["import type { FileManagerFileItem } from \"@webiny/app-admin\";\nimport { getAssetCategory, type Asset } from \"@webiny/website-builder-sdk\";\n\n/**\n * Build the unified {@link Asset} value from a picked File Manager item.\n * For images, the per-usage `image` edit is seeded from the asset-level default\n * (set in File Manager); from here it lives on the element value and is editable\n * per placement.\n */\nexport const fileManagerItemToValue = (file: FileManagerFileItem): Asset => {\n const src = file.src || \"\";\n const asset: Asset = {\n id: file.id,\n src,\n url: src,\n name: file.name,\n type: file.type,\n size: file.size\n };\n\n if (getAssetCategory(file.type) === \"image\") {\n const meta = file.metadata?.image;\n asset.image = {\n width: meta?.width ?? file.width,\n height: meta?.height ?? file.height,\n crop: meta?.crop ?? undefined,\n focalPoint: meta?.focalPoint ?? undefined,\n alt: meta?.alt ?? undefined,\n caption: meta?.caption ?? undefined\n };\n }\n\n return asset;\n};\n"],"names":["fileManagerItemToValue","file","src","asset","getAssetCategory","meta","undefined"],"mappings":";AASO,MAAMA,yBAAyB,CAACC;IACnC,MAAMC,MAAMD,KAAK,GAAG,IAAI;IACxB,MAAME,QAAe;QACjB,IAAIF,KAAK,EAAE;QACXC;QACA,KAAKA;QACL,MAAMD,KAAK,IAAI;QACf,MAAMA,KAAK,IAAI;QACf,MAAMA,KAAK,IAAI;IACnB;IAEA,IAAIG,AAAgC,YAAhCA,iBAAiBH,KAAK,IAAI,GAAe;QACzC,MAAMI,OAAOJ,KAAK,QAAQ,EAAE;QAC5BE,MAAM,KAAK,GAAG;YACV,OAAOE,MAAM,SAASJ,KAAK,KAAK;YAChC,QAAQI,MAAM,UAAUJ,KAAK,MAAM;YACnC,MAAMI,MAAM,QAAQC;YACpB,YAAYD,MAAM,cAAcC;YAChC,KAAKD,MAAM,OAAOC;YAClB,SAASD,MAAM,WAAWC;QAC9B;IACJ;IAEA,OAAOH;AACX"}
@@ -1,20 +0,0 @@
1
- import __rslib_svgr_url__0__ from "../../../static/svg/list-ol.d64946f3.svg";
2
- import * as __rspack_external_react from "react";
3
- const SvgListOl = (props)=>/*#__PURE__*/ __rspack_external_react.createElement("svg", {
4
- xmlns: "http://www.w3.org/2000/svg",
5
- width: 16,
6
- height: 16,
7
- fill: "currentColor",
8
- className: "list-ol_svg__bi list-ol_svg__bi-list-ol",
9
- ...props
10
- }, /*#__PURE__*/ __rspack_external_react.createElement("path", {
11
- fillRule: "evenodd",
12
- d: "M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"
13
- }), /*#__PURE__*/ __rspack_external_react.createElement("path", {
14
- d: "M1.713 11.865v-.474H2c.217 0 .363-.137.363-.317 0-.185-.158-.31-.361-.31-.223 0-.367.152-.373.31h-.59c.016-.467.373-.787.986-.787.588-.002.954.291.957.703a.595.595 0 0 1-.492.594v.033a.615.615 0 0 1 .569.631c.003.533-.502.8-1.051.8-.656 0-1-.37-1.008-.794h.582c.008.178.186.306.422.309.254 0 .424-.145.422-.35-.002-.195-.155-.348-.414-.348h-.3zm-.004-4.699h-.604v-.035c0-.408.295-.844.958-.844.583 0 .96.326.96.756 0 .389-.257.617-.476.848l-.537.572v.03h1.054V9H1.143v-.395l.957-.99c.138-.142.293-.304.293-.508 0-.18-.147-.32-.342-.32a.33.33 0 0 0-.342.338zM2.564 5h-.635V2.924h-.031l-.598.42v-.567l.629-.443h.635z"
15
- }));
16
- const list_ol = __rslib_svgr_url__0__;
17
- export default list_ol;
18
- export { SvgListOl as ReactComponent };
19
-
20
- //# sourceMappingURL=list-ol.js.map