@webiny/app-website-builder 6.4.0-beta.2 → 6.4.0-beta.4

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 (209) hide show
  1. package/BaseEditor/components/DragPreview/DragCursorWrapper.d.ts +7 -0
  2. package/BaseEditor/components/DragPreview/DragCursorWrapper.js +17 -0
  3. package/BaseEditor/components/DragPreview/DragCursorWrapper.js.map +1 -0
  4. package/BaseEditor/components/DragPreview/DragPreview.js +37 -0
  5. package/BaseEditor/components/DragPreview/DragPreview.js.map +1 -0
  6. package/BaseEditor/components/DragPreview/index.d.ts +1 -0
  7. package/BaseEditor/components/DragPreview/index.js +1 -0
  8. package/BaseEditor/components/DragPreview/useDragPosition.d.ts +4 -0
  9. package/BaseEditor/components/DragPreview/useDragPosition.js +26 -0
  10. package/BaseEditor/components/DragPreview/useDragPosition.js.map +1 -0
  11. package/BaseEditor/components/Editor.js +1 -2
  12. package/BaseEditor/components/Editor.js.map +1 -1
  13. package/BaseEditor/config/EditorConfig.d.ts +4 -2
  14. package/BaseEditor/config/Layout.js +1 -1
  15. package/BaseEditor/config/Layout.js.map +1 -1
  16. package/BaseEditor/config/Sidebar/Layout.js +8 -14
  17. package/BaseEditor/config/Sidebar/Layout.js.map +1 -1
  18. package/BaseEditor/config/Sidebar/Sidebar.d.ts +1 -1
  19. package/BaseEditor/config/Sidebar/Sidebar.js +1 -1
  20. package/BaseEditor/config/Sidebar/Sidebar.js.map +1 -1
  21. package/BaseEditor/config/Sidebar/Tab.d.ts +2 -2
  22. package/BaseEditor/config/Sidebar/Tab.js +3 -3
  23. package/BaseEditor/config/Sidebar/Tab.js.map +1 -1
  24. package/BaseEditor/config/Toolbar/Layout.js +8 -14
  25. package/BaseEditor/config/Toolbar/Layout.js.map +1 -1
  26. package/BaseEditor/config/Toolbar/Tab.d.ts +10 -0
  27. package/BaseEditor/config/Toolbar/Tab.js +13 -0
  28. package/BaseEditor/config/Toolbar/Tab.js.map +1 -0
  29. package/BaseEditor/config/Toolbar/Toolbar.d.ts +1 -0
  30. package/BaseEditor/config/Toolbar/Toolbar.js +4 -2
  31. package/BaseEditor/config/Toolbar/Toolbar.js.map +1 -1
  32. package/BaseEditor/defaultConfig/Content/AddressBar/AddressBar.js +1 -4
  33. package/BaseEditor/defaultConfig/Content/AddressBar/AddressBar.js.map +1 -1
  34. package/BaseEditor/defaultConfig/Content/AddressBar/BreakpointSelector.js +20 -23
  35. package/BaseEditor/defaultConfig/Content/AddressBar/BreakpointSelector.js.map +1 -1
  36. package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js +1 -1
  37. package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js.map +1 -1
  38. package/BaseEditor/defaultConfig/Content/Breadcrumbs/styles.js +2 -2
  39. package/BaseEditor/defaultConfig/Content/Breadcrumbs/styles.js.map +1 -1
  40. package/BaseEditor/defaultConfig/Content/ContentPreviewConfig.js +6 -1
  41. package/BaseEditor/defaultConfig/Content/ContentPreviewConfig.js.map +1 -1
  42. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.d.ts +3 -0
  43. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js +6 -0
  44. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
  45. package/BaseEditor/defaultConfig/Content/Preview/Iframe.js +1 -1
  46. package/BaseEditor/defaultConfig/Content/Preview/Iframe.js.map +1 -1
  47. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlay.js +10 -6
  48. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlay.js.map +1 -1
  49. package/BaseEditor/defaultConfig/Content/Preview/Preview.js +2 -1
  50. package/BaseEditor/defaultConfig/Content/Preview/Preview.js.map +1 -1
  51. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js +12 -2
  52. package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js.map +1 -1
  53. package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js +1 -2
  54. package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js.map +1 -1
  55. package/BaseEditor/defaultConfig/Content/Preview/useResponsiveContainer.js +1 -1
  56. package/BaseEditor/defaultConfig/Content/Preview/useResponsiveContainer.js.map +1 -1
  57. package/BaseEditor/defaultConfig/DefaultEditorConfig.js +3 -5
  58. package/BaseEditor/defaultConfig/DefaultEditorConfig.js.map +1 -1
  59. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.d.ts +7 -0
  60. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.js +23 -0
  61. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.js.map +1 -0
  62. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js +12 -3
  63. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js.map +1 -1
  64. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js +6 -0
  65. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js.map +1 -1
  66. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useBindingsForElement.d.ts +5 -5
  67. package/BaseEditor/defaultConfig/Sidebar/InfoMessage.js +2 -2
  68. package/BaseEditor/defaultConfig/Sidebar/InfoMessage.js.map +1 -1
  69. package/BaseEditor/defaultConfig/Sidebar/InheritanceLabel.js +2 -0
  70. package/BaseEditor/defaultConfig/Sidebar/InheritanceLabel.js.map +1 -1
  71. package/BaseEditor/defaultConfig/Sidebar/SidebarEmptyState.d.ts +4 -0
  72. package/BaseEditor/defaultConfig/Sidebar/SidebarEmptyState.js +12 -0
  73. package/BaseEditor/defaultConfig/Sidebar/SidebarEmptyState.js.map +1 -0
  74. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.js +8 -5
  75. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.js.map +1 -1
  76. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js +11 -9
  77. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map +1 -1
  78. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.js +7 -4
  79. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.js.map +1 -1
  80. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.js +7 -4
  81. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.js.map +1 -1
  82. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background.js +8 -4
  83. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background.js.map +1 -1
  84. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/Border.js +1 -1
  85. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/Border.js.map +1 -1
  86. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.js +7 -4
  87. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.js.map +1 -1
  88. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.js +11 -14
  89. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.js.map +1 -1
  90. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.js +7 -4
  91. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.js.map +1 -1
  92. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.js +11 -14
  93. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.js.map +1 -1
  94. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border.js +6 -9
  95. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border.js.map +1 -1
  96. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.js +8 -5
  97. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.js.map +1 -1
  98. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.js +9 -8
  99. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.js.map +1 -1
  100. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout.js +8 -4
  101. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout.js.map +1 -1
  102. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/LinkedEditing.js +1 -5
  103. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/LinkedEditing.js.map +1 -1
  104. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.js +10 -21
  105. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.js.map +1 -1
  106. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/MarginPadding.js +2 -1
  107. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/MarginPadding.js.map +1 -1
  108. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.js +13 -16
  109. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.js.map +1 -1
  110. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding.js +6 -9
  111. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding.js.map +1 -1
  112. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.js +21 -7
  113. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.js.map +1 -1
  114. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/VisibilityGroup.js +4 -3
  115. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/VisibilityGroup.js.map +1 -1
  116. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.d.ts +8 -0
  117. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js +24 -0
  118. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js.map +1 -0
  119. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleAccordion.d.ts +8 -0
  120. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleAccordion.js +11 -0
  121. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleAccordion.js.map +1 -0
  122. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleAccordionItem.d.ts +9 -0
  123. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleAccordionItem.js +45 -0
  124. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleAccordionItem.js.map +1 -0
  125. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js +8 -3
  126. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js.map +1 -1
  127. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js +8 -7
  128. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js.map +1 -1
  129. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StylesStore.js +2 -2
  130. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StylesStore.js.map +1 -1
  131. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/UnitValuePicker.js +3 -1
  132. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/UnitValuePicker.js.map +1 -1
  133. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/ValueSelector.js +9 -8
  134. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/ValueSelector.js.map +1 -1
  135. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GridItem.d.ts +5 -0
  136. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GridItem.js +24 -0
  137. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GridItem.js.map +1 -0
  138. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GroupItemsGrid.d.ts +7 -0
  139. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GroupItemsGrid.js +18 -0
  140. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GroupItemsGrid.js.map +1 -0
  141. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GroupItemsList.d.ts +7 -0
  142. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GroupItemsList.js +18 -0
  143. package/BaseEditor/defaultConfig/Toolbar/InsertElements/GroupItemsList.js.map +1 -0
  144. package/BaseEditor/defaultConfig/Toolbar/InsertElements/InsertElements.js +72 -36
  145. package/BaseEditor/defaultConfig/Toolbar/InsertElements/InsertElements.js.map +1 -1
  146. package/BaseEditor/defaultConfig/Toolbar/InsertElements/InsertElementsTab.js +6 -7
  147. package/BaseEditor/defaultConfig/Toolbar/InsertElements/InsertElementsTab.js.map +1 -1
  148. package/BaseEditor/defaultConfig/Toolbar/InsertElements/ListItem.d.ts +5 -0
  149. package/BaseEditor/defaultConfig/Toolbar/InsertElements/ListItem.js +23 -0
  150. package/BaseEditor/defaultConfig/Toolbar/InsertElements/ListItem.js.map +1 -0
  151. package/BaseEditor/defaultConfig/Toolbar/Navigator/ElementActions.d.ts +4 -0
  152. package/BaseEditor/defaultConfig/Toolbar/Navigator/ElementActions.js +29 -0
  153. package/BaseEditor/defaultConfig/Toolbar/Navigator/ElementActions.js.map +1 -0
  154. package/BaseEditor/defaultConfig/Toolbar/Navigator/LayoutIllustration.d.ts +2 -0
  155. package/BaseEditor/defaultConfig/Toolbar/Navigator/LayoutIllustration.js +94 -0
  156. package/BaseEditor/defaultConfig/Toolbar/Navigator/LayoutIllustration.js.map +1 -0
  157. package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.js +12 -111
  158. package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.js.map +1 -1
  159. package/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorEmptyState.d.ts +2 -0
  160. package/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorEmptyState.js +20 -0
  161. package/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorEmptyState.js.map +1 -0
  162. package/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorTab.js +6 -7
  163. package/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorTab.js.map +1 -1
  164. package/BaseEditor/defaultConfig/Toolbar/Navigator/Placeholder.d.ts +7 -0
  165. package/BaseEditor/defaultConfig/Toolbar/Navigator/Placeholder.js +16 -0
  166. package/BaseEditor/defaultConfig/Toolbar/Navigator/Placeholder.js.map +1 -0
  167. package/BaseEditor/defaultConfig/Toolbar/Navigator/navigatorUtils.d.ts +32 -0
  168. package/BaseEditor/defaultConfig/Toolbar/Navigator/navigatorUtils.js +70 -0
  169. package/BaseEditor/defaultConfig/Toolbar/Navigator/navigatorUtils.js.map +1 -0
  170. package/BaseEditor/hooks/useCreateElement.d.ts +1 -1
  171. package/BaseEditor/hooks/useCreateElement.js +1 -3
  172. package/BaseEditor/hooks/useCreateElement.js.map +1 -1
  173. package/ecommerce/EcommerceIntegration.js +1 -1
  174. package/ecommerce/EcommerceIntegration.js.map +1 -1
  175. package/ecommerce/components/ResourcePage.d.ts +1 -1
  176. package/ecommerce/components/ResourcePage.js +1 -1
  177. package/ecommerce/components/ResourcePage.js.map +1 -1
  178. package/exports/admin/website-builder/lexical.d.ts +18 -17
  179. package/exports/admin/website-builder/lexical.js +3 -2
  180. package/features/ecommerce/apis/useEcommerceApi.js +3 -1
  181. package/features/ecommerce/apis/useEcommerceApi.js.map +1 -1
  182. package/inputRenderers/BooleanInput.js +15 -4
  183. package/inputRenderers/BooleanInput.js.map +1 -1
  184. package/inputRenderers/FileInput.js.map +1 -1
  185. package/inputRenderers/LexicalInput/DefaultLexicalConfig.js +4 -1
  186. package/inputRenderers/LexicalInput/DefaultLexicalConfig.js.map +1 -1
  187. package/inputRenderers/LexicalInput/ExpandEditorAction.js +4 -1
  188. package/inputRenderers/LexicalInput/ExpandEditorAction.js.map +1 -1
  189. package/inputRenderers/LexicalInput/LexicalEditor.d.ts +4 -1
  190. package/inputRenderers/LexicalInput/LexicalEditor.js +13 -2
  191. package/inputRenderers/LexicalInput/LexicalEditor.js.map +1 -1
  192. package/inputRenderers/LexicalInput/LexicalEditorConfig.d.ts +18 -0
  193. package/inputRenderers/LexicalInput/LexicalEditorConfig.js +5 -1
  194. package/inputRenderers/LexicalInput/LexicalEditorConfig.js.map +1 -1
  195. package/inputRenderers/LexicalInput/LexicalInput.js +5 -9
  196. package/inputRenderers/LexicalInput/LexicalInput.js.map +1 -1
  197. package/inputRenderers/LexicalInput/wbStaticToolbar.css +1 -1
  198. package/inputRenderers/TextInput.js +3 -1
  199. package/inputRenderers/TextInput.js.map +1 -1
  200. package/modules/pages/PageEditor/PageEditorConfig.d.ts +4 -2
  201. package/modules/pages/PageEditor/PageSettings/PageSettingsPresenter.js +2 -2
  202. package/modules/pages/PageEditor/PageSettings/PageSettingsPresenter.js.map +1 -1
  203. package/package.json +31 -29
  204. package/BaseEditor/components/DragPreview.js +0 -59
  205. package/BaseEditor/components/DragPreview.js.map +0 -1
  206. package/ecommerce/components/adaptInputToBind.d.ts +0 -6
  207. package/ecommerce/components/adaptInputToBind.js +0 -26
  208. package/ecommerce/components/adaptInputToBind.js.map +0 -1
  209. /package/BaseEditor/components/{DragPreview.d.ts → DragPreview/DragPreview.d.ts} +0 -0
