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

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 (202) hide show
  1. package/BaseEditor/defaultConfig/Content/usePreviewDomain.d.ts +1 -5
  2. package/BaseEditor/defaultConfig/Content/usePreviewDomain.js +13 -24
  3. package/BaseEditor/defaultConfig/Content/usePreviewDomain.js.map +1 -1
  4. package/BaseEditor/defaultConfig/ElementInputRenderers.js +4 -0
  5. package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
  6. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js +2 -2
  7. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js.map +1 -1
  8. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js +1 -2
  9. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map +1 -1
  10. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js +2 -2
  11. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js.map +1 -1
  12. package/BaseEditor/metadata/ElementMetadata.js +4 -1
  13. package/BaseEditor/metadata/ElementMetadata.js.map +1 -1
  14. package/Extension.js +4 -29
  15. package/Extension.js.map +1 -1
  16. package/constants.d.ts +0 -5
  17. package/constants.js +0 -8
  18. package/constants.js.map +1 -1
  19. package/editorSdk/utils/$getElementInputValues.js +7 -2
  20. package/editorSdk/utils/$getElementInputValues.js.map +1 -1
  21. package/editorSdk/utils/executeOnChange.js +2 -2
  22. package/editorSdk/utils/executeOnChange.js.map +1 -1
  23. package/features/permissions/abstractions.d.ts +2 -2
  24. package/features/permissions/feature.d.ts +2 -2
  25. package/features/settings/getSettings/GetSettingsGateway.js +5 -2
  26. package/features/settings/getSettings/GetSettingsGateway.js.map +1 -1
  27. package/inputRenderers/ContentEntryInput.d.ts +12 -0
  28. package/inputRenderers/ContentEntryInput.js +277 -0
  29. package/inputRenderers/ContentEntryInput.js.map +1 -0
  30. package/inputRenderers/LexicalInput/LexicalEditor.js +10 -6
  31. package/inputRenderers/LexicalInput/LexicalEditor.js.map +1 -1
  32. package/inputRenderers/LexicalInput/TypographyDropDown.js +3 -2
  33. package/inputRenderers/LexicalInput/TypographyDropDown.js.map +1 -1
  34. package/inputRenderers/LexicalInput/wbStaticToolbar.css +72 -103
  35. package/package.json +23 -22
  36. package/presentation/pages/TranslatePage/translatePageSchema.d.ts +1 -1
  37. package/presentation/pages/TranslatePage/translatePageSchema.js +1 -1
  38. package/presentation/pages/TranslatePage/translatePageSchema.js.map +1 -1
  39. package/presentation/security/HasPermission.d.ts +0 -5
  40. package/presentation/security/usePermissions.d.ts +2 -2
  41. package/features/experiments/ExperimentsGateway.d.ts +0 -30
  42. package/features/experiments/ExperimentsGateway.js +0 -326
  43. package/features/experiments/ExperimentsGateway.js.map +0 -1
  44. package/features/experiments/abstractions.d.ts +0 -25
  45. package/features/experiments/abstractions.js +0 -5
  46. package/features/experiments/abstractions.js.map +0 -1
  47. package/features/experiments/feature.d.ts +0 -3
  48. package/features/experiments/feature.js +0 -17
  49. package/features/experiments/feature.js.map +0 -1
  50. package/features/experiments/index.d.ts +0 -3
  51. package/features/experiments/index.js +0 -2
  52. package/features/experiments/types.d.ts +0 -61
  53. package/features/experiments/types.js +0 -0
  54. package/inputRenderers/LexicalInput/icons/list-ol.js +0 -20
  55. package/inputRenderers/LexicalInput/icons/list-ol.js.map +0 -1
  56. package/inputRenderers/LexicalInput/icons/list-ol.svg +0 -1
  57. package/inputRenderers/LexicalInput/icons/list-ul.js +0 -18
  58. package/inputRenderers/LexicalInput/icons/list-ul.js.map +0 -1
  59. package/inputRenderers/LexicalInput/icons/list-ul.svg +0 -1
  60. package/modules/AbTesting.d.ts +0 -2
  61. package/modules/AbTesting.js +0 -19
  62. package/modules/AbTesting.js.map +0 -1
  63. package/modules/settings/WebsiteBuilderSettings.d.ts +0 -2
  64. package/modules/settings/WebsiteBuilderSettings.js +0 -14
  65. package/modules/settings/WebsiteBuilderSettings.js.map +0 -1
  66. package/modules/settings/useSettingsDialog.d.ts +0 -3
  67. package/modules/settings/useSettingsDialog.js +0 -37
  68. package/modules/settings/useSettingsDialog.js.map +0 -1
  69. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.d.ts +0 -30
  70. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js +0 -202
  71. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js.map +0 -1
  72. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.d.ts +0 -65
  73. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js +0 -5
  74. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js.map +0 -1
  75. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.d.ts +0 -12
  76. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js +0 -149
  77. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js.map +0 -1
  78. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.d.ts +0 -17
  79. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js +0 -122
  80. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js.map +0 -1
  81. package/presentation/experiments/ExperimentForm/feature.d.ts +0 -3
  82. package/presentation/experiments/ExperimentForm/feature.js +0 -17
  83. package/presentation/experiments/ExperimentForm/feature.js.map +0 -1
  84. package/presentation/experiments/ExperimentForm/index.d.ts +0 -3
  85. package/presentation/experiments/ExperimentForm/index.js +0 -3
  86. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.d.ts +0 -18
  87. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js +0 -25
  88. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js.map +0 -1
  89. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.d.ts +0 -67
  90. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js +0 -224
  91. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js.map +0 -1
  92. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.d.ts +0 -10
  93. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js +0 -5
  94. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js.map +0 -1
  95. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.d.ts +0 -58
  96. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js +0 -5
  97. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js.map +0 -1
  98. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.d.ts +0 -11
  99. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js +0 -110
  100. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js.map +0 -1
  101. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.d.ts +0 -9
  102. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js +0 -178
  103. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js.map +0 -1
  104. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.d.ts +0 -11
  105. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js +0 -51
  106. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js.map +0 -1
  107. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.d.ts +0 -14
  108. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js +0 -147
  109. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js.map +0 -1
  110. package/presentation/experiments/ExperimentsEditor/feature.d.ts +0 -3
  111. package/presentation/experiments/ExperimentsEditor/feature.js +0 -21
  112. package/presentation/experiments/ExperimentsEditor/feature.js.map +0 -1
  113. package/presentation/experiments/ExperimentsEditor/index.d.ts +0 -4
  114. package/presentation/experiments/ExperimentsEditor/index.js +0 -3
  115. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.d.ts +0 -39
  116. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js +0 -219
  117. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js.map +0 -1
  118. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.d.ts +0 -52
  119. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js +0 -5
  120. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js.map +0 -1
  121. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.d.ts +0 -10
  122. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js +0 -296
  123. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js.map +0 -1
  124. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.d.ts +0 -2
  125. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js +0 -92
  126. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js.map +0 -1
  127. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.d.ts +0 -6
  128. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js +0 -103
  129. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js.map +0 -1
  130. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.d.ts +0 -9
  131. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js +0 -58
  132. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js.map +0 -1
  133. package/presentation/experiments/ExperimentsManager/feature.d.ts +0 -3
  134. package/presentation/experiments/ExperimentsManager/feature.js +0 -17
  135. package/presentation/experiments/ExperimentsManager/feature.js.map +0 -1
  136. package/presentation/experiments/ExperimentsManager/index.d.ts +0 -4
  137. package/presentation/experiments/ExperimentsManager/index.js +0 -3
  138. package/presentation/experiments/VariantPageEditorConfig.d.ts +0 -7
  139. package/presentation/experiments/VariantPageEditorConfig.js +0 -26
  140. package/presentation/experiments/VariantPageEditorConfig.js.map +0 -1
  141. package/presentation/experiments/config/ExperimentsEditorConfig.d.ts +0 -8
  142. package/presentation/experiments/config/ExperimentsEditorConfig.js +0 -21
  143. package/presentation/experiments/config/ExperimentsEditorConfig.js.map +0 -1
  144. package/presentation/experiments/config/VariantAutoSave.d.ts +0 -5
  145. package/presentation/experiments/config/VariantAutoSave.js +0 -41
  146. package/presentation/experiments/config/VariantAutoSave.js.map +0 -1
  147. package/presentation/experiments/shared/variantColors.d.ts +0 -11
  148. package/presentation/experiments/shared/variantColors.js +0 -13
  149. package/presentation/experiments/shared/variantColors.js.map +0 -1
  150. package/presentation/experiments/shared/variantDocument.d.ts +0 -16
  151. package/presentation/experiments/shared/variantDocument.js +0 -31
  152. package/presentation/experiments/shared/variantDocument.js.map +0 -1
  153. package/presentation/navigation/Extension.d.ts +0 -2
  154. package/presentation/navigation/Extension.js +0 -27
  155. package/presentation/navigation/Extension.js.map +0 -1
  156. package/presentation/navigation/NextjsConfig/NextjsConfigDialog.d.ts +0 -9
  157. package/presentation/navigation/NextjsConfig/NextjsConfigDialog.js +0 -41
  158. package/presentation/navigation/NextjsConfig/NextjsConfigDialog.js.map +0 -1
  159. package/presentation/navigation/NextjsConfig/NextjsConfigGateway.d.ts +0 -11
  160. package/presentation/navigation/NextjsConfig/NextjsConfigGateway.js +0 -38
  161. package/presentation/navigation/NextjsConfig/NextjsConfigGateway.js.map +0 -1
  162. package/presentation/navigation/NextjsConfig/NextjsConfigPresenter.d.ts +0 -12
  163. package/presentation/navigation/NextjsConfig/NextjsConfigPresenter.js +0 -32
  164. package/presentation/navigation/NextjsConfig/NextjsConfigPresenter.js.map +0 -1
  165. package/presentation/navigation/NextjsConfig/NextjsConfigRepository.d.ts +0 -12
  166. package/presentation/navigation/NextjsConfig/NextjsConfigRepository.js +0 -30
  167. package/presentation/navigation/NextjsConfig/NextjsConfigRepository.js.map +0 -1
  168. package/presentation/navigation/NextjsConfig/abstractions.d.ts +0 -30
  169. package/presentation/navigation/NextjsConfig/abstractions.js +0 -7
  170. package/presentation/navigation/NextjsConfig/abstractions.js.map +0 -1
  171. package/presentation/navigation/NextjsConfig/feature.d.ts +0 -3
  172. package/presentation/navigation/NextjsConfig/feature.js +0 -21
  173. package/presentation/navigation/NextjsConfig/feature.js.map +0 -1
  174. package/presentation/navigation/NextjsConfig/markdownComponents.d.ts +0 -6
  175. package/presentation/navigation/NextjsConfig/markdownComponents.js +0 -31
  176. package/presentation/navigation/NextjsConfig/markdownComponents.js.map +0 -1
  177. package/presentation/navigation/NuxtConfig/NuxtConfigGateway.d.ts +0 -11
  178. package/presentation/navigation/NuxtConfig/NuxtConfigGateway.js +0 -38
  179. package/presentation/navigation/NuxtConfig/NuxtConfigGateway.js.map +0 -1
  180. package/presentation/navigation/NuxtConfig/NuxtConfigPresenter.d.ts +0 -12
  181. package/presentation/navigation/NuxtConfig/NuxtConfigPresenter.js +0 -32
  182. package/presentation/navigation/NuxtConfig/NuxtConfigPresenter.js.map +0 -1
  183. package/presentation/navigation/NuxtConfig/NuxtConfigRepository.d.ts +0 -12
  184. package/presentation/navigation/NuxtConfig/NuxtConfigRepository.js +0 -30
  185. package/presentation/navigation/NuxtConfig/NuxtConfigRepository.js.map +0 -1
  186. package/presentation/navigation/NuxtConfig/abstractions.d.ts +0 -30
  187. package/presentation/navigation/NuxtConfig/abstractions.js +0 -7
  188. package/presentation/navigation/NuxtConfig/abstractions.js.map +0 -1
  189. package/presentation/navigation/NuxtConfig/feature.d.ts +0 -3
  190. package/presentation/navigation/NuxtConfig/feature.js +0 -21
  191. package/presentation/navigation/NuxtConfig/feature.js.map +0 -1
  192. package/presentation/navigation/StarterKitConfigDialog.d.ts +0 -7
  193. package/presentation/navigation/StarterKitConfigDialog.js +0 -88
  194. package/presentation/navigation/StarterKitConfigDialog.js.map +0 -1
  195. package/presentation/pages/PageEditor/PageEditor.experiments.d.ts +0 -2
  196. package/presentation/pages/PageEditor/PageEditor.experiments.js +0 -54
  197. package/presentation/pages/PageEditor/PageEditor.experiments.js.map +0 -1
  198. package/presentation/pages/PageEditor/PageEditorSurface.d.ts +0 -15
  199. package/presentation/pages/PageEditor/PageEditorSurface.js +0 -63
  200. package/presentation/pages/PageEditor/PageEditorSurface.js.map +0 -1
  201. package/static/svg/list-ol.d64946f3.svg +0 -1
  202. package/static/svg/list-ul.1d54da3f.svg +0 -1
@@ -1,10 +1,6 @@
1
- /**
2
- * This hook loads preview domain from settings, and also takes into account the override
3
- * via localstorage, which is a developers-only feature.
4
- */
5
1
  export declare const usePreviewDomain: () => {
6
2
  previewDomain: string;
7
3
  setPreviewDomain: (domain: string) => void;
8
4
  unsetPreviewDomain: () => void;
9
- isOverridden: "" | boolean | null;
5
+ isOverridden: boolean;
10
6
  };
