@webiny/website-builder-react 6.3.0 → 6.4.0-beta.0

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 (79) hide show
  1. package/components/ConnectToEditor.js +16 -18
  2. package/components/ConnectToEditor.js.map +1 -1
  3. package/components/DocumentFragment.js +5 -7
  4. package/components/DocumentFragment.js.map +1 -1
  5. package/components/DocumentRenderer.js +37 -46
  6. package/components/DocumentRenderer.js.map +1 -1
  7. package/components/DocumentStoreProvider.js +15 -21
  8. package/components/DocumentStoreProvider.js.map +1 -1
  9. package/components/EditingElementRenderer/EditingElementRenderer.js +31 -35
  10. package/components/EditingElementRenderer/EditingElementRenderer.js.map +1 -1
  11. package/components/EditingElementRenderer/EditingElementRenderer.presenter.js +29 -35
  12. package/components/EditingElementRenderer/EditingElementRenderer.presenter.js.map +1 -1
  13. package/components/EditingElementRenderer/index.js +0 -2
  14. package/components/ElementIndexProvider.js +9 -14
  15. package/components/ElementIndexProvider.js.map +1 -1
  16. package/components/ElementRenderer.js +11 -16
  17. package/components/ElementRenderer.js.map +1 -1
  18. package/components/ElementSlot.js +6 -9
  19. package/components/ElementSlot.js.map +1 -1
  20. package/components/ElementSlotDepthProvider.js +9 -14
  21. package/components/ElementSlotDepthProvider.js.map +1 -1
  22. package/components/FragmentsProvider.js +30 -36
  23. package/components/FragmentsProvider.js.map +1 -1
  24. package/components/LiveElementRenderer.js +53 -68
  25. package/components/LiveElementRenderer.js.map +1 -1
  26. package/components/LiveElementSlot.js +12 -14
  27. package/components/LiveElementSlot.js.map +1 -1
  28. package/components/PreviewElementSlot.js +17 -23
  29. package/components/PreviewElementSlot.js.map +1 -1
  30. package/components/index.js +0 -2
  31. package/components/useBindingsForElement.js +13 -11
  32. package/components/useBindingsForElement.js.map +1 -1
  33. package/components/useDocumentState.js +4 -3
  34. package/components/useDocumentState.js.map +1 -1
  35. package/components/useSelectFromState.js +29 -35
  36. package/components/useSelectFromState.js.map +1 -1
  37. package/components/useViewportInfo.js +5 -6
  38. package/components/useViewportInfo.js.map +1 -1
  39. package/createComponent.js +26 -31
  40. package/createComponent.js.map +1 -1
  41. package/createComponent.test.js +108 -119
  42. package/createComponent.test.js.map +1 -1
  43. package/editorComponents/Box.js +3 -6
  44. package/editorComponents/Box.js.map +1 -1
  45. package/editorComponents/Box.manifest.js +15 -15
  46. package/editorComponents/Box.manifest.js.map +1 -1
  47. package/editorComponents/Fragment.js +23 -32
  48. package/editorComponents/Fragment.js.map +1 -1
  49. package/editorComponents/Fragment.manifest.js +14 -12
  50. package/editorComponents/Fragment.manifest.js.map +1 -1
  51. package/editorComponents/Grid.js +33 -61
  52. package/editorComponents/Grid.js.map +1 -1
  53. package/editorComponents/Grid.manifest.js +163 -167
  54. package/editorComponents/Grid.manifest.js.map +1 -1
  55. package/editorComponents/GridColumn.js +3 -6
  56. package/editorComponents/GridColumn.js.map +1 -1
  57. package/editorComponents/GridColumn.manifest.js +20 -18
  58. package/editorComponents/GridColumn.manifest.js.map +1 -1
  59. package/editorComponents/Image.js +99 -119
  60. package/editorComponents/Image.js.map +1 -1
  61. package/editorComponents/Image.manifest.js +33 -33
  62. package/editorComponents/Image.manifest.js.map +1 -1
  63. package/editorComponents/Lexical.js +13 -21
  64. package/editorComponents/Lexical.js.map +1 -1
  65. package/editorComponents/Lexical.manifest.js +17 -15
  66. package/editorComponents/Lexical.manifest.js.map +1 -1
  67. package/editorComponents/Root.js +3 -6
  68. package/editorComponents/Root.js.map +1 -1
  69. package/editorComponents/Root.manifest.js +7 -7
  70. package/editorComponents/Root.manifest.js.map +1 -1
  71. package/editorComponents/index.js +10 -1
  72. package/editorComponents/index.js.map +1 -1
  73. package/index.js +1 -3
  74. package/package.json +6 -6
  75. package/types.js +0 -3
  76. package/components/EditingElementRenderer/index.js.map +0 -1
  77. package/components/index.js.map +0 -1
  78. package/index.js.map +0 -1
  79. package/types.js.map +0 -1