@@ -0,0 +1,94 @@
1
+ import react from "react";
2
+ const LayoutIllustration = ()=>/*#__PURE__*/ react.createElement("svg", {
3
+ xmlns: "http://www.w3.org/2000/svg",
4
+ width: "104",
5
+ height: "86",
6
+ viewBox: "0 0 104 86",
7
+ fill: "none"
8
+ }, /*#__PURE__*/ react.createElement("g", {
9
+ filter: "url(#filter0_d_6405_31803)"
10
+ }, /*#__PURE__*/ react.createElement("path", {
11
+ d: "M7.01172 11.7C7.01172 8.55198 9.5637 6 12.7117 6H90.3742C93.5222 6 96.0742 8.55198 96.0742 11.7V71.55C96.0742 74.698 93.5222 77.25 90.3742 77.25H12.7117C9.56369 77.25 7.01172 74.698 7.01172 71.55V11.7Z",
12
+ fill: "white"
13
+ })), /*#__PURE__*/ react.createElement("ellipse", {
14
+ cx: "14.8105",
15
+ cy: "13.4043",
16
+ rx: "1.76361",
17
+ ry: "1.78125",
18
+ fill: "#FA5723"
19
+ }), /*#__PURE__*/ react.createElement("ellipse", {
20
+ cx: "20.5429",
21
+ cy: "13.4043",
22
+ rx: "1.76361",
23
+ ry: "1.78125",
24
+ fill: "#FA5723"
25
+ }), /*#__PURE__*/ react.createElement("ellipse", {
26
+ cx: "26.7148",
27
+ cy: "13.4043",
28
+ rx: "1.76361",
29
+ ry: "1.78125",
30
+ fill: "#FA5723"
31
+ }), /*#__PURE__*/ react.createElement("rect", {
32
+ x: "15.1016",
33
+ y: "23.0527",
34
+ width: "23.8155",
35
+ height: "45.9626",
36
+ rx: "1.4012",
37
+ fill: "#F0F1F3"
38
+ }), /*#__PURE__*/ react.createElement("rect", {
39
+ x: "43.0762",
40
+ y: "23.0527",
41
+ width: "44.814",
42
+ height: "21.4722",
43
+ rx: "1.4012",
44
+ fill: "#F0F1F3"
45
+ }), /*#__PURE__*/ react.createElement("rect", {
46
+ x: "43.0762",
47
+ y: "47.873",
48
+ width: "20.7899",
49
+ height: "21.1422",
50
+ rx: "1.4012",
51
+ fill: "#F0F1F3"
52
+ }), /*#__PURE__*/ react.createElement("rect", {
53
+ x: "67.0996",
54
+ y: "47.873",
55
+ width: "20.7899",
56
+ height: "21.1422",
57
+ rx: "1.4012",
58
+ fill: "#F0F1F3"
59
+ }), /*#__PURE__*/ react.createElement("defs", null, /*#__PURE__*/ react.createElement("filter", {
60
+ id: "filter0_d_6405_31803",
61
+ x: "0.000718594",
62
+ y: "-7.95126e-05",
63
+ width: "103.085",
64
+ height: "85.272",
65
+ filterUnits: "userSpaceOnUse",
66
+ colorInterpolationFilters: "sRGB"
67
+ }, /*#__PURE__*/ react.createElement("feFlood", {
68
+ floodOpacity: "0",
69
+ result: "BackgroundImageFix"
70
+ }), /*#__PURE__*/ react.createElement("feColorMatrix", {
71
+ in: "SourceAlpha",
72
+ type: "matrix",
73
+ values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
74
+ result: "hardAlpha"
75
+ }), /*#__PURE__*/ react.createElement("feOffset", {
76
+ dy: "1.01092"
77
+ }), /*#__PURE__*/ react.createElement("feGaussianBlur", {
78
+ stdDeviation: "3.5055"
79
+ }), /*#__PURE__*/ react.createElement("feColorMatrix", {
80
+ type: "matrix",
81
+ values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
82
+ }), /*#__PURE__*/ react.createElement("feBlend", {
83
+ mode: "normal",
84
+ in2: "BackgroundImageFix",
85
+ result: "effect1_dropShadow_6405_31803"
86
+ }), /*#__PURE__*/ react.createElement("feBlend", {
87
+ mode: "normal",
88
+ in: "SourceGraphic",
89
+ in2: "effect1_dropShadow_6405_31803",
90
+ result: "shape"
91
+ }))));
92
+ export { LayoutIllustration };
93
+
94
+ //# sourceMappingURL=LayoutIllustration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/LayoutIllustration.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/LayoutIllustration.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const LayoutIllustration = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"104\"\n height=\"86\"\n viewBox=\"0 0 104 86\"\n fill=\"none\"\n >\n <g filter=\"url(#filter0_d_6405_31803)\">\n <path\n d=\"M7.01172 11.7C7.01172 8.55198 9.5637 6 12.7117 6H90.3742C93.5222 6 96.0742 8.55198 96.0742 11.7V71.55C96.0742 74.698 93.5222 77.25 90.3742 77.25H12.7117C9.56369 77.25 7.01172 74.698 7.01172 71.55V11.7Z\"\n fill=\"white\"\n />\n </g>\n <ellipse cx=\"14.8105\" cy=\"13.4043\" rx=\"1.76361\" ry=\"1.78125\" fill=\"#FA5723\" />\n <ellipse cx=\"20.5429\" cy=\"13.4043\" rx=\"1.76361\" ry=\"1.78125\" fill=\"#FA5723\" />\n <ellipse cx=\"26.7148\" cy=\"13.4043\" rx=\"1.76361\" ry=\"1.78125\" fill=\"#FA5723\" />\n <rect x=\"15.1016\" y=\"23.0527\" width=\"23.8155\" height=\"45.9626\" rx=\"1.4012\" fill=\"#F0F1F3\" />\n <rect x=\"43.0762\" y=\"23.0527\" width=\"44.814\" height=\"21.4722\" rx=\"1.4012\" fill=\"#F0F1F3\" />\n <rect x=\"43.0762\" y=\"47.873\" width=\"20.7899\" height=\"21.1422\" rx=\"1.4012\" fill=\"#F0F1F3\" />\n <rect x=\"67.0996\" y=\"47.873\" width=\"20.7899\" height=\"21.1422\" rx=\"1.4012\" fill=\"#F0F1F3\" />\n <defs>\n <filter\n id=\"filter0_d_6405_31803\"\n x=\"0.000718594\"\n y=\"-7.95126e-05\"\n width=\"103.085\"\n height=\"85.272\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"1.01092\" />\n <feGaussianBlur stdDeviation=\"3.5055\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0\" />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_6405_31803\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_6405_31803\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n);\n"],"names":["LayoutIllustration"],"mappings":";AAEO,MAAMA,qBAAqB,kBAC9B,oBAAC;QACG,OAAM;QACN,OAAM;QACN,QAAO;QACP,SAAQ;QACR,MAAK;qBAEL,oBAAC;QAAE,QAAO;qBACN,oBAAC;QACG,GAAE;QACF,MAAK;uBAGb,oBAAC;QAAQ,IAAG;QAAU,IAAG;QAAU,IAAG;QAAU,IAAG;QAAU,MAAK;sBAClE,oBAAC;QAAQ,IAAG;QAAU,IAAG;QAAU,IAAG;QAAU,IAAG;QAAU,MAAK;sBAClE,oBAAC;QAAQ,IAAG;QAAU,IAAG;QAAU,IAAG;QAAU,IAAG;QAAU,MAAK;sBAClE,oBAAC;QAAK,GAAE;QAAU,GAAE;QAAU,OAAM;QAAU,QAAO;QAAU,IAAG;QAAS,MAAK;sBAChF,oBAAC;QAAK,GAAE;QAAU,GAAE;QAAU,OAAM;QAAS,QAAO;QAAU,IAAG;QAAS,MAAK;sBAC/E,oBAAC;QAAK,GAAE;QAAU,GAAE;QAAS,OAAM;QAAU,QAAO;QAAU,IAAG;QAAS,MAAK;sBAC/E,oBAAC;QAAK,GAAE;QAAU,GAAE;QAAS,OAAM;QAAU,QAAO;QAAU,IAAG;QAAS,MAAK;sBAC/E,oBAAC,4BACG,oBAAC;QACG,IAAG;QACH,GAAE;QACF,GAAE;QACF,OAAM;QACN,QAAO;QACP,aAAY;QACZ,2BAA0B;qBAE1B,oBAAC;QAAQ,cAAa;QAAI,QAAO;sBACjC,oBAAC;QACG,IAAG;QACH,MAAK;QACL,QAAO;QACP,QAAO;sBAEX,oBAAC;QAAS,IAAG;sBACb,oBAAC;QAAe,cAAa;sBAC7B,oBAAC;QAAc,MAAK;QAAS,QAAO;sBACpC,oBAAC;QACG,MAAK;QACL,KAAI;QACJ,QAAO;sBAEX,oBAAC;QACG,MAAK;QACL,IAAG;QACH,KAAI;QACJ,QAAO"}
@@ -1,79 +1,14 @@
1
1
  import react, { useCallback, useMemo } from "react";