@@ -1,37 +1,26 @@
1
- import { useCallback, useEffect, useState } from "react";
2
- import { useFeature } from "@webiny/app";
3
- import { GetSettingsFeature } from "../../../features/settings/getSettings/index.js";
4
- import { useSubscribeToLocalStorage } from "./useSubscribeToLocalStorage.js";
5
- const CUSTOM_PREVIEW_DOMAIN = "webiny_wb_custom_preview_domain";
6
- const normalizePreviewDomain = (domain)=>domain.replace(/\/+$/, "");
7
- const usePreviewDomain = ()=>{
8
- const [previewDomain, setDomainFromSettings] = useState("");
9
- const [customDomain, setCustomDomain] = useState(()=>window.localStorage.getItem(CUSTOM_PREVIEW_DOMAIN));
10
- const localStorage = useSubscribeToLocalStorage(CUSTOM_PREVIEW_DOMAIN, (newValue)=>{
11
- setCustomDomain(newValue);
12
- });
1
+ import { useCallback } from "react";
2
+ import { useLocalStorage } from "@webiny/app";
3
+ import { usePreviewDomain } from "@webiny/frontend-settings/exports/admin.js";
4
+ const CUSTOM_PREVIEW_DOMAIN = "custom_preview_domain";
5
+ const usePreviewDomain_usePreviewDomain = ()=>{
6
+ const { previewDomain, isOverridden } = usePreviewDomain();
7
+ const localStorage = useLocalStorage();
13
8
  const setPreviewDomain = useCallback((domain)=>{
14
- if (domain === previewDomain) localStorage.unset();
15
- else localStorage.set(domain);
9
+ if (domain === previewDomain) localStorage.remove(CUSTOM_PREVIEW_DOMAIN);
10
+ else localStorage.set(CUSTOM_PREVIEW_DOMAIN, domain);
16
11
  }, [
17
12
  previewDomain
18
13
  ]);
19
14
  const unsetPreviewDomain = useCallback(()=>{
20
- localStorage.unset();
21
- }, []);
22
- const { useCase: getSettings } = useFeature(GetSettingsFeature);
23
- useEffect(()=>{
24
- getSettings.execute().then((settings)=>{
25
- setDomainFromSettings(settings.previewDomain ?? "http://localhost:3000");
26
- });
15
+ localStorage.remove(CUSTOM_PREVIEW_DOMAIN);
27
16
  }, []);
28
17
  return {
29
- previewDomain: normalizePreviewDomain(customDomain ?? previewDomain),
18
+ previewDomain,
30
19
  setPreviewDomain,
31
20
  unsetPreviewDomain,
32
- isOverridden: customDomain && customDomain !== previewDomain
21
+ isOverridden
33
22
  };
34
23
  };
35
- export { usePreviewDomain };
24
+ export { usePreviewDomain_usePreviewDomain as usePreviewDomain };
36
25
 
37
26
  //# sourceMappingURL=usePreviewDomain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Content/usePreviewDomain.js","sources":["../../../../src/BaseEditor/defaultConfig/Content/usePreviewDomain.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { GetSettingsFeature } from \"~/features/settings/getSettings/index.js\";\nimport { useSubscribeToLocalStorage } from \"./useSubscribeToLocalStorage.js\";\n\nconst CUSTOM_PREVIEW_DOMAIN = \"webiny_wb_custom_preview_domain\";\n\n/**\n * Removes trailing slashes from the preview domain, so that concatenating it with a page path\n * (which always starts with a slash) never produces a double slash.\n *\n * We normalize here, at the single point where the domain is read, rather than where it's written.\n * The domain can come from two different sources: the saved settings value (`getSettings`) and the\n * dev-only session override stored in localStorage (`setPreviewDomain`). Normalizing on read covers\n * both sources in one place, and also fixes any values that were already stored with a trailing\n * slash before this normalization existed.\n */\nconst normalizePreviewDomain = (domain: string) => domain.replace(/\\/+$/, \"\");\n\n/**\n * This hook loads preview domain from settings, and also takes into account the override\n * via localstorage, which is a developers-only feature.\n */\nexport const usePreviewDomain = () => {\n const [previewDomain, setDomainFromSettings] = useState<string>(\"\");\n\n const [customDomain, setCustomDomain] = useState(() =>\n window.localStorage.getItem(CUSTOM_PREVIEW_DOMAIN)\n );\n\n const localStorage = useSubscribeToLocalStorage(CUSTOM_PREVIEW_DOMAIN, newValue => {\n setCustomDomain(newValue);\n });\n\n const setPreviewDomain = useCallback(\n (domain: string) => {\n if (domain === previewDomain) {\n localStorage.unset();\n } else {\n localStorage.set(domain);\n }\n },\n [previewDomain]\n );\n\n const unsetPreviewDomain = useCallback(() => {\n localStorage.unset();\n }, []);\n\n const { useCase: getSettings } = useFeature(GetSettingsFeature);\n\n useEffect(() => {\n getSettings.execute().then(settings => {\n setDomainFromSettings(settings.previewDomain ?? \"http://localhost:3000\");\n });\n }, []);\n\n return {\n previewDomain: normalizePreviewDomain(customDomain ?? previewDomain),\n setPreviewDomain,\n unsetPreviewDomain,\n isOverridden: customDomain && customDomain !== previewDomain\n };\n};\n"],"names":["CUSTOM_PREVIEW_DOMAIN","normalizePreviewDomain","domain","usePreviewDomain","previewDomain","setDomainFromSettings","useState","customDomain","setCustomDomain","window","localStorage","useSubscribeToLocalStorage","newValue","setPreviewDomain","useCallback","unsetPreviewDomain","getSettings","useFeature","GetSettingsFeature","useEffect","settings"],"mappings":";;;;AAKA,MAAMA,wBAAwB;AAY9B,MAAMC,yBAAyB,CAACC,SAAmBA,OAAO,OAAO,CAAC,QAAQ;AAMnE,MAAMC,mBAAmB;IAC5B,MAAM,CAACC,eAAeC,sBAAsB,GAAGC,SAAiB;IAEhE,MAAM,CAACC,cAAcC,gBAAgB,GAAGF,SAAS,IAC7CG,OAAO,YAAY,CAAC,OAAO,CAACT;IAGhC,MAAMU,eAAeC,2BAA2BX,uBAAuBY,CAAAA;QACnEJ,gBAAgBI;IACpB;IAEA,MAAMC,mBAAmBC,YACrB,CAACZ;QACG,IAAIA,WAAWE,eACXM,aAAa,KAAK;aAElBA,aAAa,GAAG,CAACR;IAEzB,GACA;QAACE;KAAc;IAGnB,MAAMW,qBAAqBD,YAAY;QACnCJ,aAAa,KAAK;IACtB,GAAG,EAAE;IAEL,MAAM,EAAE,SAASM,WAAW,EAAE,GAAGC,WAAWC;IAE5CC,UAAU;QACNH,YAAY,OAAO,GAAG,IAAI,CAACI,CAAAA;YACvBf,sBAAsBe,SAAS,aAAa,IAAI;QACpD;IACJ,GAAG,EAAE;IAEL,OAAO;QACH,eAAenB,uBAAuBM,gBAAgBH;QACtDS;QACAE;QACA,cAAcR,gBAAgBA,iBAAiBH;IACnD;AACJ"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Content/usePreviewDomain.js","sources":["../../../../src/BaseEditor/defaultConfig/Content/usePreviewDomain.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useLocalStorage } from \"@webiny/app\";\nimport { usePreviewDomain as useSharedPreviewDomain } from \"@webiny/frontend-settings/exports/admin.js\";\n\nconst CUSTOM_PREVIEW_DOMAIN = \"custom_preview_domain\";\n\nexport const usePreviewDomain = () => {\n const { previewDomain, isOverridden } = useSharedPreviewDomain();\n const localStorage = useLocalStorage();\n\n const setPreviewDomain = useCallback(\n (domain: string) => {\n if (domain === previewDomain) {\n localStorage.remove(CUSTOM_PREVIEW_DOMAIN);\n } else {\n localStorage.set(CUSTOM_PREVIEW_DOMAIN, domain);\n }\n },\n [previewDomain]\n );\n\n const unsetPreviewDomain = useCallback(() => {\n localStorage.remove(CUSTOM_PREVIEW_DOMAIN);\n }, []);\n\n return {\n previewDomain,\n setPreviewDomain,\n unsetPreviewDomain,\n isOverridden\n };\n};\n"],"names":["CUSTOM_PREVIEW_DOMAIN","usePreviewDomain","previewDomain","isOverridden","useSharedPreviewDomain","localStorage","useLocalStorage","setPreviewDomain","useCallback","domain","unsetPreviewDomain"],"mappings":";;;AAIA,MAAMA,wBAAwB;AAEvB,MAAMC,oCAAmB;IAC5B,MAAM,EAAEC,aAAa,EAAEC,YAAY,EAAE,GAAGC;IACxC,MAAMC,eAAeC;IAErB,MAAMC,mBAAmBC,YACrB,CAACC;QACG,IAAIA,WAAWP,eACXG,aAAa,MAAM,CAACL;aAEpBK,aAAa,GAAG,CAACL,uBAAuBS;IAEhD,GACA;QAACP;KAAc;IAGnB,MAAMQ,qBAAqBF,YAAY;QACnCH,aAAa,MAAM,CAACL;IACxB,GAAG,EAAE;IAEL,OAAO;QACHE;QACAK;QACAG;QACAP;IACJ;AACJ"}
@@ -12,6 +12,7 @@ import { SelectInputRenderer } from "../../inputRenderers/SelectInput.js";
12
12
  import { FileInputRenderer } from "../../inputRenderers/FileInput.js";
13
13
  import { FragmentSelectorInputRenderer } from "../../inputRenderers/FragmentSelectorInput.js";
14
14
  import { ObjectInputRenderer } from "../../inputRenderers/ObjectInput/ObjectInputRenderer.js";
15
+ import { ContentEntryInputRenderer } from "../../inputRenderers/ContentEntryInput.js";
15
16
  const ElementInputRenderers = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(EditorConfig.ElementInput.Renderer, {
16
17
  name: "Webiny/Slot",
17
18
  component: SlotInputRenderer
@@ -45,6 +46,9 @@ const ElementInputRenderers = ()=>/*#__PURE__*/ react.createElement(react.Fragme
45
46
  }), /*#__PURE__*/ react.createElement(EditorConfig.ElementInput.Renderer, {
46
47
  name: "Webiny/Object",
47
48
  component: ObjectInputRenderer
49
+ }), /*#__PURE__*/ react.createElement(EditorConfig.ElementInput.Renderer, {
50
+ name: "Webiny/ContentEntry",
51
+ component: ContentEntryInputRenderer
48
52
  }));
49
53
  export { ElementInputRenderers };
50
54
 
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/ElementInputRenderers.js","sources":["../../../src/BaseEditor/defaultConfig/ElementInputRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { EditorConfig } from \"~/BaseEditor/index.js\";\nimport { TextInputRenderer } from \"~/inputRenderers/TextInput.js\";\nimport { NumberInputRenderer } from \"~/inputRenderers/NumberInput.js\";\nimport { BooleanInputRenderer } from \"~/inputRenderers/BooleanInput.js\";\nimport { TextareaInputRenderer } from \"~/inputRenderers/TextareaInput.js\";\nimport { LexicalInputRenderer } from \"~/inputRenderers/LexicalInput/LexicalInput.js\";\nimport { DefaultLexicalConfig } from \"~/inputRenderers/LexicalInput/DefaultLexicalConfig.js\";\nimport { SlotInputRenderer } from \"~/inputRenderers/SlotInput.js\";\nimport { GridLayoutInputRenderer } from \"~/inputRenderers/GridLayoutInput.js\";\nimport { SelectInputRenderer } from \"~/inputRenderers/SelectInput.js\";\nimport { FileInputRenderer } from \"~/inputRenderers/FileInput.js\";\nimport { FragmentSelectorInputRenderer } from \"~/inputRenderers/FragmentSelectorInput.js\";\nimport { ObjectInputRenderer } from \"~/inputRenderers/ObjectInput/ObjectInputRenderer.js\";\n\nexport const ElementInputRenderers = () => {\n return (\n <>\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Slot\"}\n component={SlotInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Input\"}\n component={TextInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Select\"}\n component={SelectInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Textarea\"}\n component={TextareaInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Number\"}\n component={NumberInputRenderer}\n />\n {/* Configure Lexical Editor*/}\n <DefaultLexicalConfig />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Lexical\"}\n component={LexicalInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Switch\"}\n component={BooleanInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/GridLayout\"}\n component={GridLayoutInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/FileManager\"}\n component={FileInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/FragmentSelector\"}\n component={FragmentSelectorInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Object\"}\n component={ObjectInputRenderer}\n />\n </>\n );\n};\n"],"names":["ElementInputRenderers","EditorConfig","SlotInputRenderer","TextInputRenderer","SelectInputRenderer","TextareaInputRenderer","NumberInputRenderer","DefaultLexicalConfig","LexicalInputRenderer","BooleanInputRenderer","GridLayoutInputRenderer","FileInputRenderer","FragmentSelectorInputRenderer","ObjectInputRenderer"],"mappings":";;;;;;;;;;;;;;AAeO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,wDACI,oBAACC,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWC;sBAEf,oBAACD,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWE;sBAEf,oBAACF,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWG;sBAEf,oBAACH,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWK;sBAGf,oBAACC,sBAAoBA,OAAAA,WAAAA,GACrB,oBAACN,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWO;sBAEf,oBAACP,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWQ;sBAEf,oBAACR,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWS;sBAEf,oBAACT,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWU;sBAEf,oBAACV,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWW;sBAEf,oBAACX,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWY"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/ElementInputRenderers.js","sources":["../../../src/BaseEditor/defaultConfig/ElementInputRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { EditorConfig } from \"~/BaseEditor/index.js\";\nimport { TextInputRenderer } from \"~/inputRenderers/TextInput.js\";\nimport { NumberInputRenderer } from \"~/inputRenderers/NumberInput.js\";\nimport { BooleanInputRenderer } from \"~/inputRenderers/BooleanInput.js\";\nimport { TextareaInputRenderer } from \"~/inputRenderers/TextareaInput.js\";\nimport { LexicalInputRenderer } from \"~/inputRenderers/LexicalInput/LexicalInput.js\";\nimport { DefaultLexicalConfig } from \"~/inputRenderers/LexicalInput/DefaultLexicalConfig.js\";\nimport { SlotInputRenderer } from \"~/inputRenderers/SlotInput.js\";\nimport { GridLayoutInputRenderer } from \"~/inputRenderers/GridLayoutInput.js\";\nimport { SelectInputRenderer } from \"~/inputRenderers/SelectInput.js\";\nimport { FileInputRenderer } from \"~/inputRenderers/FileInput.js\";\nimport { FragmentSelectorInputRenderer } from \"~/inputRenderers/FragmentSelectorInput.js\";\nimport { ObjectInputRenderer } from \"~/inputRenderers/ObjectInput/ObjectInputRenderer.js\";\nimport { ContentEntryInputRenderer } from \"~/inputRenderers/ContentEntryInput.js\";\n\nexport const ElementInputRenderers = () => {\n return (\n <>\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Slot\"}\n component={SlotInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Input\"}\n component={TextInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Select\"}\n component={SelectInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Textarea\"}\n component={TextareaInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Number\"}\n component={NumberInputRenderer}\n />\n {/* Configure Lexical Editor*/}\n <DefaultLexicalConfig />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Lexical\"}\n component={LexicalInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Switch\"}\n component={BooleanInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/GridLayout\"}\n component={GridLayoutInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/FileManager\"}\n component={FileInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/FragmentSelector\"}\n component={FragmentSelectorInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/Object\"}\n component={ObjectInputRenderer}\n />\n <EditorConfig.ElementInput.Renderer\n name={\"Webiny/ContentEntry\"}\n component={ContentEntryInputRenderer}\n />\n </>\n );\n};\n"],"names":["ElementInputRenderers","EditorConfig","SlotInputRenderer","TextInputRenderer","SelectInputRenderer","TextareaInputRenderer","NumberInputRenderer","DefaultLexicalConfig","LexicalInputRenderer","BooleanInputRenderer","GridLayoutInputRenderer","FileInputRenderer","FragmentSelectorInputRenderer","ObjectInputRenderer","ContentEntryInputRenderer"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,wDACI,oBAACC,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWC;sBAEf,oBAACD,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWE;sBAEf,oBAACF,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWG;sBAEf,oBAACH,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWK;sBAGf,oBAACC,sBAAoBA,OAAAA,WAAAA,GACrB,oBAACN,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWO;sBAEf,oBAACP,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWQ;sBAEf,oBAACR,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWS;sBAEf,oBAACT,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWU;sBAEf,oBAACV,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWW;sBAEf,oBAACX,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWY;sBAEf,oBAACZ,aAAa,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,WAAWa"}
@@ -83,7 +83,7 @@ const useInputValue = (elementId, node)=>{
83
83
  };
84
84
  cb(updaterInput);
85
85
  const valuePath = convertBracketPathToDotPath(node.path);
86
- const devFriendlyInputs = set(structuredClone(deepInputs), valuePath, valueObject.get());
86
+ const devFriendlyInputs = set(JSON.parse(JSON.stringify(deepInputs)), valuePath, valueObject.get());
87
87
  const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});
