@webiny/app-website-builder 0.0.0-unstable.df7a8bb475 → 0.0.0-unstable.e2758ee1cf
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/Preview/AddressBar.js +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/AddressBar.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js +17 -7
- package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js.map +1 -1
- package/Extension.js +21 -21
- package/Extension.js.map +1 -1
- package/constants.d.ts +34 -0
- package/constants.js +35 -0
- package/constants.js.map +1 -1
- package/domain/Page/Page.d.ts +5 -1
- package/domain/Page/Page.js +3 -3
- package/domain/Page/Page.js.map +1 -1
- package/domain/Page/PageDto.d.ts +3 -1
- package/domain/Page/PageDto.js +3 -2
- package/domain/Page/PageDto.js.map +1 -1
- package/ecommerce/EcommerceIntegration.d.ts +2 -1
- package/ecommerce/EcommerceIntegration.js.map +1 -1
- package/exports/admin/website-builder.d.ts +1 -0
- package/exports/admin/website-builder.js +1 -0
- package/exports/admin/website-builder.js.map +1 -1
- package/features/pages/createPage/CreatePageUseCase.js +3 -1
- package/features/pages/createPage/CreatePageUseCase.js.map +1 -1
- package/features/pages/createPage/useCreatePage.js +1 -1
- package/features/pages/createPage/useCreatePage.js.map +1 -1
- package/features/pages/createPageRevisionFrom/useCreatePageRevisionFrom.js +1 -1
- package/features/pages/createPageRevisionFrom/useCreatePageRevisionFrom.js.map +1 -1
- package/features/pages/getPage/useGetPage.js +1 -1
- package/features/pages/getPage/useGetPage.js.map +1 -1
- package/features/pages/loadPages/PageGatewayDto.d.ts +2 -1
- package/features/pages/loadPages/PageGatewayDto.js.map +1 -1
- package/features/pages/useGetPageGraphQLFields.js +4 -1
- package/features/pages/useGetPageGraphQLFields.js.map +1 -1
- package/inputRenderers/FileInput.d.ts +1 -1
- package/inputRenderers/FileInput.js +3 -10
- package/inputRenderers/FileInput.js.map +1 -1
- package/inputRenderers/LexicalInput/DefaultLexicalConfig.js +9 -10
- package/inputRenderers/LexicalInput/DefaultLexicalConfig.js.map +1 -1
- package/inputRenderers/LexicalInput/LexicalInput.js +5 -30
- package/inputRenderers/LexicalInput/LexicalInput.js.map +1 -1
- package/modules/pages/PageEditor/DefaultPageEditorConfig.js +10 -3
- package/modules/pages/PageEditor/DefaultPageEditorConfig.js.map +1 -1
- package/modules/pages/PageEditor/TopBar/PublishButton.js.map +1 -1
- package/modules/pages/PageEditor/TopBar/Title.js +2 -2
- package/modules/pages/PageEditor/TopBar/Title.js.map +1 -1
- package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js +3 -0
- package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js.map +1 -1
- package/modules/pages/PagesList/components/Sidebar/Sidebar.js +6 -1
- package/modules/pages/PagesList/components/Sidebar/Sidebar.js.map +1 -1
- package/modules/pages/PagesList/components/Table/Actions/ChangeStatus.js +11 -4
- package/modules/pages/PagesList/components/Table/Actions/ChangeStatus.js.map +1 -1
- package/modules/pages/PagesList/components/Table/Cells/CellLive.d.ts +2 -0
- package/modules/pages/PagesList/components/Table/Cells/CellLive.js +26 -0
- package/modules/pages/PagesList/components/Table/Cells/CellLive.js.map +1 -0
- package/modules/pages/PagesList/components/Table/Cells/index.d.ts +1 -0
- package/modules/pages/PagesList/components/Table/Cells/index.js +1 -0
- package/modules/pages/PagesList/components/Table/Cells/index.js.map +1 -1
- package/modules/pages/PagesListConfig.js +38 -18
- package/modules/pages/PagesListConfig.js.map +1 -1
- package/modules/redirects/RedirectsList/components/Sidebar/Sidebar.js +9 -5
- package/modules/redirects/RedirectsList/components/Sidebar/Sidebar.js.map +1 -1
- package/modules/redirects/RedirectsList/components/Table/Cells/CellName.js +7 -1
- package/modules/redirects/RedirectsList/components/Table/Cells/CellName.js.map +1 -1
- package/modules/redirects/RedirectsListConfig.js +12 -5
- package/modules/redirects/RedirectsListConfig.js.map +1 -1
- package/package.json +27 -28
- package/presentation/security/HasPermission.d.ts +34 -0
- package/presentation/security/HasPermission.js +5 -0
- package/presentation/security/HasPermission.js.map +1 -0
- package/presentation/security/usePermissions.d.ts +12 -0
- package/presentation/security/usePermissions.js +5 -0
- package/presentation/security/usePermissions.js.map +1 -0
- package/types.d.ts +4 -0
- package/types.js.map +1 -1
- package/inputRenderers/LexicalInput/LinkEditForm.d.ts +0 -6
- package/inputRenderers/LexicalInput/LinkEditForm.js +0 -63
- package/inputRenderers/LexicalInput/LinkEditForm.js.map +0 -1
- package/plugins/WebsiteBuilderPermissions.d.ts +0 -11
- package/plugins/WebsiteBuilderPermissions.js +0 -75
- package/plugins/WebsiteBuilderPermissions.js.map +0 -1
- package/plugins/permissionRenderer.d.ts +0 -2
- package/plugins/permissionRenderer.js +0 -23
- package/plugins/permissionRenderer.js.map +0 -1
|
@@ -19,7 +19,7 @@ export const AddressBar = () => {
|
|
|
19
19
|
setAddressBarUrl(`${previewDomain}${path}`);
|
|
20
20
|
}, [path, previewDomain]);
|
|
21
21
|
return /*#__PURE__*/React.createElement("div", {
|
|
22
|
-
className: "w-full h-[49px] flex flex-row p-sm bg-neutral-base border-solid border-b-sm border-neutral-dimmed"
|
|
22
|
+
className: "w-full h-[49px] flex flex-row p-sm bg-neutral-base border-solid border-b-sm border-neutral-dimmed gap-sm"
|
|
23
23
|
}, /*#__PURE__*/React.createElement("div", {
|
|
24
24
|
className: "relative flex-auto"
|
|
25
25
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","BreakpointSelector","PreviewInNewTab","OpenInNewTab","RefreshPreview","useSelectFromDocument","PreviewDomain","usePreviewDomain","AddressBar","path","document","properties","previewDomain","addressBarUrl","setAddressBarUrl","createElement","className"],"sources":["AddressBar.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { BreakpointSelector } from \"./BreakpointSelector.js\";\nimport { PreviewInNewTab } from \"./AddressBar/PreviewInNewTab.js\";\nimport { OpenInNewTab } from \"./AddressBar/OpenInNewTab.js\";\nimport { RefreshPreview } from \"./AddressBar/RefreshPreview.js\";\nimport { useSelectFromDocument } from \"~/BaseEditor/hooks/useSelectFromDocument.js\";\nimport { PreviewDomain } from \"./AddressBar/PreviewDomain.js\";\nimport { usePreviewDomain } from \"./usePreviewDomain.js\";\n\nexport const AddressBar = () => {\n const path = useSelectFromDocument(document => document.properties.path);\n\n const { previewDomain } = usePreviewDomain();\n const [addressBarUrl, setAddressBarUrl] = useState<string>(\"\");\n\n useEffect(() => {\n if (!previewDomain) {\n return;\n }\n\n setAddressBarUrl(`${previewDomain}${path}`);\n }, [path, previewDomain]);\n\n return (\n <div className=\"w-full h-[49px] flex flex-row p-sm bg-neutral-base border-solid border-b-sm border-neutral-dimmed\">\n <div className={\"relative flex-auto\"}>\n <div\n className={\n \"w-full absolute -top-px py-xs-plus pl-xl border-sm text-md peer cursor-not-allowed rounded-md border-neutral-subtle text-neutral-muted bg-neutral-disabled text-neutral-disabled\"\n }\n >\n <PreviewDomain />\n {addressBarUrl}\n </div>\n <div className={\"absolute right-0 top-0\"}>\n <RefreshPreview />\n <PreviewInNewTab />\n <OpenInNewTab />\n </div>\n </div>\n <div className={\"flex-none\"}>\n <BreakpointSelector />\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,kBAAkB;AAC3B,SAASC,eAAe;AACxB,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AACtB,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC5B,MAAMC,IAAI,GAAGJ,qBAAqB,CAACK,QAAQ,IAAIA,QAAQ,CAACC,UAAU,CAACF,IAAI,CAAC;EAExE,MAAM;IAAEG;EAAc,CAAC,GAAGL,gBAAgB,CAAC,CAAC;EAC5C,MAAM,CAACM,aAAa,EAAEC,gBAAgB,CAAC,GAAGd,QAAQ,CAAS,EAAE,CAAC;EAE9DD,SAAS,CAAC,MAAM;IACZ,IAAI,CAACa,aAAa,EAAE;MAChB;IACJ;IAEAE,gBAAgB,CAAC,GAAGF,aAAa,GAAGH,IAAI,EAAE,CAAC;EAC/C,CAAC,EAAE,CAACA,IAAI,EAAEG,aAAa,CAAC,CAAC;EAEzB,oBACId,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAC;
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","BreakpointSelector","PreviewInNewTab","OpenInNewTab","RefreshPreview","useSelectFromDocument","PreviewDomain","usePreviewDomain","AddressBar","path","document","properties","previewDomain","addressBarUrl","setAddressBarUrl","createElement","className"],"sources":["AddressBar.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { BreakpointSelector } from \"./BreakpointSelector.js\";\nimport { PreviewInNewTab } from \"./AddressBar/PreviewInNewTab.js\";\nimport { OpenInNewTab } from \"./AddressBar/OpenInNewTab.js\";\nimport { RefreshPreview } from \"./AddressBar/RefreshPreview.js\";\nimport { useSelectFromDocument } from \"~/BaseEditor/hooks/useSelectFromDocument.js\";\nimport { PreviewDomain } from \"./AddressBar/PreviewDomain.js\";\nimport { usePreviewDomain } from \"./usePreviewDomain.js\";\n\nexport const AddressBar = () => {\n const path = useSelectFromDocument(document => document.properties.path);\n\n const { previewDomain } = usePreviewDomain();\n const [addressBarUrl, setAddressBarUrl] = useState<string>(\"\");\n\n useEffect(() => {\n if (!previewDomain) {\n return;\n }\n\n setAddressBarUrl(`${previewDomain}${path}`);\n }, [path, previewDomain]);\n\n return (\n <div className=\"w-full h-[49px] flex flex-row p-sm bg-neutral-base border-solid border-b-sm border-neutral-dimmed gap-sm\">\n <div className={\"relative flex-auto\"}>\n <div\n className={\n \"w-full absolute -top-px py-xs-plus pl-xl border-sm text-md peer cursor-not-allowed rounded-md border-neutral-subtle text-neutral-muted bg-neutral-disabled text-neutral-disabled\"\n }\n >\n <PreviewDomain />\n {addressBarUrl}\n </div>\n <div className={\"absolute right-0 top-0\"}>\n <RefreshPreview />\n <PreviewInNewTab />\n <OpenInNewTab />\n </div>\n </div>\n <div className={\"flex-none\"}>\n <BreakpointSelector />\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,kBAAkB;AAC3B,SAASC,eAAe;AACxB,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AACtB,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC5B,MAAMC,IAAI,GAAGJ,qBAAqB,CAACK,QAAQ,IAAIA,QAAQ,CAACC,UAAU,CAACF,IAAI,CAAC;EAExE,MAAM;IAAEG;EAAc,CAAC,GAAGL,gBAAgB,CAAC,CAAC;EAC5C,MAAM,CAACM,aAAa,EAAEC,gBAAgB,CAAC,GAAGd,QAAQ,CAAS,EAAE,CAAC;EAE9DD,SAAS,CAAC,MAAM;IACZ,IAAI,CAACa,aAAa,EAAE;MAChB;IACJ;IAEAE,gBAAgB,CAAC,GAAGF,aAAa,GAAGH,IAAI,EAAE,CAAC;EAC/C,CAAC,EAAE,CAACA,IAAI,EAAEG,aAAa,CAAC,CAAC;EAEzB,oBACId,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAC;EAA0G,gBACrHlB,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAAqB,gBACjClB,KAAA,CAAAiB,aAAA;IACIC,SAAS,EACL;EACH,gBAEDlB,KAAA,CAAAiB,aAAA,CAACT,aAAa,MAAE,CAAC,EAChBO,aACA,CAAC,eACNf,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAAyB,gBACrClB,KAAA,CAAAiB,aAAA,CAACX,cAAc,MAAE,CAAC,eAClBN,KAAA,CAAAiB,aAAA,CAACb,eAAe,MAAE,CAAC,eACnBJ,KAAA,CAAAiB,aAAA,CAACZ,YAAY,MAAE,CACd,CACJ,CAAC,eACNL,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAAY,gBACxBlB,KAAA,CAAAiB,aAAA,CAACd,kBAAkB,MAAE,CACpB,CACJ,CAAC;AAEd,CAAC","ignoreList":[]}
|
|
@@ -63,20 +63,30 @@ export class PreviewEvents {
|
|
|
63
63
|
const document = this.editor.getDocumentState().read();
|
|
64
64
|
if (Object.keys(document.elements).length === 1) {
|
|
65
65
|
// We only have the default "root" element, create fragment elements.
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
fragments.forEach((fragment, index) => {
|
|
67
|
+
if (fragment.type === "fixed") {
|
|
68
|
+
$createElement(this.editor, {
|
|
69
|
+
componentName: "Webiny/Fragment",
|
|
70
|
+
parentId: "root",
|
|
71
|
+
slot: "children",
|
|
72
|
+
index,
|
|
73
|
+
bindings: {
|
|
74
|
+
inputs: {
|
|
75
|
+
name: fragment.name
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
68
81
|
$createElement(this.editor, {
|
|
69
|
-
componentName:
|
|
82
|
+
componentName: fragment.component,
|
|
70
83
|
parentId: "root",
|
|
71
84
|
slot: "children",
|
|
72
85
|
index,
|
|
73
86
|
bindings: {
|
|
74
|
-
inputs:
|
|
75
|
-
name: fragment
|
|
76
|
-
}
|
|
87
|
+
inputs: fragment.inputs
|
|
77
88
|
}
|
|
78
89
|
});
|
|
79
|
-
index++;
|
|
80
90
|
});
|
|
81
91
|
}
|
|
82
92
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mouseTracker","defaultImage","Commands","$createElement","PreviewEvents","editorEventsRegistered","listeners","constructor","editor","onConnected","messenger","dispose","registerEditorEvents","subscribeToIframe","setTimeout","updateEditor","state","loadingPreview","selectedElement","destroy","forEach","unsubscribe","push","onDocumentStateChange","event","reason","getMessenger","send","diff","registerCommandHandler","PreviewPatchElement","payload","elementId","patch","getDocumentState","toJson","on","theme","executeCommand","SetTheme","fragments","document","read","Object","keys","elements","length","index","fragment","componentName","parentId","slot","bindings","inputs","name","boxes","viewport","iframeBox","getIframeBox","top","left","preview","mapCoordinatesToEditorSpace","component","components","image","tags","group","componentGroups","id","x","y","globalX","globalY","setPosition","previewContainer","getElementById","previewBody","width","height","containerRect","getBoundingClientRect","bodyRect","newBoxes","key","box"],"sources":["PreviewEvents.ts"],"sourcesContent":["import type { Messenger } from \"@webiny/website-builder-sdk\";\nimport {\n type BoxesData,\n type ComponentManifest,\n type EditorViewportInfo,\n mouseTracker,\n type PreviewViewportData,\n type SerializedComponentGroup\n} from \"@webiny/website-builder-sdk\";\nimport defaultImage from \"@webiny/icons/extension.svg\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { Editor } from \"~/editorSdk/Editor.js\";\nimport { $createElement } from \"~/editorSdk/utils/index.js\";\n\nexport class PreviewEvents {\n private editor: Editor;\n private editorEventsRegistered = false;\n private messenger: Messenger | undefined;\n private listeners: Array<() => void> = [];\n\n constructor(editor: Editor) {\n this.editor = editor;\n }\n\n onConnected(messenger: Messenger) {\n // Dispose of the old messenger.\n this.messenger?.dispose();\n\n this.messenger = messenger;\n\n this.registerEditorEvents();\n\n this.subscribeToIframe(messenger);\n\n setTimeout(() => {\n this.editor.updateEditor(state => {\n state.loadingPreview = false;\n state.selectedElement = null;\n });\n }, 100);\n }\n\n destroy() {\n this.listeners.forEach(unsubscribe => {\n unsubscribe();\n });\n }\n\n private registerEditorEvents() {\n if (this.editorEventsRegistered) {\n return;\n }\n\n this.editorEventsRegistered = true;\n\n this.listeners.push(\n // Propagate changes\n this.editor.onDocumentStateChange(event => {\n if (event.reason === \"update\") {\n this.getMessenger().send(\"document.patch\", event.diff);\n } else {\n this.getMessenger().send(\"document.set\", event.state);\n }\n }),\n\n // Element preview\n this.editor.registerCommandHandler(Commands.PreviewPatchElement, payload => {\n this.getMessenger().send(`element.patch.${payload.elementId}`, payload.patch);\n })\n );\n }\n\n private subscribeToIframe(messenger: Messenger) {\n // When `onConnected` is executed, we need to send new data to the live preview.\n messenger.send(\"document.set\", this.editor.getDocumentState().toJson());\n\n messenger.on(\"preview.theme\", ({ theme }) => {\n this.editor.executeCommand(Commands.SetTheme, { theme });\n });\n\n messenger.on(\"document.fragments\", payload => {\n const fragments: string[] = payload.fragments;\n this.editor.updateEditor(state => {\n state.fragments = fragments;\n });\n\n const document = this.editor.getDocumentState().read();\n\n if (Object.keys(document.elements).length === 1) {\n // We only have the default \"root\" element, create fragment elements.\n let index = 0;\n fragments.forEach(fragment => {\n $createElement(this.editor, {\n componentName: \"Webiny/Fragment\",\n parentId: \"root\",\n slot: \"children\",\n index,\n bindings: {\n inputs: {\n name: fragment\n }\n }\n });\n index++;\n });\n }\n });\n\n messenger.on(\"preview.viewport\", ({ boxes, viewport }: PreviewViewportData) => {\n const iframeBox = this.getIframeBox();\n\n this.editor.updateEditor(state => {\n state.viewport = {\n ...viewport,\n top: iframeBox.top,\n left: iframeBox.left\n };\n\n state.boxes = {\n preview: boxes,\n editor: this.mapCoordinatesToEditorSpace(state.viewport, boxes)\n };\n });\n });\n\n messenger.on(\"preview.component.register\", (component: ComponentManifest) => {\n this.editor.updateEditor(state => {\n if (!state.components) {\n state.components = {};\n }\n state.components[component.name] = {\n ...component,\n image: component.image ?? defaultImage,\n tags: component.tags ?? []\n };\n });\n });\n\n messenger.on(\"preview.componentGroup.register\", (group: SerializedComponentGroup) => {\n this.editor.updateEditor(state => {\n if (!state.componentGroups) {\n state.componentGroups = {};\n }\n state.componentGroups[group.name] = group;\n });\n });\n\n messenger.on(\"preview.element.click\", ({ id }) => {\n this.editor.updateEditor(state => {\n state.selectedElement = id;\n });\n });\n\n messenger.on(\"preview.mouse.move\", ({ x, y }) => {\n const iframeBox = this.getIframeBox();\n const globalX = x + iframeBox.left;\n const globalY = y + iframeBox.top;\n\n mouseTracker.setPosition(globalX, globalY);\n });\n }\n\n private getIframeBox() {\n const previewContainer = document.getElementById(\"preview-container\");\n const previewBody = document.getElementById(\"preview-body\");\n\n if (!previewContainer || !previewBody) {\n return {\n top: 0,\n left: 0,\n width: 0,\n height: 0\n };\n }\n\n /**\n * We need to use the `preview-container` to get the exact position from the top (we MUST ignore scroll position).\n * However, for everything else we use the actual `preview-body`,\n */\n const containerRect = previewContainer.getBoundingClientRect();\n const bodyRect = previewBody.getBoundingClientRect();\n\n return {\n top: containerRect.top,\n left: bodyRect.left,\n width: bodyRect.width,\n height: bodyRect.height\n };\n }\n\n private mapCoordinatesToEditorSpace(\n viewport: EditorViewportInfo,\n boxes: PreviewViewportData[\"boxes\"]\n ) {\n const newBoxes: BoxesData = {};\n\n for (const key in boxes) {\n const box = boxes[key];\n newBoxes[key] = {\n ...box,\n top: box.top + viewport.top,\n left: box.left + viewport.left\n };\n }\n\n return newBoxes;\n }\n\n private getMessenger(): Messenger {\n return this.messenger!;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["mouseTracker","defaultImage","Commands","$createElement","PreviewEvents","editorEventsRegistered","listeners","constructor","editor","onConnected","messenger","dispose","registerEditorEvents","subscribeToIframe","setTimeout","updateEditor","state","loadingPreview","selectedElement","destroy","forEach","unsubscribe","push","onDocumentStateChange","event","reason","getMessenger","send","diff","registerCommandHandler","PreviewPatchElement","payload","elementId","patch","getDocumentState","toJson","on","theme","executeCommand","SetTheme","fragments","document","read","Object","keys","elements","length","fragment","index","type","componentName","parentId","slot","bindings","inputs","name","component","boxes","viewport","iframeBox","getIframeBox","top","left","preview","mapCoordinatesToEditorSpace","components","image","tags","group","componentGroups","id","x","y","globalX","globalY","setPosition","previewContainer","getElementById","previewBody","width","height","containerRect","getBoundingClientRect","bodyRect","newBoxes","key","box"],"sources":["PreviewEvents.ts"],"sourcesContent":["import type { Messenger } from \"@webiny/website-builder-sdk\";\nimport {\n type BoxesData,\n type ComponentManifest,\n type EditorViewportInfo,\n mouseTracker,\n type PreviewViewportData,\n type SerializedComponentGroup\n} from \"@webiny/website-builder-sdk\";\nimport defaultImage from \"@webiny/icons/extension.svg\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { Editor } from \"~/editorSdk/Editor.js\";\nimport { $createElement } from \"~/editorSdk/utils/index.js\";\n\ntype FragmentConfig =\n | {\n type: \"fixed\";\n name: string;\n element: React.ReactNode;\n }\n | { type: \"component\"; component: string; inputs: Record<string, any> };\n\nexport class PreviewEvents {\n private editor: Editor;\n private editorEventsRegistered = false;\n private messenger: Messenger | undefined;\n private listeners: Array<() => void> = [];\n\n constructor(editor: Editor) {\n this.editor = editor;\n }\n\n onConnected(messenger: Messenger) {\n // Dispose of the old messenger.\n this.messenger?.dispose();\n\n this.messenger = messenger;\n\n this.registerEditorEvents();\n\n this.subscribeToIframe(messenger);\n\n setTimeout(() => {\n this.editor.updateEditor(state => {\n state.loadingPreview = false;\n state.selectedElement = null;\n });\n }, 100);\n }\n\n destroy() {\n this.listeners.forEach(unsubscribe => {\n unsubscribe();\n });\n }\n\n private registerEditorEvents() {\n if (this.editorEventsRegistered) {\n return;\n }\n\n this.editorEventsRegistered = true;\n\n this.listeners.push(\n // Propagate changes\n this.editor.onDocumentStateChange(event => {\n if (event.reason === \"update\") {\n this.getMessenger().send(\"document.patch\", event.diff);\n } else {\n this.getMessenger().send(\"document.set\", event.state);\n }\n }),\n\n // Element preview\n this.editor.registerCommandHandler(Commands.PreviewPatchElement, payload => {\n this.getMessenger().send(`element.patch.${payload.elementId}`, payload.patch);\n })\n );\n }\n\n private subscribeToIframe(messenger: Messenger) {\n // When `onConnected` is executed, we need to send new data to the live preview.\n messenger.send(\"document.set\", this.editor.getDocumentState().toJson());\n\n messenger.on(\"preview.theme\", ({ theme }) => {\n this.editor.executeCommand(Commands.SetTheme, { theme });\n });\n\n messenger.on(\"document.fragments\", payload => {\n const fragments: FragmentConfig[] = payload.fragments;\n this.editor.updateEditor(state => {\n state.fragments = fragments;\n });\n\n const document = this.editor.getDocumentState().read();\n\n if (Object.keys(document.elements).length === 1) {\n // We only have the default \"root\" element, create fragment elements.\n fragments.forEach((fragment, index) => {\n if (fragment.type === \"fixed\") {\n $createElement(this.editor, {\n componentName: \"Webiny/Fragment\",\n parentId: \"root\",\n slot: \"children\",\n index,\n bindings: {\n inputs: {\n name: fragment.name\n }\n }\n });\n return;\n }\n\n $createElement(this.editor, {\n componentName: fragment.component,\n parentId: \"root\",\n slot: \"children\",\n index,\n bindings: {\n inputs: fragment.inputs\n }\n });\n });\n }\n });\n\n messenger.on(\"preview.viewport\", ({ boxes, viewport }: PreviewViewportData) => {\n const iframeBox = this.getIframeBox();\n\n this.editor.updateEditor(state => {\n state.viewport = {\n ...viewport,\n top: iframeBox.top,\n left: iframeBox.left\n };\n\n state.boxes = {\n preview: boxes,\n editor: this.mapCoordinatesToEditorSpace(state.viewport, boxes)\n };\n });\n });\n\n messenger.on(\"preview.component.register\", (component: ComponentManifest) => {\n this.editor.updateEditor(state => {\n if (!state.components) {\n state.components = {};\n }\n state.components[component.name] = {\n ...component,\n image: component.image ?? defaultImage,\n tags: component.tags ?? []\n };\n });\n });\n\n messenger.on(\"preview.componentGroup.register\", (group: SerializedComponentGroup) => {\n this.editor.updateEditor(state => {\n if (!state.componentGroups) {\n state.componentGroups = {};\n }\n state.componentGroups[group.name] = group;\n });\n });\n\n messenger.on(\"preview.element.click\", ({ id }) => {\n this.editor.updateEditor(state => {\n state.selectedElement = id;\n });\n });\n\n messenger.on(\"preview.mouse.move\", ({ x, y }) => {\n const iframeBox = this.getIframeBox();\n const globalX = x + iframeBox.left;\n const globalY = y + iframeBox.top;\n\n mouseTracker.setPosition(globalX, globalY);\n });\n }\n\n private getIframeBox() {\n const previewContainer = document.getElementById(\"preview-container\");\n const previewBody = document.getElementById(\"preview-body\");\n\n if (!previewContainer || !previewBody) {\n return {\n top: 0,\n left: 0,\n width: 0,\n height: 0\n };\n }\n\n /**\n * We need to use the `preview-container` to get the exact position from the top (we MUST ignore scroll position).\n * However, for everything else we use the actual `preview-body`,\n */\n const containerRect = previewContainer.getBoundingClientRect();\n const bodyRect = previewBody.getBoundingClientRect();\n\n return {\n top: containerRect.top,\n left: bodyRect.left,\n width: bodyRect.width,\n height: bodyRect.height\n };\n }\n\n private mapCoordinatesToEditorSpace(\n viewport: EditorViewportInfo,\n boxes: PreviewViewportData[\"boxes\"]\n ) {\n const newBoxes: BoxesData = {};\n\n for (const key in boxes) {\n const box = boxes[key];\n newBoxes[key] = {\n ...box,\n top: box.top + viewport.top,\n left: box.left + viewport.left\n };\n }\n\n return newBoxes;\n }\n\n private getMessenger(): Messenger {\n return this.messenger!;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/Extension.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React, { useEffect } from "react";
|
|
2
|
-
import { plugins } from "@webiny/plugins";
|
|
3
2
|
import { AdminConfig, RegisterFeature, useContainer } from "@webiny/app-admin";
|
|
4
|
-
import { HasPermission } from "@webiny/app-admin";
|
|
5
3
|
import { useRouter } from "@webiny/app-admin";
|
|
6
4
|
import { ReactComponent as PagesIcon } from "@webiny/icons/table_chart.svg";
|
|
5
|
+
import { ReactComponent as PermissionsIcon } from "@webiny/icons/table_chart.svg";
|
|
7
6
|
import { PageEditor } from "./modules/pages/PageEditor.js";
|
|
8
7
|
import { PageList } from "./modules/pages/PageList.js";
|
|
9
8
|
import { useSettingsDialog } from "./modules/settings/useSettingsDialog.js";
|
|
@@ -15,9 +14,11 @@ import { Routes } from "./routes.js";
|
|
|
15
14
|
import { PagesWidget } from "./modules/widgets/PagesWidget.js";
|
|
16
15
|
import { PageListFeature } from "./presentation/pages/PageList/feature.js";
|
|
17
16
|
import { Extension as NavigationExtension } from "./presentation/navigation/Extension.js";
|
|
18
|
-
import { permissionRenderer } from "./plugins/permissionRenderer.js";
|
|
19
17
|
import { NextjsConfigFeature } from "./presentation/navigation/NextjsConfig/feature.js";
|
|
18
|
+
import { WB_PERMISSIONS_SCHEMA } from "./constants.js";
|
|
19
|
+
import { HasPermission } from "./presentation/security/HasPermission.js";
|
|
20
20
|
const {
|
|
21
|
+
Security,
|
|
21
22
|
Menu,
|
|
22
23
|
Route,
|
|
23
24
|
Dashboard
|
|
@@ -26,13 +27,18 @@ export const Extension = () => {
|
|
|
26
27
|
const router = useRouter();
|
|
27
28
|
const container = useContainer();
|
|
28
29
|
useEffect(() => {
|
|
29
|
-
plugins.register(permissionRenderer);
|
|
30
30
|
PageListFeature.register(container);
|
|
31
31
|
}, []);
|
|
32
32
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RegisterFeature, {
|
|
33
33
|
feature: NextjsConfigFeature
|
|
34
|
-
}), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(
|
|
35
|
-
|
|
34
|
+
}), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Security.Permissions, {
|
|
35
|
+
name: "website-builder",
|
|
36
|
+
title: "Website Builder",
|
|
37
|
+
description: "Manage Website Builder permissions.",
|
|
38
|
+
icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
|
|
39
|
+
schema: WB_PERMISSIONS_SCHEMA
|
|
40
|
+
}), /*#__PURE__*/React.createElement(HasPermission, {
|
|
41
|
+
any: ["page", "redirect"]
|
|
36
42
|
}, /*#__PURE__*/React.createElement(Menu, {
|
|
37
43
|
name: "wb",
|
|
38
44
|
element: /*#__PURE__*/React.createElement(Menu.Item, {
|
|
@@ -43,7 +49,7 @@ export const Extension = () => {
|
|
|
43
49
|
})
|
|
44
50
|
})
|
|
45
51
|
})), /*#__PURE__*/React.createElement(HasPermission, {
|
|
46
|
-
|
|
52
|
+
entity: "page"
|
|
47
53
|
}, /*#__PURE__*/React.createElement(Menu, {
|
|
48
54
|
name: "wb.pagesLabel",
|
|
49
55
|
parent: "Wb",
|
|
@@ -51,9 +57,7 @@ export const Extension = () => {
|
|
|
51
57
|
text: "Pages",
|
|
52
58
|
pinnable: true
|
|
53
59
|
})
|
|
54
|
-
})
|
|
55
|
-
name: "wb.page"
|
|
56
|
-
}, /*#__PURE__*/React.createElement(Route, {
|
|
60
|
+
}), /*#__PURE__*/React.createElement(Route, {
|
|
57
61
|
route: Routes.Pages.List,
|
|
58
62
|
element: /*#__PURE__*/React.createElement(PageList, null)
|
|
59
63
|
}), /*#__PURE__*/React.createElement(Route, {
|
|
@@ -71,8 +75,8 @@ export const Extension = () => {
|
|
|
71
75
|
name: "wb.pages",
|
|
72
76
|
column: "left",
|
|
73
77
|
element: /*#__PURE__*/React.createElement(PagesWidget, null)
|
|
74
|
-
})), /*#__PURE__*/React.createElement(HasPermission, {
|
|
75
|
-
|
|
78
|
+
}), /*#__PURE__*/React.createElement(NavigationExtension, null)), /*#__PURE__*/React.createElement(HasPermission, {
|
|
79
|
+
entity: "redirect"
|
|
76
80
|
}, /*#__PURE__*/React.createElement(Route, {
|
|
77
81
|
route: Routes.Redirects.List,
|
|
78
82
|
element: /*#__PURE__*/React.createElement(RedirectsList, null)
|
|
@@ -85,22 +89,18 @@ export const Extension = () => {
|
|
|
85
89
|
pinnable: true
|
|
86
90
|
})
|
|
87
91
|
})), /*#__PURE__*/React.createElement(HasPermission, {
|
|
88
|
-
|
|
89
|
-
}, /*#__PURE__*/React.createElement(AdminConfig.Dashboard.Widget, {
|
|
90
|
-
name: "wb.pages",
|
|
91
|
-
column: "left",
|
|
92
|
-
element: /*#__PURE__*/React.createElement(PagesWidget, null)
|
|
93
|
-
})), /*#__PURE__*/React.createElement(HasPermission, {
|
|
94
|
-
name: "wb.settings"
|
|
92
|
+
entity: "settings"
|
|
95
93
|
}, /*#__PURE__*/React.createElement(Menu, {
|
|
96
94
|
name: "wb.settings",
|
|
97
95
|
parent: "wb",
|
|
98
96
|
element: /*#__PURE__*/React.createElement(SettingsMenuItem, null)
|
|
99
|
-
})), /*#__PURE__*/React.createElement(
|
|
97
|
+
})), /*#__PURE__*/React.createElement(HasPermission, {
|
|
98
|
+
entity: "integrations"
|
|
99
|
+
}, /*#__PURE__*/React.createElement(Menu, {
|
|
100
100
|
name: "wb.integrations",
|
|
101
101
|
parent: "wb",
|
|
102
102
|
element: /*#__PURE__*/React.createElement(IntegrationsMenuItem, null)
|
|
103
|
-
})
|
|
103
|
+
}))), /*#__PURE__*/React.createElement(PagesListConfig, null), /*#__PURE__*/React.createElement(RedirectsListConfig, null));
|
|
104
104
|
};
|
|
105
105
|
Extension.displayName = "WbExtension";
|
|
106
106
|
const SettingsMenuItem = () => {
|
package/Extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","plugins","AdminConfig","RegisterFeature","useContainer","HasPermission","useRouter","ReactComponent","PagesIcon","PageEditor","PageList","useSettingsDialog","useIntegrationsDialog","PagesListConfig","RedirectsList","RedirectsListConfig","Routes","PagesWidget","PageListFeature","Extension","NavigationExtension","permissionRenderer","NextjsConfigFeature","Menu","Route","Dashboard","router","container","register","createElement","Fragment","feature","any","name","element","Item","text","icon","Link","Icon","label","parent","Group","pinnable","route","Pages","List","Editor","to","getLink","Widget","column","Redirects","SettingsMenuItem","IntegrationsMenuItem","displayName","showSettingsDialog","onClick","showIntegrationsDialog"],"sources":["Extension.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { AdminConfig, RegisterFeature, useContainer } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as PagesIcon } from \"@webiny/icons/table_chart.svg\";\nimport { PageEditor } from \"~/modules/pages/PageEditor.js\";\nimport { PageList } from \"~/modules/pages/PageList.js\";\nimport { useSettingsDialog } from \"~/modules/settings/useSettingsDialog.js\";\nimport { useIntegrationsDialog } from \"./modules/integrations/useIntegrationsDialog.js\";\nimport { PagesListConfig } from \"~/modules/pages/PagesListConfig.js\";\nimport { RedirectsList } from \"~/modules/redirects/RedirectsList.js\";\nimport { RedirectsListConfig } from \"~/modules/redirects/RedirectsListConfig.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PagesWidget } from \"~/modules/widgets/PagesWidget.js\";\nimport { PageListFeature } from \"~/presentation/pages/PageList/feature.js\";\nimport { Extension as NavigationExtension } from \"./presentation/navigation/Extension.js\";\nimport { permissionRenderer } from \"~/plugins/permissionRenderer.js\";\nimport { NextjsConfigFeature } from \"~/presentation/navigation/NextjsConfig/feature.js\";\n\nconst { Menu, Route, Dashboard } = AdminConfig;\n\nexport const Extension = () => {\n const router = useRouter();\n const container = useContainer();\n\n useEffect(() => {\n plugins.register(permissionRenderer);\n PageListFeature.register(container);\n }, []);\n\n return (\n <>\n <RegisterFeature feature={NextjsConfigFeature} />\n <AdminConfig>\n <HasPermission any={[\"wb.page\", \"wb.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 any={[\"wb.page\"]}>\n <Menu\n name=\"wb.pagesLabel\"\n parent=\"Wb\"\n element={<Menu.Group text={\"Pages\"} pinnable={true} />}\n />\n </HasPermission>\n\n <HasPermission name={\"wb.page\"}>\n <Route route={Routes.Pages.List} element={<PageList />} />\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 <HasPermission name={\"wb.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 name={\"wb.page\"}>\n <AdminConfig.Dashboard.Widget\n name=\"wb.pages\"\n column=\"left\"\n element={<PagesWidget />}\n />\n </HasPermission>\n <HasPermission name={\"wb.settings\"}>\n <Menu name=\"wb.settings\" parent=\"wb\" element={<SettingsMenuItem />} />\n </HasPermission>\n <Menu name=\"wb.integrations\" parent=\"wb\" element={<IntegrationsMenuItem />} />\n <NavigationExtension />\n </AdminConfig>\n <PagesListConfig />\n <RedirectsListConfig />\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"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","AdminConfig","RegisterFeature","useContainer","useRouter","ReactComponent","PagesIcon","PermissionsIcon","PageEditor","PageList","useSettingsDialog","useIntegrationsDialog","PagesListConfig","RedirectsList","RedirectsListConfig","Routes","PagesWidget","PageListFeature","Extension","NavigationExtension","NextjsConfigFeature","WB_PERMISSIONS_SCHEMA","HasPermission","Security","Menu","Route","Dashboard","router","container","register","createElement","Fragment","feature","Permissions","name","title","description","icon","schema","any","element","Item","text","Link","Icon","label","entity","parent","Group","pinnable","route","Pages","List","Editor","to","getLink","Widget","column","Redirects","SettingsMenuItem","IntegrationsMenuItem","displayName","showSettingsDialog","onClick","showIntegrationsDialog"],"sources":["Extension.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { AdminConfig, RegisterFeature, useContainer } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as PagesIcon } from \"@webiny/icons/table_chart.svg\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/table_chart.svg\";\nimport { PageEditor } from \"~/modules/pages/PageEditor.js\";\nimport { PageList } from \"~/modules/pages/PageList.js\";\nimport { useSettingsDialog } from \"~/modules/settings/useSettingsDialog.js\";\nimport { useIntegrationsDialog } from \"./modules/integrations/useIntegrationsDialog.js\";\nimport { PagesListConfig } from \"~/modules/pages/PagesListConfig.js\";\nimport { RedirectsList } from \"~/modules/redirects/RedirectsList.js\";\nimport { RedirectsListConfig } from \"~/modules/redirects/RedirectsListConfig.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PagesWidget } from \"~/modules/widgets/PagesWidget.js\";\nimport { PageListFeature } from \"~/presentation/pages/PageList/feature.js\";\nimport { Extension as NavigationExtension } from \"./presentation/navigation/Extension.js\";\nimport { NextjsConfigFeature } from \"~/presentation/navigation/NextjsConfig/feature.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/constants.js\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\n\nconst { Security, Menu, Route, Dashboard } = AdminConfig;\n\nexport const Extension = () => {\n const router = useRouter();\n const container = useContainer();\n\n useEffect(() => {\n PageListFeature.register(container);\n }, []);\n\n return (\n <>\n <RegisterFeature feature={NextjsConfigFeature} />\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 <Menu\n name=\"wb.pagesLabel\"\n parent=\"Wb\"\n element={<Menu.Group text={\"Pages\"} pinnable={true} />}\n />\n <Route route={Routes.Pages.List} element={<PageList />} />\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 </>\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"],"mappings":"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","ignoreList":[]}
|
package/constants.d.ts
CHANGED
|
@@ -24,3 +24,37 @@ export declare const WB_PAGE_APP = "wb:page";
|
|
|
24
24
|
export declare const WB_REDIRECTS_APP = "wb:redirect";
|
|
25
25
|
export declare const WB_PAGE_LATEST_VISITED_FOLDER = "wb/page/list/last-folder";
|
|
26
26
|
export declare const WB_REDIRECT_LATEST_VISITED_FOLDER = "wb/redirect/list/last-folder";
|
|
27
|
+
export declare const WB_PERMISSIONS_SCHEMA: {
|
|
28
|
+
readonly prefix: "wb";
|
|
29
|
+
readonly fullAccess: true;
|
|
30
|
+
readonly readOnlyAccess: true;
|
|
31
|
+
readonly entities: [{
|
|
32
|
+
readonly id: "page";
|
|
33
|
+
readonly title: "Page";
|
|
34
|
+
readonly scopes: ["full", "own"];
|
|
35
|
+
readonly actions: [{
|
|
36
|
+
readonly name: "rwd";
|
|
37
|
+
}, {
|
|
38
|
+
readonly name: "pw";
|
|
39
|
+
}];
|
|
40
|
+
readonly permission: "wb.page";
|
|
41
|
+
}, {
|
|
42
|
+
readonly id: "redirect";
|
|
43
|
+
readonly title: "Redirect";
|
|
44
|
+
readonly scopes: ["full", "own"];
|
|
45
|
+
readonly actions: [{
|
|
46
|
+
readonly name: "rwd";
|
|
47
|
+
}];
|
|
48
|
+
readonly permission: "wb.redirect";
|
|
49
|
+
}, {
|
|
50
|
+
readonly id: "settings";
|
|
51
|
+
readonly title: "Settings";
|
|
52
|
+
readonly scopes: ["full"];
|
|
53
|
+
readonly permission: "wb.settings";
|
|
54
|
+
}, {
|
|
55
|
+
readonly id: "integrations";
|
|
56
|
+
readonly title: "Integrations";
|
|
57
|
+
readonly scopes: ["full"];
|
|
58
|
+
readonly permission: "wb.integrations";
|
|
59
|
+
}];
|
|
60
|
+
};
|
package/constants.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createPermissionSchema } from "@webiny/app-admin";
|
|
1
2
|
export const BASE_BREAKPOINT = "desktop";
|
|
2
3
|
export { ROOT_FOLDER } from "@webiny/app-aco/constants.js";
|
|
3
4
|
export const WbPageStatus = {
|
|
@@ -23,5 +24,39 @@ export const WB_PAGE_APP = "wb:page";
|
|
|
23
24
|
export const WB_REDIRECTS_APP = "wb:redirect";
|
|
24
25
|
export const WB_PAGE_LATEST_VISITED_FOLDER = "wb/page/list/last-folder";
|
|
25
26
|
export const WB_REDIRECT_LATEST_VISITED_FOLDER = "wb/redirect/list/last-folder";
|
|
27
|
+
export const WB_PERMISSIONS_SCHEMA = createPermissionSchema({
|
|
28
|
+
prefix: "wb",
|
|
29
|
+
fullAccess: true,
|
|
30
|
+
readOnlyAccess: true,
|
|
31
|
+
entities: [{
|
|
32
|
+
id: "page",
|
|
33
|
+
title: "Page",
|
|
34
|
+
scopes: ["full", "own"],
|
|
35
|
+
actions: [{
|
|
36
|
+
name: "rwd"
|
|
37
|
+
}, {
|
|
38
|
+
name: "pw"
|
|
39
|
+
}],
|
|
40
|
+
permission: "wb.page"
|
|
41
|
+
}, {
|
|
42
|
+
id: "redirect",
|
|
43
|
+
title: "Redirect",
|
|
44
|
+
scopes: ["full", "own"],
|
|
45
|
+
actions: [{
|
|
46
|
+
name: "rwd"
|
|
47
|
+
}],
|
|
48
|
+
permission: "wb.redirect"
|
|
49
|
+
}, {
|
|
50
|
+
id: "settings",
|
|
51
|
+
title: "Settings",
|
|
52
|
+
scopes: ["full"],
|
|
53
|
+
permission: "wb.settings"
|
|
54
|
+
}, {
|
|
55
|
+
id: "integrations",
|
|
56
|
+
title: "Integrations",
|
|
57
|
+
scopes: ["full"],
|
|
58
|
+
permission: "wb.integrations"
|
|
59
|
+
}]
|
|
60
|
+
});
|
|
26
61
|
|
|
27
62
|
//# sourceMappingURL=constants.js.map
|
package/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BASE_BREAKPOINT","ROOT_FOLDER","WbPageStatus","Draft","Published","Unpublished","loadingActions","create","createRevisionFrom","delete","duplicate","get","init","list","listMore","move","publish","unpublish","update","WB_PAGE_APP","WB_REDIRECTS_APP","WB_PAGE_LATEST_VISITED_FOLDER","WB_REDIRECT_LATEST_VISITED_FOLDER"],"sources":["constants.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["createPermissionSchema","BASE_BREAKPOINT","ROOT_FOLDER","WbPageStatus","Draft","Published","Unpublished","loadingActions","create","createRevisionFrom","delete","duplicate","get","init","list","listMore","move","publish","unpublish","update","WB_PAGE_APP","WB_REDIRECTS_APP","WB_PAGE_LATEST_VISITED_FOLDER","WB_REDIRECT_LATEST_VISITED_FOLDER","WB_PERMISSIONS_SCHEMA","prefix","fullAccess","readOnlyAccess","entities","id","title","scopes","actions","name","permission"],"sources":["constants.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const BASE_BREAKPOINT = \"desktop\";\nexport { ROOT_FOLDER } from \"@webiny/app-aco/constants.js\";\n\nexport type WbStatus = (typeof WbPageStatus)[keyof typeof WbPageStatus];\n\nexport const WbPageStatus = {\n Draft: \"draft\",\n Published: \"published\",\n Unpublished: \"unpublished\"\n} as const;\n\nexport const loadingActions = {\n create: \"CREATE\",\n createRevisionFrom: \"CREATE_REVISION_FROM\",\n delete: \"DELETE\",\n duplicate: \"DUPLICATE\",\n get: \"GET\",\n init: \"INIT\",\n list: \"LIST\",\n listMore: \"LIST_MORE\",\n move: \"MOVE\",\n publish: \"PUBLISH\",\n unpublish: \"UNPUBLISH\",\n update: \"UPDATE\"\n} as const;\n\nexport const WB_PAGE_APP = \"wb:page\";\nexport const WB_REDIRECTS_APP = \"wb:redirect\";\nexport const WB_PAGE_LATEST_VISITED_FOLDER = \"wb/page/list/last-folder\";\nexport const WB_REDIRECT_LATEST_VISITED_FOLDER = \"wb/redirect/list/last-folder\";\n\nexport const WB_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"wb\",\n fullAccess: true,\n readOnlyAccess: true,\n entities: [\n {\n id: \"page\",\n title: \"Page\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }, { name: \"pw\" }],\n permission: \"wb.page\"\n },\n {\n id: \"redirect\",\n title: \"Redirect\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }],\n permission: \"wb.redirect\"\n },\n {\n id: \"settings\",\n title: \"Settings\",\n scopes: [\"full\"],\n permission: \"wb.settings\"\n },\n {\n id: \"integrations\",\n title: \"Integrations\",\n scopes: [\"full\"],\n permission: \"wb.integrations\"\n }\n ]\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,mBAAmB;AAE1D,OAAO,MAAMC,eAAe,GAAG,SAAS;AACxC,SAASC,WAAW,QAAQ,8BAA8B;AAI1D,OAAO,MAAMC,YAAY,GAAG;EACxBC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE,WAAW;EACtBC,WAAW,EAAE;AACjB,CAAU;AAEV,OAAO,MAAMC,cAAc,GAAG;EAC1BC,MAAM,EAAE,QAAQ;EAChBC,kBAAkB,EAAE,sBAAsB;EAC1CC,MAAM,EAAE,QAAQ;EAChBC,SAAS,EAAE,WAAW;EACtBC,GAAG,EAAE,KAAK;EACVC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE,WAAW;EACrBC,IAAI,EAAE,MAAM;EACZC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,WAAW;EACtBC,MAAM,EAAE;AACZ,CAAU;AAEV,OAAO,MAAMC,WAAW,GAAG,SAAS;AACpC,OAAO,MAAMC,gBAAgB,GAAG,aAAa;AAC7C,OAAO,MAAMC,6BAA6B,GAAG,0BAA0B;AACvE,OAAO,MAAMC,iCAAiC,GAAG,8BAA8B;AAE/E,OAAO,MAAMC,qBAAqB,GAAGxB,sBAAsB,CAAC;EACxDyB,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,IAAI;EAChBC,cAAc,EAAE,IAAI;EACpBC,QAAQ,EAAE,CACN;IACIC,EAAE,EAAE,MAAM;IACVC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IACvBC,OAAO,EAAE,CAAC;MAAEC,IAAI,EAAE;IAAM,CAAC,EAAE;MAAEA,IAAI,EAAE;IAAK,CAAC,CAAC;IAC1CC,UAAU,EAAE;EAChB,CAAC,EACD;IACIL,EAAE,EAAE,UAAU;IACdC,KAAK,EAAE,UAAU;IACjBC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IACvBC,OAAO,EAAE,CAAC;MAAEC,IAAI,EAAE;IAAM,CAAC,CAAC;IAC1BC,UAAU,EAAE;EAChB,CAAC,EACD;IACIL,EAAE,EAAE,UAAU;IACdC,KAAK,EAAE,UAAU;IACjBC,MAAM,EAAE,CAAC,MAAM,CAAC;IAChBG,UAAU,EAAE;EAChB,CAAC,EACD;IACIL,EAAE,EAAE,cAAc;IAClBC,KAAK,EAAE,cAAc;IACrBC,MAAM,EAAE,CAAC,MAAM,CAAC;IAChBG,UAAU,EAAE;EAChB,CAAC;AAET,CAAC,CAAC","ignoreList":[]}
|
package/domain/Page/Page.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WbIdentity, WbLocation } from "../../types.js";
|
|
1
|
+
import type { WbIdentity, WbLive, WbLocation, WbSystem } from "../../types.js";
|
|
2
2
|
import { type WbStatus } from "../../constants.js";
|
|
3
3
|
export interface PageData {
|
|
4
4
|
id?: string;
|
|
@@ -17,6 +17,8 @@ export interface PageData {
|
|
|
17
17
|
savedOn?: string;
|
|
18
18
|
modifiedBy?: WbIdentity | null;
|
|
19
19
|
modifiedOn?: string | null;
|
|
20
|
+
system?: WbSystem | null;
|
|
21
|
+
live?: WbLive | null;
|
|
20
22
|
}
|
|
21
23
|
export declare class Page {
|
|
22
24
|
id: string;
|
|
@@ -35,6 +37,8 @@ export declare class Page {
|
|
|
35
37
|
savedOn: string;
|
|
36
38
|
modifiedBy: WbIdentity;
|
|
37
39
|
modifiedOn: string;
|
|
40
|
+
system: WbSystem | null;
|
|
41
|
+
live: WbLive | null;
|
|
38
42
|
protected constructor(data: PageData);
|
|
39
43
|
static create(data: PageData): Page;
|
|
40
44
|
private createLocation;
|
package/domain/Page/Page.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ROOT_FOLDER, WbPageStatus } from "../../constants.js";
|
|
2
2
|
export class Page {
|
|
3
|
+
live = null;
|
|
3
4
|
constructor(data) {
|
|
4
5
|
this.id = data.id ?? "";
|
|
5
6
|
this.entryId = data.entryId ?? "";
|
|
@@ -17,9 +18,8 @@ export class Page {
|
|
|
17
18
|
this.savedOn = data.savedOn ?? "";
|
|
18
19
|
this.modifiedBy = this.createIdentity(data.modifiedBy);
|
|
19
20
|
this.modifiedOn = data.modifiedOn ?? "";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.workflows = data.workflows || null;
|
|
21
|
+
this.system = data.system || null;
|
|
22
|
+
this.live = data.live || null;
|
|
23
23
|
}
|
|
24
24
|
static create(data) {
|
|
25
25
|
return new Page(data);
|
package/domain/Page/Page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ROOT_FOLDER","WbPageStatus","Page","constructor","data","id","entryId","status","Draft","version","location","createLocation","properties","metadata","bindings","elements","extensions","createdBy","createIdentity","createdOn","savedBy","savedOn","modifiedBy","modifiedOn","
|
|
1
|
+
{"version":3,"names":["ROOT_FOLDER","WbPageStatus","Page","live","constructor","data","id","entryId","status","Draft","version","location","createLocation","properties","metadata","bindings","elements","extensions","createdBy","createIdentity","createdOn","savedBy","savedOn","modifiedBy","modifiedOn","system","create","folderId","identity","displayName","type"],"sources":["Page.ts"],"sourcesContent":["import type { WbIdentity, WbLive, WbLocation, WbSystem } from \"~/types.js\";\nimport { ROOT_FOLDER, WbPageStatus, type WbStatus } from \"~/constants.js\";\n\nexport interface PageData {\n id?: string;\n entryId?: string;\n status?: WbStatus;\n version?: number;\n location?: WbLocation;\n properties?: Record<string, any>;\n metadata?: Record<string, any>;\n bindings?: Record<string, any>;\n elements?: Record<string, any>;\n extensions?: Record<string, any>;\n createdBy?: WbIdentity;\n createdOn?: string;\n savedBy?: WbIdentity;\n savedOn?: string;\n modifiedBy?: WbIdentity | null;\n modifiedOn?: string | null;\n system?: WbSystem | null;\n live?: WbLive | null;\n}\n\nexport class Page {\n public id: string;\n public entryId: string;\n public status: WbStatus;\n public version: number;\n public location: WbLocation;\n public properties: Record<string, any>;\n public metadata: Record<string, any>;\n public bindings: Record<string, any>;\n public elements: Record<string, any>;\n public extensions: Record<string, any>;\n public createdBy: WbIdentity;\n public createdOn: string;\n public savedBy: WbIdentity;\n public savedOn: string;\n public modifiedBy: WbIdentity;\n public modifiedOn: string;\n public system: WbSystem | null;\n public live: WbLive | null = null;\n\n protected constructor(data: PageData) {\n this.id = data.id ?? \"\";\n this.entryId = data.entryId ?? \"\";\n this.status = data.status ?? WbPageStatus.Draft;\n this.version = data.version ?? 1;\n this.location = this.createLocation(data);\n this.properties = data.properties ?? {};\n this.metadata = data.metadata ?? {};\n this.bindings = data.bindings ?? {};\n this.elements = data.elements ?? {};\n this.extensions = data.extensions ?? {};\n this.createdBy = this.createIdentity(data.createdBy);\n this.createdOn = data.createdOn ?? \"\";\n this.savedBy = this.createIdentity(data.savedBy);\n this.savedOn = data.savedOn ?? \"\";\n this.modifiedBy = this.createIdentity(data.modifiedBy);\n this.modifiedOn = data.modifiedOn ?? \"\";\n this.system = data.system || null;\n this.live = data.live || null;\n }\n\n static create(data: PageData) {\n return new Page(data);\n }\n\n private createLocation(data: PageData): WbLocation {\n if (data.location) {\n return {\n folderId: data.location.folderId\n };\n }\n\n return {\n folderId: ROOT_FOLDER\n };\n }\n\n private createIdentity(identity?: WbIdentity | null): WbIdentity {\n return {\n id: identity?.id || \"\",\n displayName: identity?.displayName || \"\",\n type: identity?.type || \"\"\n };\n }\n}\n"],"mappings":"AACA,SAASA,WAAW,EAAEC,YAAY;AAuBlC,OAAO,MAAMC,IAAI,CAAC;EAkBPC,IAAI,GAAkB,IAAI;EAEvBC,WAAWA,CAACC,IAAc,EAAE;IAClC,IAAI,CAACC,EAAE,GAAGD,IAAI,CAACC,EAAE,IAAI,EAAE;IACvB,IAAI,CAACC,OAAO,GAAGF,IAAI,CAACE,OAAO,IAAI,EAAE;IACjC,IAAI,CAACC,MAAM,GAAGH,IAAI,CAACG,MAAM,IAAIP,YAAY,CAACQ,KAAK;IAC/C,IAAI,CAACC,OAAO,GAAGL,IAAI,CAACK,OAAO,IAAI,CAAC;IAChC,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACC,cAAc,CAACP,IAAI,CAAC;IACzC,IAAI,CAACQ,UAAU,GAAGR,IAAI,CAACQ,UAAU,IAAI,CAAC,CAAC;IACvC,IAAI,CAACC,QAAQ,GAAGT,IAAI,CAACS,QAAQ,IAAI,CAAC,CAAC;IACnC,IAAI,CAACC,QAAQ,GAAGV,IAAI,CAACU,QAAQ,IAAI,CAAC,CAAC;IACnC,IAAI,CAACC,QAAQ,GAAGX,IAAI,CAACW,QAAQ,IAAI,CAAC,CAAC;IACnC,IAAI,CAACC,UAAU,GAAGZ,IAAI,CAACY,UAAU,IAAI,CAAC,CAAC;IACvC,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,cAAc,CAACd,IAAI,CAACa,SAAS,CAAC;IACpD,IAAI,CAACE,SAAS,GAAGf,IAAI,CAACe,SAAS,IAAI,EAAE;IACrC,IAAI,CAACC,OAAO,GAAG,IAAI,CAACF,cAAc,CAACd,IAAI,CAACgB,OAAO,CAAC;IAChD,IAAI,CAACC,OAAO,GAAGjB,IAAI,CAACiB,OAAO,IAAI,EAAE;IACjC,IAAI,CAACC,UAAU,GAAG,IAAI,CAACJ,cAAc,CAACd,IAAI,CAACkB,UAAU,CAAC;IACtD,IAAI,CAACC,UAAU,GAAGnB,IAAI,CAACmB,UAAU,IAAI,EAAE;IACvC,IAAI,CAACC,MAAM,GAAGpB,IAAI,CAACoB,MAAM,IAAI,IAAI;IACjC,IAAI,CAACtB,IAAI,GAAGE,IAAI,CAACF,IAAI,IAAI,IAAI;EACjC;EAEA,OAAOuB,MAAMA,CAACrB,IAAc,EAAE;IAC1B,OAAO,IAAIH,IAAI,CAACG,IAAI,CAAC;EACzB;EAEQO,cAAcA,CAACP,IAAc,EAAc;IAC/C,IAAIA,IAAI,CAACM,QAAQ,EAAE;MACf,OAAO;QACHgB,QAAQ,EAAEtB,IAAI,CAACM,QAAQ,CAACgB;MAC5B,CAAC;IACL;IAEA,OAAO;MACHA,QAAQ,EAAE3B;IACd,CAAC;EACL;EAEQmB,cAAcA,CAACS,QAA4B,EAAc;IAC7D,OAAO;MACHtB,EAAE,EAAEsB,QAAQ,EAAEtB,EAAE,IAAI,EAAE;MACtBuB,WAAW,EAAED,QAAQ,EAAEC,WAAW,IAAI,EAAE;MACxCC,IAAI,EAAEF,QAAQ,EAAEE,IAAI,IAAI;IAC5B,CAAC;EACL;AACJ","ignoreList":[]}
|
package/domain/Page/PageDto.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WbIdentity, WbLocation } from "../../types.js";
|
|
1
|
+
import type { WbIdentity, WbLive, WbLocation, WbSystem } from "../../types.js";
|
|
2
2
|
import type { WbStatus } from "../../constants.js";
|
|
3
3
|
import type { Page } from "../../domain/Page/index.js";
|
|
4
4
|
export interface PageDto {
|
|
@@ -18,6 +18,8 @@ export interface PageDto {
|
|
|
18
18
|
savedOn: string;
|
|
19
19
|
modifiedBy: WbIdentity;
|
|
20
20
|
modifiedOn: string;
|
|
21
|
+
system: WbSystem | null;
|
|
22
|
+
live: WbLive | null;
|
|
21
23
|
}
|
|
22
24
|
export declare class PageDtoMapper {
|
|
23
25
|
static toDTO(page: Page): PageDto;
|
package/domain/Page/PageDto.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export class PageDtoMapper {
|
|
2
2
|
static toDTO(page) {
|
|
3
3
|
return {
|
|
4
|
-
...page,
|
|
5
4
|
id: page.id,
|
|
6
5
|
entryId: page.entryId,
|
|
7
6
|
status: page.status,
|
|
@@ -17,7 +16,9 @@ export class PageDtoMapper {
|
|
|
17
16
|
savedBy: page.savedBy,
|
|
18
17
|
savedOn: page.savedOn,
|
|
19
18
|
modifiedBy: page.modifiedBy,
|
|
20
|
-
modifiedOn: page.modifiedOn
|
|
19
|
+
modifiedOn: page.modifiedOn,
|
|
20
|
+
live: page.live,
|
|
21
|
+
system: page.system
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PageDtoMapper","toDTO","page","id","entryId","status","version","location","properties","metadata","bindings","elements","extensions","createdBy","createdOn","savedBy","savedOn","modifiedBy","modifiedOn"],"sources":["PageDto.ts"],"sourcesContent":["import type { WbIdentity, WbLocation } from \"~/types.js\";\nimport type { WbStatus } from \"~/constants.js\";\nimport type { Page } from \"~/domain/Page/index.js\";\n\nexport interface PageDto {\n id: string;\n entryId: string;\n status: WbStatus;\n version: number;\n location: WbLocation;\n properties: Record<string, any>;\n metadata: Record<string, any>;\n bindings: Record<string, any>;\n elements: Record<string, any>;\n extensions: Record<string, any>;\n createdBy: WbIdentity;\n createdOn: string;\n savedBy: WbIdentity;\n savedOn: string;\n modifiedBy: WbIdentity;\n modifiedOn: string;\n}\n\nexport class PageDtoMapper {\n static toDTO(page: Page): PageDto {\n return {\n
|
|
1
|
+
{"version":3,"names":["PageDtoMapper","toDTO","page","id","entryId","status","version","location","properties","metadata","bindings","elements","extensions","createdBy","createdOn","savedBy","savedOn","modifiedBy","modifiedOn","live","system"],"sources":["PageDto.ts"],"sourcesContent":["import type { WbIdentity, WbLive, WbLocation, WbSystem } from \"~/types.js\";\nimport type { WbStatus } from \"~/constants.js\";\nimport type { Page } from \"~/domain/Page/index.js\";\n\nexport interface PageDto {\n id: string;\n entryId: string;\n status: WbStatus;\n version: number;\n location: WbLocation;\n properties: Record<string, any>;\n metadata: Record<string, any>;\n bindings: Record<string, any>;\n elements: Record<string, any>;\n extensions: Record<string, any>;\n createdBy: WbIdentity;\n createdOn: string;\n savedBy: WbIdentity;\n savedOn: string;\n modifiedBy: WbIdentity;\n modifiedOn: string;\n system: WbSystem | null;\n live: WbLive | null;\n}\n\nexport class PageDtoMapper {\n static toDTO(page: Page): PageDto {\n return {\n id: page.id,\n entryId: page.entryId,\n status: page.status,\n version: page.version,\n location: page.location,\n properties: page.properties,\n metadata: page.metadata,\n bindings: page.bindings,\n elements: page.elements,\n extensions: page.extensions,\n createdBy: page.createdBy,\n createdOn: page.createdOn,\n savedBy: page.savedBy,\n savedOn: page.savedOn,\n modifiedBy: page.modifiedBy,\n modifiedOn: page.modifiedOn,\n live: page.live,\n system: page.system\n };\n }\n}\n"],"mappings":"AAyBA,OAAO,MAAMA,aAAa,CAAC;EACvB,OAAOC,KAAKA,CAACC,IAAU,EAAW;IAC9B,OAAO;MACHC,EAAE,EAAED,IAAI,CAACC,EAAE;MACXC,OAAO,EAAEF,IAAI,CAACE,OAAO;MACrBC,MAAM,EAAEH,IAAI,CAACG,MAAM;MACnBC,OAAO,EAAEJ,IAAI,CAACI,OAAO;MACrBC,QAAQ,EAAEL,IAAI,CAACK,QAAQ;MACvBC,UAAU,EAAEN,IAAI,CAACM,UAAU;MAC3BC,QAAQ,EAAEP,IAAI,CAACO,QAAQ;MACvBC,QAAQ,EAAER,IAAI,CAACQ,QAAQ;MACvBC,QAAQ,EAAET,IAAI,CAACS,QAAQ;MACvBC,UAAU,EAAEV,IAAI,CAACU,UAAU;MAC3BC,SAAS,EAAEX,IAAI,CAACW,SAAS;MACzBC,SAAS,EAAEZ,IAAI,CAACY,SAAS;MACzBC,OAAO,EAAEb,IAAI,CAACa,OAAO;MACrBC,OAAO,EAAEd,IAAI,CAACc,OAAO;MACrBC,UAAU,EAAEf,IAAI,CAACe,UAAU;MAC3BC,UAAU,EAAEhB,IAAI,CAACgB,UAAU;MAC3BC,IAAI,EAAEjB,IAAI,CAACiB,IAAI;MACfC,MAAM,EAAElB,IAAI,CAACkB;IACjB,CAAC;EACL;AACJ","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { IEcommerceApi, IEcommerceApiFactory, SettingsInput as ISettingsInput } from "./types.js";
|
|
2
|
+
import type { IEcommerceApi, IEcommerceApiFactory, SettingsInput as ISettingsInput, Resource as IResource } from "./types.js";
|
|
3
3
|
import type { ResourcePageProps } from "./components/ResourcePage.js";
|
|
4
4
|
export interface CustomResourcePickerProps<T = any> {
|
|
5
5
|
value?: T;
|
|
@@ -20,4 +20,5 @@ export declare namespace EcommerceIntegration {
|
|
|
20
20
|
type EcommerceApi = IEcommerceApi;
|
|
21
21
|
type EcommerceApiFactory = IEcommerceApiFactory;
|
|
22
22
|
type SettingsInput = ISettingsInput;
|
|
23
|
+
type Resource = IResource;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","Editor","CreateInputRenderers","ResourcePage","createGenericContext","EcommerceApiManifest","useEcommerceApiProvider","usePageTypes","Context","EcommerceIntegrationBase","props","provider","addApiManifest","name","init","settings","createElement","Provider","pluginName","EditorConfig","priority","children","PageType","useHook","addPageType","label","element","Object","assign","apiName","EcommerceIntegration"],"sources":["EcommerceIntegration.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { Editor } from \"~/index.js\";\nimport type {\n IEcommerceApi,\n IEcommerceApiFactory,\n SettingsInput as ISettingsInput\n} from \"./types.js\";\nimport { CreateInputRenderers } from \"./CreateInputRenderers.js\";\nimport type { ResourcePageProps } from \"./components/ResourcePage.js\";\nimport { ResourcePage } from \"./components/ResourcePage.js\";\nimport { createGenericContext } from \"@webiny/app\";\nimport { EcommerceApiManifest, useEcommerceApiProvider, usePageTypes } from \"~/features/index.js\";\n\nexport interface CustomResourcePickerProps<T = any> {\n value?: T;\n onChange(val: T | undefined): void;\n}\n\nexport type EcommerceIntegrationProps = {\n name: string;\n init: IEcommerceApiFactory;\n settings: ISettingsInput[];\n children?: React.ReactNode;\n};\n\nconst Context = createGenericContext<{ pluginName: string }>(\"EcommerceIntegrationContext\");\n\nconst EcommerceIntegrationBase = (props: EcommerceIntegrationProps) => {\n const provider = useEcommerceApiProvider();\n\n useEffect(() => {\n provider.addApiManifest(new EcommerceApiManifest(props.name, props.init, props.settings));\n }, []);\n\n return (\n <Context.Provider pluginName={props.name}>\n <Editor.EditorConfig priority={\"secondary\"}>\n <CreateInputRenderers pluginName={props.name} />\n </Editor.EditorConfig>\n {props.children}\n </Context.Provider>\n );\n};\n\nexport type PageTypeProps = Omit<ResourcePageProps, \"apiName\">;\n\nconst PageType = (props: PageTypeProps) => {\n const { pluginName } = Context.useHook();\n const { addPageType } = usePageTypes();\n\n useEffect(() => {\n addPageType({\n name: props.name,\n label: props.label,\n element: <ResourcePage {...props} apiName={pluginName} />\n });\n }, []);\n\n return null;\n};\n\nexport const EcommerceIntegration = Object.assign(EcommerceIntegrationBase, { PageType });\n\nexport namespace EcommerceIntegration {\n export type Props = EcommerceIntegrationProps;\n export type EcommerceApi = IEcommerceApi;\n export type EcommerceApiFactory = IEcommerceApiFactory;\n export type SettingsInput = ISettingsInput;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,MAAM;
|
|
1
|
+
{"version":3,"names":["React","useEffect","Editor","CreateInputRenderers","ResourcePage","createGenericContext","EcommerceApiManifest","useEcommerceApiProvider","usePageTypes","Context","EcommerceIntegrationBase","props","provider","addApiManifest","name","init","settings","createElement","Provider","pluginName","EditorConfig","priority","children","PageType","useHook","addPageType","label","element","Object","assign","apiName","EcommerceIntegration"],"sources":["EcommerceIntegration.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { Editor } from \"~/index.js\";\nimport type {\n IEcommerceApi,\n IEcommerceApiFactory,\n SettingsInput as ISettingsInput,\n Resource as IResource\n} from \"./types.js\";\nimport { CreateInputRenderers } from \"./CreateInputRenderers.js\";\nimport type { ResourcePageProps } from \"./components/ResourcePage.js\";\nimport { ResourcePage } from \"./components/ResourcePage.js\";\nimport { createGenericContext } from \"@webiny/app\";\nimport { EcommerceApiManifest, useEcommerceApiProvider, usePageTypes } from \"~/features/index.js\";\n\nexport interface CustomResourcePickerProps<T = any> {\n value?: T;\n onChange(val: T | undefined): void;\n}\n\nexport type EcommerceIntegrationProps = {\n name: string;\n init: IEcommerceApiFactory;\n settings: ISettingsInput[];\n children?: React.ReactNode;\n};\n\nconst Context = createGenericContext<{ pluginName: string }>(\"EcommerceIntegrationContext\");\n\nconst EcommerceIntegrationBase = (props: EcommerceIntegrationProps) => {\n const provider = useEcommerceApiProvider();\n\n useEffect(() => {\n provider.addApiManifest(new EcommerceApiManifest(props.name, props.init, props.settings));\n }, []);\n\n return (\n <Context.Provider pluginName={props.name}>\n <Editor.EditorConfig priority={\"secondary\"}>\n <CreateInputRenderers pluginName={props.name} />\n </Editor.EditorConfig>\n {props.children}\n </Context.Provider>\n );\n};\n\nexport type PageTypeProps = Omit<ResourcePageProps, \"apiName\">;\n\nconst PageType = (props: PageTypeProps) => {\n const { pluginName } = Context.useHook();\n const { addPageType } = usePageTypes();\n\n useEffect(() => {\n addPageType({\n name: props.name,\n label: props.label,\n element: <ResourcePage {...props} apiName={pluginName} />\n });\n }, []);\n\n return null;\n};\n\nexport const EcommerceIntegration = Object.assign(EcommerceIntegrationBase, { PageType });\n\nexport namespace EcommerceIntegration {\n export type Props = EcommerceIntegrationProps;\n export type EcommerceApi = IEcommerceApi;\n export type EcommerceApiFactory = IEcommerceApiFactory;\n export type SettingsInput = ISettingsInput;\n export type Resource = IResource;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,MAAM;AAOf,SAASC,oBAAoB;AAE7B,SAASC,YAAY;AACrB,SAASC,oBAAoB,QAAQ,aAAa;AAClD,SAASC,oBAAoB,EAAEC,uBAAuB,EAAEC,YAAY;AAcpE,MAAMC,OAAO,GAAGJ,oBAAoB,CAAyB,6BAA6B,CAAC;AAE3F,MAAMK,wBAAwB,GAAIC,KAAgC,IAAK;EACnE,MAAMC,QAAQ,GAAGL,uBAAuB,CAAC,CAAC;EAE1CN,SAAS,CAAC,MAAM;IACZW,QAAQ,CAACC,cAAc,CAAC,IAAIP,oBAAoB,CAACK,KAAK,CAACG,IAAI,EAAEH,KAAK,CAACI,IAAI,EAAEJ,KAAK,CAACK,QAAQ,CAAC,CAAC;EAC7F,CAAC,EAAE,EAAE,CAAC;EAEN,oBACIhB,KAAA,CAAAiB,aAAA,CAACR,OAAO,CAACS,QAAQ;IAACC,UAAU,EAAER,KAAK,CAACG;EAAK,gBACrCd,KAAA,CAAAiB,aAAA,CAACf,MAAM,CAACkB,YAAY;IAACC,QAAQ,EAAE;EAAY,gBACvCrB,KAAA,CAAAiB,aAAA,CAACd,oBAAoB;IAACgB,UAAU,EAAER,KAAK,CAACG;EAAK,CAAE,CAC9B,CAAC,EACrBH,KAAK,CAACW,QACO,CAAC;AAE3B,CAAC;AAID,MAAMC,QAAQ,GAAIZ,KAAoB,IAAK;EACvC,MAAM;IAAEQ;EAAW,CAAC,GAAGV,OAAO,CAACe,OAAO,CAAC,CAAC;EACxC,MAAM;IAAEC;EAAY,CAAC,GAAGjB,YAAY,CAAC,CAAC;EAEtCP,SAAS,CAAC,MAAM;IACZwB,WAAW,CAAC;MACRX,IAAI,EAAEH,KAAK,CAACG,IAAI;MAChBY,KAAK,EAAEf,KAAK,CAACe,KAAK;MAClBC,OAAO,eAAE3B,KAAA,CAAAiB,aAAA,CAACb,YAAY,EAAAwB,MAAA,CAAAC,MAAA,KAAKlB,KAAK;QAAEmB,OAAO,EAAEX;MAAW,EAAE;IAC5D,CAAC,CAAC;EACN,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,IAAI;AACf,CAAC;AAED,OAAO,MAAMY,oBAAoB,GAAGH,MAAM,CAACC,MAAM,CAACnB,wBAAwB,EAAE;EAAEa;AAAS,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EcommerceIntegration","pagePathFromTitle"],"sources":["website-builder.ts"],"sourcesContent":["export { EcommerceIntegration } from \"~/ecommerce/index.js\";\nexport { pagePathFromTitle } from \"~/index.js\";\n"],"mappings":"AAAA,SAASA,oBAAoB;AAC7B,SAASC,iBAAiB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Routes","EcommerceIntegration","pagePathFromTitle"],"sources":["website-builder.ts"],"sourcesContent":["export { Routes } from \"~/routes.js\";\nexport { EcommerceIntegration } from \"~/ecommerce/index.js\";\nexport { pagePathFromTitle } from \"~/index.js\";\n"],"mappings":"AAAA,SAASA,MAAM;AACf,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Page","CreatePageUseCase","constructor","repository","execute","params","create","location","properties","metadata","elements","bindings","extensions"],"sources":["CreatePageUseCase.ts"],"sourcesContent":["import type { CreatePageParams, ICreatePageUseCase } from \"./ICreatePageUseCase.js\";\nimport type { ICreatePageRepository } from \"./ICreatePageRepository.js\";\nimport { Page } from \"~/domain/Page/index.js\";\n\nexport class CreatePageUseCase implements ICreatePageUseCase {\n private repository: ICreatePageRepository;\n\n constructor(repository: ICreatePageRepository) {\n this.repository = repository;\n }\n\n async execute(params: CreatePageParams) {\n return await this.repository.execute(\n Page.create({\n location: params.location,\n properties: params.properties,\n metadata: params.metadata,\n elements: params.elements,\n bindings: params.bindings,\n extensions: params.extensions\n })\n );\n }\n}\n"],"mappings":"AAEA,SAASA,IAAI;AAEb,OAAO,MAAMC,iBAAiB,CAA+B;EAGzDC,WAAWA,CAACC,UAAiC,EAAE;IAC3C,IAAI,CAACA,UAAU,GAAGA,UAAU;EAChC;EAEA,MAAMC,OAAOA,CAACC,MAAwB,EAAE;IACpC,OAAO,MAAM,IAAI,CAACF,UAAU,CAACC,OAAO,CAChCJ,IAAI,CAACM,MAAM,CAAC;MACRC,QAAQ,EAAEF,MAAM,CAACE,QAAQ;MACzBC,UAAU,EAAEH,MAAM,CAACG,UAAU;MAC7BC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;MACzBC,QAAQ,EAAEL,MAAM,CAACK,QAAQ;MACzBC,QAAQ,EAAEN,MAAM,CAACM,QAAQ;MACzBC,UAAU,EAAEP,MAAM,CAACO;
|
|
1
|
+
{"version":3,"names":["Page","CreatePageUseCase","constructor","repository","execute","params","create","location","properties","metadata","elements","bindings","extensions","live","system"],"sources":["CreatePageUseCase.ts"],"sourcesContent":["import type { CreatePageParams, ICreatePageUseCase } from \"./ICreatePageUseCase.js\";\nimport type { ICreatePageRepository } from \"./ICreatePageRepository.js\";\nimport { Page } from \"~/domain/Page/index.js\";\n\nexport class CreatePageUseCase implements ICreatePageUseCase {\n private repository: ICreatePageRepository;\n\n constructor(repository: ICreatePageRepository) {\n this.repository = repository;\n }\n\n async execute(params: CreatePageParams) {\n return await this.repository.execute(\n Page.create({\n location: params.location,\n properties: params.properties,\n metadata: params.metadata,\n elements: params.elements,\n bindings: params.bindings,\n extensions: params.extensions,\n live: null,\n system: null\n })\n );\n }\n}\n"],"mappings":"AAEA,SAASA,IAAI;AAEb,OAAO,MAAMC,iBAAiB,CAA+B;EAGzDC,WAAWA,CAACC,UAAiC,EAAE;IAC3C,IAAI,CAACA,UAAU,GAAGA,UAAU;EAChC;EAEA,MAAMC,OAAOA,CAACC,MAAwB,EAAE;IACpC,OAAO,MAAM,IAAI,CAACF,UAAU,CAACC,OAAO,CAChCJ,IAAI,CAACM,MAAM,CAAC;MACRC,QAAQ,EAAEF,MAAM,CAACE,QAAQ;MACzBC,UAAU,EAAEH,MAAM,CAACG,UAAU;MAC7BC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;MACzBC,QAAQ,EAAEL,MAAM,CAACK,QAAQ;MACzBC,QAAQ,EAAEN,MAAM,CAACM,QAAQ;MACzBC,UAAU,EAAEP,MAAM,CAACO,UAAU;MAC7BC,IAAI,EAAE,IAAI;MACVC,MAAM,EAAE;IACZ,CAAC,CACL,CAAC;EACL;AACJ","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ import { CreatePage } from "./CreatePage.js";
|
|
|
5
5
|
import { useGetPageGraphQLFields } from "../index.js";
|
|
6
6
|
export const useCreatePage = () => {
|
|
7
7
|
const client = useApolloClient();
|
|
8
|
-
const fields = useGetPageGraphQLFields(["properties", "metadata", "bindings", "elements"]);
|
|
8
|
+
const fields = useGetPageGraphQLFields(["properties", "metadata", "bindings", "elements", "extensions"]);
|
|
9
9
|
const gateway = new CreatePageGqlGateway(client, fields);
|
|
10
10
|
const createPage = useCallback(params => {
|
|
11
11
|
const instance = CreatePage.getInstance(gateway);
|