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

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,126 +1,106 @@
1
- import React, { useCallback, useEffect, useState } from "react";
1
+ import react, { useCallback, useEffect, useState } from "react";
2
2
  import { contentSdk } from "@webiny/website-builder-sdk";
3
- const SUPPORTED_IMAGE_RESIZE_WIDTHS = [100, 300, 500, 750, 1000, 1500, 2500];
4
- export const ImageComponent = props => {
5
- const image = useImage(props);
6
- if (!image.src) {
7
- return /*#__PURE__*/React.createElement(ImagePlaceholder, {
8
- style: props.styles
3
+ const SUPPORTED_IMAGE_RESIZE_WIDTHS = [
4
+ 100,
5
+ 300,
6
+ 500,
7
+ 750,
8
+ 1000,
9
+ 1500,
10
+ 2500
11
+ ];
12
+ const ImageComponent = (props)=>{
13
+ const image = useImage(props);
14
+ if (!image.src) return /*#__PURE__*/ react.createElement(ImagePlaceholder, {
15
+ style: props.styles
9
16
  });
10
- }
11
- if (image.tag === "object") {
12
- return /*#__PURE__*/React.createElement("object", {
13
- style: image.styles,
14
- title: image.title,
15
- data: image.src
17
+ if ("object" === image.tag) return /*#__PURE__*/ react.createElement("object", {
18
+ style: image.styles,
19
+ title: image.title,
20
+ data: image.src
16
21
  });
17
- }
18
- return /*#__PURE__*/React.createElement(React.Fragment, null, !image.isLoaded && /*#__PURE__*/React.createElement(ImagePlaceholder, {
19
- style: image.styles
20
- }), /*#__PURE__*/React.createElement("img", {
21
- alt: image.altText,
22
- onLoad: image.onLoad,
23
- title: image.title,
24
- src: image.src,
25
- srcSet: image.srcSet,
26
- style: image.styles
27
- }));
22
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, !image.isLoaded && /*#__PURE__*/ react.createElement(ImagePlaceholder, {
23
+ style: image.styles
24
+ }), /*#__PURE__*/ react.createElement("img", {
25
+ alt: image.altText,
26
+ onLoad: image.onLoad,
27
+ title: image.title,
28
+ src: image.src,
29
+ srcSet: image.srcSet,
30
+ style: image.styles
31
+ }));
28
32
  };
29
- const ImagePlaceholder = ({
30
- style
31
- }) => {
32
- return /*#__PURE__*/React.createElement("div", {
33
- style: {
34
- display: "flex",
35
- height: "200px",
36
- backgroundColor: "#f4f4f4",
37
- justifyContent: "center",
38
- alignItems: "center",
39
- fill: "#ffffff",
40
- ...style
41
- }
42
- }, /*#__PURE__*/React.createElement("svg", {
43
- style: {
44
- width: "70px",
45
- height: "70px",
46
- filter: "drop-shadow(rgba(0, 0, 0, 0.16) 0px 1px 0px)"
47
- },
48
- xmlns: "http://www.w3.org/2000/svg",
49
- height: "24px",
50
- viewBox: "0 -960 960 960",
51
- width: "24px"
52
- }, /*#__PURE__*/React.createElement("path", {
53
- d: "M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"
54
- })));
55
- };
56
- const getSrcSet = (src, srcSetWidths) => {
57
- return srcSetWidths.map(item => `${src}?width=${item} ${item}w`).join(", ");
58
- };
59
- const useImage = ({
60
- inputs,
61
- styles
62
- }) => {
63
- const [isLoaded, setIsLoaded] = useState(contentSdk.isEditing() ? false : true);
64
- const {
65
- title = "",
66
- altText,
67
- image
68
- } = inputs;
69
- const src = image?.src;
70
- const tag = src && src.endsWith(".svg") ? "object" : "img";
71
- useEffect(() => {
72
- if (!src) {
73
- setIsLoaded(false);
74
- }
75
- }, [src]);
76
-
77
- // If a fixed image width in pixels was set, let's filter out unneeded
78
- // image resize widths. For example, if 155px was set as the fixed image
79
- // width, then we want the `srcset` attribute to only contain 100w and 300w.
80
- let srcSetWidths = [];
81
- const width = styles.width?.toString();
82
- if (width && width.endsWith("px")) {
83
- const imageWidthInt = parseInt(width);
84
- for (let i = 0; i < SUPPORTED_IMAGE_RESIZE_WIDTHS.length; i++) {
85
- const supportedResizeWidth = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];
86
- if (imageWidthInt > supportedResizeWidth) {
87
- srcSetWidths.push(supportedResizeWidth);
88
- } else {
89
- srcSetWidths.push(supportedResizeWidth);
90
- break;
91
- }
92
- }
93
- } else {
94
- // If a fixed image width was not provided, we
95
- // rely on all the supported image resize widths.
96
- srcSetWidths = SUPPORTED_IMAGE_RESIZE_WIDTHS;
97
- }
98
- const srcSet = src ? getSrcSet(src, srcSetWidths) : "";
99
- const imageStyles = {
100
- maxWidth: "100%",
101
- opacity: isLoaded ? 1 : 0,
102
- transition: "opacity 0.3s ease",
103
- ...styles
104
- };
105
- const onLoad = useCallback(() => {
106
- if (contentSdk.isEditing()) {
107
- setTimeout(() => {
108
- setIsLoaded(true);
109
- }, 100);
110
- } else {
111
- setIsLoaded(true);
112
- }
113
- }, []);
114
- return {
115
- altText,
116
- isLoaded,
117
- onLoad,
118
- src: inputs.image?.src,
119
- srcSet,
120
- styles: imageStyles,
121
- tag,
122
- title
123
- };
33
+ const ImagePlaceholder = ({ style })=>/*#__PURE__*/ react.createElement("div", {
34
+ style: {
35
+ display: "flex",
36
+ height: "200px",
37
+ backgroundColor: "#f4f4f4",
38
+ justifyContent: "center",
39
+ alignItems: "center",
40
+ fill: "#ffffff",
41
+ ...style
42
+ }
43
+ }, /*#__PURE__*/ react.createElement("svg", {
44
+ style: {
45
+ width: "70px",
46
+ height: "70px",
47
+ filter: "drop-shadow(rgba(0, 0, 0, 0.16) 0px 1px 0px)"
48
+ },
49
+ xmlns: "http://www.w3.org/2000/svg",
50
+ height: "24px",
51
+ viewBox: "0 -960 960 960",
52
+ width: "24px"
53
+ }, /*#__PURE__*/ react.createElement("path", {
54
+ d: "M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"
55
+ })));
56
+ const getSrcSet = (src, srcSetWidths)=>srcSetWidths.map((item)=>`${src}?width=${item} ${item}w`).join(", ");
57
+ const useImage = ({ inputs, styles })=>{
58
+ const [isLoaded, setIsLoaded] = useState(!contentSdk.isEditing());
59
+ const { title = "", altText, image } = inputs;
60
+ const src = image?.src;
61
+ const tag = src && src.endsWith(".svg") ? "object" : "img";
62
+ useEffect(()=>{
63
+ if (!src) setIsLoaded(false);
64
+ }, [
65
+ src
66
+ ]);
67
+ let srcSetWidths = [];
68
+ const width = styles.width?.toString();
69
+ if (width && width.endsWith("px")) {
70
+ const imageWidthInt = parseInt(width);
71
+ for(let i = 0; i < SUPPORTED_IMAGE_RESIZE_WIDTHS.length; i++){
72
+ const supportedResizeWidth = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];
73
+ if (imageWidthInt > supportedResizeWidth) srcSetWidths.push(supportedResizeWidth);
74
+ else {
75
+ srcSetWidths.push(supportedResizeWidth);
76
+ break;
77
+ }
78
+ }
79
+ } else srcSetWidths = SUPPORTED_IMAGE_RESIZE_WIDTHS;
80
+ const srcSet = src ? getSrcSet(src, srcSetWidths) : "";
81
+ const imageStyles = {
82
+ maxWidth: "100%",
83
+ opacity: isLoaded ? 1 : 0,
84
+ transition: "opacity 0.3s ease",
85
+ ...styles
86
+ };
87
+ const onLoad = useCallback(()=>{
88
+ if (contentSdk.isEditing()) setTimeout(()=>{
89
+ setIsLoaded(true);
90
+ }, 100);
91
+ else setIsLoaded(true);
92
+ }, []);
93
+ return {
94
+ altText,
95
+ isLoaded,
96
+ onLoad,
97
+ src: inputs.image?.src,
98
+ srcSet,
99
+ styles: imageStyles,
100
+ tag,
101
+ title
102
+ };
124
103
  };
104
+ export { ImageComponent };
125
105
 
126
106
  //# sourceMappingURL=Image.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useState","contentSdk","SUPPORTED_IMAGE_RESIZE_WIDTHS","ImageComponent","props","image","useImage","src","createElement","ImagePlaceholder","style","styles","tag","title","data","Fragment","isLoaded","alt","altText","onLoad","srcSet","display","height","backgroundColor","justifyContent","alignItems","fill","width","filter","xmlns","viewBox","d","getSrcSet","srcSetWidths","map","item","join","inputs","setIsLoaded","isEditing","endsWith","toString","imageWidthInt","parseInt","i","length","supportedResizeWidth","push","imageStyles","maxWidth","opacity","transition","setTimeout"],"sources":["Image.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport type { CssProperties } from \"@webiny/website-builder-sdk\";\nimport { contentSdk } from \"@webiny/website-builder-sdk\";\nimport type { ComponentProps } from \"~/types.js\";\n\nconst SUPPORTED_IMAGE_RESIZE_WIDTHS = [100, 300, 500, 750, 1000, 1500, 2500];\n\ntype ImageProps = ComponentProps<{\n title: string;\n altText: string;\n image: {\n id: string;\n name: string;\n size: number;\n mimeType: string;\n src: string;\n };\n}>;\n\nexport const ImageComponent = (props: ImageProps) => {\n const image = useImage(props);\n\n if (!image.src) {\n return <ImagePlaceholder style={props.styles} />;\n }\n\n if (image.tag === \"object\") {\n return <object style={image.styles} title={image.title} data={image.src} />;\n }\n\n return (\n <>\n {!image.isLoaded && <ImagePlaceholder style={image.styles} />}\n <img\n alt={image.altText}\n onLoad={image.onLoad}\n title={image.title}\n src={image.src}\n srcSet={image.srcSet}\n style={image.styles}\n />\n </>\n );\n};\n\nconst ImagePlaceholder = ({ style }: { style: CssProperties }) => {\n return (\n <div\n style={{\n display: \"flex\",\n height: \"200px\",\n backgroundColor: \"#f4f4f4\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fill: \"#ffffff\",\n ...style\n }}\n >\n <svg\n style={{\n width: \"70px\",\n height: \"70px\",\n filter: \"drop-shadow(rgba(0, 0, 0, 0.16) 0px 1px 0px)\"\n }}\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n >\n <path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\" />\n </svg>\n </div>\n );\n};\n\nconst getSrcSet = (src: string, srcSetWidths: number[]) => {\n return srcSetWidths.map(item => `${src}?width=${item} ${item}w`).join(\", \");\n};\n\nconst useImage = ({ inputs, styles }: ImageProps) => {\n const [isLoaded, setIsLoaded] = useState(contentSdk.isEditing() ? false : true);\n const { title = \"\", altText, image } = inputs;\n const src = image?.src;\n\n const tag = src && src.endsWith(\".svg\") ? \"object\" : \"img\";\n\n useEffect(() => {\n if (!src) {\n setIsLoaded(false);\n }\n }, [src]);\n\n // If a fixed image width in pixels was set, let's filter out unneeded\n // image resize widths. For example, if 155px was set as the fixed image\n // width, then we want the `srcset` attribute to only contain 100w and 300w.\n let srcSetWidths: number[] = [];\n\n const width = styles.width?.toString();\n\n if (width && width.endsWith(\"px\")) {\n const imageWidthInt = parseInt(width);\n for (let i = 0; i < SUPPORTED_IMAGE_RESIZE_WIDTHS.length; i++) {\n const supportedResizeWidth = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];\n if (imageWidthInt > supportedResizeWidth) {\n srcSetWidths.push(supportedResizeWidth);\n } else {\n srcSetWidths.push(supportedResizeWidth);\n break;\n }\n }\n } else {\n // If a fixed image width was not provided, we\n // rely on all the supported image resize widths.\n srcSetWidths = SUPPORTED_IMAGE_RESIZE_WIDTHS;\n }\n\n const srcSet = src ? getSrcSet(src, srcSetWidths) : \"\";\n\n const imageStyles = {\n maxWidth: \"100%\",\n opacity: isLoaded ? 1 : 0,\n transition: \"opacity 0.3s ease\",\n ...styles\n };\n\n const onLoad = useCallback(() => {\n if (contentSdk.isEditing()) {\n setTimeout(() => {\n setIsLoaded(true);\n }, 100);\n } else {\n setIsLoaded(true);\n }\n }, []);\n\n return {\n altText,\n isLoaded,\n onLoad,\n src: inputs.image?.src,\n srcSet,\n styles: imageStyles,\n tag,\n title\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Image.js","sources":["../../src/editorComponents/Image.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport type { CssProperties } from \"@webiny/website-builder-sdk\";\nimport { contentSdk } from \"@webiny/website-builder-sdk\";\nimport type { ComponentProps } from \"~/types.js\";\n\nconst SUPPORTED_IMAGE_RESIZE_WIDTHS = [100, 300, 500, 750, 1000, 1500, 2500];\n\ntype ImageProps = ComponentProps<{\n title: string;\n altText: string;\n image: {\n id: string;\n name: string;\n size: number;\n mimeType: string;\n src: string;\n };\n}>;\n\nexport const ImageComponent = (props: ImageProps) => {\n const image = useImage(props);\n\n if (!image.src) {\n return <ImagePlaceholder style={props.styles} />;\n }\n\n if (image.tag === \"object\") {\n return <object style={image.styles} title={image.title} data={image.src} />;\n }\n\n return (\n <>\n {!image.isLoaded && <ImagePlaceholder style={image.styles} />}\n <img\n alt={image.altText}\n onLoad={image.onLoad}\n title={image.title}\n src={image.src}\n srcSet={image.srcSet}\n style={image.styles}\n />\n </>\n );\n};\n\nconst ImagePlaceholder = ({ style }: { style: CssProperties }) => {\n return (\n <div\n style={{\n display: \"flex\",\n height: \"200px\",\n backgroundColor: \"#f4f4f4\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fill: \"#ffffff\",\n ...style\n }}\n >\n <svg\n style={{\n width: \"70px\",\n height: \"70px\",\n filter: \"drop-shadow(rgba(0, 0, 0, 0.16) 0px 1px 0px)\"\n }}\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n >\n <path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\" />\n </svg>\n </div>\n );\n};\n\nconst getSrcSet = (src: string, srcSetWidths: number[]) => {\n return srcSetWidths.map(item => `${src}?width=${item} ${item}w`).join(\", \");\n};\n\nconst useImage = ({ inputs, styles }: ImageProps) => {\n const [isLoaded, setIsLoaded] = useState(contentSdk.isEditing() ? false : true);\n const { title = \"\", altText, image } = inputs;\n const src = image?.src;\n\n const tag = src && src.endsWith(\".svg\") ? \"object\" : \"img\";\n\n useEffect(() => {\n if (!src) {\n setIsLoaded(false);\n }\n }, [src]);\n\n // If a fixed image width in pixels was set, let's filter out unneeded\n // image resize widths. For example, if 155px was set as the fixed image\n // width, then we want the `srcset` attribute to only contain 100w and 300w.\n let srcSetWidths: number[] = [];\n\n const width = styles.width?.toString();\n\n if (width && width.endsWith(\"px\")) {\n const imageWidthInt = parseInt(width);\n for (let i = 0; i < SUPPORTED_IMAGE_RESIZE_WIDTHS.length; i++) {\n const supportedResizeWidth = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];\n if (imageWidthInt > supportedResizeWidth) {\n srcSetWidths.push(supportedResizeWidth);\n } else {\n srcSetWidths.push(supportedResizeWidth);\n break;\n }\n }\n } else {\n // If a fixed image width was not provided, we\n // rely on all the supported image resize widths.\n srcSetWidths = SUPPORTED_IMAGE_RESIZE_WIDTHS;\n }\n\n const srcSet = src ? getSrcSet(src, srcSetWidths) : \"\";\n\n const imageStyles = {\n maxWidth: \"100%\",\n opacity: isLoaded ? 1 : 0,\n transition: \"opacity 0.3s ease\",\n ...styles\n };\n\n const onLoad = useCallback(() => {\n if (contentSdk.isEditing()) {\n setTimeout(() => {\n setIsLoaded(true);\n }, 100);\n } else {\n setIsLoaded(true);\n }\n }, []);\n\n return {\n altText,\n isLoaded,\n onLoad,\n src: inputs.image?.src,\n srcSet,\n styles: imageStyles,\n tag,\n title\n };\n};\n"],"names":["SUPPORTED_IMAGE_RESIZE_WIDTHS","ImageComponent","props","image","useImage","ImagePlaceholder","style","getSrcSet","src","srcSetWidths","item","inputs","styles","isLoaded","setIsLoaded","useState","contentSdk","title","altText","tag","useEffect","width","imageWidthInt","parseInt","i","supportedResizeWidth","srcSet","imageStyles","onLoad","useCallback","setTimeout"],"mappings":";;AAKA,MAAMA,gCAAgC;IAAC;IAAK;IAAK;IAAK;IAAK;IAAM;IAAM;CAAK;AAcrE,MAAMC,iBAAiB,CAACC;IAC3B,MAAMC,QAAQC,SAASF;IAEvB,IAAI,CAACC,MAAM,GAAG,EACV,OAAO,WAAP,GAAO,oBAACE,kBAAgBA;QAAC,OAAOH,MAAM,MAAM;;IAGhD,IAAIC,AAAc,aAAdA,MAAM,GAAG,EACT,OAAO,WAAP,GAAO,oBAAC;QAAO,OAAOA,MAAM,MAAM;QAAE,OAAOA,MAAM,KAAK;QAAE,MAAMA,MAAM,GAAG;;IAG3E,OAAO,WAAP,GACI,0CACK,CAACA,MAAM,QAAQ,IAAI,WAAJ,GAAI,oBAACE,kBAAgBA;QAAC,OAAOF,MAAM,MAAM;sBACzD,oBAAC;QACG,KAAKA,MAAM,OAAO;QAClB,QAAQA,MAAM,MAAM;QACpB,OAAOA,MAAM,KAAK;QAClB,KAAKA,MAAM,GAAG;QACd,QAAQA,MAAM,MAAM;QACpB,OAAOA,MAAM,MAAM;;AAInC;AAEA,MAAME,mBAAmB,CAAC,EAAEC,KAAK,EAA4B,GAClD,WAAP,GACI,oBAAC;QACG,OAAO;YACH,SAAS;YACT,QAAQ;YACR,iBAAiB;YACjB,gBAAgB;YAChB,YAAY;YACZ,MAAM;YACN,GAAGA,KAAK;QACZ;qBAEA,oBAAC;QACG,OAAO;YACH,OAAO;YACP,QAAQ;YACR,QAAQ;QACZ;QACA,OAAM;QACN,QAAO;QACP,SAAQ;QACR,OAAM;qBAEN,oBAAC;QAAK,GAAE;;AAMxB,MAAMC,YAAY,CAACC,KAAaC,eACrBA,aAAa,GAAG,CAACC,CAAAA,OAAQ,GAAGF,IAAI,OAAO,EAAEE,KAAK,CAAC,EAAEA,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAG1E,MAAMN,WAAW,CAAC,EAAEO,MAAM,EAAEC,MAAM,EAAc;IAC5C,MAAM,CAACC,UAAUC,YAAY,GAAGC,UAASC,WAAW,SAAS;IAC7D,MAAM,EAAEC,QAAQ,EAAE,EAAEC,OAAO,EAAEf,KAAK,EAAE,GAAGQ;IACvC,MAAMH,MAAML,OAAO;IAEnB,MAAMgB,MAAMX,OAAOA,IAAI,QAAQ,CAAC,UAAU,WAAW;IAErDY,UAAU;QACN,IAAI,CAACZ,KACDM,YAAY;IAEpB,GAAG;QAACN;KAAI;IAKR,IAAIC,eAAyB,EAAE;IAE/B,MAAMY,QAAQT,OAAO,KAAK,EAAE;IAE5B,IAAIS,SAASA,MAAM,QAAQ,CAAC,OAAO;QAC/B,MAAMC,gBAAgBC,SAASF;QAC/B,IAAK,IAAIG,IAAI,GAAGA,IAAIxB,8BAA8B,MAAM,EAAEwB,IAAK;YAC3D,MAAMC,uBAAuBzB,6BAA6B,CAACwB,EAAE;YAC7D,IAAIF,gBAAgBG,sBAChBhB,aAAa,IAAI,CAACgB;iBACf;gBACHhB,aAAa,IAAI,CAACgB;gBAClB;YACJ;QACJ;IACJ,OAGIhB,eAAeT;IAGnB,MAAM0B,SAASlB,MAAMD,UAAUC,KAAKC,gBAAgB;IAEpD,MAAMkB,cAAc;QAChB,UAAU;QACV,SAASd,WAAW,IAAI;QACxB,YAAY;QACZ,GAAGD,MAAM;IACb;IAEA,MAAMgB,SAASC,YAAY;QACvB,IAAIb,WAAW,SAAS,IACpBc,WAAW;YACPhB,YAAY;QAChB,GAAG;aAEHA,YAAY;IAEpB,GAAG,EAAE;IAEL,OAAO;QACHI;QACAL;QACAe;QACA,KAAKjB,OAAO,KAAK,EAAE;QACnBe;QACA,QAAQC;QACRR;QACAF;IACJ;AACJ"}
@@ -1,42 +1,42 @@
1
1
  "use client";
2
-
3
2
  import { createFileInput, createTextInput } from "@webiny/website-builder-sdk";
4
3
  import { createComponent } from "../createComponent.js";
5
4
  import { ImageComponent } from "./Image.js";
6
- export const Image = createComponent(ImageComponent, {
7
- name: "Webiny/Image",
8
- label: "Image",
9
- aiContext: "Displays an image from the file manager with configurable title and alt text.",
10
- group: "basic",
11
- image: `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"/></svg>`,
12
- autoApplyStyles: false,
13
- inputs: {
14
- image: createFileInput({
15
- label: "Image",
16
- allowedFileTypes: ["image/*"],
17
- onChange: ({
18
- inputs
19
- }) => {
20
- if (inputs.image) {
21
- inputs.title = inputs.image.name;
22
- inputs.altText = inputs.image.name;
5
+ const Image = createComponent(ImageComponent, {
6
+ name: "Webiny/Image",
7
+ label: "Image",
8
+ aiContext: "Displays an image from the file manager with configurable title and alt text.",
9
+ group: "basic",
10
+ image: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"/></svg>',
11
+ autoApplyStyles: false,
12
+ inputs: {
13
+ image: createFileInput({
14
+ label: "Image",
15
+ allowedFileTypes: [
16
+ "image/*"
17
+ ],
18
+ onChange: ({ inputs })=>{
19
+ if (inputs.image) {
20
+ inputs.title = inputs.image.name;
21
+ inputs.altText = inputs.image.name;
22
+ }
23
+ }
24
+ }),
25
+ title: createTextInput({
26
+ label: "Title",
27
+ description: "Title of the image"
28
+ }),
29
+ altText: createTextInput({
30
+ label: "Alternate Text",
31
+ description: "Shown when the user has disabled images"
32
+ })
33
+ },
34
+ defaults: {
35
+ styles: {
36
+ width: "100%"
23
37
  }
24
- }
25
- }),
26
- title: createTextInput({
27
- label: "Title",
28
- description: "Title of the image"
29
- }),
30
- altText: createTextInput({
31
- label: "Alternate Text",
32
- description: "Shown when the user has disabled images"
33
- })
34
- },
35
- defaults: {
36
- styles: {
37
- width: "100%"
38
38
  }
39
- }
40
39
  });
40
+ export { Image };
41
41
 
42
42
  //# sourceMappingURL=Image.manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFileInput","createTextInput","createComponent","ImageComponent","Image","name","label","aiContext","group","image","autoApplyStyles","inputs","allowedFileTypes","onChange","title","altText","description","defaults","styles","width"],"sources":["Image.manifest.ts"],"sourcesContent":["\"use client\";\nimport { createFileInput, createTextInput } from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { ImageComponent } from \"./Image.js\";\n\nexport const Image = createComponent(ImageComponent, {\n name: \"Webiny/Image\",\n label: \"Image\",\n aiContext: \"Displays an image from the file manager with configurable title and alt text.\",\n group: \"basic\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"/></svg>`,\n autoApplyStyles: false,\n inputs: {\n image: createFileInput({\n label: \"Image\",\n allowedFileTypes: [\"image/*\"],\n onChange: ({ inputs }) => {\n if (inputs.image) {\n inputs.title = inputs.image.name;\n inputs.altText = inputs.image.name;\n }\n }\n }),\n title: createTextInput({\n label: \"Title\",\n description: \"Title of the image\"\n }),\n altText: createTextInput({\n label: \"Alternate Text\",\n description: \"Shown when the user has disabled images\"\n })\n },\n defaults: {\n styles: {\n width: \"100%\"\n }\n }\n});\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,eAAe,EAAEC,eAAe,QAAQ,6BAA6B;AAC9E,SAASC,eAAe;AACxB,SAASC,cAAc;AAEvB,OAAO,MAAMC,KAAK,GAAGF,eAAe,CAACC,cAAc,EAAE;EACjDE,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE,+EAA+E;EAC1FC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE,0TAA0T;EACjUC,eAAe,EAAE,KAAK;EACtBC,MAAM,EAAE;IACJF,KAAK,EAAET,eAAe,CAAC;MACnBM,KAAK,EAAE,OAAO;MACdM,gBAAgB,EAAE,CAAC,SAAS,CAAC;MAC7BC,QAAQ,EAAEA,CAAC;QAAEF;MAAO,CAAC,KAAK;QACtB,IAAIA,MAAM,CAACF,KAAK,EAAE;UACdE,MAAM,CAACG,KAAK,GAAGH,MAAM,CAACF,KAAK,CAACJ,IAAI;UAChCM,MAAM,CAACI,OAAO,GAAGJ,MAAM,CAACF,KAAK,CAACJ,IAAI;QACtC;MACJ;IACJ,CAAC,CAAC;IACFS,KAAK,EAAEb,eAAe,CAAC;MACnBK,KAAK,EAAE,OAAO;MACdU,WAAW,EAAE;IACjB,CAAC,CAAC;IACFD,OAAO,EAAEd,eAAe,CAAC;MACrBK,KAAK,EAAE,gBAAgB;MACvBU,WAAW,EAAE;IACjB,CAAC;EACL,CAAC;EACDC,QAAQ,EAAE;IACNC,MAAM,EAAE;MACJC,KAAK,EAAE;IACX;EACJ;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Image.manifest.js","sources":["../../src/editorComponents/Image.manifest.ts"],"sourcesContent":["\"use client\";\nimport { createFileInput, createTextInput } from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { ImageComponent } from \"./Image.js\";\n\nexport const Image = createComponent(ImageComponent, {\n name: \"Webiny/Image\",\n label: \"Image\",\n aiContext: \"Displays an image from the file manager with configurable title and alt text.\",\n group: \"basic\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"/></svg>`,\n autoApplyStyles: false,\n inputs: {\n image: createFileInput({\n label: \"Image\",\n allowedFileTypes: [\"image/*\"],\n onChange: ({ inputs }) => {\n if (inputs.image) {\n inputs.title = inputs.image.name;\n inputs.altText = inputs.image.name;\n }\n }\n }),\n title: createTextInput({\n label: \"Title\",\n description: \"Title of the image\"\n }),\n altText: createTextInput({\n label: \"Alternate Text\",\n description: \"Shown when the user has disabled images\"\n })\n },\n defaults: {\n styles: {\n width: \"100%\"\n }\n }\n});\n"],"names":["Image","createComponent","ImageComponent","createFileInput","inputs","createTextInput"],"mappings":";;;;AAKO,MAAMA,QAAQC,gBAAgBC,gBAAgB;IACjD,MAAM;IACN,OAAO;IACP,WAAW;IACX,OAAO;IACP,OAAO;IACP,iBAAiB;IACjB,QAAQ;QACJ,OAAOC,gBAAgB;YACnB,OAAO;YACP,kBAAkB;gBAAC;aAAU;YAC7B,UAAU,CAAC,EAAEC,MAAM,EAAE;gBACjB,IAAIA,OAAO,KAAK,EAAE;oBACdA,OAAO,KAAK,GAAGA,OAAO,KAAK,CAAC,IAAI;oBAChCA,OAAO,OAAO,GAAGA,OAAO,KAAK,CAAC,IAAI;gBACtC;YACJ;QACJ;QACA,OAAOC,gBAAgB;YACnB,OAAO;YACP,aAAa;QACjB;QACA,SAASA,gBAAgB;YACrB,OAAO;YACP,aAAa;QACjB;IACJ;IACA,UAAU;QACN,QAAQ;YACJ,OAAO;QACX;IACJ;AACJ"}
@@ -1,26 +1,18 @@
1
1
  "use client";
2
-
3
- import React from "react";
4
- export const createLexicalValue = value => {
5
- return {
6
- state: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${value}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"wby-paragraph","version":1,"textFormat":0,"textStyle":""}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`,
7
- html: `<p class="wb-paragraph-1">${value}</p>`
8
- };
9
- };
10
- export const LexicalComponent = ({
11
- inputs
12
- }) => {
13
- const {
14
- html
15
- } = inputs.content;
16
- if (html) {
17
- return /*#__PURE__*/React.createElement("div", {
18
- dangerouslySetInnerHTML: {
19
- __html: html
20
- }
2
+ import react from "react";
3
+ const createLexicalValue = (value)=>({
4
+ state: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${value}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"wby-paragraph","version":1,"textFormat":0,"textStyle":""}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`,
5
+ html: `<p class="wb-paragraph-1">${value}</p>`
6
+ });
7
+ const LexicalComponent = ({ inputs })=>{
8
+ const { html } = inputs.content;
9
+ if (html) return /*#__PURE__*/ react.createElement("div", {
10
+ dangerouslySetInnerHTML: {
11
+ __html: html
12
+ }
21
13
  });
22
- }
23
- return null;
14
+ return null;
24
15
  };
16
+ export { LexicalComponent, createLexicalValue };
25
17
 
26
18
  //# sourceMappingURL=Lexical.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","createLexicalValue","value","state","html","LexicalComponent","inputs","content","createElement","dangerouslySetInnerHTML","__html"],"sources":["Lexical.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport type { ComponentProps } from \"~/types.js\";\n\nexport const createLexicalValue = (value: string) => {\n return {\n state: `{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"${value}\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"wby-paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}`,\n html: `<p class=\"wb-paragraph-1\">${value}</p>`\n };\n};\n\ntype LexicalProps = ComponentProps<{\n content: {\n html?: string;\n };\n}>;\n\nexport const LexicalComponent = ({ inputs }: LexicalProps) => {\n const { html } = inputs.content;\n\n if (html) {\n return <div dangerouslySetInnerHTML={{ __html: html }}></div>;\n }\n\n return null;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,MAAM,OAAO;AAGzB,OAAO,MAAMC,kBAAkB,GAAIC,KAAa,IAAK;EACjD,OAAO;IACHC,KAAK,EAAE,+FAA+FD,KAAK,gNAAgN;IAC3TE,IAAI,EAAE,6BAA6BF,KAAK;EAC5C,CAAC;AACL,CAAC;AAQD,OAAO,MAAMG,gBAAgB,GAAGA,CAAC;EAAEC;AAAqB,CAAC,KAAK;EAC1D,MAAM;IAAEF;EAAK,CAAC,GAAGE,MAAM,CAACC,OAAO;EAE/B,IAAIH,IAAI,EAAE;IACN,oBAAOJ,KAAA,CAAAQ,aAAA;MAAKC,uBAAuB,EAAE;QAAEC,MAAM,EAAEN;MAAK;IAAE,CAAM,CAAC;EACjE;EAEA,OAAO,IAAI;AACf,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Lexical.js","sources":["../../src/editorComponents/Lexical.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport type { ComponentProps } from \"~/types.js\";\n\nexport const createLexicalValue = (value: string) => {\n return {\n state: `{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"${value}\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"wby-paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}`,\n html: `<p class=\"wb-paragraph-1\">${value}</p>`\n };\n};\n\ntype LexicalProps = ComponentProps<{\n content: {\n html?: string;\n };\n}>;\n\nexport const LexicalComponent = ({ inputs }: LexicalProps) => {\n const { html } = inputs.content;\n\n if (html) {\n return <div dangerouslySetInnerHTML={{ __html: html }}></div>;\n }\n\n return null;\n};\n"],"names":["createLexicalValue","value","LexicalComponent","inputs","html"],"mappings":";;AAIO,MAAMA,qBAAqB,CAACC,QACxB;QACH,OAAO,CAAC,4FAA4F,EAAEA,MAAM,8MAA8M,CAAC;QAC3T,MAAM,CAAC,0BAA0B,EAAEA,MAAM,IAAI,CAAC;IAClD;AASG,MAAMC,mBAAmB,CAAC,EAAEC,MAAM,EAAgB;IACrD,MAAM,EAAEC,IAAI,EAAE,GAAGD,OAAO,OAAO;IAE/B,IAAIC,MACA,OAAO,WAAP,GAAO,oBAAC;QAAI,yBAAyB;YAAE,QAAQA;QAAK;;IAGxD,OAAO;AACX"}
@@ -1,23 +1,25 @@
1
1
  "use client";
2
-
3
2
  import { createLexicalInput } from "@webiny/website-builder-sdk";
4
3
  import { createComponent } from "../createComponent.js";
5
4
  import { LexicalComponent, createLexicalValue } from "./Lexical.js";
6
- export const Lexical = createComponent(LexicalComponent, {
7
- name: "Webiny/Lexical",
8
- label: "Rich Text",
9
- aiContext: "Rich text content. Generate semantic HTML tags. Do NOT generate markdown.",
10
- group: "basic",
11
- image: `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M280-160v-520H80v-120h520v120H400v520H280Zm360 0v-320H520v-120h360v120H760v320H640Z"/></svg>`,
12
- inputs: [createLexicalInput({
13
- name: "content",
14
- label: "Content"
15
- })],
16
- defaults: {
17
- inputs: {
18
- content: createLexicalValue("Examine she brother prudent add day ham. Far stairs now coming bed oppose hunted become his. You zealously departure had procuring suspicion. Books whose front would purse if be do decay. Quitting you way formerly disposed perceive ladyship are. Common turned boy direct and yet.")
5
+ const Lexical = createComponent(LexicalComponent, {
6
+ name: "Webiny/Lexical",
7
+ label: "Rich Text",
8
+ aiContext: "Rich text content. Generate semantic HTML tags. Do NOT generate markdown.",
9
+ group: "basic",
10
+ image: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M280-160v-520H80v-120h520v120H400v520H280Zm360 0v-320H520v-120h360v120H760v320H640Z"/></svg>',
11
+ inputs: [
12
+ createLexicalInput({
13
+ name: "content",
14
+ label: "Content"
15
+ })
16
+ ],
17
+ defaults: {
18
+ inputs: {
19
+ content: createLexicalValue("Examine she brother prudent add day ham. Far stairs now coming bed oppose hunted become his. You zealously departure had procuring suspicion. Books whose front would purse if be do decay. Quitting you way formerly disposed perceive ladyship are. Common turned boy direct and yet.")
20
+ }
19
21
  }
20
- }
21
22
  });
23
+ export { Lexical };
22
24
 
23
25
  //# sourceMappingURL=Lexical.manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createLexicalInput","createComponent","LexicalComponent","createLexicalValue","Lexical","name","label","aiContext","group","image","inputs","defaults","content"],"sources":["Lexical.manifest.ts"],"sourcesContent":["\"use client\";\nimport { createLexicalInput } from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { LexicalComponent, createLexicalValue } from \"./Lexical.js\";\n\nexport const Lexical = createComponent(LexicalComponent, {\n name: \"Webiny/Lexical\",\n label: \"Rich Text\",\n aiContext: \"Rich text content. Generate semantic HTML tags. Do NOT generate markdown.\",\n group: \"basic\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M280-160v-520H80v-120h520v120H400v520H280Zm360 0v-320H520v-120h360v120H760v320H640Z\"/></svg>`,\n inputs: [\n createLexicalInput({\n name: \"content\",\n label: \"Content\"\n })\n ],\n defaults: {\n inputs: {\n content: createLexicalValue(\n \"Examine she brother prudent add day ham. Far stairs now coming bed oppose hunted become his. You zealously departure had procuring suspicion. Books whose front would purse if be do decay. Quitting you way formerly disposed perceive ladyship are. Common turned boy direct and yet.\"\n )\n }\n }\n});\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,eAAe;AACxB,SAASC,gBAAgB,EAAEC,kBAAkB;AAE7C,OAAO,MAAMC,OAAO,GAAGH,eAAe,CAACC,gBAAgB,EAAE;EACrDG,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE,WAAW;EAClBC,SAAS,EAAE,2EAA2E;EACtFC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE,mMAAmM;EAC1MC,MAAM,EAAE,CACJV,kBAAkB,CAAC;IACfK,IAAI,EAAE,SAAS;IACfC,KAAK,EAAE;EACX,CAAC,CAAC,CACL;EACDK,QAAQ,EAAE;IACND,MAAM,EAAE;MACJE,OAAO,EAAET,kBAAkB,CACvB,yRACJ;IACJ;EACJ;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Lexical.manifest.js","sources":["../../src/editorComponents/Lexical.manifest.ts"],"sourcesContent":["\"use client\";\nimport { createLexicalInput } from \"@webiny/website-builder-sdk\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { LexicalComponent, createLexicalValue } from \"./Lexical.js\";\n\nexport const Lexical = createComponent(LexicalComponent, {\n name: \"Webiny/Lexical\",\n label: \"Rich Text\",\n aiContext: \"Rich text content. Generate semantic HTML tags. Do NOT generate markdown.\",\n group: \"basic\",\n image: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M280-160v-520H80v-120h520v120H400v520H280Zm360 0v-320H520v-120h360v120H760v320H640Z\"/></svg>`,\n inputs: [\n createLexicalInput({\n name: \"content\",\n label: \"Content\"\n })\n ],\n defaults: {\n inputs: {\n content: createLexicalValue(\n \"Examine she brother prudent add day ham. Far stairs now coming bed oppose hunted become his. You zealously departure had procuring suspicion. Books whose front would purse if be do decay. Quitting you way formerly disposed perceive ladyship are. Common turned boy direct and yet.\"\n )\n }\n }\n});\n"],"names":["Lexical","createComponent","LexicalComponent","createLexicalInput","createLexicalValue"],"mappings":";;;;AAKO,MAAMA,UAAUC,gBAAgBC,kBAAkB;IACrD,MAAM;IACN,OAAO;IACP,WAAW;IACX,OAAO;IACP,OAAO;IACP,QAAQ;QACJC,mBAAmB;YACf,MAAM;YACN,OAAO;QACX;KACH;IACD,UAAU;QACN,QAAQ;YACJ,SAASC,mBACL;QAER;IACJ;AACJ"}
@@ -1,8 +1,5 @@
1
- import React from "react";
2
- export const RootComponent = ({
3
- inputs
4
- }) => {
5
- return /*#__PURE__*/React.createElement(React.Fragment, null, inputs.children);
6
- };
1
+ import react from "react";
2
+ const RootComponent = ({ inputs })=>/*#__PURE__*/ react.createElement(react.Fragment, null, inputs.children);
3
+ export { RootComponent };
7
4
 
8
5
  //# sourceMappingURL=Root.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","RootComponent","inputs","createElement","Fragment","children"],"sources":["Root.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ComponentPropsWithChildren } from \"~/types.js\";\n\nexport const RootComponent = ({ inputs }: ComponentPropsWithChildren) => {\n return <>{inputs.children}</>;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,OAAO,MAAMC,aAAa,GAAGA,CAAC;EAAEC;AAAmC,CAAC,KAAK;EACrE,oBAAOF,KAAA,CAAAG,aAAA,CAAAH,KAAA,CAAAI,QAAA,QAAGF,MAAM,CAACG,QAAW,CAAC;AACjC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Root.js","sources":["../../src/editorComponents/Root.tsx"],"sourcesContent":["import React from \"react\";\nimport type { ComponentPropsWithChildren } from \"~/types.js\";\n\nexport const RootComponent = ({ inputs }: ComponentPropsWithChildren) => {\n return <>{inputs.children}</>;\n};\n"],"names":["RootComponent","inputs"],"mappings":";AAGO,MAAMA,gBAAgB,CAAC,EAAEC,MAAM,EAA8B,GACzD,WAAP,GAAO,0CAAGA,OAAO,QAAQ"}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
-
3
2
  import { createComponent } from "../createComponent.js";
4
3
  import { RootComponent } from "./Root.js";
5
- export const Root = createComponent(RootComponent, {
6
- name: "Webiny/Root",
7
- label: "Main Content",
8
- acceptsChildren: true,
9
- hideFromToolbar: true,
10
- useInAiContentGeneration: false
4
+ const Root = createComponent(RootComponent, {
5
+ name: "Webiny/Root",
6
+ label: "Main Content",
7
+ acceptsChildren: true,
8
+ hideFromToolbar: true,
9
+ useInAiContentGeneration: false
11
10
  });
11
+ export { Root };
12
12
 
13
13
  //# sourceMappingURL=Root.manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createComponent","RootComponent","Root","name","label","acceptsChildren","hideFromToolbar","useInAiContentGeneration"],"sources":["Root.manifest.ts"],"sourcesContent":["\"use client\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { RootComponent } from \"./Root.js\";\n\nexport const Root = createComponent(RootComponent, {\n name: \"Webiny/Root\",\n label: \"Main Content\",\n acceptsChildren: true,\n hideFromToolbar: true,\n useInAiContentGeneration: false\n});\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,eAAe;AACxB,SAASC,aAAa;AAEtB,OAAO,MAAMC,IAAI,GAAGF,eAAe,CAACC,aAAa,EAAE;EAC/CE,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAE,cAAc;EACrBC,eAAe,EAAE,IAAI;EACrBC,eAAe,EAAE,IAAI;EACrBC,wBAAwB,EAAE;AAC9B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/Root.manifest.js","sources":["../../src/editorComponents/Root.manifest.ts"],"sourcesContent":["\"use client\";\nimport { createComponent } from \"~/createComponent.js\";\nimport { RootComponent } from \"./Root.js\";\n\nexport const Root = createComponent(RootComponent, {\n name: \"Webiny/Root\",\n label: \"Main Content\",\n acceptsChildren: true,\n hideFromToolbar: true,\n useInAiContentGeneration: false\n});\n"],"names":["Root","createComponent","RootComponent"],"mappings":";;;AAIO,MAAMA,OAAOC,gBAAgBC,eAAe;IAC/C,MAAM;IACN,OAAO;IACP,iBAAiB;IACjB,iBAAiB;IACjB,0BAA0B;AAC9B"}
@@ -5,6 +5,15 @@ import { Lexical } from "./Lexical.manifest.js";
5
5
  import { Root } from "./Root.manifest.js";
6
6
  import { GridColumn } from "./GridColumn.manifest.js";
7
7
  import { Fragment } from "./Fragment.manifest.js";
8
- export const editorComponents = [Root, Box, Grid, GridColumn, Image, Lexical, Fragment];
8
+ const editorComponents = [
9
+ Root,
10
+ Box,
11
+ Grid,
12
+ GridColumn,
13
+ Image,
14
+ Lexical,
15
+ Fragment
16
+ ];
17
+ export { editorComponents };
9
18
 
10
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Box","Grid","Image","Lexical","Root","GridColumn","Fragment","editorComponents"],"sources":["index.ts"],"sourcesContent":["import { Box } from \"./Box.manifest.js\";\nimport { Grid } from \"./Grid.manifest.js\";\nimport { Image } from \"./Image.manifest.js\";\nimport { Lexical } from \"./Lexical.manifest.js\";\nimport { Root } from \"./Root.manifest.js\";\nimport { GridColumn } from \"./GridColumn.manifest.js\";\nimport { Fragment } from \"./Fragment.manifest.js\";\n\nexport const editorComponents = [Root, Box, Grid, GridColumn, Image, Lexical, Fragment];\n"],"mappings":"AAAA,SAASA,GAAG;AACZ,SAASC,IAAI;AACb,SAASC,KAAK;AACd,SAASC,OAAO;AAChB,SAASC,IAAI;AACb,SAASC,UAAU;AACnB,SAASC,QAAQ;AAEjB,OAAO,MAAMC,gBAAgB,GAAG,CAACH,IAAI,EAAEJ,GAAG,EAAEC,IAAI,EAAEI,UAAU,EAAEH,KAAK,EAAEC,OAAO,EAAEG,QAAQ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"editorComponents/index.js","sources":["../../src/editorComponents/index.ts"],"sourcesContent":["import { Box } from \"./Box.manifest.js\";\nimport { Grid } from \"./Grid.manifest.js\";\nimport { Image } from \"./Image.manifest.js\";\nimport { Lexical } from \"./Lexical.manifest.js\";\nimport { Root } from \"./Root.manifest.js\";\nimport { GridColumn } from \"./GridColumn.manifest.js\";\nimport { Fragment } from \"./Fragment.manifest.js\";\n\nexport const editorComponents = [Root, Box, Grid, GridColumn, Image, Lexical, Fragment];\n"],"names":["editorComponents","Root","Box","Grid","GridColumn","Image","Lexical","Fragment"],"mappings":";;;;;;;AAQO,MAAMA,mBAAmB;IAACC;IAAMC;IAAKC;IAAMC;IAAYC;IAAOC;IAASC;CAAS"}
package/index.js CHANGED
@@ -1,5 +1,3 @@
1
1
  export * from "./components/index.js";
2
2
  export * from "./createComponent.js";
3
- export { createTextInput, createLongTextInput, createNumberInput, createBooleanInput, createColorInput, createFileInput, createDateInput, createLexicalInput, createSelectInput, createRadioInput, createObjectInput, createTagsInput, createSlotInput, createInput, createElement, createTheme, contentSdk, environment, setHeadersProvider, getHeadersProvider, registerComponentGroup, StyleSettings } from "@webiny/website-builder-sdk";
4
-
5
- //# sourceMappingURL=index.js.map
3
+ export { StyleSettings, contentSdk, createBooleanInput, createColorInput, createDateInput, createElement, createFileInput, createInput, createLexicalInput, createLongTextInput, createNumberInput, createObjectInput, createRadioInput, createSelectInput, createSlotInput, createTagsInput, createTextInput, createTheme, environment, getHeadersProvider, registerComponentGroup, setHeadersProvider } from "@webiny/website-builder-sdk";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/website-builder-react",
3
- "version": "6.3.0",
3
+ "version": "6.4.0-beta.1",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,22 +17,22 @@
17
17
  ],
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@webiny/website-builder-sdk": "6.3.0",
20
+ "@webiny/website-builder-sdk": "6.4.0-beta.1",
21
21
  "deep-equal": "2.2.3",
22
- "mobx": "6.15.1",
22
+ "mobx": "6.15.3",
23
23
  "mobx-react-lite": "4.1.1",
24
24
  "react": "18.3.1",
25
25
  "react-dom": "18.3.1"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/react": "18.3.28",
29
- "@webiny/build-tools": "6.3.0",
29
+ "@webiny/build-tools": "6.4.0-beta.1",
30
30
  "typescript": "6.0.3",
31
- "vitest": "4.1.5"
31
+ "vitest": "4.1.6"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "public",
35
35
  "directory": "dist"
36
36
  },
37
- "gitHead": "7cefe15431dbd65504e1f58147dc9e55bcbfa693"
37
+ "gitHead": "73237b8243693038c072bae1c0b783387448cbbe"
38
38
  }
package/types.js CHANGED
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=types.js.map