88
88
  if (node.input.onChange) {
89
89
  const callback = functionConverter.deserialize(node.input.onChange);
@@ -129,7 +129,7 @@ const useInputValue = (elementId, node)=>{
129
129
  };
130
130
  cb(updaterInput);
131
131
  const valuePath = convertBracketPathToDotPath(node.path);
132
- const devFriendlyInputs = set(structuredClone(deepInputs), valuePath, valueObject.get());
132
+ const devFriendlyInputs = set(JSON.parse(JSON.stringify(deepInputs)), valuePath, valueObject.get());
133
133
  setLocalValue({
134
134
  static: valueObject.get()
135
135
  });
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport set from \"lodash/set.js\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils/generateId.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport type { ValueBinding, CreateElementParams } from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { InputAstNode } from \"@webiny/website-builder-sdk\";\nimport {\n functionConverter,\n InputsBindingsProcessor,\n StylesBindingsProcessor,\n createElement\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"~/editorSdk/utils/executeOnChange.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useElementInputsAst } from \"~/BaseEditor/hooks/useElementInputsAst.js\";\nimport {\n BreakpointElementMetadata,\n ElementMetadata,\n InputMetadata,\n type IMetadata\n} from \"~/BaseEditor/metadata/index.js\";\nimport { useElementFactory } from \"./useElementFactory.js\";\n\nexport type OnChangeParams = {\n value: InputValueObject;\n metadata: IMetadata;\n};\n\nexport type InputBindingOnChange = (cb: (params: OnChangeParams) => void) => void;\n\nexport class InputValueObject {\n private value: any;\n\n constructor(value: any) {\n this.value = value;\n }\n\n set(value: any) {\n this.value = value;\n }\n\n get() {\n return this.value;\n }\n\n unset() {\n this.value = undefined;\n }\n}\n\nfunction convertBracketPathToDotPath(path: string): string {\n // Flat binding paths use `/` as the segment separator (e.g. `items/0/label`, `address/city`).\n // lodash `set`/`get` expect `.`-delimited paths, and treat numeric segments as array indexes,\n // so a straight `/` -> `.` conversion handles both nested objects and list items.\n return path.replace(/\\//g, \".\");\n}\n\n/**\n * Reads a value from a deep inputs object using a flat `/`-delimited binding path.\n * Numeric segments are treated as array indexes (e.g. `items/0/label`).\n */\nfunction getDeepValueAtPath(obj: any, path: string): any {\n if (!path) {\n return obj;\n }\n\n const keys = path.split(\"/\").map(key => (/^\\d+$/.test(key) ? Number(key) : key));\n return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), obj);\n}\n\n/**\n * This makes UI interaction smoother (input blur in particular).\n */\nconst withTimeout = <T extends (...args: any[]) => unknown>(cb: T): T => {\n return ((...args: Parameters<T>) => {\n setTimeout(() => {\n cb(...args);\n }, 0);\n }) as unknown as T;\n};\n\nexport const useInputValue = (elementId: string, node: InputAstNode) => {\n const { breakpoint, breakpoints } = useBreakpoint();\n const editor = useDocumentEditor();\n const inputsAst = useElementInputsAst(elementId);\n const elementFactory = useElementFactory();\n\n const breakpointNames = useMemo(() => breakpoints.map(bp => bp.name), []);\n\n // These bindings already include per-breakpoint overrides.\n const { rawBindings, resolvedBindings, inheritanceMap } = useBindingsForElement(elementId);\n\n const stylesProcessor = useMemo(() => {\n return new StylesBindingsProcessor(elementId ?? \"\", breakpointNames, rawBindings);\n }, [elementId, rawBindings]);\n\n const inputsProcessor = useMemo(() => {\n return new InputsBindingsProcessor(\n elementId ?? \"\",\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n }, [elementId, rawBindings]);\n\n // This value is the final calculated breakpoint value.\n // Leaf inputs resolve directly from the flat bindings. Container inputs (object / object-list)\n // have no flat entry of their own, so we resolve their deep value (object / array) from the\n // processor - this is what list fields read to render items and to rewrite the whole array.\n const value = useMemo(() => {\n if (node.children.length > 0) {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n return getDeepValueAtPath(deepInputs, node.path);\n }\n\n return resolvedBindings.inputs[node.path];\n }, [resolvedBindings, node.path, inputsProcessor]);\n\n const inputMetadata = useMemo((): IMetadata => {\n let elementMetadata: IMetadata = new ElementMetadata(elementId, rawBindings.metadata);\n\n if (node.input.responsive) {\n elementMetadata = new BreakpointElementMetadata(\n breakpointNames,\n breakpoint.name,\n elementMetadata\n );\n }\n\n const valueId = value?.id ?? generateAlphaNumericLowerCaseId();\n\n return new InputMetadata(valueId, elementMetadata);\n }, [elementId, breakpoint.name, rawBindings]);\n\n const [localState, setLocalValue] = useState<ValueBinding>();\n\n const onChange = useCallback(\n withTimeout((cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n structuredClone(deepInputs),\n valuePath,\n valueObject.get()\n );\n\n const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});\n\n // Process input's `onChange`.\n if (node.input.onChange) {\n const callback = functionConverter.deserialize(\n // TODO: we know it's a string, but on the frontend it's a function. Fix types.\n node.input.onChange! as any as string\n );\n\n // Run onChange callback.\n const publicApi = {\n inputs: devFriendlyInputs,\n styles: devFriendlyStyles,\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n\n // Run input's `onChange` callback.\n callback(publicApi, {\n breakpoint: breakpoint.name\n });\n }\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs: devFriendlyInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint: breakpoint.name,\n elementFactory,\n deepStyles: devFriendlyStyles\n });\n\n editor.updateDocument(document => {\n const inputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const styles = stylesProcessor.createUpdate(devFriendlyStyles, breakpoint.name);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n\n inputMetadata.applyToDocument(document);\n\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n breakpoint.name,\n elementFactory\n );\n });\n\n // Clear local value\n setLocalValue(undefined);\n }),\n [elementId, resolvedBindings, breakpoint]\n );\n\n /**\n * In preview, we do not update the editor document. Instead, we create a patch and send it to the preview app.\n */\n const onPreviewChange = useCallback(\n (cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(localState ?? value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n structuredClone(deepInputs),\n valuePath,\n valueObject.get()\n );\n\n setLocalValue({ static: valueObject.get() });\n\n const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const patch = updatedInputs.createJsonPatch(rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n },\n [elementId, rawBindings, localState]\n );\n\n const setBindingType = useCallback(\n (type: \"static\" | \"expression\") => {\n editor.updateDocument(state => {\n const bindings = state.bindings[elementId];\n const valueBinding = bindings.inputs![node.path];\n\n if (type === \"static\") {\n // Switching to static bindings means we have to remove the expression binding.\n delete valueBinding.expression;\n } else {\n valueBinding.expression = \"$noop\";\n }\n\n state.bindings[elementId] = {\n ...bindings,\n inputs: {\n ...bindings.inputs,\n [node.path]: valueBinding\n }\n };\n });\n },\n [elementId]\n );\n\n const onReset = useCallback(() => {\n onChange(({ value, metadata }) => {\n value.unset();\n metadata.unset();\n });\n }, [onChange]);\n\n return {\n value: localState ?? value,\n metadata: inputMetadata,\n inheritanceMap: inheritanceMap.inputs[node.path],\n onReset,\n onChange,\n onPreviewChange,\n setBindingType\n };\n};\n"],"names":["InputValueObject","value","undefined","convertBracketPathToDotPath","path","getDeepValueAtPath","obj","keys","key","Number","acc","withTimeout","cb","args","setTimeout","useInputValue","elementId","node","breakpoint","breakpoints","useBreakpoint","editor","useDocumentEditor","inputsAst","useElementInputsAst","elementFactory","useElementFactory","breakpointNames","useMemo","bp","rawBindings","resolvedBindings","inheritanceMap","useBindingsForElement","stylesProcessor","StylesBindingsProcessor","inputsProcessor","InputsBindingsProcessor","deepInputs","inputMetadata","elementMetadata","ElementMetadata","BreakpointElementMetadata","valueId","generateAlphaNumericLowerCaseId","InputMetadata","localState","setLocalValue","useState","onChange","useCallback","valueObject","updaterInput","valuePath","devFriendlyInputs","set","structuredClone","devFriendlyStyles","callback","functionConverter","publicApi","params","createElement","ancestorUpdates","executeOnChange","document","inputs","styles","applyAncestorUpdates","onPreviewChange","updatedInputs","patch","Commands","setBindingType","type","state","bindings","valueBinding","onReset","metadata"],"mappings":"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"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport set from \"lodash/set.js\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils/generateId.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport type { ValueBinding, CreateElementParams } from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { InputAstNode } from \"@webiny/website-builder-sdk\";\nimport {\n functionConverter,\n InputsBindingsProcessor,\n StylesBindingsProcessor,\n createElement\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"~/editorSdk/utils/executeOnChange.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useElementInputsAst } from \"~/BaseEditor/hooks/useElementInputsAst.js\";\nimport {\n BreakpointElementMetadata,\n ElementMetadata,\n InputMetadata,\n type IMetadata\n} from \"~/BaseEditor/metadata/index.js\";\nimport { useElementFactory } from \"./useElementFactory.js\";\n\nexport type OnChangeParams = {\n value: InputValueObject;\n metadata: IMetadata;\n};\n\nexport type InputBindingOnChange = (cb: (params: OnChangeParams) => void) => void;\n\nexport class InputValueObject {\n private value: any;\n\n constructor(value: any) {\n this.value = value;\n }\n\n set(value: any) {\n this.value = value;\n }\n\n get() {\n return this.value;\n }\n\n unset() {\n this.value = undefined;\n }\n}\n\nfunction convertBracketPathToDotPath(path: string): string {\n // Flat binding paths use `/` as the segment separator (e.g. `items/0/label`, `address/city`).\n // lodash `set`/`get` expect `.`-delimited paths, and treat numeric segments as array indexes,\n // so a straight `/` -> `.` conversion handles both nested objects and list items.\n return path.replace(/\\//g, \".\");\n}\n\n/**\n * Reads a value from a deep inputs object using a flat `/`-delimited binding path.\n * Numeric segments are treated as array indexes (e.g. `items/0/label`).\n */\nfunction getDeepValueAtPath(obj: any, path: string): any {\n if (!path) {\n return obj;\n }\n\n const keys = path.split(\"/\").map(key => (/^\\d+$/.test(key) ? Number(key) : key));\n return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), obj);\n}\n\n/**\n * This makes UI interaction smoother (input blur in particular).\n */\nconst withTimeout = <T extends (...args: any[]) => unknown>(cb: T): T => {\n return ((...args: Parameters<T>) => {\n setTimeout(() => {\n cb(...args);\n }, 0);\n }) as unknown as T;\n};\n\nexport const useInputValue = (elementId: string, node: InputAstNode) => {\n const { breakpoint, breakpoints } = useBreakpoint();\n const editor = useDocumentEditor();\n const inputsAst = useElementInputsAst(elementId);\n const elementFactory = useElementFactory();\n\n const breakpointNames = useMemo(() => breakpoints.map(bp => bp.name), []);\n\n // These bindings already include per-breakpoint overrides.\n const { rawBindings, resolvedBindings, inheritanceMap } = useBindingsForElement(elementId);\n\n const stylesProcessor = useMemo(() => {\n return new StylesBindingsProcessor(elementId ?? \"\", breakpointNames, rawBindings);\n }, [elementId, rawBindings]);\n\n const inputsProcessor = useMemo(() => {\n return new InputsBindingsProcessor(\n elementId ?? \"\",\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n }, [elementId, rawBindings]);\n\n // This value is the final calculated breakpoint value.\n // Leaf inputs resolve directly from the flat bindings. Container inputs (object / object-list)\n // have no flat entry of their own, so we resolve their deep value (object / array) from the\n // processor - this is what list fields read to render items and to rewrite the whole array.\n const value = useMemo(() => {\n if (node.children.length > 0) {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n return getDeepValueAtPath(deepInputs, node.path);\n }\n\n return resolvedBindings.inputs[node.path];\n }, [resolvedBindings, node.path, inputsProcessor]);\n\n const inputMetadata = useMemo((): IMetadata => {\n let elementMetadata: IMetadata = new ElementMetadata(elementId, rawBindings.metadata);\n\n if (node.input.responsive) {\n elementMetadata = new BreakpointElementMetadata(\n breakpointNames,\n breakpoint.name,\n elementMetadata\n );\n }\n\n const valueId = value?.id ?? generateAlphaNumericLowerCaseId();\n\n return new InputMetadata(valueId, elementMetadata);\n }, [elementId, breakpoint.name, rawBindings]);\n\n const [localState, setLocalValue] = useState<ValueBinding>();\n\n const onChange = useCallback(\n withTimeout((cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});\n\n // Process input's `onChange`.\n if (node.input.onChange) {\n const callback = functionConverter.deserialize(\n // TODO: we know it's a string, but on the frontend it's a function. Fix types.\n node.input.onChange! as any as string\n );\n\n // Run onChange callback.\n const publicApi = {\n inputs: devFriendlyInputs,\n styles: devFriendlyStyles,\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n\n // Run input's `onChange` callback.\n callback(publicApi, {\n breakpoint: breakpoint.name\n });\n }\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs: devFriendlyInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint: breakpoint.name,\n elementFactory,\n deepStyles: devFriendlyStyles\n });\n\n editor.updateDocument(document => {\n const inputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const styles = stylesProcessor.createUpdate(devFriendlyStyles, breakpoint.name);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n\n inputMetadata.applyToDocument(document);\n\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n breakpoint.name,\n elementFactory\n );\n });\n\n // Clear local value\n setLocalValue(undefined);\n }),\n [elementId, resolvedBindings, breakpoint]\n );\n\n /**\n * In preview, we do not update the editor document. Instead, we create a patch and send it to the preview app.\n */\n const onPreviewChange = useCallback(\n (cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(localState ?? value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n setLocalValue({ static: valueObject.get() });\n\n const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const patch = updatedInputs.createJsonPatch(rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n },\n [elementId, rawBindings, localState]\n );\n\n const setBindingType = useCallback(\n (type: \"static\" | \"expression\") => {\n editor.updateDocument(state => {\n const bindings = state.bindings[elementId];\n const valueBinding = bindings.inputs![node.path];\n\n if (type === \"static\") {\n // Switching to static bindings means we have to remove the expression binding.\n delete valueBinding.expression;\n } else {\n valueBinding.expression = \"$noop\";\n }\n\n state.bindings[elementId] = {\n ...bindings,\n inputs: {\n ...bindings.inputs,\n [node.path]: valueBinding\n }\n };\n });\n },\n [elementId]\n );\n\n const onReset = useCallback(() => {\n onChange(({ value, metadata }) => {\n value.unset();\n metadata.unset();\n });\n }, [onChange]);\n\n return {\n value: localState ?? value,\n metadata: inputMetadata,\n inheritanceMap: inheritanceMap.inputs[node.path],\n onReset,\n onChange,\n onPreviewChange,\n setBindingType\n };\n};\n"],"names":["InputValueObject","value","undefined","convertBracketPathToDotPath","path","getDeepValueAtPath","obj","keys","key","Number","acc","withTimeout","cb","args","setTimeout","useInputValue","elementId","node","breakpoint","breakpoints","useBreakpoint","editor","useDocumentEditor","inputsAst","useElementInputsAst","elementFactory","useElementFactory","breakpointNames","useMemo","bp","rawBindings","resolvedBindings","inheritanceMap","useBindingsForElement","stylesProcessor","StylesBindingsProcessor","inputsProcessor","InputsBindingsProcessor","deepInputs","inputMetadata","elementMetadata","ElementMetadata","BreakpointElementMetadata","valueId","generateAlphaNumericLowerCaseId","InputMetadata","localState","setLocalValue","useState","onChange","useCallback","valueObject","updaterInput","valuePath","devFriendlyInputs","set","JSON","devFriendlyStyles","callback","functionConverter","publicApi","params","createElement","ancestorUpdates","executeOnChange","document","inputs","styles","applyAncestorUpdates","onPreviewChange","updatedInputs","patch","Commands","setBindingType","type","state","bindings","valueBinding","onReset","metadata"],"mappings":"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"}
@@ -80,8 +80,7 @@ const BackgroundImage = observer(({ elementId })=>{
80
80
  type: "compact",
81
81
  value: url ? fileInfo : void 0,
82
82
  onSelectItem: ()=>showFileManager(),
83
- onRemoveItem: onRemove,
84
- onEditItem: ()=>showFileManager()
83
+ onRemoveItem: onRemove
85
84
  })