2
- import get from "lodash/get.js";
3
2
  import { observer } from "mobx-react-lite";
4
- import { Tooltip, Tree } from "@webiny/admin-ui";
5
- import { ReactComponent } from "@webiny/icons/visibility_off.svg";
3
+ import { ScrollArea, Tree } from "@webiny/admin-ui";
6
4
  import { useActiveElement } from "../../../hooks/useActiveElement.js";
7
5
  import { useSelectFromEditor } from "../../../hooks/useSelectFromEditor.js";
8
6
  import { useDocumentEditor } from "../../../../DocumentEditor/index.js";
9
7
  import { Commands } from "../../../index.js";
10
- import { InlineSvg } from "../InsertElements/InlineSvg.js";
11
- import { InfoMessage } from "../../Sidebar/InfoMessage.js";
12
- import { useStyles } from "../../../hooks/useStyles.js";
13
- function flattenElements(elements, activeElementId) {
14
- const result = [];
15
- const asArray = Object.values(elements);
16
- for(const key in elements){
17
- const node = elements[key];
18
- if (node.parent) result.push({
19
- id: node.id,
20
- label: node.label,
21
- parentId: node.parent.id,
22
- active: node.id === activeElementId,
23
- droppable: asArray.filter((el)=>el.parent?.id === node.id).length > 0,
24
- data: {
25
- parent: node.parent,
26
- icon: node.image ? /*#__PURE__*/ react.createElement(InlineSvg, {
27
- src: node.image,
28
- className: "fill-neutral-strong"
29
- }) : /*#__PURE__*/ react.createElement(react.Fragment, null),
30
- draggable: node.canDrag
31
- }
32
- });
33
- }
34
- return result;
35
- }
36
- function getElementNodeData({ components, elements, bindings }) {
37
- const getIndex = (elementId, parentId, slot)=>{
38
- const elementBindings = bindings[parentId];
39
- if (!elementBindings) return -1;
40
- const slotValue = get(elementBindings, `inputs.${slot}`);
41
- if (!slotValue) return -1;
42
- if (slotValue.list) return slotValue.static.indexOf(elementId);
43
- return -1;
44
- };
45
- return Object.values(elements).reduce((acc, element)=>{
46
- if ("root" === element.id) return {
47
- ...acc,
48
- [element.id]: {
49
- id: element.id,
50
- label: "Root",
51
- image: ""
52
- }
53
- };
54
- const component = components[element.component.name] ?? {
55
- label: "",
56
- image: null,
57
- canDrag: false
58
- };
59
- const parentId = element.parent.id;
60
- const slot = element.parent.slot;
61
- return {
62
- ...acc,
63
- [element.id]: {
64
- id: element.id,
65
- label: component?.label ?? component?.name ?? "",
66
- image: component.image,
67
- canDrag: component.canDrag,
68
- parent: {
69
- id: parentId,
70
- slot,
71
- index: getIndex(element.id, parentId, slot)
72
- }
73
- }
74
- };
75
- }, {});
76
- }
8
+ import { NavigatorEmptyState } from "./NavigatorEmptyState.js";
9
+ import { Placeholder } from "./Placeholder.js";
10
+ import { ElementActions } from "./ElementActions.js";
11
+ import { flattenElements, getElementNodeData } from "./navigatorUtils.js";
77
12
  const Navigator = observer(()=>{
78
13
  const editor = useDocumentEditor();
79
14
  const [activeElement] = useActiveElement();
@@ -133,10 +68,10 @@ const Navigator = observer(()=>{
133
68
  }, /*#__PURE__*/ react.createElement(ElementActions, {
134
69
  elementId: node.id
135
70
  })));
136
- if (Object.keys(elementNodes).length <= 1) return /*#__PURE__*/ react.createElement(InfoMessage, {
137
- message: "No elements to display."
138
- });
139
- return /*#__PURE__*/ react.createElement(Tree, {
71
+ if (Object.keys(elementNodes).length <= 1) return /*#__PURE__*/ react.createElement(NavigatorEmptyState, null);
72
+ return /*#__PURE__*/ react.createElement(ScrollArea, {
73
+ className: "h-full pt-xs"
74
+ }, /*#__PURE__*/ react.createElement(Tree, {
140
75
  key: treeKey,
141
76
  autoExpandOnDragOver: false,
142
77
  insertDroppableFirst: false,
@@ -147,8 +82,8 @@ const Navigator = observer(()=>{
147
82
  defaultOpenNodeIds: activeAncestors,
148
83
  dropTargetOffset: 5,
149
84
  placeholderRender: (node, { depth })=>/*#__PURE__*/ react.createElement(Placeholder, {
150
- depth: depth,
151
- node: node
85
+ node: node,
86
+ depth: depth
152
87
  }),
153
88
  onDrop: (newTree, { dragSource })=>{
154
89
  if (!dragSource || !dragSource.data) return;
@@ -167,42 +102,8 @@ const Navigator = observer(()=>{
167
102
  if (dragSource?.parentId === dropTargetId) return true;
168
103
  return false;
169
104
  }
170
- });
171
- });
172
- const Placeholder = (props)=>/*#__PURE__*/ react.createElement("div", {
173
- className: "bg-primary",
174
- style: {
175
- height: 2,
176
- zIndex: 999,
177
- position: "absolute",
178
- right: 0,
179
- transform: "translateY(-50%)",
180
- top: -2,
181
- left: 24 * props.depth
182
- }
183
- });
184
- const ElementActions = ({ elementId })=>{
185
- const { styles, onChange } = useStyles(elementId);
186
- const isVisible = "none" !== styles.display;
187
- const unhideElement = ()=>{
188
- onChange(({ styles })=>{
189
- styles.set("display", "flex");
190
- });
191
- };
192
- if (isVisible) return null;
193
- return /*#__PURE__*/ react.createElement("div", {
194
- className: "flex"
195
- }, /*#__PURE__*/ react.createElement(Tooltip, {
196
- trigger: /*#__PURE__*/ react.createElement(Tree.Item.Icon, {
197
- size: "sm",
198
- className: "cursor-pointer",
199
- element: /*#__PURE__*/ react.createElement(ReactComponent, null),
200
- label: "This element is hidden.",
201
- onClick: unhideElement
202
- }),
203
- content: "This element is hidden. Click to unhide."
204
105
  }));
205
- };
106
+ });
206
107
  export { Navigator };
207
108
 
208
109
  //# sourceMappingURL=Navigator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from \"react\";\nimport get from \"lodash/get.js\";\nimport { observer } from \"mobx-react-lite\";\nimport { type NodeDto, Tree, type TreeProps, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as VisibilityNone } from \"@webiny/icons/visibility_off.svg\";\nimport type { Document } from \"@webiny/website-builder-sdk\";\nimport { useActiveElement } from \"~/BaseEditor/hooks/useActiveElement.js\";\nimport { useSelectFromEditor } from \"~/BaseEditor/hooks/useSelectFromEditor.js\";\nimport type { EditorState } from \"~/editorSdk/Editor.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport { InlineSvg } from \"~/BaseEditor/defaultConfig/Toolbar/InsertElements/InlineSvg.js\";\nimport { InfoMessage } from \"~/BaseEditor/defaultConfig/Sidebar/InfoMessage.js\";\nimport { useStyles } from \"~/BaseEditor/hooks/useStyles.js\";\n\n// Node type for the Tree component.\ntype ElementNode = NodeDto<{\n draggable: boolean;\n icon: React.ReactNode;\n parent: {\n id: string;\n slot: string;\n index: number;\n };\n}>;\n\n// Element data extracted from the Document state.\ntype ElementNodeData = {\n id: string;\n label: string;\n image: string;\n canDrag: boolean;\n parent: {\n id: string;\n slot: string;\n index: number;\n };\n};\n\nfunction flattenElements(elements: Record<string, ElementNodeData>, activeElementId?: string) {\n const result: ElementNode[] = [];\n const asArray = Object.values(elements);\n\n for (const key in elements) {\n const node = elements[key];\n\n // Skip root element.\n if (!node.parent) {\n continue;\n }\n\n result.push({\n id: node.id,\n label: node.label,\n parentId: node.parent.id,\n active: node.id === activeElementId,\n droppable: asArray.filter(el => el.parent?.id === node.id).length > 0,\n data: {\n parent: node.parent,\n icon: node.image ? (\n <InlineSvg src={node.image} className={\"fill-neutral-strong\"} />\n ) : (\n <></>\n ),\n draggable: node.canDrag\n }\n });\n }\n\n return result;\n}\n\ninterface GetElementNodeDataParams {\n components: EditorState[\"components\"];\n elements: Document[\"elements\"];\n bindings: Document[\"bindings\"];\n}\n\nfunction getElementNodeData({\n components,\n elements,\n bindings\n}: GetElementNodeDataParams): Record<string, ElementNodeData> {\n const getIndex = (elementId: string, parentId: string, slot: string) => {\n const elementBindings = bindings[parentId];\n if (!elementBindings) {\n return -1;\n }\n\n const slotValue = get(elementBindings, `inputs.${slot}`);\n if (!slotValue) {\n return -1;\n }\n\n if (slotValue.list) {\n return slotValue.static.indexOf(elementId);\n }\n\n return -1;\n };\n\n return Object.values(elements).reduce((acc, element) => {\n if (element.id === \"root\") {\n return {\n ...acc,\n [element.id]: {\n id: element.id,\n label: \"Root\",\n image: \"\"\n }\n };\n }\n\n const component = components[element.component.name] ?? {\n label: \"\",\n image: null,\n canDrag: false\n };\n\n const parentId = element.parent!.id;\n const slot = element.parent!.slot;\n\n return {\n ...acc,\n [element.id]: {\n id: element.id,\n label: component?.label ?? component?.name ?? \"\",\n image: component.image,\n canDrag: component.canDrag,\n parent: {\n id: parentId,\n slot,\n index: getIndex(element.id, parentId, slot)\n }\n }\n };\n }, {});\n}\n\nexport const Navigator = observer(() => {\n const editor = useDocumentEditor();\n const [activeElement] = useActiveElement();\n\n const document = editor.getDocumentState().read();\n const elements = document.elements;\n const bindings = document.bindings;\n const treeKey = document.id;\n\n const components = useSelectFromEditor(state => {\n return state.components;\n });\n\n const elementNodes = getElementNodeData({ components, elements, bindings });\n\n const activeAncestors = useMemo(() => {\n if (!activeElement) {\n return [];\n }\n\n const ancestors: string[] = [activeElement.id];\n let parent = elementNodes[activeElement.id].parent;\n while (parent) {\n ancestors.push(parent.id);\n parent = elementNodes[parent.id].parent;\n }\n return ancestors.reverse();\n }, [elementNodes, activeElement]);\n\n const nodes = useMemo(() => {\n return flattenElements(elementNodes, activeElement?.id).sort((a, b) => {\n return a.data!.parent.index - b.data!.parent.index;\n });\n }, [elementNodes, activeElement]);\n\n const highlightElement = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n const nodeId = e.currentTarget.getAttribute(\"data-node-id\");\n\n if (nodeId) {\n editor.executeCommand(Commands.HighlightElement, { id: nodeId });\n }\n }, []);\n\n const activateElement = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n const nodeId = e.currentTarget.getAttribute(\"data-node-id\");\n\n if (nodeId) {\n editor.executeCommand(Commands.SelectElement, { id: nodeId });\n }\n }, []);\n\n const renderer: TreeProps[\"renderer\"] = node => {\n return (\n <Tree.Item.Content\n data-node-id={node.id}\n onMouseOver={highlightElement}\n onClick={activateElement}\n >\n <Tree.Item.Icon label={node.label} element={node.icon} size={\"sm\"} />\n {node.label}\n <div className={\"flex w-full justify-end\"}>\n <ElementActions elementId={node.id} />\n </div>\n </Tree.Item.Content>\n );\n };\n\n if (Object.keys(elementNodes).length <= 1) {\n return <InfoMessage message={\"No elements to display.\"} />;\n }\n\n return (\n <Tree\n key={treeKey}\n autoExpandOnDragOver={false}\n insertDroppableFirst={false}\n nodes={nodes}\n rootId={\"root\"}\n renderer={renderer}\n sort={false}\n defaultOpenNodeIds={activeAncestors}\n dropTargetOffset={5}\n placeholderRender={(node, { depth }) => {\n return <Placeholder depth={depth} node={node} />;\n }}\n onDrop={(newTree, { dragSource }) => {\n if (!dragSource || !dragSource.data) {\n return;\n }\n\n const parent = dragSource.data.parent;\n\n const sameLevelNodes = newTree.filter(n => n.parentId === dragSource.parentId);\n const newIndex = sameLevelNodes.findIndex(n => n.id === dragSource.id);\n editor.executeCommand(Commands.MoveElement, {\n elementId: dragSource.id,\n parentId: parent.id,\n slot: parent.slot,\n index: newIndex\n });\n }}\n canDrag={node => node.data?.draggable ?? true}\n canDrop={(_, { dragSource, dropTargetId }) => {\n // Only allow dropping within the same parent (for now).\n if (dragSource?.parentId === dropTargetId) {\n return true;\n }\n return false;\n }}\n />\n );\n});\n\ntype PlaceholderProps = {\n node: any;\n depth: number;\n};\n\nconst Placeholder = (props: PlaceholderProps) => (\n <div\n className={\"bg-primary\"}\n style={{\n height: 2,\n zIndex: 999,\n position: \"absolute\",\n right: 0,\n transform: \"translateY(-50%)\",\n top: -2,\n left: props.depth * 24\n }}\n ></div>\n);\n\nconst ElementActions = ({ elementId }: { elementId: string }) => {\n const { styles, onChange } = useStyles(elementId);\n\n const isVisible = styles.display !== \"none\";\n\n const unhideElement = () => {\n onChange(({ styles }) => {\n styles.set(\"display\", \"flex\");\n });\n };\n\n if (isVisible) {\n return null;\n }\n\n return (\n <div className={\"flex\"}>\n <Tooltip\n trigger={\n <Tree.Item.Icon\n size={\"sm\"}\n className={\"cursor-pointer\"}\n element={<VisibilityNone />}\n label={\"This element is hidden.\"}\n onClick={unhideElement}\n />\n }\n content={\"This element is hidden. Click to unhide.\"}\n />\n </div>\n );\n};\n"],"names":["flattenElements","elements","activeElementId","result","asArray","Object","key","node","el","InlineSvg","getElementNodeData","components","bindings","getIndex","elementId","parentId","slot","elementBindings","slotValue","get","acc","element","component","Navigator","observer","editor","useDocumentEditor","activeElement","useActiveElement","document","treeKey","useSelectFromEditor","state","elementNodes","activeAncestors","useMemo","ancestors","parent","nodes","a","b","highlightElement","useCallback","e","nodeId","Commands","activateElement","renderer","Tree","ElementActions","InfoMessage","depth","Placeholder","newTree","dragSource","sameLevelNodes","n","newIndex","_","dropTargetId","props","styles","onChange","useStyles","isVisible","unhideElement","Tooltip","VisibilityNone"],"mappings":"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"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { type TreeProps, Tree, ScrollArea } from \"@webiny/admin-ui\";\nimport { useActiveElement } from \"~/BaseEditor/hooks/useActiveElement.js\";\nimport { useSelectFromEditor } from \"~/BaseEditor/hooks/useSelectFromEditor.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport { NavigatorEmptyState } from \"./NavigatorEmptyState.js\";\nimport { Placeholder } from \"./Placeholder.js\";\nimport { ElementActions } from \"./ElementActions.js\";\nimport { flattenElements, getElementNodeData } from \"./navigatorUtils.js\";\n\nexport const Navigator = observer(() => {\n const editor = useDocumentEditor();\n const [activeElement] = useActiveElement();\n\n const document = editor.getDocumentState().read();\n const elements = document.elements;\n const bindings = document.bindings;\n const treeKey = document.id;\n\n const components = useSelectFromEditor(state => state.components);\n\n const elementNodes = getElementNodeData({ components, elements, bindings });\n\n const activeAncestors = useMemo(() => {\n if (!activeElement) {\n return [];\n }\n const ancestors: string[] = [activeElement.id];\n let parent = elementNodes[activeElement.id].parent;\n while (parent) {\n ancestors.push(parent.id);\n parent = elementNodes[parent.id].parent;\n }\n return ancestors.reverse();\n }, [elementNodes, activeElement]);\n\n const nodes = useMemo(() => {\n return flattenElements(elementNodes, activeElement?.id).sort((a, b) => {\n return a.data!.parent.index - b.data!.parent.index;\n });\n }, [elementNodes, activeElement]);\n\n const highlightElement = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n const nodeId = e.currentTarget.getAttribute(\"data-node-id\");\n if (nodeId) {\n editor.executeCommand(Commands.HighlightElement, { id: nodeId });\n }\n }, []);\n\n const activateElement = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n const nodeId = e.currentTarget.getAttribute(\"data-node-id\");\n if (nodeId) {\n editor.executeCommand(Commands.SelectElement, { id: nodeId });\n }\n }, []);\n\n const renderer: TreeProps[\"renderer\"] = node => (\n <Tree.Item.Content\n data-node-id={node.id}\n onMouseOver={highlightElement}\n onClick={activateElement}\n >\n <Tree.Item.Icon label={node.label} element={node.icon} size={\"sm\"} />\n {node.label}\n <div className={\"flex w-full justify-end\"}>\n <ElementActions elementId={node.id} />\n </div>\n </Tree.Item.Content>\n );\n\n if (Object.keys(elementNodes).length <= 1) {\n return <NavigatorEmptyState />;\n }\n\n return (\n <ScrollArea className={\"h-full pt-xs\"}>\n <Tree\n key={treeKey}\n autoExpandOnDragOver={false}\n insertDroppableFirst={false}\n nodes={nodes}\n rootId={\"root\"}\n renderer={renderer}\n sort={false}\n defaultOpenNodeIds={activeAncestors}\n dropTargetOffset={5}\n placeholderRender={(node, { depth }) => <Placeholder node={node} depth={depth} />}\n onDrop={(newTree, { dragSource }) => {\n if (!dragSource || !dragSource.data) {\n return;\n }\n const parent = dragSource.data.parent;\n const sameLevelNodes = newTree.filter(n => n.parentId === dragSource.parentId);\n const newIndex = sameLevelNodes.findIndex(n => n.id === dragSource.id);\n editor.executeCommand(Commands.MoveElement, {\n elementId: dragSource.id,\n parentId: parent.id,\n slot: parent.slot,\n index: newIndex\n });\n }}\n canDrag={node => node.data?.draggable ?? true}\n canDrop={(_, { dragSource, dropTargetId }) => {\n if (dragSource?.parentId === dropTargetId) {\n return true;\n }\n return false;\n }}\n />\n </ScrollArea>\n );\n});\n"],"names":["Navigator","observer","editor","useDocumentEditor","activeElement","useActiveElement","document","elements","bindings","treeKey","components","useSelectFromEditor","state","elementNodes","getElementNodeData","activeAncestors","useMemo","ancestors","parent","nodes","flattenElements","a","b","highlightElement","useCallback","e","nodeId","Commands","activateElement","renderer","node","Tree","ElementActions","Object","NavigatorEmptyState","ScrollArea","depth","Placeholder","newTree","dragSource","sameLevelNodes","n","newIndex","_","dropTargetId"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const NavigatorEmptyState: () => React.JSX.Element;
@@ -0,0 +1,20 @@
1
+ import react from "react";
2
+ import { Button, Text, useSegmentedTabs } from "@webiny/admin-ui";
3
+ import { LayoutIllustration } from "./LayoutIllustration.js";
4
+ const NavigatorEmptyState = ()=>{
5
+ const { setActiveTab } = useSegmentedTabs();
6
+ return /*#__PURE__*/ react.createElement("div", {
7
+ className: "flex flex-col items-center gap-md px-md text-center mt-[200px]"
8
+ }, /*#__PURE__*/ react.createElement(LayoutIllustration, null), /*#__PURE__*/ react.createElement(Text, {
9
+ size: "sm",
10
+ className: "text-neutral-strong"
11
+ }, "You do not have any items in your layout. Add your first item in Insert panel."), /*#__PURE__*/ react.createElement(Button, {
12
+ variant: "secondary",
13
+ text: "Add item",
14
+ size: "sm",
15
+ onClick: ()=>setActiveTab("insert")
16
+ }));
17
+ };
18
+ export { NavigatorEmptyState };
19
+
20
+ //# sourceMappingURL=NavigatorEmptyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorEmptyState.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorEmptyState.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text, Button, useSegmentedTabs } from \"@webiny/admin-ui\";\nimport { LayoutIllustration } from \"./LayoutIllustration.js\";\n\nexport const NavigatorEmptyState = () => {\n const { setActiveTab } = useSegmentedTabs();\n\n return (\n <div className={\"flex flex-col items-center gap-md px-md text-center mt-[200px]\"}>\n <LayoutIllustration />\n <Text size={\"sm\"} className={\"text-neutral-strong\"}>\n {\"You do not have any items in your layout. Add your first item in Insert panel.\"}\n </Text>\n <Button\n variant={\"secondary\"}\n text={\"Add item\"}\n size={\"sm\"}\n onClick={() => setActiveTab(\"insert\")}\n />\n </div>\n );\n};\n"],"names":["NavigatorEmptyState","setActiveTab","useSegmentedTabs","LayoutIllustration","Text","Button"],"mappings":";;;AAIO,MAAMA,sBAAsB;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC;IAEzB,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,MAAIA;QAAC,MAAM;QAAM,WAAW;OACxB,iGAEL,oBAACC,QAAMA;QACH,SAAS;QACT,MAAM;QACN,MAAM;QACN,SAAS,IAAMJ,aAAa;;AAI5C"}
@@ -1,17 +1,16 @@
1
1
  import react from "react";
2
- import { Icon, Tabs } from "@webiny/admin-ui";
2
+ import { Icon } from "@webiny/admin-ui";
3
3
  import { ReactComponent } from "@webiny/icons/account_tree.svg";
4
- import { ScrollableContainer } from "../../../config/Sidebar/ScrollableContainer.js";
4
+ import { Toolbar } from "../../../config/Toolbar/Toolbar.js";
5
5
  import { Navigator } from "./Navigator.js";
6
- const NavigatorTab = ()=>/*#__PURE__*/ react.createElement(Tabs.Tab, {
7
- value: "navigator",
8
- trigger: "Navigator",
9
- spacing: "sm",
6
+ const NavigatorTab = ()=>/*#__PURE__*/ react.createElement(Toolbar.Tab, {
7
+ name: "navigator",
8
+ label: "Navigator",
10
9
  icon: /*#__PURE__*/ react.createElement(Icon, {
11
10
  icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
12
11
  label: "Navigator"
13
12
  }),
14
- content: /*#__PURE__*/ react.createElement(ScrollableContainer, null, /*#__PURE__*/ react.createElement(Navigator, null))
13
+ element: /*#__PURE__*/ react.createElement(Navigator, null)
15
14
  });
16
15
  export { NavigatorTab };
17
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorTab.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorTab.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tabs } from \"@webiny/admin-ui\";\nimport { ReactComponent as TreeIcon } from \"@webiny/icons/account_tree.svg\";\nimport { ScrollableContainer } from \"~/BaseEditor/config/Sidebar/ScrollableContainer.js\";\nimport { Navigator } from \"./Navigator.js\";\n\nexport const NavigatorTab = () => {\n return (\n <Tabs.Tab\n value=\"navigator\"\n trigger={\"Navigator\"}\n spacing={\"sm\"}\n icon={<Icon icon={<TreeIcon />} label={\"Navigator\"} />}\n content={\n <ScrollableContainer>\n <Navigator />\n </ScrollableContainer>\n }\n />\n );\n};\n"],"names":["NavigatorTab","Tabs","Icon","TreeIcon","ScrollableContainer","Navigator"],"mappings":";;;;;AAMO,MAAMA,eAAe,IACjB,WAAP,GACI,oBAACC,KAAK,GAAG;QACL,OAAM;QACN,SAAS;QACT,SAAS;QACT,oBAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAO;;QACvC,uBACI,oBAACC,qBAAmBA,MAAAA,WAAAA,GAChB,oBAACC,WAASA"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorTab.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/NavigatorTab.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as TreeIcon } from \"@webiny/icons/account_tree.svg\";\nimport { Toolbar } from \"~/BaseEditor/config/Toolbar/Toolbar.js\";\nimport { Navigator } from \"./Navigator.js\";\n\nexport const NavigatorTab = () => (\n <Toolbar.Tab\n name={\"navigator\"}\n label={\"Navigator\"}\n icon={<Icon icon={<TreeIcon />} label={\"Navigator\"} />}\n element={<Navigator />}\n />\n);\n"],"names":["NavigatorTab","Toolbar","Icon","TreeIcon","Navigator"],"mappings":";;;;;AAMO,MAAMA,eAAe,kBACxB,oBAACC,QAAQ,GAAG;QACR,MAAM;QACN,OAAO;QACP,oBAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAO;;QACvC,uBAAS,oBAACC,WAASA"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ interface PlaceholderProps {
3
+ node: any;
4
+ depth: number;
5
+ }
6
+ export declare const Placeholder: ({ depth }: PlaceholderProps) => React.JSX.Element;
7
+ export {};
@@ -0,0 +1,16 @@
1
+ import react from "react";
2
+ const Placeholder = ({ depth })=>/*#__PURE__*/ react.createElement("div", {
3
+ className: "bg-primary",
4
+ style: {
5
+ height: 2,
6
+ zIndex: 999,
7
+ position: "absolute",
8
+ right: 0,
9
+ transform: "translateY(-50%)",
10
+ top: -2,
11
+ left: 24 * depth
12
+ }
13
+ });
14
+ export { Placeholder };
15
+
16
+ //# sourceMappingURL=Placeholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/Placeholder.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/Placeholder.tsx"],"sourcesContent":["import React from \"react\";\n\ninterface PlaceholderProps {\n node: any;\n depth: number;\n}\n\nexport const Placeholder = ({ depth }: PlaceholderProps) => (\n <div\n className={\"bg-primary\"}\n style={{\n height: 2,\n zIndex: 999,\n position: \"absolute\",\n right: 0,\n transform: \"translateY(-50%)\",\n top: -2,\n left: depth * 24\n }}\n />\n);\n"],"names":["Placeholder","depth"],"mappings":";AAOO,MAAMA,cAAc,CAAC,EAAEC,KAAK,EAAoB,iBACnD,oBAAC;QACG,WAAW;QACX,OAAO;YACH,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,OAAO;YACP,WAAW;YACX,KAAK;YACL,MAAMA,AAAQ,KAARA;QACV"}
@@ -0,0 +1,32 @@
1
+ import type { NodeDto } from "@webiny/admin-ui";
2
+ import type { Document } from "@webiny/website-builder-sdk";
3
+ import type { EditorState } from "../../../../editorSdk/Editor.js";
4
+ import React from "react";
5
+ export type ElementNode = NodeDto<{
6
+ draggable: boolean;
7
+ icon: React.ReactNode;
8
+ parent: {
9
+ id: string;
10
+ slot: string;
11
+ index: number;
12
+ };
13
+ }>;
14
+ export type ElementNodeData = {
15
+ id: string;
16
+ label: string;
17
+ image: string;
18
+ canDrag: boolean;
19
+ parent: {
20
+ id: string;
21
+ slot: string;
22
+ index: number;
23
+ };
24
+ };
25
+ export declare function flattenElements(elements: Record<string, ElementNodeData>, activeElementId?: string): ElementNode[];
26
+ interface GetElementNodeDataParams {
27
+ components: EditorState["components"];
28
+ elements: Document["elements"];
29
+ bindings: Document["bindings"];
30
+ }
31
+ export declare function getElementNodeData({ components, elements, bindings }: GetElementNodeDataParams): Record<string, ElementNodeData>;
32
+ export {};
@@ -0,0 +1,70 @@
1
+ import { InlineSvg } from "../InsertElements/InlineSvg.js";
2
+ import react from "react";
3
+ import get from "lodash/get.js";
4
+ function flattenElements(elements, activeElementId) {
5
+ const result = [];
6
+ const asArray = Object.values(elements);
7
+ for(const key in elements){
8
+ const node = elements[key];
9
+ if (node.parent) result.push({
10
+ id: node.id,
11
+ label: node.label,
12
+ parentId: node.parent.id,
13
+ active: node.id === activeElementId,
14
+ droppable: asArray.filter((el)=>el.parent?.id === node.id).length > 0,
15
+ data: {
16
+ parent: node.parent,
17
+ icon: node.image ? /*#__PURE__*/ react.createElement(InlineSvg, {
18
+ src: node.image,
19
+ className: "fill-neutral-strong"
20
+ }) : /*#__PURE__*/ react.createElement(react.Fragment, null),
21
+ draggable: node.canDrag
22
+ }
23
+ });
24
+ }
25
+ return result;
26
+ }
27
+ function getElementNodeData({ components, elements, bindings }) {
28
+ const getIndex = (elementId, parentId, slot)=>{
29
+ const elementBindings = bindings[parentId];
30
+ if (!elementBindings) return -1;
31
+ const slotValue = get(elementBindings, `inputs.${slot}`);
32
+ if (!slotValue) return -1;
33
+ if (slotValue.list) return slotValue.static.indexOf(elementId);
34
+ return -1;
35
+ };
36
+ return Object.values(elements).reduce((acc, element)=>{
37
+ if ("root" === element.id) return {
38
+ ...acc,
39
+ [element.id]: {
40
+ id: element.id,
41
+ label: "Root",
42
+ image: ""
43
+ }
44
+ };
45
+ const component = components[element.component.name] ?? {
46
+ label: "",
47
+ image: null,
48
+ canDrag: false
49
+ };
50
+ const parentId = element.parent.id;
51
+ const slot = element.parent.slot;
52
+ return {
53
+ ...acc,
54
+ [element.id]: {
55
+ id: element.id,
56
+ label: component?.label ?? component?.name ?? "",
57
+ image: component.image,
58
+ canDrag: component.canDrag,
59
+ parent: {
60
+ id: parentId,
61
+ slot,
62
+ index: getIndex(element.id, parentId, slot)
63
+ }
64
+ }
65
+ };
66
+ }, {});
67
+ }
68
+ export { flattenElements, getElementNodeData };
69
+
70
+ //# sourceMappingURL=navigatorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Toolbar/Navigator/navigatorUtils.js","sources":["../../../../../src/BaseEditor/defaultConfig/Toolbar/Navigator/navigatorUtils.tsx"],"sourcesContent":["import type { NodeDto } from \"@webiny/admin-ui\";\nimport type { Document } from \"@webiny/website-builder-sdk\";\nimport type { EditorState } from \"~/editorSdk/Editor.js\";\nimport { InlineSvg } from \"~/BaseEditor/defaultConfig/Toolbar/InsertElements/InlineSvg.js\";\nimport React from \"react\";\nimport get from \"lodash/get.js\";\n\nexport type ElementNode = NodeDto<{\n draggable: boolean;\n icon: React.ReactNode;\n parent: {\n id: string;\n slot: string;\n index: number;\n };\n}>;\n\nexport type ElementNodeData = {\n id: string;\n label: string;\n image: string;\n canDrag: boolean;\n parent: {\n id: string;\n slot: string;\n index: number;\n };\n};\n\nexport function flattenElements(\n elements: Record<string, ElementNodeData>,\n activeElementId?: string\n): ElementNode[] {\n const result: ElementNode[] = [];\n const asArray = Object.values(elements);\n\n for (const key in elements) {\n const node = elements[key];\n\n if (!node.parent) {\n continue;\n }\n\n result.push({\n id: node.id,\n label: node.label,\n parentId: node.parent.id,\n active: node.id === activeElementId,\n droppable: asArray.filter(el => el.parent?.id === node.id).length > 0,\n data: {\n parent: node.parent,\n icon: node.image ? (\n <InlineSvg src={node.image} className={\"fill-neutral-strong\"} />\n ) : (\n <></>\n ),\n draggable: node.canDrag\n }\n });\n }\n\n return result;\n}\n\ninterface GetElementNodeDataParams {\n components: EditorState[\"components\"];\n elements: Document[\"elements\"];\n bindings: Document[\"bindings\"];\n}\n\nexport function getElementNodeData({\n components,\n elements,\n bindings\n}: GetElementNodeDataParams): Record<string, ElementNodeData> {\n const getIndex = (elementId: string, parentId: string, slot: string) => {\n const elementBindings = bindings[parentId];\n if (!elementBindings) {\n return -1;\n }\n\n const slotValue = get(elementBindings, `inputs.${slot}`);\n if (!slotValue) {\n return -1;\n }\n\n if (slotValue.list) {\n return slotValue.static.indexOf(elementId);\n }\n\n return -1;\n };\n\n return Object.values(elements).reduce((acc, element) => {\n if (element.id === \"root\") {\n return { ...acc, [element.id]: { id: element.id, label: \"Root\", image: \"\" } };\n }\n\n const component = components[element.component.name] ?? {\n label: \"\",\n image: null,\n canDrag: false\n };\n\n const parentId = element.parent!.id;\n const slot = element.parent!.slot;\n\n return {\n ...acc,\n [element.id]: {\n id: element.id,\n label: component?.label ?? component?.name ?? \"\",\n image: component.image,\n canDrag: component.canDrag,\n parent: {\n id: parentId,\n slot,\n index: getIndex(element.id, parentId, slot)\n }\n }\n };\n }, {});\n}\n"],"names":["flattenElements","elements","activeElementId","result","asArray","Object","key","node","el","InlineSvg","getElementNodeData","components","bindings","getIndex","elementId","parentId","slot","elementBindings","slotValue","get","acc","element","component"],"mappings":";;;AA6BO,SAASA,gBACZC,QAAyC,EACzCC,eAAwB;IAExB,MAAMC,SAAwB,EAAE;IAChC,MAAMC,UAAUC,OAAO,MAAM,CAACJ;IAE9B,IAAK,MAAMK,OAAOL,SAAU;QACxB,MAAMM,OAAON,QAAQ,CAACK,IAAI;QAE1B,IAAKC,KAAK,MAAM,EAIhBJ,OAAO,IAAI,CAAC;YACR,IAAII,KAAK,EAAE;YACX,OAAOA,KAAK,KAAK;YACjB,UAAUA,KAAK,MAAM,CAAC,EAAE;YACxB,QAAQA,KAAK,EAAE,KAAKL;YACpB,WAAWE,QAAQ,MAAM,CAACI,CAAAA,KAAMA,GAAG,MAAM,EAAE,OAAOD,KAAK,EAAE,EAAE,MAAM,GAAG;YACpE,MAAM;gBACF,QAAQA,KAAK,MAAM;gBACnB,MAAMA,KAAK,KAAK,GAAG,WAAH,GACZ,oBAACE,WAASA;oBAAC,KAAKF,KAAK,KAAK;oBAAE,WAAW;mCAEvC;gBAEJ,WAAWA,KAAK,OAAO;YAC3B;QACJ;IACJ;IAEA,OAAOJ;AACX;AAQO,SAASO,mBAAmB,EAC/BC,UAAU,EACVV,QAAQ,EACRW,QAAQ,EACe;IACvB,MAAMC,WAAW,CAACC,WAAmBC,UAAkBC;QACnD,MAAMC,kBAAkBL,QAAQ,CAACG,SAAS;QAC1C,IAAI,CAACE,iBACD,OAAO;QAGX,MAAMC,YAAYC,IAAIF,iBAAiB,CAAC,OAAO,EAAED,MAAM;QACvD,IAAI,CAACE,WACD,OAAO;QAGX,IAAIA,UAAU,IAAI,EACd,OAAOA,UAAU,MAAM,CAAC,OAAO,CAACJ;QAGpC,OAAO;IACX;IAEA,OAAOT,OAAO,MAAM,CAACJ,UAAU,MAAM,CAAC,CAACmB,KAAKC;QACxC,IAAIA,AAAe,WAAfA,QAAQ,EAAE,EACV,OAAO;YAAE,GAAGD,GAAG;YAAE,CAACC,QAAQ,EAAE,CAAC,EAAE;gBAAE,IAAIA,QAAQ,EAAE;gBAAE,OAAO;gBAAQ,OAAO;YAAG;QAAE;QAGhF,MAAMC,YAAYX,UAAU,CAACU,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI;YACpD,OAAO;YACP,OAAO;YACP,SAAS;QACb;QAEA,MAAMN,WAAWM,QAAQ,MAAM,CAAE,EAAE;QACnC,MAAML,OAAOK,QAAQ,MAAM,CAAE,IAAI;QAEjC,OAAO;YACH,GAAGD,GAAG;YACN,CAACC,QAAQ,EAAE,CAAC,EAAE;gBACV,IAAIA,QAAQ,EAAE;gBACd,OAAOC,WAAW,SAASA,WAAW,QAAQ;gBAC9C,OAAOA,UAAU,KAAK;gBACtB,SAASA,UAAU,OAAO;gBAC1B,QAAQ;oBACJ,IAAIP;oBACJC;oBACA,OAAOH,SAASQ,QAAQ,EAAE,EAAEN,UAAUC;gBAC1C;YACJ;QACJ;IACJ,GAAG,CAAC;AACR"}
@@ -1,5 +1,5 @@
1
1
  import { Commands } from "../../BaseEditor/commands.js";
2
2
  import type { CommandPayload } from "../../editorSdk/createCommand.js";
3
3
  export declare function useCreateElement(): {
4
- createElement: (payload: CommandPayload<typeof Commands.CreateElement>) => void;
4
+ createElement: (payload: CommandPayload<typeof Commands.CreateElement>) => Promise<void>;
5
5
  };
@@ -3,9 +3,7 @@ import { useDocumentEditor } from "../../DocumentEditor/index.js";
3
3
  import { Commands } from "../commands.js";
4
4
  function useCreateElement() {
5
5
  const editor = useDocumentEditor();
6
- const createElement = useCallback((payload)=>{
7
- editor.executeCommand(Commands.CreateElement, payload);
8
- }, [
6
+ const createElement = useCallback((payload)=>editor.executeCommand(Commands.CreateElement, payload), [
9
7
  editor
10
8
  ]);
11
9
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/hooks/useCreateElement.js","sources":["../../../src/BaseEditor/hooks/useCreateElement.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport { Commands } from \"~/BaseEditor/commands.js\";\nimport type { CommandPayload } from \"~/editorSdk/createCommand.js\";\n\nexport function useCreateElement() {\n const editor = useDocumentEditor();\n\n const createElement = useCallback(\n (payload: CommandPayload<typeof Commands.CreateElement>) => {\n editor.executeCommand(Commands.CreateElement, payload);\n },\n [editor]\n );\n\n return { createElement };\n}\n"],"names":["useCreateElement","editor","useDocumentEditor","createElement","useCallback","payload","Commands"],"mappings":";;;AAKO,SAASA;IACZ,MAAMC,SAASC;IAEf,MAAMC,gBAAgBC,YAClB,CAACC;QACGJ,OAAO,cAAc,CAACK,SAAS,aAAa,EAAED;IAClD,GACA;QAACJ;KAAO;IAGZ,OAAO;QAAEE;IAAc;AAC3B"}
1
+ {"version":3,"file":"BaseEditor/hooks/useCreateElement.js","sources":["../../../src/BaseEditor/hooks/useCreateElement.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport { Commands } from \"~/BaseEditor/commands.js\";\nimport type { CommandPayload } from \"~/editorSdk/createCommand.js\";\n\nexport function useCreateElement() {\n const editor = useDocumentEditor();\n\n const createElement = useCallback(\n (payload: CommandPayload<typeof Commands.CreateElement>) => {\n return editor.executeCommand(Commands.CreateElement, payload);\n },\n [editor]\n );\n\n return { createElement };\n}\n"],"names":["useCreateElement","editor","useDocumentEditor","createElement","useCallback","payload","Commands"],"mappings":";;;AAKO,SAASA;IACZ,MAAMC,SAASC;IAEf,MAAMC,gBAAgBC,YAClB,CAACC,UACUJ,OAAO,cAAc,CAACK,SAAS,aAAa,EAAED,UAEzD;QAACJ;KAAO;IAGZ,OAAO;QAAEE;IAAc;AAC3B"}
@@ -43,7 +43,7 @@ const EcommerceIntegration_PageType = (props)=>{
43
43
  }, []);
44
44
  if (!renderer) return null;
45
45
  return /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
46
- name: "resource-picker",
46
+ name: `resource-picker:${pluginName}`,
47
47
  component: renderer
48
48
  }));
