@webiny/app-dynamic-pages 0.0.0-unstable.e53eceafb5

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 (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/admin/ContentEntryForm/AddPreviewPane.d.ts +2 -0
  4. package/admin/ContentEntryForm/AddPreviewPane.js +47 -0
  5. package/admin/ContentEntryForm/AddPreviewPane.js.map +1 -0
  6. package/admin/ContentEntryForm/PassEntryToDataSource.d.ts +2 -0
  7. package/admin/ContentEntryForm/PassEntryToDataSource.js +58 -0
  8. package/admin/ContentEntryForm/PassEntryToDataSource.js.map +1 -0
  9. package/admin/ContentEntryForm/PreviewPane.d.ts +6 -0
  10. package/admin/ContentEntryForm/PreviewPane.js +56 -0
  11. package/admin/ContentEntryForm/PreviewPane.js.map +1 -0
  12. package/admin/Extensions.d.ts +2 -0
  13. package/admin/Extensions.js +14 -0
  14. package/admin/Extensions.js.map +1 -0
  15. package/admin/PageTemplateDialog/CreateTemplateDialog.d.ts +11 -0
  16. package/admin/PageTemplateDialog/CreateTemplateDialog.js +200 -0
  17. package/admin/PageTemplateDialog/CreateTemplateDialog.js.map +1 -0
  18. package/admin/PageTemplateDialog/PageTemplateDialog.d.ts +2 -0
  19. package/admin/PageTemplateDialog/PageTemplateDialog.js +44 -0
  20. package/admin/PageTemplateDialog/PageTemplateDialog.js.map +1 -0
  21. package/admin/SetupDynamicPages.d.ts +2 -0
  22. package/admin/SetupDynamicPages.js +16 -0
  23. package/admin/SetupDynamicPages.js.map +1 -0
  24. package/admin/elements/Elements.d.ts +2 -0
  25. package/admin/elements/Elements.js +12 -0
  26. package/admin/elements/Elements.js.map +1 -0
  27. package/admin/elements/entriesList.d.ts +2 -0
  28. package/admin/elements/entriesList.js +35 -0
  29. package/admin/elements/entriesList.js.map +1 -0
  30. package/admin/elements/entriesSearch.d.ts +2 -0
  31. package/admin/elements/entriesSearch.js +34 -0
  32. package/admin/elements/entriesSearch.js.map +1 -0
  33. package/admin/elements/eventHandlers/ContentTraverser.d.ts +11 -0
  34. package/admin/elements/eventHandlers/ContentTraverser.js +10 -0
  35. package/admin/elements/eventHandlers/ContentTraverser.js.map +1 -0
  36. package/admin/elements/renderers/DynamicGrid.d.ts +2 -0
  37. package/admin/elements/renderers/DynamicGrid.js +49 -0
  38. package/admin/elements/renderers/DynamicGrid.js.map +1 -0
  39. package/admin/elements/renderers/EntriesList.d.ts +10 -0
  40. package/admin/elements/renderers/EntriesList.js +22 -0
  41. package/admin/elements/renderers/EntriesList.js.map +1 -0
  42. package/admin/elements/renderers/Repeater.d.ts +7 -0
  43. package/admin/elements/renderers/Repeater.js +21 -0
  44. package/admin/elements/renderers/Repeater.js.map +1 -0
  45. package/admin/elements/repeater.d.ts +2 -0
  46. package/admin/elements/repeater.js +34 -0
  47. package/admin/elements/repeater.js.map +1 -0
  48. package/admin/index.d.ts +1 -0
  49. package/admin/index.js +3 -0
  50. package/admin/index.js.map +1 -0
  51. package/admin/pageEditor/DynamicPageEditorConfig.d.ts +2 -0
  52. package/admin/pageEditor/DynamicPageEditorConfig.js +10 -0
  53. package/admin/pageEditor/DynamicPageEditorConfig.js.map +1 -0
  54. package/admin/pageEditor/ElementEventHandlers.d.ts +1 -0
  55. package/admin/pageEditor/ElementEventHandlers.js +100 -0
  56. package/admin/pageEditor/ElementEventHandlers.js.map +1 -0
  57. package/admin/templateEditor/DynamicTemplateEditorConfig.d.ts +2 -0
  58. package/admin/templateEditor/DynamicTemplateEditorConfig.js +28 -0
  59. package/admin/templateEditor/DynamicTemplateEditorConfig.js.map +1 -0
  60. package/admin/templateEditor/ElementEventHandlers.d.ts +1 -0
  61. package/admin/templateEditor/ElementEventHandlers.js +100 -0
  62. package/admin/templateEditor/ElementEventHandlers.js.map +1 -0
  63. package/admin/templateEditor/EntrySelector/EntrySelector.d.ts +2 -0
  64. package/admin/templateEditor/EntrySelector/EntrySelector.js +27 -0
  65. package/admin/templateEditor/EntrySelector/EntrySelector.js.map +1 -0
  66. package/admin/templateEditor/EntrySelector/index.d.ts +1 -0
  67. package/admin/templateEditor/EntrySelector/index.js +3 -0
  68. package/admin/templateEditor/EntrySelector/index.js.map +1 -0
  69. package/dataInjection/AddEntriesListDataSourceContext.d.ts +2 -0
  70. package/dataInjection/AddEntriesListDataSourceContext.js +27 -0
  71. package/dataInjection/AddEntriesListDataSourceContext.js.map +1 -0
  72. package/dataInjection/editor/DisableGridDelete.d.ts +2 -0
  73. package/dataInjection/editor/DisableGridDelete.js +18 -0
  74. package/dataInjection/editor/DisableGridDelete.js.map +1 -0
  75. package/dataInjection/editor/ElementDataSettings.d.ts +2 -0
  76. package/dataInjection/editor/ElementDataSettings.js +21 -0
  77. package/dataInjection/editor/ElementDataSettings.js.map +1 -0
  78. package/dataInjection/editor/HideIfChildOfEntriesList.d.ts +6 -0
  79. package/dataInjection/editor/HideIfChildOfEntriesList.js +16 -0
  80. package/dataInjection/editor/HideIfChildOfEntriesList.js.map +1 -0
  81. package/dataInjection/editor/HideIfEntriesListGridWithDataSource.d.ts +6 -0
  82. package/dataInjection/editor/HideIfEntriesListGridWithDataSource.js +22 -0
  83. package/dataInjection/editor/HideIfEntriesListGridWithDataSource.js.map +1 -0
  84. package/dataInjection/editor/SetupElementDataSettings.d.ts +2 -0
  85. package/dataInjection/editor/SetupElementDataSettings.js +14 -0
  86. package/dataInjection/editor/SetupElementDataSettings.js.map +1 -0
  87. package/dataInjection/renderers/DynamicElementRenderers.d.ts +2 -0
  88. package/dataInjection/renderers/DynamicElementRenderers.js +20 -0
  89. package/dataInjection/renderers/DynamicElementRenderers.js.map +1 -0
  90. package/dataInjection/renderers/DynamicGrid.d.ts +2 -0
  91. package/dataInjection/renderers/DynamicGrid.js +44 -0
  92. package/dataInjection/renderers/DynamicGrid.js.map +1 -0
  93. package/dataInjection/renderers/EntriesList.d.ts +70 -0
  94. package/dataInjection/renderers/EntriesList.js +45 -0
  95. package/dataInjection/renderers/EntriesList.js.map +1 -0
  96. package/dataInjection/renderers/EntriesSearch.d.ts +47 -0
  97. package/dataInjection/renderers/EntriesSearch.js +26 -0
  98. package/dataInjection/renderers/EntriesSearch.js.map +1 -0
  99. package/dataInjection/renderers/Repeater.d.ts +70 -0
  100. package/dataInjection/renderers/Repeater.js +45 -0
  101. package/dataInjection/renderers/Repeater.js.map +1 -0
  102. package/features/index.d.ts +3 -0
  103. package/features/index.js +5 -0
  104. package/features/index.js.map +1 -0
  105. package/features/pageTemplate/createDynamicTemplate/useCreateDynamicTemplate.d.ts +4 -0
  106. package/features/pageTemplate/createDynamicTemplate/useCreateDynamicTemplate.js +58 -0
  107. package/features/pageTemplate/createDynamicTemplate/useCreateDynamicTemplate.js.map +1 -0
  108. package/features/pageTemplate/hasMainDataSource.d.ts +2 -0
  109. package/features/pageTemplate/hasMainDataSource.js +5 -0
  110. package/features/pageTemplate/hasMainDataSource.js.map +1 -0
  111. package/features/pageTemplate/listDynamicTemplates/useListDynamicTemplates.d.ts +3 -0
  112. package/features/pageTemplate/listDynamicTemplates/useListDynamicTemplates.js +13 -0
  113. package/features/pageTemplate/listDynamicTemplates/useListDynamicTemplates.js.map +1 -0
  114. package/package.json +54 -0
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const DynamicGrid: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,49 @@
1
+ import React from "react";
2
+ import { useRenderer, Elements, ElementInput } from "@webiny/app-page-builder-elements";
3
+ import { PeGrid } from "@webiny/app-page-builder/editor/plugins/elements/grid/PeGrid";
4
+ import { useElementWithChildren } from "@webiny/app-page-builder/editor";
5
+ import { DataSourceDataProvider } from "@webiny/app-page-builder/dataInjection";
6
+ const elementInputs = {
7
+ dataSource: ElementInput.create({
8
+ name: "dataSource",
9
+ type: "array",
10
+ translatable: false,
11
+ getDefaultValue() {
12
+ return [];
13
+ }
14
+ })
15
+ };
16
+ export const DynamicGrid = PeGrid.Component.createDecorator(Original => {
17
+ return function DynamicGrid(props) {
18
+ const {
19
+ getElement,
20
+ getInputValues
21
+ } = useRenderer();
22
+ const element = getElement();
23
+ const elementWithChildren = useElementWithChildren(element.id);
24
+ const inputs = getInputValues();
25
+ if (!elementWithChildren) {
26
+ return null;
27
+ }
28
+ if (Array.isArray(inputs.dataSource)) {
29
+ const hasData = inputs.dataSource.length > 0;
30
+ const baseCell = elementWithChildren.elements[0];
31
+ const dynamicElement = {
32
+ ...element,
33
+ elements: hasData ? Array(inputs.dataSource.length).fill(baseCell) : elementWithChildren.elements
34
+ };
35
+ return /*#__PURE__*/React.createElement(Elements, {
36
+ element: dynamicElement,
37
+ wrapper: (element, index) => {
38
+ const dataSource = inputs.dataSource ? inputs.dataSource[index] : {};
39
+ return /*#__PURE__*/React.createElement(DataSourceDataProvider, {
40
+ dataSource: dataSource
41
+ }, element);
42
+ }
43
+ });
44
+ }
45
+ return /*#__PURE__*/React.createElement(Original, props);
46
+ };
47
+ });
48
+
49
+ //# sourceMappingURL=DynamicGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useRenderer","Elements","ElementInput","PeGrid","useElementWithChildren","DataSourceDataProvider","elementInputs","dataSource","create","name","type","translatable","getDefaultValue","DynamicGrid","Component","createDecorator","Original","props","getElement","getInputValues","element","elementWithChildren","id","inputs","Array","isArray","hasData","length","baseCell","elements","dynamicElement","fill","createElement","wrapper","index"],"sources":["DynamicGrid.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRenderer, Elements, ElementInput } from \"@webiny/app-page-builder-elements\";\nimport { PeGrid } from \"@webiny/app-page-builder/editor/plugins/elements/grid/PeGrid\";\nimport { useElementWithChildren } from \"@webiny/app-page-builder/editor\";\nimport type { GenericRecord } from \"@webiny/app/types\";\nimport { DataSourceDataProvider } from \"@webiny/app-page-builder/dataInjection\";\n\nconst elementInputs = {\n dataSource: ElementInput.create<GenericRecord[]>({\n name: \"dataSource\",\n type: \"array\",\n translatable: false,\n getDefaultValue() {\n return [];\n }\n })\n};\n\nexport const DynamicGrid = PeGrid.Component.createDecorator(Original => {\n return function DynamicGrid(props) {\n const { getElement, getInputValues } = useRenderer();\n const element = getElement();\n const elementWithChildren = useElementWithChildren(element.id);\n const inputs = getInputValues<typeof elementInputs>();\n\n if (!elementWithChildren) {\n return null;\n }\n\n if (Array.isArray(inputs.dataSource)) {\n const hasData = inputs.dataSource.length > 0;\n\n const baseCell = elementWithChildren.elements[0];\n const dynamicElement = {\n ...element,\n elements: hasData\n ? Array(inputs.dataSource.length).fill(baseCell)\n : elementWithChildren.elements\n };\n\n return (\n <Elements\n element={dynamicElement}\n wrapper={(element, index) => {\n const dataSource = inputs.dataSource ? inputs.dataSource[index] : {};\n\n return (\n <DataSourceDataProvider dataSource={dataSource}>\n {element}\n </DataSourceDataProvider>\n );\n }}\n />\n );\n }\n\n return <Original {...props} />;\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,EAAEC,QAAQ,EAAEC,YAAY,QAAQ,mCAAmC;AACvF,SAASC,MAAM,QAAQ,8DAA8D;AACrF,SAASC,sBAAsB,QAAQ,iCAAiC;AAExE,SAASC,sBAAsB,QAAQ,wCAAwC;AAE/E,MAAMC,aAAa,GAAG;EAClBC,UAAU,EAAEL,YAAY,CAACM,MAAM,CAAkB;IAC7CC,IAAI,EAAE,YAAY;IAClBC,IAAI,EAAE,OAAO;IACbC,YAAY,EAAE,KAAK;IACnBC,eAAeA,CAAA,EAAG;MACd,OAAO,EAAE;IACb;EACJ,CAAC;AACL,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGV,MAAM,CAACW,SAAS,CAACC,eAAe,CAACC,QAAQ,IAAI;EACpE,OAAO,SAASH,WAAWA,CAACI,KAAK,EAAE;IAC/B,MAAM;MAAEC,UAAU;MAAEC;IAAe,CAAC,GAAGnB,WAAW,CAAC,CAAC;IACpD,MAAMoB,OAAO,GAAGF,UAAU,CAAC,CAAC;IAC5B,MAAMG,mBAAmB,GAAGjB,sBAAsB,CAACgB,OAAO,CAACE,EAAE,CAAC;IAC9D,MAAMC,MAAM,GAAGJ,cAAc,CAAuB,CAAC;IAErD,IAAI,CAACE,mBAAmB,EAAE;MACtB,OAAO,IAAI;IACf;IAEA,IAAIG,KAAK,CAACC,OAAO,CAACF,MAAM,CAAChB,UAAU,CAAC,EAAE;MAClC,MAAMmB,OAAO,GAAGH,MAAM,CAAChB,UAAU,CAACoB,MAAM,GAAG,CAAC;MAE5C,MAAMC,QAAQ,GAAGP,mBAAmB,CAACQ,QAAQ,CAAC,CAAC,CAAC;MAChD,MAAMC,cAAc,GAAG;QACnB,GAAGV,OAAO;QACVS,QAAQ,EAAEH,OAAO,GACXF,KAAK,CAACD,MAAM,CAAChB,UAAU,CAACoB,MAAM,CAAC,CAACI,IAAI,CAACH,QAAQ,CAAC,GAC9CP,mBAAmB,CAACQ;MAC9B,CAAC;MAED,oBACI9B,KAAA,CAAAiC,aAAA,CAAC/B,QAAQ;QACLmB,OAAO,EAAEU,cAAe;QACxBG,OAAO,EAAEA,CAACb,OAAO,EAAEc,KAAK,KAAK;UACzB,MAAM3B,UAAU,GAAGgB,MAAM,CAAChB,UAAU,GAAGgB,MAAM,CAAChB,UAAU,CAAC2B,KAAK,CAAC,GAAG,CAAC,CAAC;UAEpE,oBACInC,KAAA,CAAAiC,aAAA,CAAC3B,sBAAsB;YAACE,UAAU,EAAEA;UAAW,GAC1Ca,OACmB,CAAC;QAEjC;MAAE,CACL,CAAC;IAEV;IAEA,oBAAOrB,KAAA,CAAAiC,aAAA,CAAChB,QAAQ,EAAKC,KAAQ,CAAC;EAClC,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { PbElement } from "@webiny/app-page-builder/types";
3
+ interface AdminEntriesListRendererProps {
4
+ element: PbElement;
5
+ }
6
+ export declare const AdminEntriesListRenderer: {
7
+ ({ element, ...rest }: AdminEntriesListRendererProps): React.JSX.Element | null;
8
+ displayName: string;
9
+ };
10
+ export {};
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import { EmptyCell } from "@webiny/app-page-builder/editor/plugins/elements/cell/EmptyCell";
3
+ import { useElementWithChildren } from "@webiny/app-page-builder/editor";
4
+ import { EntriesListRenderer } from "../../../dataInjection/renderers/EntriesList";
5
+ export const AdminEntriesListRenderer = ({
6
+ element,
7
+ ...rest
8
+ }) => {
9
+ const elementWithChildren = useElementWithChildren(element.id);
10
+ if (!elementWithChildren) {
11
+ return null;
12
+ }
13
+ return /*#__PURE__*/React.createElement(EntriesListRenderer, Object.assign({}, rest, {
14
+ element: elementWithChildren,
15
+ ifEmpty: /*#__PURE__*/React.createElement(EmptyCell, {
16
+ element: elementWithChildren
17
+ })
18
+ }));
19
+ };
20
+ AdminEntriesListRenderer.displayName = "AdminEntriesListRenderer";
21
+
22
+ //# sourceMappingURL=EntriesList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","EmptyCell","useElementWithChildren","EntriesListRenderer","AdminEntriesListRenderer","element","rest","elementWithChildren","id","createElement","Object","assign","ifEmpty","displayName"],"sources":["EntriesList.tsx"],"sourcesContent":["import React from \"react\";\nimport type { PbElement } from \"@webiny/app-page-builder/types\";\nimport { EmptyCell } from \"@webiny/app-page-builder/editor/plugins/elements/cell/EmptyCell\";\nimport { useElementWithChildren } from \"@webiny/app-page-builder/editor\";\nimport { EntriesListRenderer } from \"~/dataInjection/renderers/EntriesList\";\n\ninterface AdminEntriesListRendererProps {\n element: PbElement;\n}\n\nexport const AdminEntriesListRenderer = ({ element, ...rest }: AdminEntriesListRendererProps) => {\n const elementWithChildren = useElementWithChildren(element.id);\n\n if (!elementWithChildren) {\n return null;\n }\n\n return (\n <EntriesListRenderer\n {...rest}\n element={elementWithChildren}\n ifEmpty={<EmptyCell element={elementWithChildren} />}\n />\n );\n};\n\nAdminEntriesListRenderer.displayName = \"AdminEntriesListRenderer\";\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS,QAAQ,iEAAiE;AAC3F,SAASC,sBAAsB,QAAQ,iCAAiC;AACxE,SAASC,mBAAmB;AAM5B,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EAAEC,OAAO;EAAE,GAAGC;AAAoC,CAAC,KAAK;EAC7F,MAAMC,mBAAmB,GAAGL,sBAAsB,CAACG,OAAO,CAACG,EAAE,CAAC;EAE9D,IAAI,CAACD,mBAAmB,EAAE;IACtB,OAAO,IAAI;EACf;EAEA,oBACIP,KAAA,CAAAS,aAAA,CAACN,mBAAmB,EAAAO,MAAA,CAAAC,MAAA,KACZL,IAAI;IACRD,OAAO,EAAEE,mBAAoB;IAC7BK,OAAO,eAAEZ,KAAA,CAAAS,aAAA,CAACR,SAAS;MAACI,OAAO,EAAEE;IAAoB,CAAE;EAAE,EACxD,CAAC;AAEV,CAAC;AAEDH,wBAAwB,CAACS,WAAW,GAAG,0BAA0B","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import type { PbElement } from "@webiny/app-page-builder/types";
3
+ interface AdminRepeaterRendererProps {
4
+ element: PbElement;
5
+ }
6
+ export declare const AdminRepeaterRenderer: ({ element, ...rest }: AdminRepeaterRendererProps) => React.JSX.Element | null;
7
+ export {};
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import { EmptyCell } from "@webiny/app-page-builder/editor/plugins/elements/cell/EmptyCell";
3
+ import { useElementWithChildren } from "@webiny/app-page-builder/editor";
4
+ import { RepeaterRenderer } from "../../../dataInjection/renderers/Repeater";
5
+ export const AdminRepeaterRenderer = ({
6
+ element,
7
+ ...rest
8
+ }) => {
9
+ const elementWithChildren = useElementWithChildren(element.id);
10
+ if (!elementWithChildren) {
11
+ return null;
12
+ }
13
+ return /*#__PURE__*/React.createElement(RepeaterRenderer, Object.assign({}, rest, {
14
+ element: elementWithChildren,
15
+ ifEmpty: /*#__PURE__*/React.createElement(EmptyCell, {
16
+ element: elementWithChildren
17
+ })
18
+ }));
19
+ };
20
+
21
+ //# sourceMappingURL=Repeater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","EmptyCell","useElementWithChildren","RepeaterRenderer","AdminRepeaterRenderer","element","rest","elementWithChildren","id","createElement","Object","assign","ifEmpty"],"sources":["Repeater.tsx"],"sourcesContent":["import React from \"react\";\nimport type { PbElement } from \"@webiny/app-page-builder/types\";\nimport { EmptyCell } from \"@webiny/app-page-builder/editor/plugins/elements/cell/EmptyCell\";\nimport { useElementWithChildren } from \"@webiny/app-page-builder/editor\";\nimport { RepeaterRenderer } from \"~/dataInjection/renderers/Repeater\";\n\ninterface AdminRepeaterRendererProps {\n element: PbElement;\n}\n\nexport const AdminRepeaterRenderer = ({ element, ...rest }: AdminRepeaterRendererProps) => {\n const elementWithChildren = useElementWithChildren(element.id);\n\n if (!elementWithChildren) {\n return null;\n }\n\n return (\n <RepeaterRenderer\n {...rest}\n element={elementWithChildren}\n ifEmpty={<EmptyCell element={elementWithChildren} />}\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS,QAAQ,iEAAiE;AAC3F,SAASC,sBAAsB,QAAQ,iCAAiC;AACxE,SAASC,gBAAgB;AAMzB,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EAAEC,OAAO;EAAE,GAAGC;AAAiC,CAAC,KAAK;EACvF,MAAMC,mBAAmB,GAAGL,sBAAsB,CAACG,OAAO,CAACG,EAAE,CAAC;EAE9D,IAAI,CAACD,mBAAmB,EAAE;IACtB,OAAO,IAAI;EACf;EAEA,oBACIP,KAAA,CAAAS,aAAA,CAACN,gBAAgB,EAAAO,MAAA,CAAAC,MAAA,KACTL,IAAI;IACRD,OAAO,EAAEE,mBAAoB;IAC7BK,OAAO,eAAEZ,KAAA,CAAAS,aAAA,CAACR,SAAS;MAACI,OAAO,EAAEE;IAAoB,CAAE;EAAE,EACxD,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { PbEditorPageElementPlugin } from "@webiny/app-page-builder/types";
2
+ export declare const createRepeaterElement: () => PbEditorPageElementPlugin;
@@ -0,0 +1,34 @@
1
+ import React from "react";
2
+ import { ReactComponent as RepeatIcon } from "@webiny/icons/repeat.svg";
3
+ import { AdminRepeaterRenderer } from "./renderers/Repeater";
4
+ export const createRepeaterElement = () => {
5
+ return {
6
+ name: `pb-editor-page-element-repeater`,
7
+ type: "pb-editor-page-element",
8
+ elementType: "repeater",
9
+ canReceiveChildren: true,
10
+ toolbar: {
11
+ title: "Repeater Element",
12
+ group: "pb-editor-element-group-basic",
13
+ preview() {
14
+ return /*#__PURE__*/React.createElement(RepeatIcon, null);
15
+ }
16
+ },
17
+ settings: ["pb-editor-page-element-settings-clone", "pb-editor-page-element-settings-delete"],
18
+ target: ["cell", "block"],
19
+ create() {
20
+ return {
21
+ type: this.elementType,
22
+ elements: [],
23
+ data: {}
24
+ };
25
+ },
26
+ render(props) {
27
+ return /*#__PURE__*/React.createElement(AdminRepeaterRenderer, Object.assign({}, props, {
28
+ element: props.element
29
+ }));
30
+ }
31
+ };
32
+ };
33
+
34
+ //# sourceMappingURL=repeater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ReactComponent","RepeatIcon","AdminRepeaterRenderer","createRepeaterElement","name","type","elementType","canReceiveChildren","toolbar","title","group","preview","createElement","settings","target","create","elements","data","render","props","Object","assign","element"],"sources":["repeater.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as RepeatIcon } from \"@webiny/icons/repeat.svg\";\nimport type { PbEditorPageElementPlugin, PbElement } from \"@webiny/app-page-builder/types\";\nimport { AdminRepeaterRenderer } from \"./renderers/Repeater\";\n\nexport const createRepeaterElement = (): PbEditorPageElementPlugin => {\n return {\n name: `pb-editor-page-element-repeater`,\n type: \"pb-editor-page-element\",\n elementType: \"repeater\",\n canReceiveChildren: true,\n toolbar: {\n title: \"Repeater Element\",\n group: \"pb-editor-element-group-basic\",\n preview() {\n return <RepeatIcon />;\n }\n },\n settings: [\n \"pb-editor-page-element-settings-clone\",\n \"pb-editor-page-element-settings-delete\"\n ],\n target: [\"cell\", \"block\"],\n create() {\n return {\n type: this.elementType,\n elements: [],\n data: {}\n };\n },\n\n render(props) {\n return <AdminRepeaterRenderer {...props} element={props.element as PbElement} />;\n }\n };\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,IAAIC,UAAU,QAAQ,0BAA0B;AAEvE,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAiC;EAClE,OAAO;IACHC,IAAI,EAAE,iCAAiC;IACvCC,IAAI,EAAE,wBAAwB;IAC9BC,WAAW,EAAE,UAAU;IACvBC,kBAAkB,EAAE,IAAI;IACxBC,OAAO,EAAE;MACLC,KAAK,EAAE,kBAAkB;MACzBC,KAAK,EAAE,+BAA+B;MACtCC,OAAOA,CAAA,EAAG;QACN,oBAAOZ,KAAA,CAAAa,aAAA,CAACX,UAAU,MAAE,CAAC;MACzB;IACJ,CAAC;IACDY,QAAQ,EAAE,CACN,uCAAuC,EACvC,wCAAwC,CAC3C;IACDC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACzBC,MAAMA,CAAA,EAAG;MACL,OAAO;QACHV,IAAI,EAAE,IAAI,CAACC,WAAW;QACtBU,QAAQ,EAAE,EAAE;QACZC,IAAI,EAAE,CAAC;MACX,CAAC;IACL,CAAC;IAEDC,MAAMA,CAACC,KAAK,EAAE;MACV,oBAAOpB,KAAA,CAAAa,aAAA,CAACV,qBAAqB,EAAAkB,MAAA,CAAAC,MAAA,KAAKF,KAAK;QAAEG,OAAO,EAAEH,KAAK,CAACG;MAAqB,EAAE,CAAC;IACpF;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { Extensions as DynamicPages } from "./Extensions";
package/admin/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Extensions as DynamicPages } from "./Extensions";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Extensions","DynamicPages"],"sources":["index.ts"],"sourcesContent":["export { Extensions as DynamicPages } from \"./Extensions\";\n"],"mappings":"AAAA,SAASA,UAAU,IAAIC,YAAY","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const DynamicPageEditorConfig: () => React.JSX.Element;
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { PageEditorConfig } from "@webiny/app-page-builder/pageEditor";
3
+ import { ElementEventHandlers } from "./ElementEventHandlers";
4
+ import { SetupElementDataSettings } from "../../dataInjection/editor/SetupElementDataSettings";
5
+ import { AddEntriesListDataSourceContext } from "../../dataInjection/AddEntriesListDataSourceContext";
6
+ export const DynamicPageEditorConfig = () => {
7
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PageEditorConfig, null, /*#__PURE__*/React.createElement(AddEntriesListDataSourceContext, null), /*#__PURE__*/React.createElement(ElementEventHandlers, null), /*#__PURE__*/React.createElement(SetupElementDataSettings, null)));
8
+ };
9
+
10
+ //# sourceMappingURL=DynamicPageEditorConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","PageEditorConfig","ElementEventHandlers","SetupElementDataSettings","AddEntriesListDataSourceContext","DynamicPageEditorConfig","createElement","Fragment"],"sources":["DynamicPageEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-page-builder/pageEditor\";\nimport { ElementEventHandlers } from \"./ElementEventHandlers\";\nimport { SetupElementDataSettings } from \"~/dataInjection/editor/SetupElementDataSettings\";\nimport { AddEntriesListDataSourceContext } from \"~/dataInjection/AddEntriesListDataSourceContext\";\n\nexport const DynamicPageEditorConfig = () => {\n return (\n <>\n <PageEditorConfig>\n <AddEntriesListDataSourceContext />\n <ElementEventHandlers />\n <SetupElementDataSettings />\n </PageEditorConfig>\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,QAAQ,qCAAqC;AACtE,SAASC,oBAAoB;AAC7B,SAASC,wBAAwB;AACjC,SAASC,+BAA+B;AAExC,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAM;EACzC,oBACIL,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,qBACIP,KAAA,CAAAM,aAAA,CAACL,gBAAgB,qBACbD,KAAA,CAAAM,aAAA,CAACF,+BAA+B,MAAE,CAAC,eACnCJ,KAAA,CAAAM,aAAA,CAACJ,oBAAoB,MAAE,CAAC,eACxBF,KAAA,CAAAM,aAAA,CAACH,wBAAwB,MAAE,CACb,CACpB,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const ElementEventHandlers: () => null;
@@ -0,0 +1,100 @@
1
+ import { useEffect } from "react";
2
+ import { useEventActionHandler } from "@webiny/app-page-builder/editor";
3
+ import { CreateElementActionEvent, DeleteElementActionEvent } from "@webiny/app-page-builder/editor/recoil/actions";
4
+ import { ContentTraverser } from "@webiny/app-page-builder/dataInjection";
5
+ const doNothing = {
6
+ actions: []
7
+ };
8
+ const addCmsListDataSource = (document, element) => {
9
+ const dataSourceName = `element:${element.id}`;
10
+ const gridElement = element.elements[0];
11
+ return {
12
+ ...document,
13
+ dataSources: [...(document.dataSources || []), {
14
+ name: dataSourceName,
15
+ type: "cms.entries",
16
+ config: {
17
+ modelId: undefined,
18
+ limit: 10
19
+ }
20
+ }],
21
+ dataBindings: [...(document.dataBindings || []), {
22
+ dataSource: dataSourceName,
23
+ bindFrom: "*",
24
+ bindTo: `element:${gridElement.id}.dataSource`
25
+ }]
26
+ };
27
+ };
28
+ export const ElementEventHandlers = () => {
29
+ const eventHandler = useEventActionHandler();
30
+ const onElementCreate = (state, _, args) => {
31
+ if (!args) {
32
+ return doNothing;
33
+ }
34
+ const {
35
+ element
36
+ } = args;
37
+ if (element.type !== "entries-list") {
38
+ return doNothing;
39
+ }
40
+
41
+ // @ts-expect-error Event callable types need to be more generic.
42
+ const page = state.page;
43
+ const updatedPage = addCmsListDataSource(page, element);
44
+ return {
45
+ state: {
46
+ ...state,
47
+ page: updatedPage
48
+ },
49
+ actions: []
50
+ };
51
+ };
52
+ const onElementDelete = async (state, _, args) => {
53
+ if (!args) {
54
+ return doNothing;
55
+ }
56
+ const {
57
+ element
58
+ } = args;
59
+
60
+ // @ts-expect-error Event callable types need to be more generic.
61
+ const page = state.page;
62
+ const withDescendants = await state.getElementTree({
63
+ element
64
+ });
65
+ const traverser = new ContentTraverser();
66
+ const deletedElements = [element.id];
67
+ traverser.traverse(withDescendants, node => {
68
+ deletedElements.push(node.id);
69
+ });
70
+ const deleteDataSources = deletedElements.map(id => `element:${id}`);
71
+ const deleteDataBindings = deletedElements.map(id => `element:${id}.`);
72
+ const updatedPage = {
73
+ ...page,
74
+ dataSources: (page.dataSources || []).filter(ds => {
75
+ return !deleteDataSources.includes(ds.name);
76
+ }),
77
+ dataBindings: (page.dataBindings || []).filter(binding => {
78
+ return !deleteDataBindings.some(toDelete => binding.bindTo.startsWith(toDelete));
79
+ })
80
+ };
81
+ return {
82
+ state: {
83
+ ...state,
84
+ page: updatedPage
85
+ },
86
+ actions: []
87
+ };
88
+ };
89
+ useEffect(() => {
90
+ const offCreateElement = eventHandler.on(CreateElementActionEvent, onElementCreate);
91
+ const offDeleteElement = eventHandler.on(DeleteElementActionEvent, onElementDelete);
92
+ return () => {
93
+ offCreateElement();
94
+ offDeleteElement();
95
+ };
96
+ }, []);
97
+ return null;
98
+ };
99
+
100
+ //# sourceMappingURL=ElementEventHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useEventActionHandler","CreateElementActionEvent","DeleteElementActionEvent","ContentTraverser","doNothing","actions","addCmsListDataSource","document","element","dataSourceName","id","gridElement","elements","dataSources","name","type","config","modelId","undefined","limit","dataBindings","dataSource","bindFrom","bindTo","ElementEventHandlers","eventHandler","onElementCreate","state","_","args","page","updatedPage","onElementDelete","withDescendants","getElementTree","traverser","deletedElements","traverse","node","push","deleteDataSources","map","deleteDataBindings","filter","ds","includes","binding","some","toDelete","startsWith","offCreateElement","on","offDeleteElement"],"sources":["ElementEventHandlers.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useEventActionHandler } from \"@webiny/app-page-builder/editor\";\nimport {\n CreateElementActionEvent,\n DeleteElementActionEvent\n} from \"@webiny/app-page-builder/editor/recoil/actions\";\nimport type {\n DynamicDocument,\n EventActionCallable,\n PbEditorElementTree\n} from \"@webiny/app-page-builder/types\";\nimport type { CreateElementEventActionArgsType } from \"@webiny/app-page-builder/editor/recoil/actions/createElement/types\";\nimport type { DeleteElementActionArgsType } from \"@webiny/app-page-builder/editor/recoil/actions/deleteElement/types\";\nimport type { PageAtomType } from \"@webiny/app-page-builder/pageEditor/state\";\nimport { ContentTraverser } from \"@webiny/app-page-builder/dataInjection\";\n\nconst doNothing = {\n actions: []\n};\n\nconst addCmsListDataSource = <T extends DynamicDocument>(\n document: T,\n element: PbEditorElementTree\n): T => {\n const dataSourceName = `element:${element.id}`;\n\n const gridElement = element.elements[0];\n\n return {\n ...document,\n dataSources: [\n ...(document.dataSources || []),\n {\n name: dataSourceName,\n type: \"cms.entries\",\n config: {\n modelId: undefined,\n limit: 10\n }\n }\n ],\n dataBindings: [\n ...(document.dataBindings || []),\n {\n dataSource: dataSourceName,\n bindFrom: \"*\",\n bindTo: `element:${gridElement.id}.dataSource`\n }\n ]\n };\n};\n\nexport const ElementEventHandlers = () => {\n const eventHandler = useEventActionHandler();\n\n const onElementCreate: EventActionCallable<CreateElementEventActionArgsType> = (\n state,\n _,\n args\n ) => {\n if (!args) {\n return doNothing;\n }\n\n const { element } = args;\n\n if (element.type !== \"entries-list\") {\n return doNothing;\n }\n\n // @ts-expect-error Event callable types need to be more generic.\n const page = state.page as PageAtomType;\n\n const updatedPage = addCmsListDataSource(page, element as PbEditorElementTree);\n\n return {\n state: {\n ...state,\n page: updatedPage\n },\n actions: []\n };\n };\n\n const onElementDelete: EventActionCallable<DeleteElementActionArgsType> = async (\n state,\n _,\n args\n ) => {\n if (!args) {\n return doNothing;\n }\n\n const { element } = args;\n\n // @ts-expect-error Event callable types need to be more generic.\n const page = state.page as PageAtomType;\n\n const withDescendants = await state.getElementTree({ element });\n\n const traverser = new ContentTraverser();\n const deletedElements: string[] = [element.id];\n\n traverser.traverse(withDescendants, node => {\n deletedElements.push(node.id);\n });\n\n const deleteDataSources = deletedElements.map(id => `element:${id}`);\n const deleteDataBindings = deletedElements.map(id => `element:${id}.`);\n\n const updatedPage: PageAtomType = {\n ...page,\n dataSources: (page.dataSources || []).filter(ds => {\n return !deleteDataSources.includes(ds.name);\n }),\n dataBindings: (page.dataBindings || []).filter(binding => {\n return !deleteDataBindings.some(toDelete => binding.bindTo.startsWith(toDelete));\n })\n };\n\n return {\n state: {\n ...state,\n page: updatedPage\n },\n actions: []\n };\n };\n\n useEffect(() => {\n const offCreateElement = eventHandler.on(CreateElementActionEvent, onElementCreate);\n const offDeleteElement = eventHandler.on(DeleteElementActionEvent, onElementDelete);\n\n return () => {\n offCreateElement();\n offDeleteElement();\n };\n }, []);\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const DynamicTemplateEditorConfig: () => React.JSX.Element;
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import { TemplateEditorConfig } from "@webiny/app-page-builder/templateEditor";
3
+ import { EntrySelector } from "./EntrySelector";
4
+ import { hasMainDataSource } from "../../features";
5
+ import { ElementEventHandlers } from "./ElementEventHandlers";
6
+ import { useDynamicDocument } from "@webiny/app-page-builder/dataInjection";
7
+ import { SetupElementDataSettings } from "../../dataInjection/editor/SetupElementDataSettings";
8
+ import { AddEntriesListDataSourceContext } from "../../dataInjection/AddEntriesListDataSourceContext";
9
+ const {
10
+ Ui
11
+ } = TemplateEditorConfig;
12
+ const OnDynamicTemplate = ({
13
+ children
14
+ }) => {
15
+ const {
16
+ dataSources
17
+ } = useDynamicDocument();
18
+ return hasMainDataSource(dataSources) ? /*#__PURE__*/React.createElement(React.Fragment, null, children) : null;
19
+ };
20
+ export const DynamicTemplateEditorConfig = () => {
21
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TemplateEditorConfig, null, /*#__PURE__*/React.createElement(AddEntriesListDataSourceContext, null), /*#__PURE__*/React.createElement(SetupElementDataSettings, null), /*#__PURE__*/React.createElement(Ui.TopBar.Element, {
22
+ name: "entrySelector",
23
+ element: /*#__PURE__*/React.createElement(OnDynamicTemplate, null, /*#__PURE__*/React.createElement(EntrySelector, null)),
24
+ group: "center"
25
+ }), /*#__PURE__*/React.createElement(ElementEventHandlers, null)));
26
+ };
27
+
28
+ //# sourceMappingURL=DynamicTemplateEditorConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","TemplateEditorConfig","EntrySelector","hasMainDataSource","ElementEventHandlers","useDynamicDocument","SetupElementDataSettings","AddEntriesListDataSourceContext","Ui","OnDynamicTemplate","children","dataSources","createElement","Fragment","DynamicTemplateEditorConfig","TopBar","Element","name","element","group"],"sources":["DynamicTemplateEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { TemplateEditorConfig } from \"@webiny/app-page-builder/templateEditor\";\nimport { EntrySelector } from \"~/admin/templateEditor/EntrySelector\";\nimport { hasMainDataSource } from \"~/features\";\nimport { ElementEventHandlers } from \"./ElementEventHandlers\";\nimport { useDynamicDocument } from \"@webiny/app-page-builder/dataInjection\";\nimport { SetupElementDataSettings } from \"~/dataInjection/editor/SetupElementDataSettings\";\nimport { AddEntriesListDataSourceContext } from \"~/dataInjection/AddEntriesListDataSourceContext\";\n\nconst { Ui } = TemplateEditorConfig;\n\nconst OnDynamicTemplate = ({ children }: { children: React.ReactNode }) => {\n const { dataSources } = useDynamicDocument();\n\n return hasMainDataSource(dataSources) ? <>{children}</> : null;\n};\n\nexport const DynamicTemplateEditorConfig = () => {\n return (\n <>\n <TemplateEditorConfig>\n <AddEntriesListDataSourceContext />\n <SetupElementDataSettings />\n <Ui.TopBar.Element\n name={\"entrySelector\"}\n element={\n <OnDynamicTemplate>\n <EntrySelector />\n </OnDynamicTemplate>\n }\n group={\"center\"}\n />\n\n <ElementEventHandlers />\n </TemplateEditorConfig>\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,oBAAoB,QAAQ,yCAAyC;AAC9E,SAASC,aAAa;AACtB,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,SAASC,kBAAkB,QAAQ,wCAAwC;AAC3E,SAASC,wBAAwB;AACjC,SAASC,+BAA+B;AAExC,MAAM;EAAEC;AAAG,CAAC,GAAGP,oBAAoB;AAEnC,MAAMQ,iBAAiB,GAAGA,CAAC;EAAEC;AAAwC,CAAC,KAAK;EACvE,MAAM;IAAEC;EAAY,CAAC,GAAGN,kBAAkB,CAAC,CAAC;EAE5C,OAAOF,iBAAiB,CAACQ,WAAW,CAAC,gBAAGX,KAAA,CAAAY,aAAA,CAAAZ,KAAA,CAAAa,QAAA,QAAGH,QAAW,CAAC,GAAG,IAAI;AAClE,CAAC;AAED,OAAO,MAAMI,2BAA2B,GAAGA,CAAA,KAAM;EAC7C,oBACId,KAAA,CAAAY,aAAA,CAAAZ,KAAA,CAAAa,QAAA,qBACIb,KAAA,CAAAY,aAAA,CAACX,oBAAoB,qBACjBD,KAAA,CAAAY,aAAA,CAACL,+BAA+B,MAAE,CAAC,eACnCP,KAAA,CAAAY,aAAA,CAACN,wBAAwB,MAAE,CAAC,eAC5BN,KAAA,CAAAY,aAAA,CAACJ,EAAE,CAACO,MAAM,CAACC,OAAO;IACdC,IAAI,EAAE,eAAgB;IACtBC,OAAO,eACHlB,KAAA,CAAAY,aAAA,CAACH,iBAAiB,qBACdT,KAAA,CAAAY,aAAA,CAACV,aAAa,MAAE,CACD,CACtB;IACDiB,KAAK,EAAE;EAAS,CACnB,CAAC,eAEFnB,KAAA,CAAAY,aAAA,CAACR,oBAAoB,MAAE,CACL,CACxB,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const ElementEventHandlers: () => null;
@@ -0,0 +1,100 @@
1
+ import { useEffect } from "react";
2
+ import { useEventActionHandler } from "@webiny/app-page-builder/editor";
3
+ import { CreateElementActionEvent, DeleteElementActionEvent } from "@webiny/app-page-builder/editor/recoil/actions";
4
+ import { ContentTraverser } from "@webiny/app-page-builder/dataInjection";
5
+ const doNothing = {
6
+ actions: []
7
+ };
8
+ const addCmsListDataSource = (document, element) => {
9
+ const dataSourceName = `element:${element.id}`;
10
+ const gridElement = element.elements[0];
11
+ return {
12
+ ...document,
13
+ dataSources: [...document.dataSources, {
14
+ name: dataSourceName,
15
+ type: "cms.entries",
16
+ config: {
17
+ modelId: undefined,
18
+ limit: 10
19
+ }
20
+ }],
21
+ dataBindings: [...document.dataBindings, {
22
+ dataSource: dataSourceName,
23
+ bindFrom: "*",
24
+ bindTo: `element:${gridElement.id}.dataSource`
25
+ }]
26
+ };
27
+ };
28
+ export const ElementEventHandlers = () => {
29
+ const eventHandler = useEventActionHandler();
30
+ const onElementCreate = (state, _, args) => {
31
+ if (!args) {
32
+ return doNothing;
33
+ }
34
+ const {
35
+ element
36
+ } = args;
37
+ if (element.type !== "entries-list") {
38
+ return doNothing;
39
+ }
40
+
41
+ // @ts-expect-error Event callable types need to be more generic.
42
+ const template = state.template;
43
+ const updatedTemplate = addCmsListDataSource(template, element);
44
+ return {
45
+ state: {
46
+ ...state,
47
+ template: updatedTemplate
48
+ },
49
+ actions: []
50
+ };
51
+ };
52
+ const onElementDelete = async (state, _, args) => {
53
+ if (!args) {
54
+ return doNothing;
55
+ }
56
+ const {
57
+ element
58
+ } = args;
59
+
60
+ // @ts-expect-error Event callable types need to be more generic.
61
+ const template = state.template;
62
+ const withDescendants = await state.getElementTree({
63
+ element
64
+ });
65
+ const traverser = new ContentTraverser();
66
+ const deletedElements = [element.id];
67
+ traverser.traverse(withDescendants, node => {
68
+ deletedElements.push(node.id);
69
+ });
70
+ const deleteDataSources = deletedElements.map(id => `element:${id}`);
71
+ const deleteDataBindings = deletedElements.map(id => `element:${id}.`);
72
+ const updatedTemplate = {
73
+ ...template,
74
+ dataSources: template.dataSources.filter(ds => {
75
+ return !deleteDataSources.includes(ds.name);
76
+ }),
77
+ dataBindings: template.dataBindings.filter(binding => {
78
+ return !deleteDataBindings.some(toDelete => binding.bindTo.startsWith(toDelete));
79
+ })
80
+ };
81
+ return {
82
+ state: {
83
+ ...state,
84
+ template: updatedTemplate
85
+ },
86
+ actions: []
87
+ };
88
+ };
89
+ useEffect(() => {
90
+ const offCreateElement = eventHandler.on(CreateElementActionEvent, onElementCreate);
91
+ const offDeleteElement = eventHandler.on(DeleteElementActionEvent, onElementDelete);
92
+ return () => {
93
+ offCreateElement();
94
+ offDeleteElement();
95
+ };
96
+ }, []);
97
+ return null;
98
+ };
99
+
100
+ //# sourceMappingURL=ElementEventHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useEventActionHandler","CreateElementActionEvent","DeleteElementActionEvent","ContentTraverser","doNothing","actions","addCmsListDataSource","document","element","dataSourceName","id","gridElement","elements","dataSources","name","type","config","modelId","undefined","limit","dataBindings","dataSource","bindFrom","bindTo","ElementEventHandlers","eventHandler","onElementCreate","state","_","args","template","updatedTemplate","onElementDelete","withDescendants","getElementTree","traverser","deletedElements","traverse","node","push","deleteDataSources","map","deleteDataBindings","filter","ds","includes","binding","some","toDelete","startsWith","offCreateElement","on","offDeleteElement"],"sources":["ElementEventHandlers.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useEventActionHandler } from \"@webiny/app-page-builder/editor\";\nimport {\n CreateElementActionEvent,\n DeleteElementActionEvent\n} from \"@webiny/app-page-builder/editor/recoil/actions\";\nimport type {\n DynamicDocument,\n EventActionCallable,\n PbEditorElementTree,\n PbPageTemplate\n} from \"@webiny/app-page-builder/types\";\nimport type { CreateElementEventActionArgsType } from \"@webiny/app-page-builder/editor/recoil/actions/createElement/types\";\nimport type { DeleteElementActionArgsType } from \"@webiny/app-page-builder/editor/recoil/actions/deleteElement/types\";\nimport { ContentTraverser } from \"@webiny/app-page-builder/dataInjection\";\n\nconst doNothing = {\n actions: []\n};\n\nconst addCmsListDataSource = <T extends DynamicDocument>(\n document: T,\n element: PbEditorElementTree\n): T => {\n const dataSourceName = `element:${element.id}`;\n\n const gridElement = element.elements[0];\n\n return {\n ...document,\n dataSources: [\n ...document.dataSources,\n {\n name: dataSourceName,\n type: \"cms.entries\",\n config: {\n modelId: undefined,\n limit: 10\n }\n }\n ],\n dataBindings: [\n ...document.dataBindings,\n {\n dataSource: dataSourceName,\n bindFrom: \"*\",\n bindTo: `element:${gridElement.id}.dataSource`\n }\n ]\n };\n};\n\nexport const ElementEventHandlers = () => {\n const eventHandler = useEventActionHandler();\n\n const onElementCreate: EventActionCallable<CreateElementEventActionArgsType> = (\n state,\n _,\n args\n ) => {\n if (!args) {\n return doNothing;\n }\n\n const { element } = args;\n\n if (element.type !== \"entries-list\") {\n return doNothing;\n }\n\n // @ts-expect-error Event callable types need to be more generic.\n const template = state.template as PbPageTemplate;\n\n const updatedTemplate = addCmsListDataSource(template, element as PbEditorElementTree);\n\n return {\n state: {\n ...state,\n template: updatedTemplate\n },\n actions: []\n };\n };\n\n const onElementDelete: EventActionCallable<DeleteElementActionArgsType> = async (\n state,\n _,\n args\n ) => {\n if (!args) {\n return doNothing;\n }\n\n const { element } = args;\n\n // @ts-expect-error Event callable types need to be more generic.\n const template = state.template as PbPageTemplate;\n\n const withDescendants = await state.getElementTree({ element });\n\n const traverser = new ContentTraverser();\n const deletedElements: string[] = [element.id];\n\n traverser.traverse(withDescendants, node => {\n deletedElements.push(node.id);\n });\n\n const deleteDataSources = deletedElements.map(id => `element:${id}`);\n const deleteDataBindings = deletedElements.map(id => `element:${id}.`);\n\n const updatedTemplate: PbPageTemplate = {\n ...template,\n dataSources: template.dataSources.filter(ds => {\n return !deleteDataSources.includes(ds.name);\n }),\n dataBindings: template.dataBindings.filter(binding => {\n return !deleteDataBindings.some(toDelete => binding.bindTo.startsWith(toDelete));\n })\n };\n\n return {\n state: {\n ...state,\n template: updatedTemplate\n },\n actions: []\n };\n };\n\n useEffect(() => {\n const offCreateElement = eventHandler.on(CreateElementActionEvent, onElementCreate);\n const offDeleteElement = eventHandler.on(DeleteElementActionEvent, onElementDelete);\n\n return () => {\n offCreateElement();\n offDeleteElement();\n };\n }, []);\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const EntrySelector: () => React.JSX.Element;
@@ -0,0 +1,27 @@
1
+ import React, { useState } from "react";
2
+ import { Input } from "@webiny/ui/Input";
3
+ import { useDocumentDataSource } from "@webiny/app-page-builder/templateEditor";
4
+ export const EntrySelector = () => {
5
+ const {
6
+ getDataSource,
7
+ updateDataSource
8
+ } = useDocumentDataSource();
9
+ const mainDataSource = getDataSource("main");
10
+ const [localId, setLocalId] = useState(mainDataSource ? mainDataSource.config.entryId : "");
11
+ const applyPreviewId = () => {
12
+ updateDataSource("main", config => {
13
+ return {
14
+ ...config,
15
+ entryId: localId
16
+ };
17
+ });
18
+ };
19
+ return /*#__PURE__*/React.createElement(Input, {
20
+ value: localId,
21
+ onChange: setLocalId,
22
+ onBlur: applyPreviewId,
23
+ placeholder: "Preview Entry Id"
24
+ });
25
+ };
26
+
27
+ //# sourceMappingURL=EntrySelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","Input","useDocumentDataSource","EntrySelector","getDataSource","updateDataSource","mainDataSource","localId","setLocalId","config","entryId","applyPreviewId","createElement","value","onChange","onBlur","placeholder"],"sources":["EntrySelector.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { useDocumentDataSource } from \"@webiny/app-page-builder/templateEditor\";\n\nexport const EntrySelector = () => {\n const { getDataSource, updateDataSource } = useDocumentDataSource();\n const mainDataSource = getDataSource(\"main\");\n const [localId, setLocalId] = useState(mainDataSource ? mainDataSource.config.entryId : \"\");\n\n const applyPreviewId = () => {\n updateDataSource(\"main\", config => {\n return {\n ...config,\n entryId: localId\n };\n });\n };\n\n return (\n <Input\n value={localId}\n onChange={setLocalId}\n onBlur={applyPreviewId}\n placeholder={\"Preview Entry Id\"}\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,KAAK,QAAQ,kBAAkB;AACxC,SAASC,qBAAqB,QAAQ,yCAAyC;AAE/E,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC,aAAa;IAAEC;EAAiB,CAAC,GAAGH,qBAAqB,CAAC,CAAC;EACnE,MAAMI,cAAc,GAAGF,aAAa,CAAC,MAAM,CAAC;EAC5C,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAACM,cAAc,GAAGA,cAAc,CAACG,MAAM,CAACC,OAAO,GAAG,EAAE,CAAC;EAE3F,MAAMC,cAAc,GAAGA,CAAA,KAAM;IACzBN,gBAAgB,CAAC,MAAM,EAAEI,MAAM,IAAI;MAC/B,OAAO;QACH,GAAGA,MAAM;QACTC,OAAO,EAAEH;MACb,CAAC;IACL,CAAC,CAAC;EACN,CAAC;EAED,oBACIR,KAAA,CAAAa,aAAA,CAACX,KAAK;IACFY,KAAK,EAAEN,OAAQ;IACfO,QAAQ,EAAEN,UAAW;IACrBO,MAAM,EAAEJ,cAAe;IACvBK,WAAW,EAAE;EAAmB,CACnC,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from "./EntrySelector";
@@ -0,0 +1,3 @@
1
+ export * from "./EntrySelector";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./EntrySelector\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const AddEntriesListDataSourceContext: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import { Element } from "@webiny/app-page-builder-elements";
3
+ import { DataSourceProvider, useDynamicDocument } from "@webiny/app-page-builder/dataInjection";
4
+ export const AddEntriesListDataSourceContext = Element.createDecorator(Original => {
5
+ return function WithDataSourceContext(props) {
6
+ const {
7
+ dataSources
8
+ } = useDynamicDocument();
9
+ const {
10
+ element
11
+ } = props;
12
+ const renderOriginal = /*#__PURE__*/React.createElement(Original, props);
13
+ if (!element) {
14
+ return renderOriginal;
15
+ }
16
+ const isEntriesList = element.type === "entries-list";
17
+ if (isEntriesList) {
18
+ const dataSource = dataSources.find(source => source.name === `element:${element.id}`);
19
+ return /*#__PURE__*/React.createElement(DataSourceProvider, {
20
+ dataSource: dataSource
21
+ }, renderOriginal);
22
+ }
23
+ return renderOriginal;
24
+ };
25
+ });
26
+
27
+ //# sourceMappingURL=AddEntriesListDataSourceContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Element","DataSourceProvider","useDynamicDocument","AddEntriesListDataSourceContext","createDecorator","Original","WithDataSourceContext","props","dataSources","element","renderOriginal","createElement","isEntriesList","type","dataSource","find","source","name","id"],"sources":["AddEntriesListDataSourceContext.tsx"],"sourcesContent":["import React from \"react\";\nimport { Element } from \"@webiny/app-page-builder-elements\";\nimport { DataSourceProvider, useDynamicDocument } from \"@webiny/app-page-builder/dataInjection\";\n\nexport const AddEntriesListDataSourceContext = Element.createDecorator(Original => {\n return function WithDataSourceContext(props) {\n const { dataSources } = useDynamicDocument();\n\n const { element } = props;\n\n const renderOriginal = <Original {...props} />;\n\n if (!element) {\n return renderOriginal;\n }\n\n const isEntriesList = element.type === \"entries-list\";\n\n if (isEntriesList) {\n const dataSource = dataSources.find(source => source.name === `element:${element.id}`);\n\n return (\n <DataSourceProvider dataSource={dataSource!}>{renderOriginal}</DataSourceProvider>\n );\n }\n\n return renderOriginal;\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,OAAO,QAAQ,mCAAmC;AAC3D,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,wCAAwC;AAE/F,OAAO,MAAMC,+BAA+B,GAAGH,OAAO,CAACI,eAAe,CAACC,QAAQ,IAAI;EAC/E,OAAO,SAASC,qBAAqBA,CAACC,KAAK,EAAE;IACzC,MAAM;MAAEC;IAAY,CAAC,GAAGN,kBAAkB,CAAC,CAAC;IAE5C,MAAM;MAAEO;IAAQ,CAAC,GAAGF,KAAK;IAEzB,MAAMG,cAAc,gBAAGX,KAAA,CAAAY,aAAA,CAACN,QAAQ,EAAKE,KAAQ,CAAC;IAE9C,IAAI,CAACE,OAAO,EAAE;MACV,OAAOC,cAAc;IACzB;IAEA,MAAME,aAAa,GAAGH,OAAO,CAACI,IAAI,KAAK,cAAc;IAErD,IAAID,aAAa,EAAE;MACf,MAAME,UAAU,GAAGN,WAAW,CAACO,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACC,IAAI,KAAK,WAAWR,OAAO,CAACS,EAAE,EAAE,CAAC;MAEtF,oBACInB,KAAA,CAAAY,aAAA,CAACV,kBAAkB;QAACa,UAAU,EAAEA;MAAY,GAAEJ,cAAmC,CAAC;IAE1F;IAEA,OAAOA,cAAc;EACzB,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const DisableGridDelete: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import { EditorConfig } from "@webiny/app-page-builder/editor";
3
+ import { HideIfEntriesListGridWithDataSource } from "./HideIfEntriesListGridWithDataSource";
4
+ const {
5
+ ElementAction
6
+ } = EditorConfig;
7
+ export const DisableGridDelete = ElementAction.createDecorator(Original => {
8
+ return function DisableActions(props) {
9
+ if (props.name === "delete") {
10
+ return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
11
+ element: /*#__PURE__*/React.createElement(HideIfEntriesListGridWithDataSource, null, props.element)
12
+ }));
13
+ }
14
+ return /*#__PURE__*/React.createElement(Original, props);
15
+ };
16
+ });
17
+
18
+ //# sourceMappingURL=DisableGridDelete.js.map