86
85
  }));
87
86
  });
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js","sources":["../../../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.tsx"],"sourcesContent":["import React, { useEffect, useState, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { FileManager, type FileManagerFileItem } from \"@webiny/app-admin\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { useStyles } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/useStyles.js\";\nimport { BackgroundImageParser } from \"./BackgroundImageParser.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { InheritanceLabel } from \"../../../InheritanceLabel.js\";\nimport { SidebarRow } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js\";\n\ntype FileInfo = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nconst DEFAULT_POSITION = \"center\";\nconst DEFAULT_SCALING = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\"\n};\n\nexport const parseValue = (value: string) => {\n if (!value) {\n return undefined;\n }\n\n return;\n};\n\nexport const BackgroundImage = observer(({ elementId }: { elementId: string }) => {\n const { isBaseBreakpoint } = useBreakpoint();\n const { styles, metadata, onChange, inheritanceMap } = useStyles(elementId);\n const [localValue, setLocalValue] = useState<string | null>(styles.backgroundImage);\n const url = useMemo(() => {\n const parser = new BackgroundImageParser(styles.backgroundImage);\n const rules = parser.getRules();\n const urlRule = rules.find(r => r.type === \"url\");\n if (urlRule && urlRule.type === \"url\") {\n return urlRule.parsed.url;\n }\n return null;\n }, [styles.backgroundImage]);\n\n useEffect(() => {\n if (styles.backgroundImage !== localValue) {\n setLocalValue(styles.backgroundImage);\n }\n }, [styles.backgroundImage]);\n\n const onFileChange = (file: FileManagerFileItem) => {\n onChange(({ styles, metadata }) => {\n styles.set(\"backgroundPosition\", DEFAULT_POSITION);\n styles.set(\"backgroundSize\", DEFAULT_SCALING.backgroundSize);\n styles.set(\"backgroundRepeat\", DEFAULT_SCALING.backgroundRepeat);\n styles.set(\"backgroundImage\", `url(\"${file.src}\")`);\n\n metadata.set(\"backgroundImage\", {\n id: file.id,\n name: file.name,\n size: file.size,\n type: file.type,\n url: file.src || \"\"\n });\n });\n };\n\n const onRemove = () => {\n onChange(({ styles, metadata }) => {\n // On base breakpoint, we unset the image and all styles related to it.\n if (isBaseBreakpoint) {\n styles.unset(\"backgroundImage\");\n styles.unset(\"backgroundPosition\");\n styles.unset(\"backgroundSize\");\n styles.unset(\"backgroundRepeat\");\n } else {\n styles.set(\"backgroundImage\", \"none\");\n }\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const onReset = () => {\n onChange(({ styles }) => {\n styles.unset(\"backgroundImage\");\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const inheritance = inheritanceMap?.backgroundImage ?? {};\n\n const fileInfo = metadata.get<FileInfo>(\"backgroundImage\");\n\n return (\n <SidebarRow\n label={\n <InheritanceLabel\n onReset={onReset}\n isOverridden={inheritance?.overridden ?? false}\n inheritedFrom={inheritance?.inheritedFrom}\n text={\"Image\"}\n />\n }\n >\n <FileManager\n images={true}\n onChange={onFileChange}\n render={({ showFileManager }) => (\n <FilePicker\n variant={\"secondary\"}\n type=\"compact\"\n value={url ? fileInfo : undefined}\n onSelectItem={() => showFileManager()}\n onRemoveItem={onRemove}\n onEditItem={() => showFileManager()}\n />\n )}\n />\n </SidebarRow>\n );\n});\n"],"names":["DEFAULT_POSITION","DEFAULT_SCALING","parseValue","value","BackgroundImage","observer","elementId","isBaseBreakpoint","useBreakpoint","styles","metadata","onChange","inheritanceMap","useStyles","localValue","setLocalValue","useState","url","useMemo","parser","BackgroundImageParser","rules","urlRule","r","useEffect","onFileChange","file","onRemove","onReset","inheritance","fileInfo","SidebarRow","InheritanceLabel","FileManager","showFileManager","FilePicker","undefined"],"mappings":";;;;;;;;;AAkBA,MAAMA,mBAAmB;AACzB,MAAMC,kBAAkB;IACpB,gBAAgB;IAChB,kBAAkB;AACtB;AAEO,MAAMC,aAAa,CAACC,SAM3B;AAEO,MAAMC,kBAAkBC,SAAS,CAAC,EAAEC,SAAS,EAAyB;IACzE,MAAM,EAAEC,gBAAgB,EAAE,GAAGC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAE,GAAGC,UAAUP;IACjE,MAAM,CAACQ,YAAYC,cAAc,GAAGC,SAAwBP,OAAO,eAAe;IAClF,MAAMQ,MAAMC,QAAQ;QAChB,MAAMC,SAAS,IAAIC,sBAAsBX,OAAO,eAAe;QAC/D,MAAMY,QAAQF,OAAO,QAAQ;QAC7B,MAAMG,UAAUD,MAAM,IAAI,CAACE,CAAAA,IAAKA,AAAW,UAAXA,EAAE,IAAI;QACtC,IAAID,WAAWA,AAAiB,UAAjBA,QAAQ,IAAI,EACvB,OAAOA,QAAQ,MAAM,CAAC,GAAG;QAE7B,OAAO;IACX,GAAG;QAACb,OAAO,eAAe;KAAC;IAE3Be,UAAU;QACN,IAAIf,OAAO,eAAe,KAAKK,YAC3BC,cAAcN,OAAO,eAAe;IAE5C,GAAG;QAACA,OAAO,eAAe;KAAC;IAE3B,MAAMgB,eAAe,CAACC;QAClBf,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAC1BD,OAAO,GAAG,CAAC,sBAAsBT;YACjCS,OAAO,GAAG,CAAC,kBAAkBR,gBAAgB,cAAc;YAC3DQ,OAAO,GAAG,CAAC,oBAAoBR,gBAAgB,gBAAgB;YAC/DQ,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAEiB,KAAK,GAAG,CAAC,EAAE,CAAC;YAElDhB,SAAS,GAAG,CAAC,mBAAmB;gBAC5B,IAAIgB,KAAK,EAAE;gBACX,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG,IAAI;YACrB;QACJ;IACJ;IAEA,MAAMC,WAAW;QACbhB,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAE1B,IAAIH,kBAAkB;gBAClBE,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;YACjB,OACIA,OAAO,GAAG,CAAC,mBAAmB;YAGlCC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMkB,UAAU;QACZjB,SAAS,CAAC,EAAEF,MAAM,EAAE;YAChBA,OAAO,KAAK,CAAC;YAEbC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMmB,cAAcjB,gBAAgB,mBAAmB,CAAC;IAExD,MAAMkB,WAAWpB,SAAS,GAAG,CAAW;IAExC,OAAO,WAAP,GACI,oBAACqB,YAAUA;QACP,qBACI,oBAACC,kBAAgBA;YACb,SAASJ;YACT,cAAcC,aAAa,cAAc;YACzC,eAAeA,aAAa;YAC5B,MAAM;;qBAId,oBAACI,aAAWA;QACR,QAAQ;QACR,UAAUR;QACV,QAAQ,CAAC,EAAES,eAAe,EAAE,iBACxB,oBAACC,YAAUA;gBACP,SAAS;gBACT,MAAK;gBACL,OAAOlB,MAAMa,WAAWM;gBACxB,cAAc,IAAMF;gBACpB,cAAcP;gBACd,YAAY,IAAMO;;;AAM1C"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js","sources":["../../../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.tsx"],"sourcesContent":["import React, { useEffect, useState, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { FileManager, type FileManagerFileItem } from \"@webiny/app-admin\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { useStyles } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/useStyles.js\";\nimport { BackgroundImageParser } from \"./BackgroundImageParser.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { InheritanceLabel } from \"../../../InheritanceLabel.js\";\nimport { SidebarRow } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js\";\n\ntype FileInfo = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nconst DEFAULT_POSITION = \"center\";\nconst DEFAULT_SCALING = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\"\n};\n\nexport const parseValue = (value: string) => {\n if (!value) {\n return undefined;\n }\n\n return;\n};\n\nexport const BackgroundImage = observer(({ elementId }: { elementId: string }) => {\n const { isBaseBreakpoint } = useBreakpoint();\n const { styles, metadata, onChange, inheritanceMap } = useStyles(elementId);\n const [localValue, setLocalValue] = useState<string | null>(styles.backgroundImage);\n const url = useMemo(() => {\n const parser = new BackgroundImageParser(styles.backgroundImage);\n const rules = parser.getRules();\n const urlRule = rules.find(r => r.type === \"url\");\n if (urlRule && urlRule.type === \"url\") {\n return urlRule.parsed.url;\n }\n return null;\n }, [styles.backgroundImage]);\n\n useEffect(() => {\n if (styles.backgroundImage !== localValue) {\n setLocalValue(styles.backgroundImage);\n }\n }, [styles.backgroundImage]);\n\n const onFileChange = (file: FileManagerFileItem) => {\n onChange(({ styles, metadata }) => {\n styles.set(\"backgroundPosition\", DEFAULT_POSITION);\n styles.set(\"backgroundSize\", DEFAULT_SCALING.backgroundSize);\n styles.set(\"backgroundRepeat\", DEFAULT_SCALING.backgroundRepeat);\n styles.set(\"backgroundImage\", `url(\"${file.src}\")`);\n\n metadata.set(\"backgroundImage\", {\n id: file.id,\n name: file.name,\n size: file.size,\n type: file.type,\n url: file.src || \"\"\n });\n });\n };\n\n const onRemove = () => {\n onChange(({ styles, metadata }) => {\n // On base breakpoint, we unset the image and all styles related to it.\n if (isBaseBreakpoint) {\n styles.unset(\"backgroundImage\");\n styles.unset(\"backgroundPosition\");\n styles.unset(\"backgroundSize\");\n styles.unset(\"backgroundRepeat\");\n } else {\n styles.set(\"backgroundImage\", \"none\");\n }\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const onReset = () => {\n onChange(({ styles }) => {\n styles.unset(\"backgroundImage\");\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const inheritance = inheritanceMap?.backgroundImage ?? {};\n\n const fileInfo = metadata.get<FileInfo>(\"backgroundImage\");\n\n return (\n <SidebarRow\n label={\n <InheritanceLabel\n onReset={onReset}\n isOverridden={inheritance?.overridden ?? false}\n inheritedFrom={inheritance?.inheritedFrom}\n text={\"Image\"}\n />\n }\n >\n <FileManager\n images={true}\n onChange={onFileChange}\n render={({ showFileManager }) => (\n <FilePicker\n variant={\"secondary\"}\n type=\"compact\"\n value={url ? fileInfo : undefined}\n onSelectItem={() => showFileManager()}\n onRemoveItem={onRemove}\n />\n )}\n />\n </SidebarRow>\n );\n});\n"],"names":["DEFAULT_POSITION","DEFAULT_SCALING","parseValue","value","BackgroundImage","observer","elementId","isBaseBreakpoint","useBreakpoint","styles","metadata","onChange","inheritanceMap","useStyles","localValue","setLocalValue","useState","url","useMemo","parser","BackgroundImageParser","rules","urlRule","r","useEffect","onFileChange","file","onRemove","onReset","inheritance","fileInfo","SidebarRow","InheritanceLabel","FileManager","showFileManager","FilePicker","undefined"],"mappings":";;;;;;;;;AAkBA,MAAMA,mBAAmB;AACzB,MAAMC,kBAAkB;IACpB,gBAAgB;IAChB,kBAAkB;AACtB;AAEO,MAAMC,aAAa,CAACC,SAM3B;AAEO,MAAMC,kBAAkBC,SAAS,CAAC,EAAEC,SAAS,EAAyB;IACzE,MAAM,EAAEC,gBAAgB,EAAE,GAAGC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAE,GAAGC,UAAUP;IACjE,MAAM,CAACQ,YAAYC,cAAc,GAAGC,SAAwBP,OAAO,eAAe;IAClF,MAAMQ,MAAMC,QAAQ;QAChB,MAAMC,SAAS,IAAIC,sBAAsBX,OAAO,eAAe;QAC/D,MAAMY,QAAQF,OAAO,QAAQ;QAC7B,MAAMG,UAAUD,MAAM,IAAI,CAACE,CAAAA,IAAKA,AAAW,UAAXA,EAAE,IAAI;QACtC,IAAID,WAAWA,AAAiB,UAAjBA,QAAQ,IAAI,EACvB,OAAOA,QAAQ,MAAM,CAAC,GAAG;QAE7B,OAAO;IACX,GAAG;QAACb,OAAO,eAAe;KAAC;IAE3Be,UAAU;QACN,IAAIf,OAAO,eAAe,KAAKK,YAC3BC,cAAcN,OAAO,eAAe;IAE5C,GAAG;QAACA,OAAO,eAAe;KAAC;IAE3B,MAAMgB,eAAe,CAACC;QAClBf,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAC1BD,OAAO,GAAG,CAAC,sBAAsBT;YACjCS,OAAO,GAAG,CAAC,kBAAkBR,gBAAgB,cAAc;YAC3DQ,OAAO,GAAG,CAAC,oBAAoBR,gBAAgB,gBAAgB;YAC/DQ,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAEiB,KAAK,GAAG,CAAC,EAAE,CAAC;YAElDhB,SAAS,GAAG,CAAC,mBAAmB;gBAC5B,IAAIgB,KAAK,EAAE;gBACX,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG,IAAI;YACrB;QACJ;IACJ;IAEA,MAAMC,WAAW;QACbhB,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAE1B,IAAIH,kBAAkB;gBAClBE,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;YACjB,OACIA,OAAO,GAAG,CAAC,mBAAmB;YAGlCC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMkB,UAAU;QACZjB,SAAS,CAAC,EAAEF,MAAM,EAAE;YAChBA,OAAO,KAAK,CAAC;YAEbC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMmB,cAAcjB,gBAAgB,mBAAmB,CAAC;IAExD,MAAMkB,WAAWpB,SAAS,GAAG,CAAW;IAExC,OAAO,WAAP,GACI,oBAACqB,YAAUA;QACP,qBACI,oBAACC,kBAAgBA;YACb,SAASJ;YACT,cAAcC,aAAa,cAAc;YACzC,eAAeA,aAAa;YAC5B,MAAM;;qBAId,oBAACI,aAAWA;QACR,QAAQ;QACR,UAAUR;QACV,QAAQ,CAAC,EAAES,eAAe,EAAE,iBACxB,oBAACC,YAAUA;gBACP,SAAS;gBACT,MAAK;gBACL,OAAOlB,MAAMa,WAAWM;gBACxB,cAAc,IAAMF;gBACpB,cAAcP;;;AAMtC"}
@@ -2,9 +2,9 @@ import react from "react";
2
2
  import { Icon, Tooltip } from "@webiny/admin-ui";
