@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.
Files changed (82) hide show
  1. package/BaseEditor/defaultConfig/Content/Preview/AddressBar.js +1 -1
  2. package/BaseEditor/defaultConfig/Content/Preview/AddressBar.js.map +1 -1
  3. package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js +17 -7
  4. package/BaseEditor/defaultConfig/Content/Preview/PreviewEvents.js.map +1 -1
  5. package/Extension.js +21 -21
  6. package/Extension.js.map +1 -1
  7. package/constants.d.ts +34 -0
  8. package/constants.js +35 -0
  9. package/constants.js.map +1 -1
  10. package/domain/Page/Page.d.ts +5 -1
  11. package/domain/Page/Page.js +3 -3
  12. package/domain/Page/Page.js.map +1 -1
  13. package/domain/Page/PageDto.d.ts +3 -1
  14. package/domain/Page/PageDto.js +3 -2
  15. package/domain/Page/PageDto.js.map +1 -1
  16. package/ecommerce/EcommerceIntegration.d.ts +2 -1
  17. package/ecommerce/EcommerceIntegration.js.map +1 -1
  18. package/exports/admin/website-builder.d.ts +1 -0
  19. package/exports/admin/website-builder.js +1 -0
  20. package/exports/admin/website-builder.js.map +1 -1
  21. package/features/pages/createPage/CreatePageUseCase.js +3 -1
  22. package/features/pages/createPage/CreatePageUseCase.js.map +1 -1
  23. package/features/pages/createPage/useCreatePage.js +1 -1
  24. package/features/pages/createPage/useCreatePage.js.map +1 -1
  25. package/features/pages/createPageRevisionFrom/useCreatePageRevisionFrom.js +1 -1
  26. package/features/pages/createPageRevisionFrom/useCreatePageRevisionFrom.js.map +1 -1
  27. package/features/pages/getPage/useGetPage.js +1 -1
  28. package/features/pages/getPage/useGetPage.js.map +1 -1
  29. package/features/pages/loadPages/PageGatewayDto.d.ts +2 -1
  30. package/features/pages/loadPages/PageGatewayDto.js.map +1 -1
  31. package/features/pages/useGetPageGraphQLFields.js +4 -1
  32. package/features/pages/useGetPageGraphQLFields.js.map +1 -1
  33. package/inputRenderers/FileInput.d.ts +1 -1
  34. package/inputRenderers/FileInput.js +3 -10
  35. package/inputRenderers/FileInput.js.map +1 -1
  36. package/inputRenderers/LexicalInput/DefaultLexicalConfig.js +9 -10
  37. package/inputRenderers/LexicalInput/DefaultLexicalConfig.js.map +1 -1
  38. package/inputRenderers/LexicalInput/LexicalInput.js +5 -30
  39. package/inputRenderers/LexicalInput/LexicalInput.js.map +1 -1
  40. package/modules/pages/PageEditor/DefaultPageEditorConfig.js +10 -3
  41. package/modules/pages/PageEditor/DefaultPageEditorConfig.js.map +1 -1
  42. package/modules/pages/PageEditor/TopBar/PublishButton.js.map +1 -1
  43. package/modules/pages/PageEditor/TopBar/Title.js +2 -2
  44. package/modules/pages/PageEditor/TopBar/Title.js.map +1 -1
  45. package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js +3 -0
  46. package/modules/pages/PagesList/components/Main/CreatePage/CreatePage.js.map +1 -1
  47. package/modules/pages/PagesList/components/Sidebar/Sidebar.js +6 -1
  48. package/modules/pages/PagesList/components/Sidebar/Sidebar.js.map +1 -1
  49. package/modules/pages/PagesList/components/Table/Actions/ChangeStatus.js +11 -4
  50. package/modules/pages/PagesList/components/Table/Actions/ChangeStatus.js.map +1 -1
  51. package/modules/pages/PagesList/components/Table/Cells/CellLive.d.ts +2 -0
  52. package/modules/pages/PagesList/components/Table/Cells/CellLive.js +26 -0
  53. package/modules/pages/PagesList/components/Table/Cells/CellLive.js.map +1 -0
  54. package/modules/pages/PagesList/components/Table/Cells/index.d.ts +1 -0
  55. package/modules/pages/PagesList/components/Table/Cells/index.js +1 -0
  56. package/modules/pages/PagesList/components/Table/Cells/index.js.map +1 -1
  57. package/modules/pages/PagesListConfig.js +38 -18
  58. package/modules/pages/PagesListConfig.js.map +1 -1
  59. package/modules/redirects/RedirectsList/components/Sidebar/Sidebar.js +9 -5
  60. package/modules/redirects/RedirectsList/components/Sidebar/Sidebar.js.map +1 -1
  61. package/modules/redirects/RedirectsList/components/Table/Cells/CellName.js +7 -1
  62. package/modules/redirects/RedirectsList/components/Table/Cells/CellName.js.map +1 -1
  63. package/modules/redirects/RedirectsListConfig.js +12 -5
  64. package/modules/redirects/RedirectsListConfig.js.map +1 -1
  65. package/package.json +27 -28
  66. package/presentation/security/HasPermission.d.ts +34 -0
  67. package/presentation/security/HasPermission.js +5 -0
  68. package/presentation/security/HasPermission.js.map +1 -0
  69. package/presentation/security/usePermissions.d.ts +12 -0
  70. package/presentation/security/usePermissions.js +5 -0
  71. package/presentation/security/usePermissions.js.map +1 -0
  72. package/types.d.ts +4 -0
  73. package/types.js.map +1 -1
  74. package/inputRenderers/LexicalInput/LinkEditForm.d.ts +0 -6
  75. package/inputRenderers/LexicalInput/LinkEditForm.js +0 -63
  76. package/inputRenderers/LexicalInput/LinkEditForm.js.map +0 -1
  77. package/plugins/WebsiteBuilderPermissions.d.ts +0 -11
  78. package/plugins/WebsiteBuilderPermissions.js +0 -75
  79. package/plugins/WebsiteBuilderPermissions.js.map +0 -1
  80. package/plugins/permissionRenderer.d.ts +0 -2
  81. package/plugins/permissionRenderer.js +0 -23
  82. 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;EAAmG,gBAC9GlB,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":[]}
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
- let index = 0;
67
- fragments.forEach(fragment => {
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: "Webiny/Fragment",
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(HasPermission, {
35
- any: ["wb.page", "wb.redirect"]
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
- any: ["wb.page"]
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
- })), /*#__PURE__*/React.createElement(HasPermission, {
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
- name: "wb.redirect"
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
- name: "wb.page"
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(Menu, {
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
- }), /*#__PURE__*/React.createElement(NavigationExtension, null)), /*#__PURE__*/React.createElement(PagesListConfig, null), /*#__PURE__*/React.createElement(RedirectsListConfig, null));
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":["export 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"],"mappings":"AAAA,OAAO,MAAMA,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","ignoreList":[]}
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":[]}
@@ -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;
@@ -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
- // TODO remove when implemented in a proper way
21
- // @ts-expect-error
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);
@@ -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","workflows","create","folderId","identity","displayName","type"],"sources":["Page.ts"],"sourcesContent":["import type { WbIdentity, WbLocation } 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}\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\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 // TODO remove when implemented in a proper way\n // @ts-expect-error\n this.workflows = data.workflows || 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;AAqBlC,OAAO,MAAMC,IAAI,CAAC;EAkBJC,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,IAAIN,YAAY,CAACO,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;IACA;IACA,IAAI,CAACC,SAAS,GAAGpB,IAAI,CAACoB,SAAS,IAAI,IAAI;EAC3C;EAEA,OAAOC,MAAMA,CAACrB,IAAc,EAAE;IAC1B,OAAO,IAAIF,IAAI,CAACE,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,EAAE1B;IACd,CAAC;EACL;EAEQkB,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":[]}
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":[]}
@@ -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;
@@ -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 ...page,\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 };\n }\n}\n"],"mappings":"AAuBA,OAAO,MAAMA,aAAa,CAAC;EACvB,OAAOC,KAAKA,CAACC,IAAU,EAAW;IAC9B,OAAO;MACH,GAAGA,IAAI;MACPC,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;IACrB,CAAC;EACL;AACJ","ignoreList":[]}
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;AAMf,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
+ {"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,2 +1,3 @@
1
+ export { Routes } from "../../routes.js";
1
2
  export { EcommerceIntegration } from "../../ecommerce/index.js";
2
3
  export { pagePathFromTitle } from "../../index.js";
@@ -1,3 +1,4 @@
1
+ export { Routes } from "../../routes.js";
1
2
  export { EcommerceIntegration } from "../../ecommerce/index.js";
2
3
  export { pagePathFromTitle } from "../../index.js";
3
4
 
@@ -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":[]}
@@ -10,7 +10,9 @@ export class CreatePageUseCase {
10
10
  metadata: params.metadata,
11
11
  elements: params.elements,
12
12
  bindings: params.bindings,
13
- extensions: params.extensions
13
+ extensions: params.extensions,
14
+ live: null,
15
+ system: null
14
16
  }));
15
17
  }
16
18
  }
@@ -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;IACvB,CAAC,CACL,CAAC;EACL;AACJ","ignoreList":[]}
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);