49
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ecommerce/EcommerceIntegration.js","sources":["../../src/ecommerce/EcommerceIntegration.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { useContainer } from \"@webiny/app\";\nimport { Editor } from \"~/index.js\";\nimport type {\n IEcommerceApi,\n IEcommerceApiFactory,\n SettingsInput as ISettingsInput,\n Resource as IResource\n} from \"./types.js\";\nimport { CreateInputRenderers } from \"./CreateInputRenderers.js\";\nimport type { EcommerceResourcePageTypeConfig } from \"./components/ResourcePage.js\";\nimport {\n EcommerceResourcePageType,\n createResourcePickerRenderer\n} from \"./components/ResourcePage.js\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { createGenericContext } from \"@webiny/app\";\nimport {\n EcommerceApiManifest,\n EcommerceApiProviderAbstraction,\n useEcommerceApiProvider\n} from \"~/features/index.js\";\nimport { PageType as PageTypeAbstraction } from \"~/presentation/pages/CreatePage/abstractions.js\";\nimport { createPageTypeRemovalDecorator } from \"~/presentation/pages/CreatePage/PageTypeProvider.js\";\n\nexport interface CustomResourcePickerProps<T = any> {\n value?: T;\n onChange(val: T | undefined): void;\n}\n\nexport type EcommerceIntegrationProps = {\n name: string;\n init: IEcommerceApiFactory;\n settings: ISettingsInput[];\n children?: React.ReactNode;\n};\n\nconst Context = createGenericContext<{ pluginName: string }>(\"EcommerceIntegrationContext\");\n\nconst EcommerceIntegrationBase = (props: EcommerceIntegrationProps) => {\n const provider = useEcommerceApiProvider();\n const container = useContainer();\n\n useMemo(() => {\n container.registerInstance(EcommerceApiProviderAbstraction, provider);\n }, []);\n\n useEffect(() => {\n provider.addApiManifest(new EcommerceApiManifest(props.name, props.init, props.settings));\n }, []);\n\n return (\n <Context.Provider pluginName={props.name}>\n <Editor.EditorConfig priority={\"secondary\"}>\n <CreateInputRenderers pluginName={props.name} />\n </Editor.EditorConfig>\n {props.children}\n </Context.Provider>\n );\n};\n\nexport type PageTypeProps =\n | (Omit<EcommerceResourcePageTypeConfig, \"apiName\"> & { remove?: never })\n | { name: string; remove: true };\n\nconst PageType = (props: PageTypeProps) => {\n const { pluginName } = Context.useHook();\n const container = useContainer();\n const provider = useEcommerceApiProvider();\n\n const renderer = useMemo(() => {\n if (props.remove) {\n container.registerDecorator(createPageTypeRemovalDecorator(props.name));\n return undefined;\n }\n\n const pageType = new EcommerceResourcePageType({ ...props, apiName: pluginName }, provider);\n container.registerInstance(PageTypeAbstraction, pageType);\n\n return createResourcePickerRenderer({\n pluginName,\n resourceType: props.resourceType\n });\n }, []);\n\n if (!renderer) {\n return null;\n }\n\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"resource-picker\"} component={renderer} />\n </AdminConfig>\n );\n};\n\nexport const EcommerceIntegration = Object.assign(EcommerceIntegrationBase, { PageType });\n\nexport namespace EcommerceIntegration {\n export type Props = EcommerceIntegrationProps;\n export type EcommerceApi = IEcommerceApi;\n export type EcommerceApiFactory = IEcommerceApiFactory;\n export type SettingsInput = ISettingsInput;\n export type Resource = IResource;\n}\n"],"names":["Context","createGenericContext","EcommerceIntegrationBase","props","provider","useEcommerceApiProvider","container","useContainer","useMemo","EcommerceApiProviderAbstraction","useEffect","EcommerceApiManifest","Editor","CreateInputRenderers","PageType","pluginName","renderer","createPageTypeRemovalDecorator","pageType","EcommerceResourcePageType","PageTypeAbstraction","createResourcePickerRenderer","AdminConfig","EcommerceIntegration","Object"],"mappings":";;;;;;;;;AAqCA,MAAMA,UAAUC,qBAA6C;AAE7D,MAAMC,2BAA2B,CAACC;IAC9B,MAAMC,WAAWC;IACjB,MAAMC,YAAYC;IAElBC,QAAQ;QACJF,UAAU,gBAAgB,CAACG,iCAAiCL;IAChE,GAAG,EAAE;IAELM,UAAU;QACNN,SAAS,cAAc,CAAC,IAAIO,qBAAqBR,MAAM,IAAI,EAAEA,MAAM,IAAI,EAAEA,MAAM,QAAQ;IAC3F,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACH,QAAQ,QAAQ;QAAC,YAAYG,MAAM,IAAI;qBACpC,oBAACS,OAAO,YAAY;QAAC,UAAU;qBAC3B,oBAACC,sBAAoBA;QAAC,YAAYV,MAAM,IAAI;SAE/CA,MAAM,QAAQ;AAG3B;AAMA,MAAMW,gCAAW,CAACX;IACd,MAAM,EAAEY,UAAU,EAAE,GAAGf,QAAQ,OAAO;IACtC,MAAMM,YAAYC;IAClB,MAAMH,WAAWC;IAEjB,MAAMW,WAAWR,QAAQ;QACrB,IAAIL,MAAM,MAAM,EAAE,YACdG,UAAU,iBAAiB,CAACW,+BAA+Bd,MAAM,IAAI;QAIzE,MAAMe,WAAW,IAAIC,0BAA0B;YAAE,GAAGhB,KAAK;YAAE,SAASY;QAAW,GAAGX;QAClFE,UAAU,gBAAgB,CAACc,UAAqBF;QAEhD,OAAOG,6BAA6B;YAChCN;YACA,cAAcZ,MAAM,YAAY;QACpC;IACJ,GAAG,EAAE;IAEL,IAAI,CAACa,UACD,OAAO;IAGX,OAAO,WAAP,GACI,oBAACM,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAmB,WAAWN;;AAGhF;AAEO,MAAMO,uBAAuBC,OAAO,MAAM,CAACtB,0BAA0B;IAAEY,UAAAA;AAAS"}
1
+ {"version":3,"file":"ecommerce/EcommerceIntegration.js","sources":["../../src/ecommerce/EcommerceIntegration.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { useContainer } from \"@webiny/app\";\nimport { Editor } from \"~/index.js\";\nimport type {\n IEcommerceApi,\n IEcommerceApiFactory,\n SettingsInput as ISettingsInput,\n Resource as IResource\n} from \"./types.js\";\nimport { CreateInputRenderers } from \"./CreateInputRenderers.js\";\nimport type { EcommerceResourcePageTypeConfig } from \"./components/ResourcePage.js\";\nimport {\n EcommerceResourcePageType,\n createResourcePickerRenderer\n} from \"./components/ResourcePage.js\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { createGenericContext } from \"@webiny/app\";\nimport {\n EcommerceApiManifest,\n EcommerceApiProviderAbstraction,\n useEcommerceApiProvider\n} from \"~/features/index.js\";\nimport { PageType as PageTypeAbstraction } from \"~/presentation/pages/CreatePage/abstractions.js\";\nimport { createPageTypeRemovalDecorator } from \"~/presentation/pages/CreatePage/PageTypeProvider.js\";\n\nexport interface CustomResourcePickerProps<T = any> {\n value?: T;\n onChange(val: T | undefined): void;\n}\n\nexport type EcommerceIntegrationProps = {\n name: string;\n init: IEcommerceApiFactory;\n settings: ISettingsInput[];\n children?: React.ReactNode;\n};\n\nconst Context = createGenericContext<{ pluginName: string }>(\"EcommerceIntegrationContext\");\n\nconst EcommerceIntegrationBase = (props: EcommerceIntegrationProps) => {\n const provider = useEcommerceApiProvider();\n const container = useContainer();\n\n useMemo(() => {\n container.registerInstance(EcommerceApiProviderAbstraction, provider);\n }, []);\n\n useEffect(() => {\n provider.addApiManifest(new EcommerceApiManifest(props.name, props.init, props.settings));\n }, []);\n\n return (\n <Context.Provider pluginName={props.name}>\n <Editor.EditorConfig priority={\"secondary\"}>\n <CreateInputRenderers pluginName={props.name} />\n </Editor.EditorConfig>\n {props.children}\n </Context.Provider>\n );\n};\n\nexport type PageTypeProps =\n | (Omit<EcommerceResourcePageTypeConfig, \"apiName\"> & { remove?: never })\n | { name: string; remove: true };\n\nconst PageType = (props: PageTypeProps) => {\n const { pluginName } = Context.useHook();\n const container = useContainer();\n const provider = useEcommerceApiProvider();\n\n const renderer = useMemo(() => {\n if (props.remove) {\n container.registerDecorator(createPageTypeRemovalDecorator(props.name));\n return undefined;\n }\n\n const pageType = new EcommerceResourcePageType({ ...props, apiName: pluginName }, provider);\n container.registerInstance(PageTypeAbstraction, pageType);\n\n return createResourcePickerRenderer({\n pluginName,\n resourceType: props.resourceType\n });\n }, []);\n\n if (!renderer) {\n return null;\n }\n\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer\n name={`resource-picker:${pluginName}`}\n component={renderer}\n />\n </AdminConfig>\n );\n};\n\nexport const EcommerceIntegration = Object.assign(EcommerceIntegrationBase, { PageType });\n\nexport namespace EcommerceIntegration {\n export type Props = EcommerceIntegrationProps;\n export type EcommerceApi = IEcommerceApi;\n export type EcommerceApiFactory = IEcommerceApiFactory;\n export type SettingsInput = ISettingsInput;\n export type Resource = IResource;\n}\n"],"names":["Context","createGenericContext","EcommerceIntegrationBase","props","provider","useEcommerceApiProvider","container","useContainer","useMemo","EcommerceApiProviderAbstraction","useEffect","EcommerceApiManifest","Editor","CreateInputRenderers","PageType","pluginName","renderer","createPageTypeRemovalDecorator","pageType","EcommerceResourcePageType","PageTypeAbstraction","createResourcePickerRenderer","AdminConfig","EcommerceIntegration","Object"],"mappings":";;;;;;;;;AAqCA,MAAMA,UAAUC,qBAA6C;AAE7D,MAAMC,2BAA2B,CAACC;IAC9B,MAAMC,WAAWC;IACjB,MAAMC,YAAYC;IAElBC,QAAQ;QACJF,UAAU,gBAAgB,CAACG,iCAAiCL;IAChE,GAAG,EAAE;IAELM,UAAU;QACNN,SAAS,cAAc,CAAC,IAAIO,qBAAqBR,MAAM,IAAI,EAAEA,MAAM,IAAI,EAAEA,MAAM,QAAQ;IAC3F,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACH,QAAQ,QAAQ;QAAC,YAAYG,MAAM,IAAI;qBACpC,oBAACS,OAAO,YAAY;QAAC,UAAU;qBAC3B,oBAACC,sBAAoBA;QAAC,YAAYV,MAAM,IAAI;SAE/CA,MAAM,QAAQ;AAG3B;AAMA,MAAMW,gCAAW,CAACX;IACd,MAAM,EAAEY,UAAU,EAAE,GAAGf,QAAQ,OAAO;IACtC,MAAMM,YAAYC;IAClB,MAAMH,WAAWC;IAEjB,MAAMW,WAAWR,QAAQ;QACrB,IAAIL,MAAM,MAAM,EAAE,YACdG,UAAU,iBAAiB,CAACW,+BAA+Bd,MAAM,IAAI;QAIzE,MAAMe,WAAW,IAAIC,0BAA0B;YAAE,GAAGhB,KAAK;YAAE,SAASY;QAAW,GAAGX;QAClFE,UAAU,gBAAgB,CAACc,UAAqBF;QAEhD,OAAOG,6BAA6B;YAChCN;YACA,cAAcZ,MAAM,YAAY;QACpC;IACJ,GAAG,EAAE;IAEL,IAAI,CAACa,UACD,OAAO;IAGX,OAAO,WAAP,GACI,oBAACM,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM,CAAC,gBAAgB,EAAEP,YAAY;QACrC,WAAWC;;AAI3B;AAEO,MAAMO,uBAAuBC,OAAO,MAAM,CAACtB,0BAA0B;IAAEY,UAAAA;AAAS"}
@@ -6,7 +6,7 @@ import type { IEcommerceApiProvider } from "../../features/index.js";
6
6
  import type { Resource } from "../types.js";
7
7
  declare module "@webiny/app-admin/features/formModel/abstractions.js" {
8
8
  interface IFieldRendererRegistry {
9
- "resource-picker": {
9
+ [key: `resource-picker:${string}`]: {
10
10
  fieldType: "text";
11
11
  settings?: {
12
12
  rows?: number;
@@ -28,7 +28,7 @@ class EcommerceResourcePageType {
28
28
  }
29
29
  modifyForm(form) {
30
30
  form.fields((fields)=>({
31
- resourceId: fields.text().label(toTitleCaseLabel(this.config.resourceType)).required().renderer("resource-picker").afterChange((value, f)=>{
31
+ resourceId: fields.text().label(toTitleCaseLabel(this.config.resourceType)).required().renderer(`resource-picker:${this.config.apiName}`).afterChange((value, f)=>{
32
32
  if (!value) return;
33
33
  this.onResourceSelected(String(value), f);
34
34
  })