3
3
  import { ReactComponent } from "@webiny/icons/info.svg";
4
4
  const SidebarRow = ({ label, tooltip, children })=>/*#__PURE__*/ react.createElement("div", {
5
- className: "flex items-center gap-xxs"
5
+ className: "flex items-start gap-xxs"
6
6
  }, /*#__PURE__*/ react.createElement("div", {
7
- className: "w-[80px] flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong"
7
+ className: "w-[80px] pt-sm flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong"
8
8
  }, label, tooltip ? /*#__PURE__*/ react.createElement(Tooltip, {
9
9
  trigger: /*#__PURE__*/ react.createElement(Icon, {
10
10
  icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as InfoIcon } from \"@webiny/icons/info.svg\";\n\ninterface SidebarRowProps {\n label: React.ReactNode;\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const SidebarRow = ({ label, tooltip, children }: SidebarRowProps) => {\n return (\n <div className={\"flex items-center gap-xxs\"}>\n <div\n className={\n \"w-[80px] flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong\"\n }\n >\n {label}\n\n {tooltip ? (\n <Tooltip\n trigger={\n <Icon\n icon={<InfoIcon />}\n size={\"xs\"}\n label={\"More information\"}\n color={\"neutral-light\"}\n />\n }\n content={tooltip}\n side={\"left\"}\n />\n ) : (\n <div className={\"w-xs shrink-0\"} />\n )}\n </div>\n <div className={\"flex-1\"}>{children}</div>\n </div>\n );\n};\n"],"names":["SidebarRow","label","tooltip","children","Tooltip","Icon","InfoIcon"],"mappings":";;;AAUO,MAAMA,aAAa,CAAC,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,EAAmB,GAC7D,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WACI;OAGHF,OAEAC,UAAU,WAAVA,GACG,oBAACE,SAAOA;QACJ,uBACI,oBAACC,MAAIA;YACD,oBAAM,oBAACC,gBAAQA;YACf,MAAM;YACN,OAAO;YACP,OAAO;;QAGf,SAASJ;QACT,MAAM;uBAGV,oBAAC;QAAI,WAAW;uBAGxB,oBAAC;QAAI,WAAW;OAAWC"}
1
+ {"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as InfoIcon } from \"@webiny/icons/info.svg\";\n\ninterface SidebarRowProps {\n label: React.ReactNode;\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const SidebarRow = ({ label, tooltip, children }: SidebarRowProps) => {\n return (\n <div className={\"flex items-start gap-xxs\"}>\n <div\n className={\n \"w-[80px] pt-sm flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong\"\n }\n >\n {label}\n\n {tooltip ? (\n <Tooltip\n trigger={\n <Icon\n icon={<InfoIcon />}\n size={\"xs\"}\n label={\"More information\"}\n color={\"neutral-light\"}\n />\n }\n content={tooltip}\n side={\"left\"}\n />\n ) : (\n <div className={\"w-xs shrink-0\"} />\n )}\n </div>\n <div className={\"flex-1\"}>{children}</div>\n </div>\n );\n};\n"],"names":["SidebarRow","label","tooltip","children","Tooltip","Icon","InfoIcon"],"mappings":";;;AAUO,MAAMA,aAAa,CAAC,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,EAAmB,GAC7D,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WACI;OAGHF,OAEAC,UAAU,WAAVA,GACG,oBAACE,SAAOA;QACJ,uBACI,oBAACC,MAAIA;YACD,oBAAM,oBAACC,gBAAQA;YACf,MAAM;YACN,OAAO;YACP,OAAO;;QAGf,SAASJ;QACT,MAAM;uBAGV,oBAAC;QAAI,WAAW;uBAGxB,oBAAC;QAAI,WAAW;OAAWC"}
@@ -18,7 +18,10 @@ class ElementMetadata {
18
18
  } else delete this.metadata[id];
19
19
  }
20
20
  applyToDocument(document) {
21
- document.bindings[this.elementId].metadata = this.metadata;
21
+ if (0 === Object.keys(this.metadata).length) return;
22
+ const current = document.bindings[this.elementId].metadata;
23
+ if (current && current !== this.metadata) Object.assign(current, this.metadata);
24
+ else document.bindings[this.elementId].metadata = this.metadata;
22
25
  }
23
26
  }