@@ -1,65 +1,37 @@
1
- import React from "react";
2
- export const GridColumnComponent = ({
3
- inputs
4
- }) => {
5
- return /*#__PURE__*/React.createElement(React.Fragment, null, inputs.children);
1
+ import react from "react";
2
+ const GridColumnComponent = ({ inputs })=>/*#__PURE__*/ react.createElement(react.Fragment, null, inputs.children);
3
+ const GridComponent = ({ inputs, styles, breakpoint })=>{
4
+ const { gridLayout = "12", columns, columnGap, stackAtBreakpoint, reverseWhenStacked } = inputs;
5
+ const rowConfig = gridLayout.split("-").map((size)=>parseInt(size));
6
+ const rows = [];
7
+ for(let i = 0; i < columns.length; i += rowConfig.length)rows.push(columns.slice(i, i + rowConfig.length));
8
+ const cellWidthReduction = columnGap ? columnGap - columnGap / rowConfig.length : 0;
9
+ const stackColumns = breakpoint === stackAtBreakpoint;
10
+ if (stackColumns) styles.flexDirection = reverseWhenStacked ? "column-reverse" : "column";
11
+ return /*#__PURE__*/ react.createElement("div", {
12
+ style: styles
13
+ }, rows.map((columns)=>columns.map((column, i)=>/*#__PURE__*/ react.createElement(Span, {
14
+ key: i,
15
+ stackColumns: stackColumns,
16
+ size: rowConfig[i],
17
+ reductionInPx: cellWidthReduction
18
+ }, /*#__PURE__*/ react.createElement(GridColumnComponent, {
19
+ key: i,
20
+ inputs: {
21
+ children: column.children
22
+ }
23
+ })))));
6
24
  };
7
- export const GridComponent = ({
8
- inputs,
9
- styles,
10
- breakpoint
11
- }) => {
12
- const {
13
- gridLayout = "12",
14
- columns,
15
- columnGap,
16
- stackAtBreakpoint,
17
- reverseWhenStacked
18
- } = inputs;
19
- const rowConfig = gridLayout.split("-").map(size => parseInt(size));
20
- const rows = [];
21
-
22
- // Chunk columns into rows
23
- for (let i = 0; i < columns.length; i += rowConfig.length) {
24
- rows.push(columns.slice(i, i + rowConfig.length));
25
- }
26
-
27
- // Number of pixels we need to subtract from each cell to ensure they fit in the grid with column gap
28
- const cellWidthReduction = columnGap ? columnGap - columnGap / rowConfig.length : 0;
29
- const stackColumns = breakpoint === stackAtBreakpoint;
30
- if (stackColumns) {
31
- styles.flexDirection = reverseWhenStacked ? "column-reverse" : "column";
32
- }
33
- return /*#__PURE__*/React.createElement("div", {
34
- style: styles
35
- }, rows.map(columns => {
36
- return columns.map((column, i) => /*#__PURE__*/React.createElement(Span, {
37
- key: i,
38
- stackColumns: stackColumns,
39
- size: rowConfig[i],
40
- reductionInPx: cellWidthReduction
41
- }, /*#__PURE__*/React.createElement(GridColumnComponent, {
42
- key: i,
43
- inputs: {
44
- children: column.children
45
- }
46
- })));
47
- }));
48
- };
49
- const Span = ({
50
- size,
51
- children,
52
- reductionInPx,
53
- stackColumns
54
- }) => {
55
- const width = stackColumns ? "100%" : `calc(${size / 12 * 100}% - ${reductionInPx}px)`;
56
- return /*#__PURE__*/React.createElement("div", {
57
- style: {
58
- flex: `0 0 ${width}`,
59
- maxWidth: width,
60
- boxSizing: "border-box"
61
- }
62
- }, children);
25
+ const Span = ({ size, children, reductionInPx, stackColumns })=>{
26
+ const width = stackColumns ? "100%" : `calc(${size / 12 * 100}% - ${reductionInPx}px)`;
27
+ return /*#__PURE__*/ react.createElement("div", {
28
+ style: {
29
+ flex: `0 0 ${width}`,
30
+ maxWidth: width,
31
+ boxSizing: "border-box"
32
+ }
33
+ }, children);
63
34
  };
35
+ export { GridColumnComponent, GridComponent };
64
36
 
65
37
  //# sourceMappingURL=Grid.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","GridColumnComponent","inputs","createElement","Fragment","children","GridComponent","styles","breakpoint","gridLayout","columns","columnGap","stackAtBreakpoint","reverseWhenStacked","rowConfig","split","map","size","parseInt","rows","i","length","push","slice","cellWidthReduction","stackColumns","flexDirection","style","column","Span","key","reductionInPx","width","flex","maxWidth","boxSizing"],"sources":["Grid.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ComponentProps, ComponentPropsWithChildren } from \"~/types.js\";\n\nexport const GridColumnComponent = ({\n inputs\n}: {\n inputs: ComponentPropsWithChildren[\"inputs\"];\n}) => {\n return <>{inputs.children}</>;\n};\n\nexport interface Column {\n children: React.ReactNode;\n}\n\ntype GridProps = ComponentProps<{\n gridLayout: string;\n rowCount: number;\n rowGap: number;\n columnGap: number;\n columns: Column[];\n stackAtBreakpoint?: string;\n reverseWhenStacked?: boolean;\n}>;\n\nexport const GridComponent = ({ inputs, styles, breakpoint }: GridProps) => {\n const { gridLayout = \"12\", columns, columnGap, stackAtBreakpoint, reverseWhenStacked } = inputs;\n const rowConfig = gridLayout.split(\"-\").map(size => parseInt(size));\n const rows: Column[][] = [];\n\n // Chunk columns into rows\n for (let i = 0; i < columns.length; i += rowConfig.length) {\n rows.push(columns.slice(i, i + rowConfig.length));\n }\n\n // Number of pixels we need to subtract from each cell to ensure they fit in the grid with column gap\n const cellWidthReduction = columnGap ? columnGap - columnGap / rowConfig.length : 0;\n\n const stackColumns = breakpoint === stackAtBreakpoint;\n\n if (stackColumns) {\n styles.flexDirection = reverseWhenStacked ? \"column-reverse\" : \"column\";\n }\n\n return (\n <div style={styles}>\n {rows.map(columns => {\n return columns.map((column, i) => (\n <Span\n key={i}\n stackColumns={stackColumns}\n size={rowConfig[i]}\n reductionInPx={cellWidthReduction}\n >\n <GridColumnComponent key={i} inputs={{ children: column.children }} />\n </Span>\n ));\n })}\n </div>\n );\n};\n\ninterface SpanProps {\n size: number;\n reductionInPx: number;\n stackColumns: boolean;\n children: React.ReactNode;\n}\n\nconst Span = ({ size, children, reductionInPx, stackColumns }: SpanProps) => {\n const width = stackColumns ? \"100%\" : `calc(${(size / 12) * 100}% - ${reductionInPx}px)`;\n\n return (\n <div\n style={{\n flex: `0 0 ${width}`,\n maxWidth: width,\n boxSizing: \"border-box\"\n }}\n >\n {children}\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAChCC;AAGJ,CAAC,KAAK;EACF,oBAAOF,KAAA,CAAAG,aAAA,CAAAH,KAAA,CAAAI,QAAA,QAAGF,MAAM,CAACG,QAAW,CAAC;AACjC,CAAC;AAgBD,OAAO,MAAMC,aAAa,GAAGA,CAAC;EAAEJ,MAAM;EAAEK,MAAM;EAAEC;AAAsB,CAAC,KAAK;EACxE,MAAM;IAAEC,UAAU,GAAG,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAmB,CAAC,GAAGX,MAAM;EAC/F,MAAMY,SAAS,GAAGL,UAAU,CAACM,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,IAAI,IAAIC,QAAQ,CAACD,IAAI,CAAC,CAAC;EACnE,MAAME,IAAgB,GAAG,EAAE;;EAE3B;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,OAAO,CAACW,MAAM,EAAED,CAAC,IAAIN,SAAS,CAACO,MAAM,EAAE;IACvDF,IAAI,CAACG,IAAI,CAACZ,OAAO,CAACa,KAAK,CAACH,CAAC,EAAEA,CAAC,GAAGN,SAAS,CAACO,MAAM,CAAC,CAAC;EACrD;;EAEA;EACA,MAAMG,kBAAkB,GAAGb,SAAS,GAAGA,SAAS,GAAGA,SAAS,GAAGG,SAAS,CAACO,MAAM,GAAG,CAAC;EAEnF,MAAMI,YAAY,GAAGjB,UAAU,KAAKI,iBAAiB;EAErD,IAAIa,YAAY,EAAE;IACdlB,MAAM,CAACmB,aAAa,GAAGb,kBAAkB,GAAG,gBAAgB,GAAG,QAAQ;EAC3E;EAEA,oBACIb,KAAA,CAAAG,aAAA;IAAKwB,KAAK,EAAEpB;EAAO,GACdY,IAAI,CAACH,GAAG,CAACN,OAAO,IAAI;IACjB,OAAOA,OAAO,CAACM,GAAG,CAAC,CAACY,MAAM,EAAER,CAAC,kBACzBpB,KAAA,CAAAG,aAAA,CAAC0B,IAAI;MACDC,GAAG,EAAEV,CAAE;MACPK,YAAY,EAAEA,YAAa;MAC3BR,IAAI,EAAEH,SAAS,CAACM,CAAC,CAAE;MACnBW,aAAa,EAAEP;IAAmB,gBAElCxB,KAAA,CAAAG,aAAA,CAACF,mBAAmB;MAAC6B,GAAG,EAAEV,CAAE;MAAClB,MAAM,EAAE;QAAEG,QAAQ,EAAEuB,MAAM,CAACvB;MAAS;IAAE,CAAE,CACnE,CACT,CAAC;EACN,CAAC,CACA,CAAC;AAEd,CAAC;AASD,MAAMwB,IAAI,GAAGA,CAAC;EAAEZ,IAAI;EAAEZ,QAAQ;EAAE0B,aAAa;EAAEN;AAAwB,CAAC,KAAK;EACzE,MAAMO,KAAK,GAAGP,YAAY,GAAG,MAAM,GAAG,QAASR,IAAI,GAAG,EAAE,GAAI,GAAG,OAAOc,aAAa,KAAK;EAExF,oBACI/B,KAAA,CAAAG,aAAA;IACIwB,KAAK,EAAE;MACHM,IAAI,EAAE,OAAOD,KAAK,EAAE;MACpBE,QAAQ,EAAEF,KAAK;MACfG,SAAS,EAAE;IACf;EAAE,GAED9B,QACA,CAAC;AAEd,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Grid.js","sources":["../../src/editorComponents/Grid.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ComponentProps, ComponentPropsWithChildren } from \"~/types.js\";\n\nexport const GridColumnComponent = ({\n inputs\n}: {\n inputs: ComponentPropsWithChildren[\"inputs\"];\n}) => {\n return <>{inputs.children}</>;\n};\n\nexport interface Column {\n children: React.ReactNode;\n}\n\ntype GridProps = ComponentProps<{\n gridLayout: string;\n rowCount: number;\n rowGap: number;\n columnGap: number;\n columns: Column[];\n stackAtBreakpoint?: string;\n reverseWhenStacked?: boolean;\n}>;\n\nexport const GridComponent = ({ inputs, styles, breakpoint }: GridProps) => {\n const { gridLayout = \"12\", columns, columnGap, stackAtBreakpoint, reverseWhenStacked } = inputs;\n const rowConfig = gridLayout.split(\"-\").map(size => parseInt(size));\n const rows: Column[][] = [];\n\n // Chunk columns into rows\n for (let i = 0; i < columns.length; i += rowConfig.length) {\n rows.push(columns.slice(i, i + rowConfig.length));\n }\n\n // Number of pixels we need to subtract from each cell to ensure they fit in the grid with column gap\n const cellWidthReduction = columnGap ? columnGap - columnGap / rowConfig.length : 0;\n\n const stackColumns = breakpoint === stackAtBreakpoint;\n\n if (stackColumns) {\n styles.flexDirection = reverseWhenStacked ? \"column-reverse\" : \"column\";\n }\n\n return (\n <div style={styles}>\n {rows.map(columns => {\n return columns.map((column, i) => (\n <Span\n key={i}\n stackColumns={stackColumns}\n size={rowConfig[i]}\n reductionInPx={cellWidthReduction}\n >\n <GridColumnComponent key={i} inputs={{ children: column.children }} />\n </Span>\n ));\n })}\n </div>\n );\n};\n\ninterface SpanProps {\n size: number;\n reductionInPx: number;\n stackColumns: boolean;\n children: React.ReactNode;\n}\n\nconst Span = ({ size, children, reductionInPx, stackColumns }: SpanProps) => {\n const width = stackColumns ? \"100%\" : `calc(${(size / 12) * 100}% - ${reductionInPx}px)`;\n\n return (\n <div\n style={{\n flex: `0 0 ${width}`,\n maxWidth: width,\n boxSizing: \"border-box\"\n }}\n >\n {children}\n </div>\n );\n};\n"],"names":["GridColumnComponent","inputs","GridComponent","styles","breakpoint","gridLayout","columns","columnGap","stackAtBreakpoint","reverseWhenStacked","rowConfig","size","parseInt","rows","i","cellWidthReduction","stackColumns","column","Span","children","reductionInPx","width"],"mappings":";AAGO,MAAMA,sBAAsB,CAAC,EAChCC,MAAM,EAGT,GACU,WAAP,GAAO,0CAAGA,OAAO,QAAQ;AAiBtB,MAAMC,gBAAgB,CAAC,EAAED,MAAM,EAAEE,MAAM,EAAEC,UAAU,EAAa;IACnE,MAAM,EAAEC,aAAa,IAAI,EAAEC,OAAO,EAAEC,SAAS,EAAEC,iBAAiB,EAAEC,kBAAkB,EAAE,GAAGR;IACzF,MAAMS,YAAYL,WAAW,KAAK,CAAC,KAAK,GAAG,CAACM,CAAAA,OAAQC,SAASD;IAC7D,MAAME,OAAmB,EAAE;IAG3B,IAAK,IAAIC,IAAI,GAAGA,IAAIR,QAAQ,MAAM,EAAEQ,KAAKJ,UAAU,MAAM,CACrDG,KAAK,IAAI,CAACP,QAAQ,KAAK,CAACQ,GAAGA,IAAIJ,UAAU,MAAM;IAInD,MAAMK,qBAAqBR,YAAYA,YAAYA,YAAYG,UAAU,MAAM,GAAG;IAElF,MAAMM,eAAeZ,eAAeI;IAEpC,IAAIQ,cACAb,OAAO,aAAa,GAAGM,qBAAqB,mBAAmB;IAGnE,OAAO,WAAP,GACI,oBAAC;QAAI,OAAON;OACPU,KAAK,GAAG,CAACP,CAAAA,UACCA,QAAQ,GAAG,CAAC,CAACW,QAAQH,IAAAA,WAAAA,GACxB,oBAACI,MAAIA;gBACD,KAAKJ;gBACL,cAAcE;gBACd,MAAMN,SAAS,CAACI,EAAE;gBAClB,eAAeC;6BAEf,oBAACf,qBAAmBA;gBAAC,KAAKc;gBAAG,QAAQ;oBAAE,UAAUG,OAAO,QAAQ;gBAAC;;AAMzF;AASA,MAAMC,OAAO,CAAC,EAAEP,IAAI,EAAEQ,QAAQ,EAAEC,aAAa,EAAEJ,YAAY,EAAa;IACpE,MAAMK,QAAQL,eAAe,SAAS,CAAC,KAAK,EAAGL,OAAO,KAAM,IAAI,IAAI,EAAES,cAAc,GAAG,CAAC;IAExF,OAAO,WAAP,GACI,oBAAC;QACG,OAAO;YACH,MAAM,CAAC,IAAI,EAAEC,OAAO;YACpB,UAAUA;YACV,WAAW;QACf;OAECF;AAGb"}
@@ -1,175 +1,171 @@
1
1
  "use client";
2
-
3
- import { createBooleanInput, createElement, createNumberInput, createObjectInput, createSelectInput, createSlotInput, createTextInput } from "@webiny/website-builder-sdk";
2
+ import { createBooleanInput, createElement as website_builder_sdk_createElement, createNumberInput, createObjectInput, createSelectInput, createSlotInput, createTextInput } from "@webiny/website-builder-sdk";
4
3
  import { createComponent } from "../createComponent.js";
5
4
  import { GridComponent } from "./Grid.js";
6
- export const Grid = createComponent(GridComponent, {
7
- name: "Webiny/Grid",
8
- label: "Grid",
9
- aiContext: "Multi-column layout container. Set gridLayout to a dash-separated pattern (e.g. '6-6' for two equal columns, '8-4' for wide-narrow, '4-4-4' for three equal). Each segment becomes a GridColumn. Columns stack vertically on smaller screens when stackAtBreakpoint is set.",
10
- image: `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M120-520v-320h320v320H120Zm0 400v-320h320v320H120Zm400-400v-320h320v320H520Zm0 400v-320h320v320H520ZM200-600h160v-160H200v160Zm400 0h160v-160H600v160Zm0 400h160v-160H600v160Zm-400 0h160v-160H200v160Zm400-400Zm0 240Zm-240 0Zm0-240Z"/></svg>`,
11
- group: "basic",
12
- autoApplyStyles: false,
13
- inputs: [createTextInput({
14
- name: "gridLayout",
15
- label: "Grid Layout",
16
- renderer: "Webiny/GridLayout",
17
- onChange: ({
18
- inputs,
19
- createElement
20
- }) => {
21
- const rowColumnCount = inputs.gridLayout.split("-").length;
22
- const columns = inputs.columns.length;
23
- const remainder = columns % rowColumnCount;
24
- if (remainder !== 0) {
25
- const fullColumnCount = rowColumnCount * inputs.rowCount;
26
- const toCreate = columns > fullColumnCount ? remainder : rowColumnCount - remainder;
27
- Array.from({
28
- length: toCreate
29
- }).forEach(() => {
30
- inputs.columns.push({
31
- children: createElement({
32
- component: "Webiny/GridColumn"
33
- })
34
- });
35
- });
36
- }
37
- inputs.rowCount = inputs.columns.length / rowColumnCount;
38
- }
39
- }), createNumberInput({
40
- name: "rowCount",
41
- label: "Row Count",
42
- defaultValue: 1,
43
- minValue: 1,
44
- onChange: ({
45
- inputs,
46
- createElement
47
- }) => {
48
- const gridLayout = inputs.gridLayout;
49
- const columnCount = gridLayout.split("-").length;
50
- const rowCount = Math.max(1, inputs.rowCount);
51
- const columns = inputs.columns;
52
- const rows = [];
53
-
54
- // Chunk columns into rows
55
- for (let i = 0; i < columns.length; i += columnCount) {
56
- rows.push(columns.slice(i, i + columnCount));
57
- }
58
- if (rows.length > rowCount) {
59
- inputs.columns = columns.slice(0, columnCount * rowCount);
60
- return;
61
- }
62
- const createRows = Math.max(0, rowCount - rows.length);
63
- if (createRows <= 0) {
64
- return;
65
- }
66
- const newRows = Array.from({
67
- length: createRows * columnCount
68
- }).map(() => {
69
- return {
70
- children: createElement({
71
- component: "Webiny/GridColumn"
72
- })
73
- };
74
- });
75
- inputs.columns.push(...newRows);
76
- }
77
- }), createNumberInput({
78
- name: "rowGap",
79
- label: "Row Gap",
80
- defaultValue: 0,
81
- responsive: true,
82
- onChange: ({
83
- inputs,
84
- styles
85
- }) => {
86
- const rowGap = parseInt(inputs.rowGap);
87
- if (isNaN(rowGap)) {
88
- delete styles.rowGap;
89
- } else {
90
- styles.rowGap = `${inputs.rowGap}px`;
91
- }
92
- }
93
- }), createNumberInput({
94
- name: "columnGap",
95
- label: "Column Gap",
96
- defaultValue: 0,
97
- responsive: true,
98
- onChange: ({
99
- inputs,
100
- styles
101
- }) => {
102
- const columnGap = parseInt(inputs.columnGap);
103
- if (isNaN(columnGap)) {
104
- delete styles.columnGap;
105
- } else {
106
- styles.columnGap = `${inputs.columnGap}px`;
107
- }
108
- }
109
- }), createSelectInput({
110
- name: "stackAtBreakpoint",
111
- label: "Stack at breakpoint",
112
- options: [{
113
- label: "Tablet",
114
- value: "tablet"
115
- }, {
116
- label: "Mobile",
117
- value: "mobile"
118
- }]
119
- }), createBooleanInput({
120
- name: "reverseWhenStacked",
121
- label: "Reverse columns when stacked"
122
- }), createObjectInput({
123
- name: "columns",
124
- list: true,
125
- hideFromUi: true,
126
- fields: [createSlotInput({
127
- name: "children",
128
- list: false,
129
- components: ["Webiny/GridColumn"]
130
- })]
131
- })],
132
- defaults: {
133
- inputs: {
134
- gridLayout: "6-6",
135
- columns: [{
136
- children: createElement({
137
- component: "Webiny/GridColumn",
138
- inputs: {
139
- children: [createElement({
140
- component: "Webiny/Lexical"
141
- })]
142
- }
143
- })
144
- }, {
145
- children: createElement({
146
- component: "Webiny/GridColumn",
147
- inputs: {
148
- children: [createElement({
149
- component: "Webiny/Lexical"
150
- })]
151
- }
5
+ const Grid = createComponent(GridComponent, {
6
+ name: "Webiny/Grid",
7
+ label: "Grid",
8
+ aiContext: "Multi-column layout container. Set gridLayout to a dash-separated pattern (e.g. '6-6' for two equal columns, '8-4' for wide-narrow, '4-4-4' for three equal). Each segment becomes a GridColumn. Columns stack vertically on smaller screens when stackAtBreakpoint is set.",
9
+ image: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M120-520v-320h320v320H120Zm0 400v-320h320v320H120Zm400-400v-320h320v320H520Zm0 400v-320h320v320H520ZM200-600h160v-160H200v160Zm400 0h160v-160H600v160Zm0 400h160v-160H600v160Zm-400 0h160v-160H200v160Zm400-400Zm0 240Zm-240 0Zm0-240Z"/></svg>',
10
+ group: "basic",
11
+ autoApplyStyles: false,
12
+ inputs: [
13
+ createTextInput({
14
+ name: "gridLayout",
15
+ label: "Grid Layout",
16
+ renderer: "Webiny/GridLayout",
17
+ onChange: ({ inputs, createElement })=>{
18
+ const rowColumnCount = inputs.gridLayout.split("-").length;
19
+ const columns = inputs.columns.length;
20
+ const remainder = columns % rowColumnCount;
21
+ if (0 !== remainder) {
22
+ const fullColumnCount = rowColumnCount * inputs.rowCount;
23
+ const toCreate = columns > fullColumnCount ? remainder : rowColumnCount - remainder;
24
+ Array.from({
25
+ length: toCreate
26
+ }).forEach(()=>{
27
+ inputs.columns.push({
28
+ children: createElement({
29
+ component: "Webiny/GridColumn"
30
+ })
31
+ });
32
+ });
33
+ }
34
+ inputs.rowCount = inputs.columns.length / rowColumnCount;
35
+ }
36
+ }),
37
+ createNumberInput({
38
+ name: "rowCount",
39
+ label: "Row Count",
40
+ defaultValue: 1,
41
+ minValue: 1,
42
+ onChange: ({ inputs, createElement })=>{
43
+ const gridLayout = inputs.gridLayout;
44
+ const columnCount = gridLayout.split("-").length;
45
+ const rowCount = Math.max(1, inputs.rowCount);
46
+ const columns = inputs.columns;
47
+ const rows = [];
48
+ for(let i = 0; i < columns.length; i += columnCount)rows.push(columns.slice(i, i + columnCount));
49
+ if (rows.length > rowCount) {
50
+ inputs.columns = columns.slice(0, columnCount * rowCount);
51
+ return;
52
+ }
53
+ const createRows = Math.max(0, rowCount - rows.length);
54
+ if (createRows <= 0) return;
55
+ const newRows = Array.from({
56
+ length: createRows * columnCount
57
+ }).map(()=>({
58
+ children: createElement({
59
+ component: "Webiny/GridColumn"
60
+ })
61
+ }));
62
+ inputs.columns.push(...newRows);
63
+ }
64
+ }),
65
+ createNumberInput({
66
+ name: "rowGap",
67
+ label: "Row Gap",
68
+ defaultValue: 0,
69
+ responsive: true,
70
+ onChange: ({ inputs, styles })=>{
71
+ const rowGap = parseInt(inputs.rowGap);
72
+ if (isNaN(rowGap)) delete styles.rowGap;
73
+ else styles.rowGap = `${inputs.rowGap}px`;
74
+ }
75
+ }),
76
+ createNumberInput({
77
+ name: "columnGap",
78
+ label: "Column Gap",
79
+ defaultValue: 0,
80
+ responsive: true,
81
+ onChange: ({ inputs, styles })=>{
82
+ const columnGap = parseInt(inputs.columnGap);
83
+ if (isNaN(columnGap)) delete styles.columnGap;
84
+ else styles.columnGap = `${inputs.columnGap}px`;
85
+ }
86
+ }),
87
+ createSelectInput({
88
+ name: "stackAtBreakpoint",
89
+ label: "Stack at breakpoint",
90
+ options: [
91
+ {
92
+ label: "Tablet",
93
+ value: "tablet"
94
+ },
95
+ {
96
+ label: "Mobile",
97
+ value: "mobile"
98
+ }
99
+ ]
100
+ }),
101
+ createBooleanInput({
102
+ name: "reverseWhenStacked",
103
+ label: "Reverse columns when stacked"
104
+ }),
105
+ createObjectInput({
106
+ name: "columns",
107
+ list: true,
108
+ hideFromUi: true,
109
+ fields: [
110
+ createSlotInput({
111
+ name: "children",
112
+ list: false,
113
+ components: [
114
+ "Webiny/GridColumn"
115
+ ]
116
+ })
117
+ ]
152
118
  })
153
- }]
154
- },
155
- styles: {
156
- boxSizing: "border-box",
157
- display: "flex",
158
- flexDirection: "row",
159
- flexWrap: "wrap",
160
- justifyContent: "flex-start",
161
- alignItems: "stretch",
162
- width: "100%",
163
- marginTop: "0px",
164
- marginBottom: "0px",
165
- marginLeft: "0px",
166
- marginRight: "0px",
167
- paddingTop: "5px",
168
- paddingRight: "5px",
169
- paddingBottom: "5px",
170
- paddingLeft: "5px"
119
+ ],
120
+ defaults: {
121
+ inputs: {
122
+ gridLayout: "6-6",
123
+ columns: [
124
+ {
125
+ children: website_builder_sdk_createElement({
126
+ component: "Webiny/GridColumn",
127
+ inputs: {
128
+ children: [
129
+ website_builder_sdk_createElement({
130
+ component: "Webiny/Lexical"
131
+ })
132
+ ]
133
+ }
134
+ })
135
+ },
136
+ {
137
+ children: website_builder_sdk_createElement({
138
+ component: "Webiny/GridColumn",
139
+ inputs: {
140
+ children: [
141
+ website_builder_sdk_createElement({
142
+ component: "Webiny/Lexical"
143
+ })
144
+ ]
145
+ }
146
+ })
147
+ }
148
+ ]
149
+ },
150
+ styles: {
151
+ boxSizing: "border-box",
152
+ display: "flex",
153
+ flexDirection: "row",
154
+ flexWrap: "wrap",
155
+ justifyContent: "flex-start",
156
+ alignItems: "stretch",
157
+ width: "100%",
158
+ marginTop: "0px",
159
+ marginBottom: "0px",
160
+ marginLeft: "0px",
161
+ marginRight: "0px",
162
+ paddingTop: "5px",
163
+ paddingRight: "5px",
164
+ paddingBottom: "5px",
165
+ paddingLeft: "5px"
166
+ }
171
167
  }
172
- }
173
168
  });
169
+ export { Grid };
174
170
 
175
171
  //# sourceMappingURL=Grid.manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createBooleanInput","createElement","createNumberInput","createObjectInput","createSelectInput","createSlotInput","createTextInput","createComponent","GridComponent","Grid","name","label","aiContext","image","group","autoApplyStyles","inputs","renderer","onChange","rowColumnCount","gridLayout","split","length","columns","remainder","fullColumnCount","rowCount","toCreate","Array","from","forEach","push","children","component","defaultValue","minValue","columnCount","Math","max","rows","i","slice","createRows","newRows","map","responsive","styles","rowGap","parseInt","isNaN","columnGap","options","value","list","hideFromUi","fields","components","defaults","boxSizing","display","flexDirection","flexWrap","justifyContent","alignItems","width","marginTop","marginBottom","marginLeft","marginRight","paddingTop","paddingRight","paddingBottom","paddingLeft"],"sources":["Grid.manifest.ts"],"sourcesContent":["\"use client\";\nimport {\n createBooleanInput,\n createElement,\n createNumberInput,\n createObjectInput,\n createSelectInput,\n createSlotInput,\n createTextInput\n} from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { GridComponent } from \"./Grid.js\";\n\nexport interface Column {\n children: React.ReactNode;\n}\nexport const Grid = createComponent(GridComponent, {\n name: \"Webiny/Grid\",\n label: \"Grid\",\n aiContext:\n \"Multi-column layout container. Set gridLayout to a dash-separated pattern (e.g. '6-6' for two equal columns, '8-4' for wide-narrow, '4-4-4' for three equal). Each segment becomes a GridColumn. Columns stack vertically on smaller screens when stackAtBreakpoint is set.\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M120-520v-320h320v320H120Zm0 400v-320h320v320H120Zm400-400v-320h320v320H520Zm0 400v-320h320v320H520ZM200-600h160v-160H200v160Zm400 0h160v-160H600v160Zm0 400h160v-160H600v160Zm-400 0h160v-160H200v160Zm400-400Zm0 240Zm-240 0Zm0-240Z\"/></svg>`,\n group: \"basic\",\n autoApplyStyles: false,\n inputs: [\n createTextInput({\n name: \"gridLayout\",\n label: \"Grid Layout\",\n renderer: \"Webiny/GridLayout\",\n onChange: ({ inputs, createElement }) => {\n const rowColumnCount = inputs.gridLayout.split(\"-\").length;\n const columns = inputs.columns.length;\n\n const remainder = columns % rowColumnCount;\n\n if (remainder !== 0) {\n const fullColumnCount = rowColumnCount * inputs.rowCount;\n const toCreate =\n columns > fullColumnCount ? remainder : rowColumnCount - remainder;\n\n Array.from({ length: toCreate }).forEach(() => {\n inputs.columns.push({\n children: createElement({\n component: \"Webiny/GridColumn\"\n })\n });\n });\n }\n\n inputs.rowCount = inputs.columns.length / rowColumnCount;\n }\n }),\n createNumberInput({\n name: \"rowCount\",\n label: \"Row Count\",\n defaultValue: 1,\n minValue: 1,\n onChange: ({ inputs, createElement }) => {\n const gridLayout = inputs.gridLayout;\n const columnCount = gridLayout.split(\"-\").length;\n const rowCount = Math.max(1, inputs.rowCount);\n const columns = inputs.columns;\n const rows: Column[][] = [];\n\n // Chunk columns into rows\n for (let i = 0; i < columns.length; i += columnCount) {\n rows.push(columns.slice(i, i + columnCount));\n }\n\n if (rows.length > rowCount) {\n inputs.columns = columns.slice(0, columnCount * rowCount);\n return;\n }\n\n const createRows = Math.max(0, rowCount - rows.length);\n\n if (createRows <= 0) {\n return;\n }\n\n const newRows = Array.from({ length: createRows * columnCount }).map(() => {\n return {\n children: createElement({\n component: \"Webiny/GridColumn\"\n })\n };\n });\n\n inputs.columns.push(...newRows);\n }\n }),\n createNumberInput({\n name: \"rowGap\",\n label: \"Row Gap\",\n defaultValue: 0,\n responsive: true,\n onChange: ({ inputs, styles }) => {\n const rowGap = parseInt(inputs.rowGap);\n if (isNaN(rowGap)) {\n delete styles.rowGap;\n } else {\n styles.rowGap = `${inputs.rowGap}px`;\n }\n }\n }),\n createNumberInput({\n name: \"columnGap\",\n label: \"Column Gap\",\n defaultValue: 0,\n responsive: true,\n onChange: ({ inputs, styles }) => {\n const columnGap = parseInt(inputs.columnGap);\n if (isNaN(columnGap)) {\n delete styles.columnGap;\n } else {\n styles.columnGap = `${inputs.columnGap}px`;\n }\n }\n }),\n createSelectInput({\n name: \"stackAtBreakpoint\",\n label: \"Stack at breakpoint\",\n options: [\n { label: \"Tablet\", value: \"tablet\" },\n { label: \"Mobile\", value: \"mobile\" }\n ]\n }),\n createBooleanInput({\n name: \"reverseWhenStacked\",\n label: \"Reverse columns when stacked\"\n }),\n createObjectInput({\n name: \"columns\",\n list: true,\n hideFromUi: true,\n fields: [\n createSlotInput({\n name: \"children\",\n list: false,\n components: [\"Webiny/GridColumn\"]\n })\n ]\n })\n ],\n defaults: {\n inputs: {\n gridLayout: \"6-6\",\n columns: [\n {\n children: createElement({\n component: \"Webiny/GridColumn\",\n inputs: {\n children: [\n createElement({\n component: \"Webiny/Lexical\"\n })\n ]\n }\n })\n },\n {\n children: createElement({\n component: \"Webiny/GridColumn\",\n inputs: {\n children: [\n createElement({\n component: \"Webiny/Lexical\"\n })\n ]\n }\n })\n }\n ]\n },\n styles: {\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n alignItems: \"stretch\",\n width: \"100%\",\n marginTop: \"0px\",\n marginBottom: \"0px\",\n marginLeft: \"0px\",\n marginRight: \"0px\",\n paddingTop: \"5px\",\n paddingRight: \"5px\",\n paddingBottom: \"5px\",\n paddingLeft: \"5px\"\n }\n }\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Grid.manifest.js","sources":["../../src/editorComponents/Grid.manifest.ts"],"sourcesContent":["\"use client\";\nimport {\n createBooleanInput,\n createElement,\n createNumberInput,\n createObjectInput,\n createSelectInput,\n createSlotInput,\n createTextInput\n} from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { GridComponent } from \"./Grid.js\";\n\nexport interface Column {\n children: React.ReactNode;\n}\nexport const Grid = createComponent(GridComponent, {\n name: \"Webiny/Grid\",\n label: \"Grid\",\n aiContext:\n \"Multi-column layout container. Set gridLayout to a dash-separated pattern (e.g. '6-6' for two equal columns, '8-4' for wide-narrow, '4-4-4' for three equal). Each segment becomes a GridColumn. Columns stack vertically on smaller screens when stackAtBreakpoint is set.\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M120-520v-320h320v320H120Zm0 400v-320h320v320H120Zm400-400v-320h320v320H520Zm0 400v-320h320v320H520ZM200-600h160v-160H200v160Zm400 0h160v-160H600v160Zm0 400h160v-160H600v160Zm-400 0h160v-160H200v160Zm400-400Zm0 240Zm-240 0Zm0-240Z\"/></svg>`,\n group: \"basic\",\n autoApplyStyles: false,\n inputs: [\n createTextInput({\n name: \"gridLayout\",\n label: \"Grid Layout\",\n renderer: \"Webiny/GridLayout\",\n onChange: ({ inputs, createElement }) => {\n const rowColumnCount = inputs.gridLayout.split(\"-\").length;\n const columns = inputs.columns.length;\n\n const remainder = columns % rowColumnCount;\n\n if (remainder !== 0) {\n const fullColumnCount = rowColumnCount * inputs.rowCount;\n const toCreate =\n columns > fullColumnCount ? remainder : rowColumnCount - remainder;\n\n Array.from({ length: toCreate }).forEach(() => {\n inputs.columns.push({\n children: createElement({\n component: \"Webiny/GridColumn\"\n })\n });\n });\n }\n\n inputs.rowCount = inputs.columns.length / rowColumnCount;\n }\n }),\n createNumberInput({\n name: \"rowCount\",\n label: \"Row Count\",\n defaultValue: 1,\n minValue: 1,\n onChange: ({ inputs, createElement }) => {\n const gridLayout = inputs.gridLayout;\n const columnCount = gridLayout.split(\"-\").length;\n const rowCount = Math.max(1, inputs.rowCount);\n const columns = inputs.columns;\n const rows: Column[][] = [];\n\n // Chunk columns into rows\n for (let i = 0; i < columns.length; i += columnCount) {\n rows.push(columns.slice(i, i + columnCount));\n }\n\n if (rows.length > rowCount) {\n inputs.columns = columns.slice(0, columnCount * rowCount);\n return;\n }\n\n const createRows = Math.max(0, rowCount - rows.length);\n\n if (createRows <= 0) {\n return;\n }\n\n const newRows = Array.from({ length: createRows * columnCount }).map(() => {\n return {\n children: createElement({\n component: \"Webiny/GridColumn\"\n })\n };\n });\n\n inputs.columns.push(...newRows);\n }\n }),\n createNumberInput({\n name: \"rowGap\",\n label: \"Row Gap\",\n defaultValue: 0,\n responsive: true,\n onChange: ({ inputs, styles }) => {\n const rowGap = parseInt(inputs.rowGap);\n if (isNaN(rowGap)) {\n delete styles.rowGap;\n } else {\n styles.rowGap = `${inputs.rowGap}px`;\n }\n }\n }),\n createNumberInput({\n name: \"columnGap\",\n label: \"Column Gap\",\n defaultValue: 0,\n responsive: true,\n onChange: ({ inputs, styles }) => {\n const columnGap = parseInt(inputs.columnGap);\n if (isNaN(columnGap)) {\n delete styles.columnGap;\n } else {\n styles.columnGap = `${inputs.columnGap}px`;\n }\n }\n }),\n createSelectInput({\n name: \"stackAtBreakpoint\",\n label: \"Stack at breakpoint\",\n options: [\n { label: \"Tablet\", value: \"tablet\" },\n { label: \"Mobile\", value: \"mobile\" }\n ]\n }),\n createBooleanInput({\n name: \"reverseWhenStacked\",\n label: \"Reverse columns when stacked\"\n }),\n createObjectInput({\n name: \"columns\",\n list: true,\n hideFromUi: true,\n fields: [\n createSlotInput({\n name: \"children\",\n list: false,\n components: [\"Webiny/GridColumn\"]\n })\n ]\n })\n ],\n defaults: {\n inputs: {\n gridLayout: \"6-6\",\n columns: [\n {\n children: createElement({\n component: \"Webiny/GridColumn\",\n inputs: {\n children: [\n createElement({\n component: \"Webiny/Lexical\"\n })\n ]\n }\n })\n },\n {\n children: createElement({\n component: \"Webiny/GridColumn\",\n inputs: {\n children: [\n createElement({\n component: \"Webiny/Lexical\"\n })\n ]\n }\n })\n }\n ]\n },\n styles: {\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n alignItems: \"stretch\",\n width: \"100%\",\n marginTop: \"0px\",\n marginBottom: \"0px\",\n marginLeft: \"0px\",\n marginRight: \"0px\",\n paddingTop: \"5px\",\n paddingRight: \"5px\",\n paddingBottom: \"5px\",\n paddingLeft: \"5px\"\n }\n }\n});\n"],"names":["Grid","createComponent","GridComponent","createTextInput","inputs","createElement","rowColumnCount","columns","remainder","fullColumnCount","toCreate","Array","createNumberInput","gridLayout","columnCount","rowCount","Math","rows","i","createRows","newRows","styles","rowGap","parseInt","isNaN","columnGap","createSelectInput","createBooleanInput","createObjectInput","createSlotInput"],"mappings":"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"}
@@ -1,8 +1,5 @@
1
- import React from "react";
2
- export const GridColumnComponent = ({
3
- inputs
4
- }) => {
5
- return /*#__PURE__*/React.createElement(React.Fragment, null, inputs.children);
6
- };
1
+ import react from "react";
2
+ const GridColumnComponent = ({ inputs })=>/*#__PURE__*/ react.createElement(react.Fragment, null, inputs.children);
3
+ export { GridColumnComponent };
7
4
 
8
5
  //# sourceMappingURL=GridColumn.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","GridColumnComponent","inputs","createElement","Fragment","children"],"sources":["GridColumn.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ComponentPropsWithChildren } from \"~/types.js\";\n\nexport const GridColumnComponent = ({\n inputs\n}: {\n inputs: ComponentPropsWithChildren[\"inputs\"];\n}) => {\n return <>{inputs.children}</>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAChCC;AAGJ,CAAC,KAAK;EACF,oBAAOF,KAAA,CAAAG,aAAA,CAAAH,KAAA,CAAAI,QAAA,QAAGF,MAAM,CAACG,QAAW,CAAC;AACjC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/GridColumn.js","sources":["../../src/editorComponents/GridColumn.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ComponentPropsWithChildren } from \"~/types.js\";\n\nexport const GridColumnComponent = ({\n inputs\n}: {\n inputs: ComponentPropsWithChildren[\"inputs\"];\n}) => {\n return <>{inputs.children}</>;\n};\n"],"names":["GridColumnComponent","inputs"],"mappings":";AAGO,MAAMA,sBAAsB,CAAC,EAChCC,MAAM,EAGT,GACU,WAAP,GAAO,0CAAGA,OAAO,QAAQ"}
@@ -1,26 +1,28 @@
1
1
  "use client";
2
-
3
2
  import { StyleSettings } from "@webiny/website-builder-sdk";
4
3
  import { createComponent } from "../createComponent.js";
5
4
  import { GridColumnComponent } from "./GridColumn.js";
6
- export const GridColumn = createComponent(GridColumnComponent, {
7
- name: "Webiny/GridColumn",
8
- label: "Column",
9
- aiContext: "A single cell inside a Grid. Accepts any child elements. Created automatically when a Grid's layout changes.",
10
- image: `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M600-120q-33 0-56.5-23.5T520-200v-560q0-33 23.5-56.5T600-840h160q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H600Zm0-640v560h160v-560H600ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h160q33 0 56.5 23.5T440-760v560q0 33-23.5 56.5T360-120H200Zm0-640v560h160v-560H200Zm560 0H600h160Zm-400 0H200h160Z"/></svg>`,
11
- canDrag: false,
12
- canDelete: false,
13
- acceptsChildren: true,
14
- hideFromToolbar: true,
15
- hideStyleSettings: [StyleSettings.Visibility],
16
- defaults: {
17
- styles: {
18
- paddingTop: "10px",
19
- paddingRight: "10px",
20
- paddingBottom: "10px",
21
- paddingLeft: "10px"
5
+ const GridColumn = createComponent(GridColumnComponent, {
6
+ name: "Webiny/GridColumn",
7
+ label: "Column",
8
+ aiContext: "A single cell inside a Grid. Accepts any child elements. Created automatically when a Grid's layout changes.",
9
+ image: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M600-120q-33 0-56.5-23.5T520-200v-560q0-33 23.5-56.5T600-840h160q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H600Zm0-640v560h160v-560H600ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h160q33 0 56.5 23.5T440-760v560q0 33-23.5 56.5T360-120H200Zm0-640v560h160v-560H200Zm560 0H600h160Zm-400 0H200h160Z"/></svg>',
10
+ canDrag: false,
11
+ canDelete: false,
12
+ acceptsChildren: true,
13
+ hideFromToolbar: true,
14
+ hideStyleSettings: [
15
+ StyleSettings.Visibility
16
+ ],
17
+ defaults: {
18
+ styles: {
19
+ paddingTop: "10px",
20
+ paddingRight: "10px",
21
+ paddingBottom: "10px",
22
+ paddingLeft: "10px"
23
+ }
22
24
  }
23
- }
24
25
  });
26
+ export { GridColumn };
25
27
 
26
28
  //# sourceMappingURL=GridColumn.manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSettings","createComponent","GridColumnComponent","GridColumn","name","label","aiContext","image","canDrag","canDelete","acceptsChildren","hideFromToolbar","hideStyleSettings","Visibility","defaults","styles","paddingTop","paddingRight","paddingBottom","paddingLeft"],"sources":["GridColumn.manifest.ts"],"sourcesContent":["\"use client\";\nimport { StyleSettings } from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { GridColumnComponent } from \"./GridColumn.js\";\n\nexport const GridColumn = createComponent(GridColumnComponent, {\n name: \"Webiny/GridColumn\",\n label: \"Column\",\n aiContext:\n \"A single cell inside a Grid. Accepts any child elements. Created automatically when a Grid's layout changes.\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M600-120q-33 0-56.5-23.5T520-200v-560q0-33 23.5-56.5T600-840h160q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H600Zm0-640v560h160v-560H600ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h160q33 0 56.5 23.5T440-760v560q0 33-23.5 56.5T360-120H200Zm0-640v560h160v-560H200Zm560 0H600h160Zm-400 0H200h160Z\"/></svg>`,\n canDrag: false,\n canDelete: false,\n acceptsChildren: true,\n hideFromToolbar: true,\n hideStyleSettings: [StyleSettings.Visibility],\n defaults: {\n styles: {\n paddingTop: \"10px\",\n paddingRight: \"10px\",\n paddingBottom: \"10px\",\n paddingLeft: \"10px\"\n }\n }\n});\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,eAAe;AACxB,SAASC,mBAAmB;AAE5B,OAAO,MAAMC,UAAU,GAAGF,eAAe,CAACC,mBAAmB,EAAE;EAC3DE,IAAI,EAAE,mBAAmB;EACzBC,KAAK,EAAE,QAAQ;EACfC,SAAS,EACL,8GAA8G;EAClHC,KAAK,EAAE,4bAA4b;EACncC,OAAO,EAAE,KAAK;EACdC,SAAS,EAAE,KAAK;EAChBC,eAAe,EAAE,IAAI;EACrBC,eAAe,EAAE,IAAI;EACrBC,iBAAiB,EAAE,CAACZ,aAAa,CAACa,UAAU,CAAC;EAC7CC,QAAQ,EAAE;IACNC,MAAM,EAAE;MACJC,UAAU,EAAE,MAAM;MAClBC,YAAY,EAAE,MAAM;MACpBC,aAAa,EAAE,MAAM;MACrBC,WAAW,EAAE;IACjB;EACJ;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/GridColumn.manifest.js","sources":["../../src/editorComponents/GridColumn.manifest.ts"],"sourcesContent":["\"use client\";\nimport { StyleSettings } from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { GridColumnComponent } from \"./GridColumn.js\";\n\nexport const GridColumn = createComponent(GridColumnComponent, {\n name: \"Webiny/GridColumn\",\n label: \"Column\",\n aiContext:\n \"A single cell inside a Grid. Accepts any child elements. Created automatically when a Grid's layout changes.\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M600-120q-33 0-56.5-23.5T520-200v-560q0-33 23.5-56.5T600-840h160q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H600Zm0-640v560h160v-560H600ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h160q33 0 56.5 23.5T440-760v560q0 33-23.5 56.5T360-120H200Zm0-640v560h160v-560H200Zm560 0H600h160Zm-400 0H200h160Z\"/></svg>`,\n canDrag: false,\n canDelete: false,\n acceptsChildren: true,\n hideFromToolbar: true,\n hideStyleSettings: [StyleSettings.Visibility],\n defaults: {\n styles: {\n paddingTop: \"10px\",\n paddingRight: \"10px\",\n paddingBottom: \"10px\",\n paddingLeft: \"10px\"\n }\n }\n});\n"],"names":["GridColumn","createComponent","GridColumnComponent","StyleSettings"],"mappings":";;;;AAKO,MAAMA,aAAaC,gBAAgBC,qBAAqB;IAC3D,MAAM;IACN,OAAO;IACP,WACI;IACJ,OAAO;IACP,SAAS;IACT,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;QAACC,cAAc,UAAU;KAAC;IAC7C,UAAU;QACN,QAAQ;YACJ,YAAY;YACZ,cAAc;YACd,eAAe;YACf,aAAa;QACjB;IACJ;AACJ"}