@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.
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.d.ts +1 -5
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.js +13 -24
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.js.map +1 -1
- package/BaseEditor/defaultConfig/ElementInputRenderers.js +4 -0
- package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js +2 -2
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js +1 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js.map +1 -1
- package/BaseEditor/metadata/ElementMetadata.js +4 -1
- package/BaseEditor/metadata/ElementMetadata.js.map +1 -1
- package/Extension.js +4 -29
- package/Extension.js.map +1 -1
- package/constants.d.ts +0 -5
- package/constants.js +0 -8
- package/constants.js.map +1 -1
- package/editorSdk/utils/$getElementInputValues.js +7 -2
- package/editorSdk/utils/$getElementInputValues.js.map +1 -1
- package/editorSdk/utils/executeOnChange.js +2 -2
- package/editorSdk/utils/executeOnChange.js.map +1 -1
- package/features/permissions/abstractions.d.ts +2 -2
- package/features/permissions/feature.d.ts +2 -2
- package/features/settings/getSettings/GetSettingsGateway.js +5 -2
- package/features/settings/getSettings/GetSettingsGateway.js.map +1 -1
- package/inputRenderers/ContentEntryInput.d.ts +12 -0
- package/inputRenderers/ContentEntryInput.js +277 -0
- package/inputRenderers/ContentEntryInput.js.map +1 -0
- package/inputRenderers/LexicalInput/LexicalEditor.js +10 -6
- package/inputRenderers/LexicalInput/LexicalEditor.js.map +1 -1
- package/inputRenderers/LexicalInput/TypographyDropDown.js +3 -2
- package/inputRenderers/LexicalInput/TypographyDropDown.js.map +1 -1
- package/inputRenderers/LexicalInput/wbStaticToolbar.css +72 -103
- package/package.json +23 -22
- package/presentation/pages/TranslatePage/translatePageSchema.d.ts +1 -1
- package/presentation/pages/TranslatePage/translatePageSchema.js +1 -1
- package/presentation/pages/TranslatePage/translatePageSchema.js.map +1 -1
- package/presentation/security/HasPermission.d.ts +0 -5
- package/presentation/security/usePermissions.d.ts +2 -2
- package/features/experiments/ExperimentsGateway.d.ts +0 -30
- package/features/experiments/ExperimentsGateway.js +0 -326
- package/features/experiments/ExperimentsGateway.js.map +0 -1
- package/features/experiments/abstractions.d.ts +0 -25
- package/features/experiments/abstractions.js +0 -5
- package/features/experiments/abstractions.js.map +0 -1
- package/features/experiments/feature.d.ts +0 -3
- package/features/experiments/feature.js +0 -17
- package/features/experiments/feature.js.map +0 -1
- package/features/experiments/index.d.ts +0 -3
- package/features/experiments/index.js +0 -2
- package/features/experiments/types.d.ts +0 -61
- package/features/experiments/types.js +0 -0
- package/inputRenderers/LexicalInput/icons/list-ol.js +0 -20
- package/inputRenderers/LexicalInput/icons/list-ol.js.map +0 -1
- package/inputRenderers/LexicalInput/icons/list-ol.svg +0 -1
- package/inputRenderers/LexicalInput/icons/list-ul.js +0 -18
- package/inputRenderers/LexicalInput/icons/list-ul.js.map +0 -1
- package/inputRenderers/LexicalInput/icons/list-ul.svg +0 -1
- package/modules/AbTesting.d.ts +0 -2
- package/modules/AbTesting.js +0 -19
- package/modules/AbTesting.js.map +0 -1
- package/modules/settings/WebsiteBuilderSettings.d.ts +0 -2
- package/modules/settings/WebsiteBuilderSettings.js +0 -14
- package/modules/settings/WebsiteBuilderSettings.js.map +0 -1
- package/modules/settings/useSettingsDialog.d.ts +0 -3
- package/modules/settings/useSettingsDialog.js +0 -37
- package/modules/settings/useSettingsDialog.js.map +0 -1
- package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.d.ts +0 -30
- package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js +0 -202
- package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js.map +0 -1
- package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.d.ts +0 -65
- package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js +0 -5
- package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js.map +0 -1
- package/presentation/experiments/ExperimentForm/components/ExperimentFormView.d.ts +0 -12
- package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js +0 -149
- package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js.map +0 -1
- package/presentation/experiments/ExperimentForm/components/VariantSplitRow.d.ts +0 -17
- package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js +0 -122
- package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js.map +0 -1
- package/presentation/experiments/ExperimentForm/feature.d.ts +0 -3
- package/presentation/experiments/ExperimentForm/feature.js +0 -17
- package/presentation/experiments/ExperimentForm/feature.js.map +0 -1
- package/presentation/experiments/ExperimentForm/index.d.ts +0 -3
- package/presentation/experiments/ExperimentForm/index.js +0 -3
- package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.d.ts +0 -18
- package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js +0 -25
- package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.d.ts +0 -67
- package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js +0 -224
- package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.d.ts +0 -10
- package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js +0 -5
- package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.d.ts +0 -58
- package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js +0 -5
- package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.d.ts +0 -11
- package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js +0 -110
- package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.d.ts +0 -9
- package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js +0 -178
- package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.d.ts +0 -11
- package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js +0 -51
- package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.d.ts +0 -14
- package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js +0 -147
- package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/feature.d.ts +0 -3
- package/presentation/experiments/ExperimentsEditor/feature.js +0 -21
- package/presentation/experiments/ExperimentsEditor/feature.js.map +0 -1
- package/presentation/experiments/ExperimentsEditor/index.d.ts +0 -4
- package/presentation/experiments/ExperimentsEditor/index.js +0 -3
- package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.d.ts +0 -39
- package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js +0 -219
- package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.d.ts +0 -52
- package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js +0 -5
- package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/components/ExperimentCard.d.ts +0 -10
- package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js +0 -296
- package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.d.ts +0 -2
- package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js +0 -92
- package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.d.ts +0 -6
- package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js +0 -103
- package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.d.ts +0 -9
- package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js +0 -58
- package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/feature.d.ts +0 -3
- package/presentation/experiments/ExperimentsManager/feature.js +0 -17
- package/presentation/experiments/ExperimentsManager/feature.js.map +0 -1
- package/presentation/experiments/ExperimentsManager/index.d.ts +0 -4
- package/presentation/experiments/ExperimentsManager/index.js +0 -3
- package/presentation/experiments/VariantPageEditorConfig.d.ts +0 -7
- package/presentation/experiments/VariantPageEditorConfig.js +0 -26
- package/presentation/experiments/VariantPageEditorConfig.js.map +0 -1
- package/presentation/experiments/config/ExperimentsEditorConfig.d.ts +0 -8
- package/presentation/experiments/config/ExperimentsEditorConfig.js +0 -21
- package/presentation/experiments/config/ExperimentsEditorConfig.js.map +0 -1
- package/presentation/experiments/config/VariantAutoSave.d.ts +0 -5
- package/presentation/experiments/config/VariantAutoSave.js +0 -41
- package/presentation/experiments/config/VariantAutoSave.js.map +0 -1
- package/presentation/experiments/shared/variantColors.d.ts +0 -11
- package/presentation/experiments/shared/variantColors.js +0 -13
- package/presentation/experiments/shared/variantColors.js.map +0 -1
- package/presentation/experiments/shared/variantDocument.d.ts +0 -16
- package/presentation/experiments/shared/variantDocument.js +0 -31
- package/presentation/experiments/shared/variantDocument.js.map +0 -1
- package/presentation/navigation/Extension.d.ts +0 -2
- package/presentation/navigation/Extension.js +0 -27
- package/presentation/navigation/Extension.js.map +0 -1
- package/presentation/navigation/NextjsConfig/NextjsConfigDialog.d.ts +0 -9
- package/presentation/navigation/NextjsConfig/NextjsConfigDialog.js +0 -41
- package/presentation/navigation/NextjsConfig/NextjsConfigDialog.js.map +0 -1
- package/presentation/navigation/NextjsConfig/NextjsConfigGateway.d.ts +0 -11
- package/presentation/navigation/NextjsConfig/NextjsConfigGateway.js +0 -38
- package/presentation/navigation/NextjsConfig/NextjsConfigGateway.js.map +0 -1
- package/presentation/navigation/NextjsConfig/NextjsConfigPresenter.d.ts +0 -12
- package/presentation/navigation/NextjsConfig/NextjsConfigPresenter.js +0 -32
- package/presentation/navigation/NextjsConfig/NextjsConfigPresenter.js.map +0 -1
- package/presentation/navigation/NextjsConfig/NextjsConfigRepository.d.ts +0 -12
- package/presentation/navigation/NextjsConfig/NextjsConfigRepository.js +0 -30
- package/presentation/navigation/NextjsConfig/NextjsConfigRepository.js.map +0 -1
- package/presentation/navigation/NextjsConfig/abstractions.d.ts +0 -30
- package/presentation/navigation/NextjsConfig/abstractions.js +0 -7
- package/presentation/navigation/NextjsConfig/abstractions.js.map +0 -1
- package/presentation/navigation/NextjsConfig/feature.d.ts +0 -3
- package/presentation/navigation/NextjsConfig/feature.js +0 -21
- package/presentation/navigation/NextjsConfig/feature.js.map +0 -1
- package/presentation/navigation/NextjsConfig/markdownComponents.d.ts +0 -6
- package/presentation/navigation/NextjsConfig/markdownComponents.js +0 -31
- package/presentation/navigation/NextjsConfig/markdownComponents.js.map +0 -1
- package/presentation/navigation/NuxtConfig/NuxtConfigGateway.d.ts +0 -11
- package/presentation/navigation/NuxtConfig/NuxtConfigGateway.js +0 -38
- package/presentation/navigation/NuxtConfig/NuxtConfigGateway.js.map +0 -1
- package/presentation/navigation/NuxtConfig/NuxtConfigPresenter.d.ts +0 -12
- package/presentation/navigation/NuxtConfig/NuxtConfigPresenter.js +0 -32
- package/presentation/navigation/NuxtConfig/NuxtConfigPresenter.js.map +0 -1
- package/presentation/navigation/NuxtConfig/NuxtConfigRepository.d.ts +0 -12
- package/presentation/navigation/NuxtConfig/NuxtConfigRepository.js +0 -30
- package/presentation/navigation/NuxtConfig/NuxtConfigRepository.js.map +0 -1
- package/presentation/navigation/NuxtConfig/abstractions.d.ts +0 -30
- package/presentation/navigation/NuxtConfig/abstractions.js +0 -7
- package/presentation/navigation/NuxtConfig/abstractions.js.map +0 -1
- package/presentation/navigation/NuxtConfig/feature.d.ts +0 -3
- package/presentation/navigation/NuxtConfig/feature.js +0 -21
- package/presentation/navigation/NuxtConfig/feature.js.map +0 -1
- package/presentation/navigation/StarterKitConfigDialog.d.ts +0 -7
- package/presentation/navigation/StarterKitConfigDialog.js +0 -88
- package/presentation/navigation/StarterKitConfigDialog.js.map +0 -1
- package/presentation/pages/PageEditor/PageEditor.experiments.d.ts +0 -2
- package/presentation/pages/PageEditor/PageEditor.experiments.js +0 -54
- package/presentation/pages/PageEditor/PageEditor.experiments.js.map +0 -1
- package/presentation/pages/PageEditor/PageEditorSurface.d.ts +0 -15
- package/presentation/pages/PageEditor/PageEditorSurface.js +0 -63
- package/presentation/pages/PageEditor/PageEditorSurface.js.map +0 -1
- package/static/svg/list-ol.d64946f3.svg +0 -1
- 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:
|
|
5
|
+
isOverridden: boolean;
|
|
10
6
|
};
|
|
@@ -1,37 +1,26 @@
|
|
|
1
|
-
import { useCallback
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
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.
|
|
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.
|
|
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
|
|
18
|
+
previewDomain,
|
|
30
19
|
setPreviewDomain,
|
|
31
20
|
unsetPreviewDomain,
|
|
32
|
-
isOverridden
|
|
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
|
|
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":"
|
|
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(
|
|
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(
|
|
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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"}
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map
CHANGED
|
@@ -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
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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;
|
|
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
|
|
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
|
-
})
|
|
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
|
-
|
|
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 {
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAM,EAAEA,UAAAA,QAAQ,EAAEC,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAEC,WAAAA,SAAS,EAAE,GAAGC;AAEtC,MAAMC,sBAAY;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;sBAE1B,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,oBAACpB,iBAAeA;QAAC,SAASqB;sBAC1B,oBAACrB,iBAAeA;QAAC,SAASsB;sBAC1B,oBAACtB,iBAAeA;QAAC,SAASuB;sBAC1B,oBAAC3B,aAAWA,MAAAA,WAAAA,GACR,oBAACJ,SAAS,WAAW;QACjB,MAAK;QACL,OAAM;QACN,aAAY;QACZ,oBAAM,oBAACgC,gBAAeA;QACtB,QAAQC;sBAEZ,oBAACC,eAAaA;QAAC,KAAK;YAAC;YAAQ;SAAW;qBACpC,oBAACjC,MAAIA;QACD,MAAK;QACL,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,oBACI,oBAACA,KAAK,IAAI,CAAC,IAAI;gBACX,OAAO;gBACP,uBAAS,oBAACkC,gBAASA;;;uBAQ3C,oBAACD,eAAaA;QAAC,QAAQ;qBACnB,oBAAChC,OAAKA;QAAC,OAAOkC,OAAO,KAAK,CAAC,IAAI;QAAE,uBAAS,oBAACC,WAASA;sBACpD,oBAACnC,OAAKA;QAAC,OAAOkC,OAAO,KAAK,CAAC,MAAM;QAAE,uBAAS,oBAACE,YAAUA;sBACvD,oBAACrC,MAAIA;QACD,MAAK;QACL,QAAQ;QACR,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,IAAIK,OAAO,OAAO,CAAC8B,OAAO,KAAK,CAAC,IAAI;YACpC,UAAU;;sBAItB,oBAACjC,UAAU,MAAM;QAAC,MAAK;QAAW,QAAQ;QAAQ,uBAAS,oBAACoC,aAAWA;sBACvE,oBAACC,WAAmBA,QAAAA,WAAAA,GAGxB,oBAACN,eAAaA;QAAC,QAAQ;qBACnB,oBAAChC,OAAKA;QAAC,OAAOkC,OAAO,SAAS,CAAC,IAAI;QAAE,uBAAS,oBAACK,eAAaA;sBAC5D,oBAACxC,MAAIA;QACD,MAAK;QACL,QAAQ;QACR,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,IAAIK,OAAO,OAAO,CAAC8B,OAAO,SAAS,CAAC,IAAI;YACxC,UAAU;;uBAK1B,oBAACF,eAAaA;QAAC,QAAQ;qBACnB,oBAACjC,MAAIA;QAAC,MAAK;QAAc,QAAO;QAAK,uBAAS,oBAACyC,kBAAgBA;uBAEnE,oBAACR,eAAaA;QAAC,QAAQ;qBACnB,oBAACjC,MAAIA;QAAC,MAAK;QAAkB,QAAO;QAAK,uBAAS,oBAAC0C,sBAAoBA;wBAG/E,oBAACC,iBAAeA,OAAAA,WAAAA,GAChB,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,qBAAmBA;AAGhC;AAEA1C,oBAAU,WAAW,GAAG;AAExB,MAAMqC,mBAAmB;IACrB,MAAM,EAAEM,kBAAkB,EAAE,GAAGC;IAC/B,OAAO,WAAP,GAAO,oBAAChD,KAAK,IAAI;QAAC,MAAM;QAAY,SAAS+C;QAAoB,UAAU;;AAC/E;AAEA,MAAML,uBAAuB;IACzB,MAAM,EAAEO,sBAAsB,EAAE,GAAGC;IACnC,OAAO,WAAP,GAAO,oBAAClD,KAAK,IAAI;QAAC,MAAM;QAAgB,SAASiD;QAAwB,UAAU;;AACvF"}
|
|
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":"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"}
|
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: \"
|
|
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 =
|
|
14
|
+
const resolver = createResolver(document);
|
|
10
15
|
const [resolved] = resolver.resolveElement({
|
|
11
16
|
element,
|
|
12
17
|
elementBindings,
|