24
27
  export { ElementMetadata };
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEditor/metadata/ElementMetadata.js","sources":["../../../src/BaseEditor/metadata/ElementMetadata.ts"],"sourcesContent":["import { matcher } from \"matcher\";\nimport type { Document } from \"@webiny/website-builder-sdk\";\nimport type { IMetadata, Metadata } from \"./IMetadata.js\";\n\nexport class ElementMetadata implements IMetadata {\n private readonly elementId: string;\n private readonly metadata: Record<string, any>;\n\n constructor(elementId: string, metadata: Record<string, any> = {}) {\n this.elementId = elementId;\n this.metadata = metadata;\n }\n\n get<T = unknown>(id: string): T | undefined {\n return this.metadata[id];\n }\n\n set(id: string, data: Metadata): void {\n this.metadata[id] = data;\n }\n\n unset(id: string): void {\n // Support wildcard paths using micromatch\n if (id.includes(\"*\")) {\n const keys = Object.keys(this.metadata);\n const matches = matcher(keys, id);\n for (const key of matches) {\n delete this.metadata[key];\n }\n } else {\n delete this.metadata[id];\n }\n }\n\n applyToDocument(document: Document) {\n document.bindings[this.elementId].metadata = this.metadata;\n }\n}\n"],"names":["ElementMetadata","elementId","metadata","id","data","keys","Object","matches","matcher","key","document"],"mappings":";AAIO,MAAMA;IAIT,YAAYC,SAAiB,EAAEC,WAAgC,CAAC,CAAC,CAAE;QAC/D,IAAI,CAAC,SAAS,GAAGD;QACjB,IAAI,CAAC,QAAQ,GAAGC;IACpB;IAEA,IAAiBC,EAAU,EAAiB;QACxC,OAAO,IAAI,CAAC,QAAQ,CAACA,GAAG;IAC5B;IAEA,IAAIA,EAAU,EAAEC,IAAc,EAAQ;QAClC,IAAI,CAAC,QAAQ,CAACD,GAAG,GAAGC;IACxB;IAEA,MAAMD,EAAU,EAAQ;QAEpB,IAAIA,GAAG,QAAQ,CAAC,MAAM;YAClB,MAAME,OAAOC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;YACtC,MAAMC,UAAUC,QAAQH,MAAMF;YAC9B,KAAK,MAAMM,OAAOF,QACd,OAAO,IAAI,CAAC,QAAQ,CAACE,IAAI;QAEjC,OACI,OAAO,IAAI,CAAC,QAAQ,CAACN,GAAG;IAEhC;IAEA,gBAAgBO,QAAkB,EAAE;QAChCA,SAAS,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAC9D;AACJ"}
1
+ {"version":3,"file":"BaseEditor/metadata/ElementMetadata.js","sources":["../../../src/BaseEditor/metadata/ElementMetadata.ts"],"sourcesContent":["import { matcher } from \"matcher\";\nimport type { Document } from \"@webiny/website-builder-sdk\";\nimport type { IMetadata, Metadata } from \"./IMetadata.js\";\n\nexport class ElementMetadata implements IMetadata {\n private readonly elementId: string;\n private readonly metadata: Record<string, any>;\n\n constructor(elementId: string, metadata: Record<string, any> = {}) {\n this.elementId = elementId;\n this.metadata = metadata;\n }\n\n get<T = unknown>(id: string): T | undefined {\n return this.metadata[id];\n }\n\n set(id: string, data: Metadata): void {\n this.metadata[id] = data;\n }\n\n unset(id: string): void {\n // Support wildcard paths using micromatch\n if (id.includes(\"*\")) {\n const keys = Object.keys(this.metadata);\n const matches = matcher(keys, id);\n for (const key of matches) {\n delete this.metadata[key];\n }\n } else {\n delete this.metadata[id];\n }\n }\n\n applyToDocument(document: Document) {\n // Don't write an empty metadata object to the document.\n if (Object.keys(this.metadata).length === 0) {\n return;\n }\n\n const current = document.bindings[this.elementId].metadata;\n if (current && current !== this.metadata) {\n // Merge rather than replace: when multiple inputs on the same\n // element each hold a stale metadata snapshot (produced by toJS()\n // in useBindingsForElement), a plain assignment would discard keys\n // written by earlier onChange callbacks.\n Object.assign(current, this.metadata);\n } else {\n document.bindings[this.elementId].metadata = this.metadata;\n }\n }\n}\n"],"names":["ElementMetadata","elementId","metadata","id","data","keys","Object","matches","matcher","key","document","current"],"mappings":";AAIO,MAAMA;IAIT,YAAYC,SAAiB,EAAEC,WAAgC,CAAC,CAAC,CAAE;QAC/D,IAAI,CAAC,SAAS,GAAGD;QACjB,IAAI,CAAC,QAAQ,GAAGC;IACpB;IAEA,IAAiBC,EAAU,EAAiB;QACxC,OAAO,IAAI,CAAC,QAAQ,CAACA,GAAG;IAC5B;IAEA,IAAIA,EAAU,EAAEC,IAAc,EAAQ;QAClC,IAAI,CAAC,QAAQ,CAACD,GAAG,GAAGC;IACxB;IAEA,MAAMD,EAAU,EAAQ;QAEpB,IAAIA,GAAG,QAAQ,CAAC,MAAM;YAClB,MAAME,OAAOC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;YACtC,MAAMC,UAAUC,QAAQH,MAAMF;YAC9B,KAAK,MAAMM,OAAOF,QACd,OAAO,IAAI,CAAC,QAAQ,CAACE,IAAI;QAEjC,OACI,OAAO,IAAI,CAAC,QAAQ,CAACN,GAAG;IAEhC;IAEA,gBAAgBO,QAAkB,EAAE;QAEhC,IAAIJ,AAAsC,MAAtCA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EACjC;QAGJ,MAAMK,UAAUD,SAAS,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ;QAC1D,IAAIC,WAAWA,YAAY,IAAI,CAAC,QAAQ,EAKpCL,OAAO,MAAM,CAACK,SAAS,IAAI,CAAC,QAAQ;aAEpCD,SAAS,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAElE;AACJ"}
package/Extension.js CHANGED
@@ -3,16 +3,12 @@ import { AdminConfig, RegisterFeature, useRouter } from "@webiny/app-admin";
3
3
  import { ReactComponent } from "@webiny/icons/table_chart.svg";
4
4
  import { PageEditor } from "./presentation/pages/PageEditor/PageEditor.js";
5
5
  import { PagesList } from "./presentation/pages/PageList/components/PagesList.js";
6
- import { useSettingsDialog } from "./modules/settings/useSettingsDialog.js";
7
6
  import { useIntegrationsDialog } from "./modules/integrations/useIntegrationsDialog.js";
8
7
  import { PagesListConfig } from "./presentation/pages/PageList/components/PagesListConfig.js";
9
8
  import { RedirectsList } from "./presentation/redirects/RedirectList/components/RedirectsList.js";
10
9
  import { RedirectsListConfig } from "./presentation/redirects/RedirectList/components/RedirectsListConfig.js";
11
10
  import { Routes } from "./routes.js";
12
11
  import { PagesWidget } from "./modules/widgets/PagesWidget.js";
13
- import { Extension } from "./presentation/navigation/Extension.js";
14
- import { NextjsConfigFeature } from "./presentation/navigation/NextjsConfig/feature.js";
15
- import { NuxtConfigFeature } from "./presentation/navigation/NuxtConfig/feature.js";
16
12
  import { WB_PERMISSIONS_SCHEMA } from "./constants.js";
17
13
  import { WbPermissionsFeature } from "./features/permissions/feature.js";
18
14
  import { HasPermission } from "./presentation/security/HasPermission.js";
@@ -34,19 +30,14 @@ import { TranslatePageConfig } from "./presentation/pages/TranslatePage/Translat
34
30
  import { CreatePageFeature as feature_js_CreatePageFeature } from "./presentation/pages/CreatePage/feature.js";
35
31
  import { PageSettingsFeature } from "./presentation/pages/PageEditor/PageSettings/feature.js";
36
32
  import { DeletePageRevisionFeature } from "./features/pages/deletePageRevision/index.js";
37
- import { UpdateSettingsFeature } from "./features/settings/updateSettings/index.js";
38
33
  import { GetSettingsFeature } from "./features/settings/getSettings/index.js";
39
34
  import { GetEcommerceSettingsFeature } from "./features/ecommerce/settings/getSettings/index.js";
40
35
  import { UpdateEcommerceSettingsFeature } from "./features/ecommerce/settings/updateSettings/index.js";
41
36
  const { Security: Security, Menu: Menu, Route: Route, Dashboard: Dashboard } = AdminConfig;
42
- const Extension_Extension = ()=>{
37
+ const Extension = ()=>{
43
38
  const router = useRouter();
44
39
  return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
45
40
  feature: SharedPageInfrastructureFeature
46
- }), /*#__PURE__*/ react.createElement(RegisterFeature, {
47
- feature: NextjsConfigFeature
48
- }), /*#__PURE__*/ react.createElement(RegisterFeature, {
49
- feature: NuxtConfigFeature
50
41
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
51
42
  feature: WbPermissionsFeature
52
43
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
@@ -83,8 +74,6 @@ const Extension_Extension = ()=>{
83
74
  feature: GetSettingsFeature
84
75
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
85
76
  feature: GetEcommerceSettingsFeature
86
- }), /*#__PURE__*/ react.createElement(RegisterFeature, {
87
- feature: UpdateSettingsFeature
88
77
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
89
78
  feature: UpdateEcommerceSettingsFeature
90
79
  }), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(Security.Permissions, {
@@ -127,7 +116,7 @@ const Extension_Extension = ()=>{
127
116
  name: "wb.pages",
128
117
  column: "left",
129
118
  element: /*#__PURE__*/ react.createElement(PagesWidget, null)
130
- }), /*#__PURE__*/ react.createElement(Extension, null)), /*#__PURE__*/ react.createElement(HasPermission, {
119
+ })), /*#__PURE__*/ react.createElement(HasPermission, {
131
120
  entity: "redirect"
132
121
  }, /*#__PURE__*/ react.createElement(Route, {
133
122
  route: Routes.Redirects.List,
@@ -140,12 +129,6 @@ const Extension_Extension = ()=>{
140
129
  to: router.getLink(Routes.Redirects.List),
141
130
  pinnable: true
142
131
  })
143
- })), /*#__PURE__*/ react.createElement(HasPermission, {
144
- entity: "settings"
145
- }, /*#__PURE__*/ react.createElement(Menu, {
146
- name: "wb.settings",
147
- parent: "wb",
148
- element: /*#__PURE__*/ react.createElement(SettingsMenuItem, null)
149
132
  })), /*#__PURE__*/ react.createElement(HasPermission, {
150
133
  entity: "integrations"
151
134
  }, /*#__PURE__*/ react.createElement(Menu, {
@@ -154,15 +137,7 @@ const Extension_Extension = ()=>{
154
137
  element: /*#__PURE__*/ react.createElement(IntegrationsMenuItem, null)
155
138
  }))), /*#__PURE__*/ react.createElement(PagesListConfig, null), /*#__PURE__*/ react.createElement(RedirectsListConfig, null), /*#__PURE__*/ react.createElement(CreatePageConfig, null), /*#__PURE__*/ react.createElement(TranslatePageConfig, null));
156
139
  };
157
- Extension_Extension.displayName = "WbExtension";
158
- const SettingsMenuItem = ()=>{
159
- const { showSettingsDialog } = useSettingsDialog();
160
- return /*#__PURE__*/ react.createElement(Menu.Item, {
161
- text: "Settings",
162
- onClick: showSettingsDialog,
163
- pinnable: true
164
- });
165
- };
140
+ Extension.displayName = "WbExtension";
166
141
  const IntegrationsMenuItem = ()=>{
167
142
  const { showIntegrationsDialog } = useIntegrationsDialog();
168
143
  return /*#__PURE__*/ react.createElement(Menu.Item, {
@@ -171,6 +146,6 @@ const IntegrationsMenuItem = ()=>{
171
146
  pinnable: true
172
147
  });
173
148
  };
174
- export { Extension_Extension as Extension };
149
+ export { Extension };
175
150
 
176
151
  //# sourceMappingURL=Extension.js.map
package/Extension.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Extension.js","sources":["../src/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, RegisterFeature, useRouter } from \"@webiny/app-admin\";\nimport {\n ReactComponent as PagesIcon,\n ReactComponent as PermissionsIcon\n} from \"@webiny/icons/table_chart.svg\";\nimport { PageEditor } from \"~/presentation/pages/PageEditor/PageEditor.js\";\nimport { PagesList } from \"~/presentation/pages/PageList/components/PagesList.js\";\nimport { useSettingsDialog } from \"~/modules/settings/useSettingsDialog.js\";\nimport { useIntegrationsDialog } from \"./modules/integrations/useIntegrationsDialog.js\";\nimport { PagesListConfig } from \"~/presentation/pages/PageList/components/PagesListConfig.js\";\nimport { RedirectsList } from \"~/presentation/redirects/RedirectList/components/RedirectsList.js\";\nimport { RedirectsListConfig } from \"~/presentation/redirects/RedirectList/components/RedirectsListConfig.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PagesWidget } from \"~/modules/widgets/PagesWidget.js\";\nimport { Extension as NavigationExtension } from \"./presentation/navigation/Extension.js\";\nimport { NextjsConfigFeature } from \"~/presentation/navigation/NextjsConfig/feature.js\";\nimport { NuxtConfigFeature } from \"~/presentation/navigation/NuxtConfig/feature.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/constants.js\";\nimport { WbPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\nimport { TranslatePageFeature } from \"~/features/pages/translatePage/index.js\";\nimport { DeletePageFeature } from \"~/features/pages/deletePage/index.js\";\nimport { MovePageFeature } from \"~/features/pages/movePage/index.js\";\nimport { PublishPageFeature } from \"~/features/pages/publishPage/index.js\";\nimport { UnpublishPageFeature } from \"~/features/pages/unpublishPage/index.js\";\nimport { DuplicatePageFeature } from \"~/features/pages/duplicatePage/index.js\";\nimport { CreatePageRevisionFromFeature } from \"~/features/pages/createPageRevisionFrom/index.js\";\nimport { UpdatePageFeature } from \"~/features/pages/updatePage/index.js\";\nimport { UpdatePageRevisionDescriptionFeature } from \"~/features/pages/updatePageRevisionDescription/index.js\";\nimport { CreatePageFeature as CreatePageHeadlessFeature } from \"~/features/pages/createPage/index.js\";\nimport { GetPageFeature } from \"~/features/pages/getPage/index.js\";\nimport { GetPageRevisionsFeature } from \"~/features/pages/getPageRevisions/index.js\";\nimport { SharedPageInfrastructureFeature } from \"~/features/pages/shared/feature.js\";\nimport { CreatePageConfig } from \"./presentation/pages/CreatePage/CreatePageConfig.js\";\nimport { TranslatePageConfig } from \"./presentation/pages/TranslatePage/TranslatePageConfig.js\";\nimport { CreatePageFeature } from \"~/presentation/pages/CreatePage/feature.js\";\nimport { PageSettingsFeature } from \"~/presentation/pages/PageEditor/PageSettings/feature.js\";\nimport { DeletePageRevisionFeature } from \"~/features/pages/deletePageRevision/index.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/updateSettings/index.js\";\nimport { GetSettingsFeature } from \"~/features/settings/getSettings/index.js\";\nimport { GetEcommerceSettingsFeature } from \"~/features/ecommerce/settings/getSettings/index.js\";\nimport { UpdateEcommerceSettingsFeature } from \"~/features/ecommerce/settings/updateSettings/index.js\";\n\nconst { Security, Menu, Route, Dashboard } = AdminConfig;\n\nexport const Extension = () => {\n const router = useRouter();\n\n return (\n <>\n <RegisterFeature feature={SharedPageInfrastructureFeature} />\n <RegisterFeature feature={NextjsConfigFeature} />\n <RegisterFeature feature={NuxtConfigFeature} />\n <RegisterFeature feature={WbPermissionsFeature} />\n <RegisterFeature feature={TranslatePageFeature} />\n <RegisterFeature feature={DeletePageFeature} />\n <RegisterFeature feature={DeletePageRevisionFeature} />\n <RegisterFeature feature={MovePageFeature} />\n <RegisterFeature feature={PublishPageFeature} />\n {/*<AbTesting />*/}\n <RegisterFeature feature={UnpublishPageFeature} />\n <RegisterFeature feature={DuplicatePageFeature} />\n <RegisterFeature feature={CreatePageRevisionFromFeature} />\n <RegisterFeature feature={UpdatePageFeature} />\n <RegisterFeature feature={UpdatePageRevisionDescriptionFeature} />\n <RegisterFeature feature={CreatePageHeadlessFeature} />\n <RegisterFeature feature={GetPageFeature} />\n <RegisterFeature feature={GetPageRevisionsFeature} />\n <RegisterFeature feature={CreatePageFeature} />\n <RegisterFeature feature={PageSettingsFeature} />\n <RegisterFeature feature={GetSettingsFeature} />\n <RegisterFeature feature={GetEcommerceSettingsFeature} />\n <RegisterFeature feature={UpdateSettingsFeature} />\n <RegisterFeature feature={UpdateEcommerceSettingsFeature} />\n <AdminConfig>\n <Security.Permissions\n name=\"website-builder\"\n title=\"Website Builder\"\n description=\"Manage Website Builder permissions.\"\n icon={<PermissionsIcon />}\n schema={WB_PERMISSIONS_SCHEMA}\n />\n <HasPermission any={[\"page\", \"redirect\"]}>\n <Menu\n name=\"wb\"\n element={\n <Menu.Item\n text={\"Website Builder\"}\n icon={\n <Menu.Link.Icon\n label={\"Website Builder\"}\n element={<PagesIcon />}\n />\n }\n />\n }\n />\n </HasPermission>\n\n <HasPermission entity={\"page\"}>\n <Route route={Routes.Pages.List} element={<PagesList />} />\n <Route route={Routes.Pages.Editor} element={<PageEditor />} />\n <Menu\n name=\"wb.pages\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Pages\"}\n to={router.getLink(Routes.Pages.List)}\n pinnable={true}\n />\n }\n />\n <Dashboard.Widget name=\"wb.pages\" column={\"left\"} element={<PagesWidget />} />\n <NavigationExtension />\n </HasPermission>\n\n <HasPermission entity={\"redirect\"}>\n <Route route={Routes.Redirects.List} element={<RedirectsList />} />\n <Menu\n name=\"wb.redirects\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Redirects\"}\n to={router.getLink(Routes.Redirects.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <HasPermission entity={\"settings\"}>\n <Menu name=\"wb.settings\" parent=\"wb\" element={<SettingsMenuItem />} />\n </HasPermission>\n <HasPermission entity={\"integrations\"}>\n <Menu name=\"wb.integrations\" parent=\"wb\" element={<IntegrationsMenuItem />} />\n </HasPermission>\n </AdminConfig>\n <PagesListConfig />\n <RedirectsListConfig />\n <CreatePageConfig />\n <TranslatePageConfig />\n </>\n );\n};\n\nExtension.displayName = \"WbExtension\";\n\nconst SettingsMenuItem = () => {\n const { showSettingsDialog } = useSettingsDialog();\n return <Menu.Item text={\"Settings\"} onClick={showSettingsDialog} pinnable={true} />;\n};\n\nconst IntegrationsMenuItem = () => {\n const { showIntegrationsDialog } = useIntegrationsDialog();\n return <Menu.Item text={\"Integrations\"} onClick={showIntegrationsDialog} pinnable={true} />;\n};\n"],"names":["Security","Menu","Route","Dashboard","AdminConfig","Extension","router","useRouter","RegisterFeature","SharedPageInfrastructureFeature","NextjsConfigFeature","NuxtConfigFeature","WbPermissionsFeature","TranslatePageFeature","DeletePageFeature","DeletePageRevisionFeature","MovePageFeature","PublishPageFeature","UnpublishPageFeature","DuplicatePageFeature","CreatePageRevisionFromFeature","UpdatePageFeature","UpdatePageRevisionDescriptionFeature","CreatePageHeadlessFeature","GetPageFeature","GetPageRevisionsFeature","CreatePageFeature","PageSettingsFeature","GetSettingsFeature","GetEcommerceSettingsFeature","UpdateSettingsFeature","UpdateEcommerceSettingsFeature","PermissionsIcon","WB_PERMISSIONS_SCHEMA","HasPermission","PagesIcon","Routes","PagesList","PageEditor","PagesWidget","NavigationExtension","RedirectsList","SettingsMenuItem","IntegrationsMenuItem","PagesListConfig","RedirectsListConfig","CreatePageConfig","TranslatePageConfig","showSettingsDialog","useSettingsDialog","showIntegrationsDialog","useIntegrationsDialog"],"mappings":"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"}
1
+ {"version":3,"file":"Extension.js","sources":["../src/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, RegisterFeature, useRouter } from \"@webiny/app-admin\";\nimport {\n ReactComponent as PagesIcon,\n ReactComponent as PermissionsIcon\n} from \"@webiny/icons/table_chart.svg\";\nimport { PageEditor } from \"~/presentation/pages/PageEditor/PageEditor.js\";\nimport { PagesList } from \"~/presentation/pages/PageList/components/PagesList.js\";\nimport { useIntegrationsDialog } from \"./modules/integrations/useIntegrationsDialog.js\";\nimport { PagesListConfig } from \"~/presentation/pages/PageList/components/PagesListConfig.js\";\nimport { RedirectsList } from \"~/presentation/redirects/RedirectList/components/RedirectsList.js\";\nimport { RedirectsListConfig } from \"~/presentation/redirects/RedirectList/components/RedirectsListConfig.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PagesWidget } from \"~/modules/widgets/PagesWidget.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/constants.js\";\nimport { WbPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\nimport { TranslatePageFeature } from \"~/features/pages/translatePage/index.js\";\nimport { DeletePageFeature } from \"~/features/pages/deletePage/index.js\";\nimport { MovePageFeature } from \"~/features/pages/movePage/index.js\";\nimport { PublishPageFeature } from \"~/features/pages/publishPage/index.js\";\nimport { UnpublishPageFeature } from \"~/features/pages/unpublishPage/index.js\";\nimport { DuplicatePageFeature } from \"~/features/pages/duplicatePage/index.js\";\nimport { CreatePageRevisionFromFeature } from \"~/features/pages/createPageRevisionFrom/index.js\";\nimport { UpdatePageFeature } from \"~/features/pages/updatePage/index.js\";\nimport { UpdatePageRevisionDescriptionFeature } from \"~/features/pages/updatePageRevisionDescription/index.js\";\nimport { CreatePageFeature as CreatePageHeadlessFeature } from \"~/features/pages/createPage/index.js\";\nimport { GetPageFeature } from \"~/features/pages/getPage/index.js\";\nimport { GetPageRevisionsFeature } from \"~/features/pages/getPageRevisions/index.js\";\nimport { SharedPageInfrastructureFeature } from \"~/features/pages/shared/feature.js\";\nimport { CreatePageConfig } from \"./presentation/pages/CreatePage/CreatePageConfig.js\";\nimport { TranslatePageConfig } from \"./presentation/pages/TranslatePage/TranslatePageConfig.js\";\nimport { CreatePageFeature } from \"~/presentation/pages/CreatePage/feature.js\";\nimport { PageSettingsFeature } from \"~/presentation/pages/PageEditor/PageSettings/feature.js\";\nimport { DeletePageRevisionFeature } from \"~/features/pages/deletePageRevision/index.js\";\nimport { GetSettingsFeature } from \"~/features/settings/getSettings/index.js\";\nimport { GetEcommerceSettingsFeature } from \"~/features/ecommerce/settings/getSettings/index.js\";\nimport { UpdateEcommerceSettingsFeature } from \"~/features/ecommerce/settings/updateSettings/index.js\";\n\nconst { Security, Menu, Route, Dashboard } = AdminConfig;\n\nexport const Extension = () => {\n const router = useRouter();\n\n return (\n <>\n <RegisterFeature feature={SharedPageInfrastructureFeature} />\n <RegisterFeature feature={WbPermissionsFeature} />\n <RegisterFeature feature={TranslatePageFeature} />\n <RegisterFeature feature={DeletePageFeature} />\n <RegisterFeature feature={DeletePageRevisionFeature} />\n <RegisterFeature feature={MovePageFeature} />\n <RegisterFeature feature={PublishPageFeature} />\n <RegisterFeature feature={UnpublishPageFeature} />\n <RegisterFeature feature={DuplicatePageFeature} />\n <RegisterFeature feature={CreatePageRevisionFromFeature} />\n <RegisterFeature feature={UpdatePageFeature} />\n <RegisterFeature feature={UpdatePageRevisionDescriptionFeature} />\n <RegisterFeature feature={CreatePageHeadlessFeature} />\n <RegisterFeature feature={GetPageFeature} />\n <RegisterFeature feature={GetPageRevisionsFeature} />\n <RegisterFeature feature={CreatePageFeature} />\n <RegisterFeature feature={PageSettingsFeature} />\n <RegisterFeature feature={GetSettingsFeature} />\n <RegisterFeature feature={GetEcommerceSettingsFeature} />\n <RegisterFeature feature={UpdateEcommerceSettingsFeature} />\n <AdminConfig>\n <Security.Permissions\n name=\"website-builder\"\n title=\"Website Builder\"\n description=\"Manage Website Builder permissions.\"\n icon={<PermissionsIcon />}\n schema={WB_PERMISSIONS_SCHEMA}\n />\n <HasPermission any={[\"page\", \"redirect\"]}>\n <Menu\n name=\"wb\"\n element={\n <Menu.Item\n text={\"Website Builder\"}\n icon={\n <Menu.Link.Icon\n label={\"Website Builder\"}\n element={<PagesIcon />}\n />\n }\n />\n }\n />\n </HasPermission>\n\n <HasPermission entity={\"page\"}>\n <Route route={Routes.Pages.List} element={<PagesList />} />\n <Route route={Routes.Pages.Editor} element={<PageEditor />} />\n <Menu\n name=\"wb.pages\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Pages\"}\n to={router.getLink(Routes.Pages.List)}\n pinnable={true}\n />\n }\n />\n <Dashboard.Widget name=\"wb.pages\" column={\"left\"} element={<PagesWidget />} />\n </HasPermission>\n\n <HasPermission entity={\"redirect\"}>\n <Route route={Routes.Redirects.List} element={<RedirectsList />} />\n <Menu\n name=\"wb.redirects\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Redirects\"}\n to={router.getLink(Routes.Redirects.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <HasPermission entity={\"integrations\"}>\n <Menu name=\"wb.integrations\" parent=\"wb\" element={<IntegrationsMenuItem />} />\n </HasPermission>\n </AdminConfig>\n <PagesListConfig />\n <RedirectsListConfig />\n <CreatePageConfig />\n <TranslatePageConfig />\n </>\n );\n};\n\nExtension.displayName = \"WbExtension\";\n\nconst IntegrationsMenuItem = () => {\n const { showIntegrationsDialog } = useIntegrationsDialog();\n return <Menu.Item text={\"Integrations\"} onClick={showIntegrationsDialog} pinnable={true} />;\n};\n"],"names":["Security","Menu","Route","Dashboard","AdminConfig","Extension","router","useRouter","RegisterFeature","SharedPageInfrastructureFeature","WbPermissionsFeature","TranslatePageFeature","DeletePageFeature","DeletePageRevisionFeature","MovePageFeature","PublishPageFeature","UnpublishPageFeature","DuplicatePageFeature","CreatePageRevisionFromFeature","UpdatePageFeature","UpdatePageRevisionDescriptionFeature","CreatePageHeadlessFeature","GetPageFeature","GetPageRevisionsFeature","CreatePageFeature","PageSettingsFeature","GetSettingsFeature","GetEcommerceSettingsFeature","UpdateEcommerceSettingsFeature","PermissionsIcon","WB_PERMISSIONS_SCHEMA","HasPermission","PagesIcon","Routes","PagesList","PageEditor","PagesWidget","RedirectsList","IntegrationsMenuItem","PagesListConfig","RedirectsListConfig","CreatePageConfig","TranslatePageConfig","showIntegrationsDialog","useIntegrationsDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAM,EAAEA,UAAAA,QAAQ,EAAEC,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAEC,WAAAA,SAAS,EAAE,GAAGC;AAEtC,MAAMC,YAAY;IACrB,MAAMC,SAASC;IAEf,OAAO,WAAP,GACI,wDACI,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACH,iBAAeA;QAAC,SAASI;sBAC1B,oBAACJ,iBAAeA;QAAC,SAASK;sBAC1B,oBAACL,iBAAeA;QAAC,SAASM;sBAC1B,oBAACN,iBAAeA;QAAC,SAASO;sBAC1B,oBAACP,iBAAeA;QAAC,SAASQ;sBAC1B,oBAACR,iBAAeA;QAAC,SAASS;sBAC1B,oBAACT,iBAAeA;QAAC,SAASU;sBAC1B,oBAACV,iBAAeA;QAAC,SAASW;sBAC1B,oBAACX,iBAAeA;QAAC,SAASY;sBAC1B,oBAACZ,iBAAeA;QAAC,SAASa;sBAC1B,oBAACb,iBAAeA;QAAC,SAASc;sBAC1B,oBAACd,iBAAeA;QAAC,SAASe;sBAC1B,oBAACf,iBAAeA;QAAC,SAASgB;sBAC1B,oBAAChB,iBAAeA;QAAC,SAASiB;sBAC1B,oBAACjB,iBAAeA;QAAC,SAASkB;sBAC1B,oBAAClB,iBAAeA;QAAC,SAASmB;sBAC1B,oBAACnB,iBAAeA;QAAC,SAASoB;sBAC1B,oBAACxB,aAAWA,MAAAA,WAAAA,GACR,oBAACJ,SAAS,WAAW;QACjB,MAAK;QACL,OAAM;QACN,aAAY;QACZ,oBAAM,oBAAC6B,gBAAeA;QACtB,QAAQC;sBAEZ,oBAACC,eAAaA;QAAC,KAAK;YAAC;YAAQ;SAAW;qBACpC,oBAAC9B,MAAIA;QACD,MAAK;QACL,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,oBACI,oBAACA,KAAK,IAAI,CAAC,IAAI;gBACX,OAAO;gBACP,uBAAS,oBAAC+B,gBAASA;;;uBAQ3C,oBAACD,eAAaA;QAAC,QAAQ;qBACnB,oBAAC7B,OAAKA;QAAC,OAAO+B,OAAO,KAAK,CAAC,IAAI;QAAE,uBAAS,oBAACC,WAASA;sBACpD,oBAAChC,OAAKA;QAAC,OAAO+B,OAAO,KAAK,CAAC,MAAM;QAAE,uBAAS,oBAACE,YAAUA;sBACvD,oBAAClC,MAAIA;QACD,MAAK;QACL,QAAQ;QACR,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,IAAIK,OAAO,OAAO,CAAC2B,OAAO,KAAK,CAAC,IAAI;YACpC,UAAU;;sBAItB,oBAAC9B,UAAU,MAAM;QAAC,MAAK;QAAW,QAAQ;QAAQ,uBAAS,oBAACiC,aAAWA;uBAG3E,oBAACL,eAAaA;QAAC,QAAQ;qBACnB,oBAAC7B,OAAKA;QAAC,OAAO+B,OAAO,SAAS,CAAC,IAAI;QAAE,uBAAS,oBAACI,eAAaA;sBAC5D,oBAACpC,MAAIA;QACD,MAAK;QACL,QAAQ;QACR,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,IAAIK,OAAO,OAAO,CAAC2B,OAAO,SAAS,CAAC,IAAI;YACxC,UAAU;;uBAK1B,oBAACF,eAAaA;QAAC,QAAQ;qBACnB,oBAAC9B,MAAIA;QAAC,MAAK;QAAkB,QAAO;QAAK,uBAAS,oBAACqC,sBAAoBA;wBAG/E,oBAACC,iBAAeA,OAAAA,WAAAA,GAChB,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,qBAAmBA;AAGhC;AAEArC,UAAU,WAAW,GAAG;AAExB,MAAMiC,uBAAuB;IACzB,MAAM,EAAEK,sBAAsB,EAAE,GAAGC;IACnC,OAAO,WAAP,GAAO,oBAAC3C,KAAK,IAAI;QAAC,MAAM;QAAgB,SAAS0C;QAAwB,UAAU;;AACvF"}
package/constants.d.ts CHANGED
@@ -46,11 +46,6 @@ export declare const WB_PERMISSIONS_SCHEMA: {
46
46
  readonly name: "rwd";
47
47
  }];
48
48
  readonly permission: "wb.redirect";
49
- }, {
50
- readonly id: "settings";
51
- readonly title: "Settings";
52
- readonly scopes: ["full"];
53
- readonly permission: "wb.settings";
54
49
  }, {
55
50
  readonly id: "integrations";
56
51
  readonly title: "Integrations";
package/constants.js CHANGED
@@ -59,14 +59,6 @@ const WB_PERMISSIONS_SCHEMA = createPermissionSchema({
59
59
  ],
60
60
  permission: "wb.redirect"
61
61
  },
62
- {
63
- id: "settings",
64
- title: "Settings",
65
- scopes: [
66
- "full"
67
- ],
68
- permission: "wb.settings"
69
- },
70
62
  {
71
63
  id: "integrations",
72
64
  title: "Integrations",
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const BASE_BREAKPOINT = \"desktop\";\nexport { ROOT_FOLDER } from \"@webiny/app-aco/constants.js\";\n\nexport type WbStatus = (typeof WbPageStatus)[keyof typeof WbPageStatus];\n\nexport const WbPageStatus = {\n Draft: \"draft\",\n Published: \"published\",\n Unpublished: \"unpublished\"\n} as const;\n\nexport const loadingActions = {\n create: \"CREATE\",\n createRevisionFrom: \"CREATE_REVISION_FROM\",\n delete: \"DELETE\",\n duplicate: \"DUPLICATE\",\n get: \"GET\",\n init: \"INIT\",\n list: \"LIST\",\n listMore: \"LIST_MORE\",\n move: \"MOVE\",\n publish: \"PUBLISH\",\n unpublish: \"UNPUBLISH\",\n update: \"UPDATE\"\n} as const;\n\nexport const WB_PAGE_APP = \"wb:page\";\nexport const WB_REDIRECTS_APP = \"wb:redirect\";\nexport const WB_PAGE_LATEST_VISITED_FOLDER = \"wb/page/list/last-folder\";\nexport const WB_REDIRECT_LATEST_VISITED_FOLDER = \"wb/redirect/list/last-folder\";\n\nexport const WB_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"wb\",\n fullAccess: true,\n readOnlyAccess: true,\n entities: [\n {\n id: \"page\",\n title: \"Page\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }, { name: \"pw\" }],\n permission: \"wb.page\"\n },\n {\n id: \"redirect\",\n title: \"Redirect\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }],\n permission: \"wb.redirect\"\n },\n {\n id: \"settings\",\n title: \"Settings\",\n scopes: [\"full\"],\n permission: \"wb.settings\"\n },\n {\n id: \"integrations\",\n title: \"Integrations\",\n scopes: [\"full\"],\n permission: \"wb.integrations\"\n }\n ]\n});\n"],"names":["BASE_BREAKPOINT","WbPageStatus","loadingActions","WB_PAGE_APP","WB_REDIRECTS_APP","WB_PAGE_LATEST_VISITED_FOLDER","WB_REDIRECT_LATEST_VISITED_FOLDER","WB_PERMISSIONS_SCHEMA","createPermissionSchema"],"mappings":";AAEO,MAAMA,kBAAkB;AAKxB,MAAMC,eAAe;IACxB,OAAO;IACP,WAAW;IACX,aAAa;AACjB;AAEO,MAAMC,iBAAiB;IAC1B,QAAQ;IACR,oBAAoB;IACpB,QAAQ;IACR,WAAW;IACX,KAAK;IACL,MAAM;IACN,MAAM;IACN,UAAU;IACV,MAAM;IACN,SAAS;IACT,WAAW;IACX,QAAQ;AACZ;AAEO,MAAMC,cAAc;AACpB,MAAMC,mBAAmB;AACzB,MAAMC,gCAAgC;AACtC,MAAMC,oCAAoC;AAE1C,MAAMC,wBAAwBC,uBAAuB;IACxD,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,UAAU;QACN;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;gBAAQ;aAAM;YACvB,SAAS;gBAAC;oBAAE,MAAM;gBAAM;gBAAG;oBAAE,MAAM;gBAAK;aAAE;YAC1C,YAAY;QAChB;QACA;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;gBAAQ;aAAM;YACvB,SAAS;gBAAC;oBAAE,MAAM;gBAAM;aAAE;YAC1B,YAAY;QAChB;QACA;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;aAAO;YAChB,YAAY;QAChB;QACA;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;aAAO;YAChB,YAAY;QAChB;KACH;AACL"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const BASE_BREAKPOINT = \"desktop\";\nexport { ROOT_FOLDER } from \"@webiny/app-aco/constants.js\";\n\nexport type WbStatus = (typeof WbPageStatus)[keyof typeof WbPageStatus];\n\nexport const WbPageStatus = {\n Draft: \"draft\",\n Published: \"published\",\n Unpublished: \"unpublished\"\n} as const;\n\nexport const loadingActions = {\n create: \"CREATE\",\n createRevisionFrom: \"CREATE_REVISION_FROM\",\n delete: \"DELETE\",\n duplicate: \"DUPLICATE\",\n get: \"GET\",\n init: \"INIT\",\n list: \"LIST\",\n listMore: \"LIST_MORE\",\n move: \"MOVE\",\n publish: \"PUBLISH\",\n unpublish: \"UNPUBLISH\",\n update: \"UPDATE\"\n} as const;\n\nexport const WB_PAGE_APP = \"wb:page\";\nexport const WB_REDIRECTS_APP = \"wb:redirect\";\nexport const WB_PAGE_LATEST_VISITED_FOLDER = \"wb/page/list/last-folder\";\nexport const WB_REDIRECT_LATEST_VISITED_FOLDER = \"wb/redirect/list/last-folder\";\n\nexport const WB_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"wb\",\n fullAccess: true,\n readOnlyAccess: true,\n entities: [\n {\n id: \"page\",\n title: \"Page\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }, { name: \"pw\" }],\n permission: \"wb.page\"\n },\n {\n id: \"redirect\",\n title: \"Redirect\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }],\n permission: \"wb.redirect\"\n },\n {\n id: \"integrations\",\n title: \"Integrations\",\n scopes: [\"full\"],\n permission: \"wb.integrations\"\n }\n ]\n});\n"],"names":["BASE_BREAKPOINT","WbPageStatus","loadingActions","WB_PAGE_APP","WB_REDIRECTS_APP","WB_PAGE_LATEST_VISITED_FOLDER","WB_REDIRECT_LATEST_VISITED_FOLDER","WB_PERMISSIONS_SCHEMA","createPermissionSchema"],"mappings":";AAEO,MAAMA,kBAAkB;AAKxB,MAAMC,eAAe;IACxB,OAAO;IACP,WAAW;IACX,aAAa;AACjB;AAEO,MAAMC,iBAAiB;IAC1B,QAAQ;IACR,oBAAoB;IACpB,QAAQ;IACR,WAAW;IACX,KAAK;IACL,MAAM;IACN,MAAM;IACN,UAAU;IACV,MAAM;IACN,SAAS;IACT,WAAW;IACX,QAAQ;AACZ;AAEO,MAAMC,cAAc;AACpB,MAAMC,mBAAmB;AACzB,MAAMC,gCAAgC;AACtC,MAAMC,oCAAoC;AAE1C,MAAMC,wBAAwBC,uBAAuB;IACxD,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,UAAU;QACN;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;gBAAQ;aAAM;YACvB,SAAS;gBAAC;oBAAE,MAAM;gBAAM;gBAAG;oBAAE,MAAM;gBAAK;aAAE;YAC1C,YAAY;QAChB;QACA;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;gBAAQ;aAAM;YACvB,SAAS;gBAAC;oBAAE,MAAM;gBAAM;aAAE;YAC1B,YAAY;QAChB;QACA;YACI,IAAI;YACJ,OAAO;YACP,QAAQ;gBAAC;aAAO;YAChB,YAAY;QAChB;KACH;AACL"}
@@ -1,4 +1,9 @@
1
- import { BindingsResolver, ComponentManifestToAstConverter } from "@webiny/website-builder-sdk";
1
+ import { BindingsResolver, ComponentManifestToAstConverter, ContentEntryBindingsResolver } from "@webiny/website-builder-sdk";
2
+ function createResolver(document) {
3
+ const embedded = document.__cache?.contentEntries;
4
+ const resolvedEntries = embedded ? new Map(Object.entries(embedded)) : void 0;
5
+ return new ContentEntryBindingsResolver(new BindingsResolver(document.state), resolvedEntries);
6
+ }
2
7
  function resolveElement(document, components, elementId, depth) {
3
8
  const element = document.elements[elementId];
4
9
  if (!element) return {};
@@ -6,7 +11,7 @@ function resolveElement(document, components, elementId, depth) {
6
11
  if (!manifest) return {};
7
12
  const elementBindings = document.bindings[elementId] ?? {};
8
13
  const inputAst = ComponentManifestToAstConverter.convert(manifest.inputs ?? []);
9
- const resolver = new BindingsResolver(document.state);
14
+ const resolver = createResolver(document);
10
15
  const [resolved] = resolver.resolveElement({
11
16
  element,
12
17
  elementBindings,