@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,18 +1,13 @@
1
1
  "use client";
2
-
3
- import React from "react";
4
- const ElementSlotDepthContext = /*#__PURE__*/React.createContext(0);
5
- export const ElementSlotDepthProvider = ({
6
- children,
7
- depth
8
- }) => {
9
- return /*#__PURE__*/React.createElement(ElementSlotDepthContext.Provider, {
10
- value: depth
11
- }, children);
12
- };
13
- export const useElementSlotDepth = () => {
14
- const context = React.useContext(ElementSlotDepthContext);
15
- return context ?? 0;
2
+ import react from "react";
3
+ const ElementSlotDepthContext = /*#__PURE__*/ react.createContext(0);
4
+ const ElementSlotDepthProvider = ({ children, depth })=>/*#__PURE__*/ react.createElement(ElementSlotDepthContext.Provider, {
5
+ value: depth
6
+ }, children);
7
+ const useElementSlotDepth = ()=>{
8
+ const context = react.useContext(ElementSlotDepthContext);
9
+ return context ?? 0;
16
10
  };
11
+ export { ElementSlotDepthProvider, useElementSlotDepth };
17
12
 
18
13
  //# sourceMappingURL=ElementSlotDepthProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ElementSlotDepthContext","createContext","ElementSlotDepthProvider","children","depth","createElement","Provider","value","useElementSlotDepth","context","useContext"],"sources":["ElementSlotDepthProvider.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\n\nconst ElementSlotDepthContext = React.createContext<number>(0);\n\ninterface ElementSlotDepthProviderProps {\n depth: number;\n children: React.ReactNode;\n}\n\nexport const ElementSlotDepthProvider = ({ children, depth }: ElementSlotDepthProviderProps) => {\n return (\n <ElementSlotDepthContext.Provider value={depth}>\n {children}\n </ElementSlotDepthContext.Provider>\n );\n};\n\nexport const useElementSlotDepth = () => {\n const context = React.useContext(ElementSlotDepthContext);\n\n return context ?? 0;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,uBAAuB,gBAAGD,KAAK,CAACE,aAAa,CAAS,CAAC,CAAC;AAO9D,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAqC,CAAC,KAAK;EAC5F,oBACIL,KAAA,CAAAM,aAAA,CAACL,uBAAuB,CAACM,QAAQ;IAACC,KAAK,EAAEH;EAAM,GAC1CD,QAC6B,CAAC;AAE3C,CAAC;AAED,OAAO,MAAMK,mBAAmB,GAAGA,CAAA,KAAM;EACrC,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAACV,uBAAuB,CAAC;EAEzD,OAAOS,OAAO,IAAI,CAAC;AACvB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/ElementSlotDepthProvider.js","sources":["../../src/components/ElementSlotDepthProvider.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\n\nconst ElementSlotDepthContext = React.createContext<number>(0);\n\ninterface ElementSlotDepthProviderProps {\n depth: number;\n children: React.ReactNode;\n}\n\nexport const ElementSlotDepthProvider = ({ children, depth }: ElementSlotDepthProviderProps) => {\n return (\n <ElementSlotDepthContext.Provider value={depth}>\n {children}\n </ElementSlotDepthContext.Provider>\n );\n};\n\nexport const useElementSlotDepth = () => {\n const context = React.useContext(ElementSlotDepthContext);\n\n return context ?? 0;\n};\n"],"names":["ElementSlotDepthContext","React","ElementSlotDepthProvider","children","depth","useElementSlotDepth","context"],"mappings":";;AAGA,MAAMA,0BAA0B,WAAHA,GAAGC,MAAAA,aAAmB,CAAS;AAOrD,MAAMC,2BAA2B,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAiC,GAChF,WAAP,GACI,oBAACJ,wBAAwB,QAAQ;QAAC,OAAOI;OACpCD;AAKN,MAAME,sBAAsB;IAC/B,MAAMC,UAAUL,MAAAA,UAAgB,CAACD;IAEjC,OAAOM,WAAW;AACtB"}
@@ -1,43 +1,37 @@
1
1
  "use client";
2
-
3
- import React, { useEffect } from "react";
2
+ import react, { useEffect } from "react";
4
3
  import { contentSdk } from "@webiny/website-builder-sdk";
5
- const FragmentsContext = /*#__PURE__*/React.createContext(undefined);
6
- export const FragmentsProvider = ({
7
- fragments,
8
- children
9
- }) => {
10
- useEffect(() => {
11
- if (contentSdk.isEditing()) {
12
- // Extract serializable data
13
- const fragmentsData = fragments.map(fragment => {
14
- if (fragment.type === "fixed") {
15
- return {
16
- type: "fixed",
17
- name: fragment.name
18
- };
4
+ const FragmentsContext = /*#__PURE__*/ react.createContext(void 0);
5
+ const FragmentsProvider = ({ fragments, children })=>{
6
+ useEffect(()=>{
7
+ if (contentSdk.isEditing()) {
8
+ const fragmentsData = fragments.map((fragment)=>{
9
+ if ("fixed" === fragment.type) return {
10
+ type: "fixed",
11
+ name: fragment.name
12
+ };
13
+ return {
14
+ type: "component",
15
+ component: fragment.component,
16
+ inputs: fragment.inputs
17
+ };
18
+ });
19
+ contentSdk.getEditingSdk().messenger.send("document.fragments", {
20
+ fragments: fragmentsData
21
+ });
19
22
  }
20
- return {
21
- type: "component",
22
- component: fragment.component,
23
- inputs: fragment.inputs
24
- };
25
- });
26
- contentSdk.getEditingSdk().messenger.send("document.fragments", {
27
- fragments: fragmentsData
28
- });
29
- }
30
- }, [fragments.length]);
31
- return /*#__PURE__*/React.createElement(FragmentsContext.Provider, {
32
- value: fragments
33
- }, children);
23
+ }, [
24
+ fragments.length
25
+ ]);
26
+ return /*#__PURE__*/ react.createElement(FragmentsContext.Provider, {
27
+ value: fragments
28
+ }, children);
34
29
  };
35
- export const useDocumentFragments = () => {
36
- const context = React.useContext(FragmentsContext);
37
- if (!context) {
38
- return [];
39
- }
40
- return context;
30
+ const useDocumentFragments = ()=>{
31
+ const context = react.useContext(FragmentsContext);
32
+ if (!context) return [];
33
+ return context;
41
34
  };
35
+ export { FragmentsProvider, useDocumentFragments };
42
36
 
43
37
  //# sourceMappingURL=FragmentsProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","contentSdk","FragmentsContext","createContext","undefined","FragmentsProvider","fragments","children","isEditing","fragmentsData","map","fragment","type","name","component","inputs","getEditingSdk","messenger","send","length","createElement","Provider","value","useDocumentFragments","context","useContext"],"sources":["FragmentsProvider.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect } from \"react\";\nimport { contentSdk } from \"@webiny/website-builder-sdk\";\n\ntype FragmentConfig =\n | {\n type: \"fixed\";\n name: string;\n element: React.ReactNode;\n }\n | { type: \"component\"; component: string; inputs: Record<string, any> };\n\nexport type DocumentFragments = FragmentConfig[];\n\nconst FragmentsContext = React.createContext<DocumentFragments | undefined>(undefined);\n\ninterface FragmentsProviderProps {\n fragments: DocumentFragments;\n children: React.ReactNode;\n}\n\nexport const FragmentsProvider = ({ fragments, children }: FragmentsProviderProps) => {\n useEffect(() => {\n if (contentSdk.isEditing()) {\n // Extract serializable data\n const fragmentsData = fragments.map(fragment => {\n if (fragment.type === \"fixed\") {\n return {\n type: \"fixed\",\n name: fragment.name\n };\n }\n\n return {\n type: \"component\",\n component: fragment.component,\n inputs: fragment.inputs\n };\n });\n\n contentSdk\n .getEditingSdk()!\n .messenger.send(\"document.fragments\", { fragments: fragmentsData });\n }\n }, [fragments.length]);\n\n return <FragmentsContext.Provider value={fragments}>{children}</FragmentsContext.Provider>;\n};\n\nexport const useDocumentFragments = () => {\n const context = React.useContext(FragmentsContext);\n if (!context) {\n return [];\n }\n\n return context;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,UAAU,QAAQ,6BAA6B;AAYxD,MAAMC,gBAAgB,gBAAGH,KAAK,CAACI,aAAa,CAAgCC,SAAS,CAAC;AAOtF,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC,SAAS;EAAEC;AAAiC,CAAC,KAAK;EAClFP,SAAS,CAAC,MAAM;IACZ,IAAIC,UAAU,CAACO,SAAS,CAAC,CAAC,EAAE;MACxB;MACA,MAAMC,aAAa,GAAGH,SAAS,CAACI,GAAG,CAACC,QAAQ,IAAI;QAC5C,IAAIA,QAAQ,CAACC,IAAI,KAAK,OAAO,EAAE;UAC3B,OAAO;YACHA,IAAI,EAAE,OAAO;YACbC,IAAI,EAAEF,QAAQ,CAACE;UACnB,CAAC;QACL;QAEA,OAAO;UACHD,IAAI,EAAE,WAAW;UACjBE,SAAS,EAAEH,QAAQ,CAACG,SAAS;UAC7BC,MAAM,EAAEJ,QAAQ,CAACI;QACrB,CAAC;MACL,CAAC,CAAC;MAEFd,UAAU,CACLe,aAAa,CAAC,CAAC,CACfC,SAAS,CAACC,IAAI,CAAC,oBAAoB,EAAE;QAAEZ,SAAS,EAAEG;MAAc,CAAC,CAAC;IAC3E;EACJ,CAAC,EAAE,CAACH,SAAS,CAACa,MAAM,CAAC,CAAC;EAEtB,oBAAOpB,KAAA,CAAAqB,aAAA,CAAClB,gBAAgB,CAACmB,QAAQ;IAACC,KAAK,EAAEhB;EAAU,GAAEC,QAAoC,CAAC;AAC9F,CAAC;AAED,OAAO,MAAMgB,oBAAoB,GAAGA,CAAA,KAAM;EACtC,MAAMC,OAAO,GAAGzB,KAAK,CAAC0B,UAAU,CAACvB,gBAAgB,CAAC;EAClD,IAAI,CAACsB,OAAO,EAAE;IACV,OAAO,EAAE;EACb;EAEA,OAAOA,OAAO;AAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/FragmentsProvider.js","sources":["../../src/components/FragmentsProvider.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect } from \"react\";\nimport { contentSdk } from \"@webiny/website-builder-sdk\";\n\ntype FragmentConfig =\n | {\n type: \"fixed\";\n name: string;\n element: React.ReactNode;\n }\n | { type: \"component\"; component: string; inputs: Record<string, any> };\n\nexport type DocumentFragments = FragmentConfig[];\n\nconst FragmentsContext = React.createContext<DocumentFragments | undefined>(undefined);\n\ninterface FragmentsProviderProps {\n fragments: DocumentFragments;\n children: React.ReactNode;\n}\n\nexport const FragmentsProvider = ({ fragments, children }: FragmentsProviderProps) => {\n useEffect(() => {\n if (contentSdk.isEditing()) {\n // Extract serializable data\n const fragmentsData = fragments.map(fragment => {\n if (fragment.type === \"fixed\") {\n return {\n type: \"fixed\",\n name: fragment.name\n };\n }\n\n return {\n type: \"component\",\n component: fragment.component,\n inputs: fragment.inputs\n };\n });\n\n contentSdk\n .getEditingSdk()!\n .messenger.send(\"document.fragments\", { fragments: fragmentsData });\n }\n }, [fragments.length]);\n\n return <FragmentsContext.Provider value={fragments}>{children}</FragmentsContext.Provider>;\n};\n\nexport const useDocumentFragments = () => {\n const context = React.useContext(FragmentsContext);\n if (!context) {\n return [];\n }\n\n return context;\n};\n"],"names":["FragmentsContext","React","undefined","FragmentsProvider","fragments","children","useEffect","contentSdk","fragmentsData","fragment","useDocumentFragments","context"],"mappings":";;;AAcA,MAAMA,mBAAmB,WAAHA,GAAGC,MAAAA,aAAmB,CAAgCC;AAOrE,MAAMC,oBAAoB,CAAC,EAAEC,SAAS,EAAEC,QAAQ,EAA0B;IAC7EC,UAAU;QACN,IAAIC,WAAW,SAAS,IAAI;YAExB,MAAMC,gBAAgBJ,UAAU,GAAG,CAACK,CAAAA;gBAChC,IAAIA,AAAkB,YAAlBA,SAAS,IAAI,EACb,OAAO;oBACH,MAAM;oBACN,MAAMA,SAAS,IAAI;gBACvB;gBAGJ,OAAO;oBACH,MAAM;oBACN,WAAWA,SAAS,SAAS;oBAC7B,QAAQA,SAAS,MAAM;gBAC3B;YACJ;YAEAF,WAAAA,aACkB,GACb,SAAS,CAAC,IAAI,CAAC,sBAAsB;gBAAE,WAAWC;YAAc;QACzE;IACJ,GAAG;QAACJ,UAAU,MAAM;KAAC;IAErB,OAAO,WAAP,GAAO,oBAACJ,iBAAiB,QAAQ;QAAC,OAAOI;OAAYC;AACzD;AAEO,MAAMK,uBAAuB;IAChC,MAAMC,UAAUV,MAAAA,UAAgB,CAACD;IACjC,IAAI,CAACW,SACD,OAAO,EAAE;IAGb,OAAOA;AACX"}
@@ -1,78 +1,63 @@
1
1
  "use client";
2
-
3
- import React, { useCallback, useEffect, useState } from "react";
2
+ import react, { useCallback, useEffect, useState } from "react";
4
3
  import { observer } from "mobx-react-lite";
5
4
  import { contentSdk } from "@webiny/website-builder-sdk";
6
5
  import { ElementSlot } from "./ElementSlot.js";
7
6
  import { useViewport } from "./useViewportInfo.js";
8
7
  import { useBindingsForElement } from "./useBindingsForElement.js";
9
8
  import { useDocumentState } from "./useDocumentState.js";
10
- export const LiveElementRenderer = observer(({
11
- element
12
- }) => {
13
- const viewport = useViewport();
14
-
15
- // 1. Start breakpoint as "desktop" on both server and initial client render.
16
- const [breakpoint, setBreakpoint] = useState("desktop");
17
-
18
- // 2. Update breakpoint on the client after mount, using real viewport value.
19
- useEffect(() => {
20
- if (viewport.breakpoint && viewport.breakpoint !== breakpoint) {
21
- setBreakpoint(viewport.breakpoint);
22
- }
23
- }, [viewport.breakpoint, breakpoint]);
24
-
25
- // Bindings for current breakpoint
26
- const elementBindings = useBindingsForElement(element.id, breakpoint); // pass breakpoint explicitly if possible
27
- const state = useDocumentState();
28
- const onResolved = useCallback((value, input) => {
29
- if (input.type === "slot") {
30
- return /*#__PURE__*/React.createElement(ElementSlot, {
31
- key: element.id,
32
- parentId: element.id,
33
- slot: input.name,
34
- elements: input.list ? value : [value]
35
- });
36
- }
37
- return value;
38
- }, [element.id]);
39
- if (!element || !element.component) {
40
- return null;
41
- }
42
- const instances = contentSdk.resolveElement({
43
- element,
44
- state,
45
- elementBindings,
46
- onResolved
47
- });
48
- if (!instances) {
49
- return null;
50
- }
51
- return /*#__PURE__*/React.createElement(React.Fragment, null, instances.map((resolvedElement, index) => {
52
- const {
53
- component: Component,
54
- inputs,
55
- styles,
56
- manifest
57
- } = resolvedElement;
58
- const props = {
59
- inputs,
60
- styles,
61
- element,
62
- breakpoint: viewport.breakpoint
63
- };
64
- const autoApplyStyles = manifest.autoApplyStyles !== false;
65
- const userElement = /*#__PURE__*/React.createElement(Component, Object.assign({
66
- key: element.id
67
- }, props));
68
- if (!autoApplyStyles) {
69
- return userElement;
70
- }
71
- return /*#__PURE__*/React.createElement("div", {
72
- key: index,
73
- style: styles
74
- }, userElement);
75
- }));
9
+ const LiveElementRenderer = observer(({ element })=>{
10
+ const viewport = useViewport();
11
+ const [breakpoint, setBreakpoint] = useState("desktop");
12
+ useEffect(()=>{
13
+ if (viewport.breakpoint && viewport.breakpoint !== breakpoint) setBreakpoint(viewport.breakpoint);
14
+ }, [
15
+ viewport.breakpoint,
16
+ breakpoint
17
+ ]);
18
+ const elementBindings = useBindingsForElement(element.id, breakpoint);
19
+ const state = useDocumentState();
20
+ const onResolved = useCallback((value, input)=>{
21
+ if ("slot" === input.type) return /*#__PURE__*/ react.createElement(ElementSlot, {
22
+ key: element.id,
23
+ parentId: element.id,
24
+ slot: input.name,
25
+ elements: input.list ? value : [
26
+ value
27
+ ]
28
+ });
29
+ return value;
30
+ }, [
31
+ element.id
32
+ ]);
33
+ if (!element || !element.component) return null;
34
+ const instances = contentSdk.resolveElement({
35
+ element,
36
+ state,
37
+ elementBindings,
38
+ onResolved
39
+ });
40
+ if (!instances) return null;
41
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, instances.map((resolvedElement, index)=>{
42
+ const { component: Component, inputs, styles, manifest } = resolvedElement;
43
+ const props = {
44
+ inputs,
45
+ styles,
46
+ element,
47
+ breakpoint: viewport.breakpoint
48
+ };
49
+ const autoApplyStyles = false !== manifest.autoApplyStyles;
50
+ const userElement = /*#__PURE__*/ react.createElement(Component, {
51
+ key: element.id,
52
+ ...props
53
+ });
54
+ if (!autoApplyStyles) return userElement;
55
+ return /*#__PURE__*/ react.createElement("div", {
56
+ key: index,
57
+ style: styles
58
+ }, userElement);
59
+ }));
76
60
  });
61
+ export { LiveElementRenderer };
77
62
 
78
63
  //# sourceMappingURL=LiveElementRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useState","observer","contentSdk","ElementSlot","useViewport","useBindingsForElement","useDocumentState","LiveElementRenderer","element","viewport","breakpoint","setBreakpoint","elementBindings","id","state","onResolved","value","input","type","createElement","key","parentId","slot","name","elements","list","component","instances","resolveElement","Fragment","map","resolvedElement","index","Component","inputs","styles","manifest","props","autoApplyStyles","userElement","Object","assign","style"],"sources":["LiveElementRenderer.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport type {\n DocumentElement,\n DocumentElementBindings,\n OnResolved\n} from \"@webiny/website-builder-sdk\";\nimport { contentSdk } from \"@webiny/website-builder-sdk\";\nimport { ElementSlot } from \"./ElementSlot.js\";\nimport { useViewport } from \"./useViewportInfo.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useDocumentState } from \"./useDocumentState.js\";\n\ninterface LiveElementRendererProps {\n element: DocumentElement;\n bindings?: DocumentElementBindings;\n}\n\nexport const LiveElementRenderer = observer(({ element }: LiveElementRendererProps) => {\n const viewport = useViewport();\n\n // 1. Start breakpoint as \"desktop\" on both server and initial client render.\n const [breakpoint, setBreakpoint] = useState<\"desktop\" | string>(\"desktop\");\n\n // 2. Update breakpoint on the client after mount, using real viewport value.\n useEffect(() => {\n if (viewport.breakpoint && viewport.breakpoint !== breakpoint) {\n setBreakpoint(viewport.breakpoint);\n }\n }, [viewport.breakpoint, breakpoint]);\n\n // Bindings for current breakpoint\n const elementBindings = useBindingsForElement(element.id, breakpoint); // pass breakpoint explicitly if possible\n const state = useDocumentState();\n\n const onResolved = useCallback(\n ((value, input) => {\n if (input.type === \"slot\") {\n return (\n <ElementSlot\n key={element.id}\n parentId={element.id}\n slot={input.name}\n elements={input.list ? value : [value]}\n />\n );\n }\n return value;\n }) as OnResolved,\n [element.id]\n );\n\n if (!element || !element.component) {\n return null;\n }\n\n const instances = contentSdk.resolveElement({\n element,\n state,\n elementBindings,\n onResolved\n });\n\n if (!instances) {\n return null;\n }\n\n return (\n <>\n {instances.map((resolvedElement, index) => {\n const { component: Component, inputs, styles, manifest } = resolvedElement;\n const props = { inputs, styles, element, breakpoint: viewport.breakpoint };\n const autoApplyStyles = manifest.autoApplyStyles !== false;\n\n const userElement = <Component key={element.id} {...props} />;\n\n if (!autoApplyStyles) {\n return userElement;\n }\n\n return (\n <div key={index} style={styles}>\n {userElement}\n </div>\n );\n })}\n </>\n );\n});\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC/D,SAASC,QAAQ,QAAQ,iBAAiB;AAM1C,SAASC,UAAU,QAAQ,6BAA6B;AACxD,SAASC,WAAW;AACpB,SAASC,WAAW;AACpB,SAASC,qBAAqB;AAC9B,SAASC,gBAAgB;AAOzB,OAAO,MAAMC,mBAAmB,GAAGN,QAAQ,CAAC,CAAC;EAAEO;AAAkC,CAAC,KAAK;EACnF,MAAMC,QAAQ,GAAGL,WAAW,CAAC,CAAC;;EAE9B;EACA,MAAM,CAACM,UAAU,EAAEC,aAAa,CAAC,GAAGX,QAAQ,CAAqB,SAAS,CAAC;;EAE3E;EACAD,SAAS,CAAC,MAAM;IACZ,IAAIU,QAAQ,CAACC,UAAU,IAAID,QAAQ,CAACC,UAAU,KAAKA,UAAU,EAAE;MAC3DC,aAAa,CAACF,QAAQ,CAACC,UAAU,CAAC;IACtC;EACJ,CAAC,EAAE,CAACD,QAAQ,CAACC,UAAU,EAAEA,UAAU,CAAC,CAAC;;EAErC;EACA,MAAME,eAAe,GAAGP,qBAAqB,CAACG,OAAO,CAACK,EAAE,EAAEH,UAAU,CAAC,CAAC,CAAC;EACvE,MAAMI,KAAK,GAAGR,gBAAgB,CAAC,CAAC;EAEhC,MAAMS,UAAU,GAAGjB,WAAW,CACzB,CAACkB,KAAK,EAAEC,KAAK,KAAK;IACf,IAAIA,KAAK,CAACC,IAAI,KAAK,MAAM,EAAE;MACvB,oBACIrB,KAAA,CAAAsB,aAAA,CAAChB,WAAW;QACRiB,GAAG,EAAEZ,OAAO,CAACK,EAAG;QAChBQ,QAAQ,EAAEb,OAAO,CAACK,EAAG;QACrBS,IAAI,EAAEL,KAAK,CAACM,IAAK;QACjBC,QAAQ,EAAEP,KAAK,CAACQ,IAAI,GAAGT,KAAK,GAAG,CAACA,KAAK;MAAE,CAC1C,CAAC;IAEV;IACA,OAAOA,KAAK;EAChB,CAAC,EACD,CAACR,OAAO,CAACK,EAAE,CACf,CAAC;EAED,IAAI,CAACL,OAAO,IAAI,CAACA,OAAO,CAACkB,SAAS,EAAE;IAChC,OAAO,IAAI;EACf;EAEA,MAAMC,SAAS,GAAGzB,UAAU,CAAC0B,cAAc,CAAC;IACxCpB,OAAO;IACPM,KAAK;IACLF,eAAe;IACfG;EACJ,CAAC,CAAC;EAEF,IAAI,CAACY,SAAS,EAAE;IACZ,OAAO,IAAI;EACf;EAEA,oBACI9B,KAAA,CAAAsB,aAAA,CAAAtB,KAAA,CAAAgC,QAAA,QACKF,SAAS,CAACG,GAAG,CAAC,CAACC,eAAe,EAAEC,KAAK,KAAK;IACvC,MAAM;MAAEN,SAAS,EAAEO,SAAS;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAGL,eAAe;IAC1E,MAAMM,KAAK,GAAG;MAAEH,MAAM;MAAEC,MAAM;MAAE3B,OAAO;MAAEE,UAAU,EAAED,QAAQ,CAACC;IAAW,CAAC;IAC1E,MAAM4B,eAAe,GAAGF,QAAQ,CAACE,eAAe,KAAK,KAAK;IAE1D,MAAMC,WAAW,gBAAG1C,KAAA,CAAAsB,aAAA,CAACc,SAAS,EAAAO,MAAA,CAAAC,MAAA;MAACrB,GAAG,EAAEZ,OAAO,CAACK;IAAG,GAAKwB,KAAK,CAAG,CAAC;IAE7D,IAAI,CAACC,eAAe,EAAE;MAClB,OAAOC,WAAW;IACtB;IAEA,oBACI1C,KAAA,CAAAsB,aAAA;MAAKC,GAAG,EAAEY,KAAM;MAACU,KAAK,EAAEP;IAAO,GAC1BI,WACA,CAAC;EAEd,CAAC,CACH,CAAC;AAEX,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/LiveElementRenderer.js","sources":["../../src/components/LiveElementRenderer.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport type {\n DocumentElement,\n DocumentElementBindings,\n OnResolved\n} from \"@webiny/website-builder-sdk\";\nimport { contentSdk } from \"@webiny/website-builder-sdk\";\nimport { ElementSlot } from \"./ElementSlot.js\";\nimport { useViewport } from \"./useViewportInfo.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useDocumentState } from \"./useDocumentState.js\";\n\ninterface LiveElementRendererProps {\n element: DocumentElement;\n bindings?: DocumentElementBindings;\n}\n\nexport const LiveElementRenderer = observer(({ element }: LiveElementRendererProps) => {\n const viewport = useViewport();\n\n // 1. Start breakpoint as \"desktop\" on both server and initial client render.\n const [breakpoint, setBreakpoint] = useState<\"desktop\" | string>(\"desktop\");\n\n // 2. Update breakpoint on the client after mount, using real viewport value.\n useEffect(() => {\n if (viewport.breakpoint && viewport.breakpoint !== breakpoint) {\n setBreakpoint(viewport.breakpoint);\n }\n }, [viewport.breakpoint, breakpoint]);\n\n // Bindings for current breakpoint\n const elementBindings = useBindingsForElement(element.id, breakpoint); // pass breakpoint explicitly if possible\n const state = useDocumentState();\n\n const onResolved = useCallback(\n ((value, input) => {\n if (input.type === \"slot\") {\n return (\n <ElementSlot\n key={element.id}\n parentId={element.id}\n slot={input.name}\n elements={input.list ? value : [value]}\n />\n );\n }\n return value;\n }) as OnResolved,\n [element.id]\n );\n\n if (!element || !element.component) {\n return null;\n }\n\n const instances = contentSdk.resolveElement({\n element,\n state,\n elementBindings,\n onResolved\n });\n\n if (!instances) {\n return null;\n }\n\n return (\n <>\n {instances.map((resolvedElement, index) => {\n const { component: Component, inputs, styles, manifest } = resolvedElement;\n const props = { inputs, styles, element, breakpoint: viewport.breakpoint };\n const autoApplyStyles = manifest.autoApplyStyles !== false;\n\n const userElement = <Component key={element.id} {...props} />;\n\n if (!autoApplyStyles) {\n return userElement;\n }\n\n return (\n <div key={index} style={styles}>\n {userElement}\n </div>\n );\n })}\n </>\n );\n});\n"],"names":["LiveElementRenderer","observer","element","viewport","useViewport","breakpoint","setBreakpoint","useState","useEffect","elementBindings","useBindingsForElement","state","useDocumentState","onResolved","useCallback","value","input","ElementSlot","instances","contentSdk","resolvedElement","index","Component","inputs","styles","manifest","props","autoApplyStyles","userElement"],"mappings":";;;;;;;;AAmBO,MAAMA,sBAAsBC,SAAS,CAAC,EAAEC,OAAO,EAA4B;IAC9E,MAAMC,WAAWC;IAGjB,MAAM,CAACC,YAAYC,cAAc,GAAGC,SAA6B;IAGjEC,UAAU;QACN,IAAIL,SAAS,UAAU,IAAIA,SAAS,UAAU,KAAKE,YAC/CC,cAAcH,SAAS,UAAU;IAEzC,GAAG;QAACA,SAAS,UAAU;QAAEE;KAAW;IAGpC,MAAMI,kBAAkBC,sBAAsBR,QAAQ,EAAE,EAAEG;IAC1D,MAAMM,QAAQC;IAEd,MAAMC,aAAaC,YACd,CAACC,OAAOC;QACL,IAAIA,AAAe,WAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACC,aAAWA;YACR,KAAKf,QAAQ,EAAE;YACf,UAAUA,QAAQ,EAAE;YACpB,MAAMc,MAAM,IAAI;YAChB,UAAUA,MAAM,IAAI,GAAGD,QAAQ;gBAACA;aAAM;;QAIlD,OAAOA;IACX,GACA;QAACb,QAAQ,EAAE;KAAC;IAGhB,IAAI,CAACA,WAAW,CAACA,QAAQ,SAAS,EAC9B,OAAO;IAGX,MAAMgB,YAAYC,WAAW,cAAc,CAAC;QACxCjB;QACAS;QACAF;QACAI;IACJ;IAEA,IAAI,CAACK,WACD,OAAO;IAGX,OAAO,WAAP,GACI,0CACKA,UAAU,GAAG,CAAC,CAACE,iBAAiBC;QAC7B,MAAM,EAAE,WAAWC,SAAS,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGL;QAC3D,MAAMM,QAAQ;YAAEH;YAAQC;YAAQtB;YAAS,YAAYC,SAAS,UAAU;QAAC;QACzE,MAAMwB,kBAAkBF,AAA6B,UAA7BA,SAAS,eAAe;QAEhD,MAAMG,cAAc,WAAdA,GAAc,oBAACN,WAAAA;YAAU,KAAKpB,QAAQ,EAAE;YAAG,GAAGwB,KAAK;;QAEzD,IAAI,CAACC,iBACD,OAAOC;QAGX,OAAO,WAAP,GACI,oBAAC;YAAI,KAAKP;YAAO,OAAOG;WACnBI;IAGb;AAGZ"}
@@ -1,21 +1,19 @@
1
1
  "use client";
2
-
3
- import React from "react";
2
+ import react from "react";
4
3
  import { ElementRenderer } from "./ElementRenderer.js";
5
4
  import { ElementSlotDepthProvider, useElementSlotDepth } from "./ElementSlotDepthProvider.js";
6
5
  import { ElementIndexProvider } from "./ElementIndexProvider.js";
7
- export const LiveElementSlot = ({
8
- elements = []
9
- }) => {
10
- const depth = useElementSlotDepth();
11
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ElementSlotDepthProvider, {
12
- depth: depth + 1
13
- }, elements.map((id, index) => /*#__PURE__*/React.createElement(ElementIndexProvider, {
14
- key: id,
15
- index: index
16
- }, /*#__PURE__*/React.createElement(ElementRenderer, {
17
- id: id
18
- })))));
6
+ const LiveElementSlot = ({ elements = [] })=>{
7
+ const depth = useElementSlotDepth();
8
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(ElementSlotDepthProvider, {
9
+ depth: depth + 1
10
+ }, elements.map((id, index)=>/*#__PURE__*/ react.createElement(ElementIndexProvider, {
11
+ key: id,
12
+ index: index
13
+ }, /*#__PURE__*/ react.createElement(ElementRenderer, {
14
+ id: id
15
+ })))));
19
16
  };
17
+ export { LiveElementSlot };
20
18
 
21
19
  //# sourceMappingURL=LiveElementSlot.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ElementRenderer","ElementSlotDepthProvider","useElementSlotDepth","ElementIndexProvider","LiveElementSlot","elements","depth","createElement","Fragment","map","id","index","key"],"sources":["LiveElementSlot.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { ElementRenderer } from \"./ElementRenderer.js\";\nimport type { ElementSlotProps } from \"./ElementSlot.js\";\nimport { ElementSlotDepthProvider, useElementSlotDepth } from \"./ElementSlotDepthProvider.js\";\nimport { ElementIndexProvider } from \"./ElementIndexProvider.js\";\n\nexport const LiveElementSlot = ({ elements = [] }: Pick<ElementSlotProps, \"elements\">) => {\n const depth = useElementSlotDepth();\n return (\n <>\n <ElementSlotDepthProvider depth={depth + 1}>\n {elements.map((id, index) => (\n <ElementIndexProvider key={id} index={index}>\n <ElementRenderer id={id} />\n </ElementIndexProvider>\n ))}\n </ElementSlotDepthProvider>\n </>\n );\n};\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe;AAExB,SAASC,wBAAwB,EAAEC,mBAAmB;AACtD,SAASC,oBAAoB;AAE7B,OAAO,MAAMC,eAAe,GAAGA,CAAC;EAAEC,QAAQ,GAAG;AAAuC,CAAC,KAAK;EACtF,MAAMC,KAAK,GAAGJ,mBAAmB,CAAC,CAAC;EACnC,oBACIH,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,qBACIT,KAAA,CAAAQ,aAAA,CAACN,wBAAwB;IAACK,KAAK,EAAEA,KAAK,GAAG;EAAE,GACtCD,QAAQ,CAACI,GAAG,CAAC,CAACC,EAAE,EAAEC,KAAK,kBACpBZ,KAAA,CAAAQ,aAAA,CAACJ,oBAAoB;IAACS,GAAG,EAAEF,EAAG;IAACC,KAAK,EAAEA;EAAM,gBACxCZ,KAAA,CAAAQ,aAAA,CAACP,eAAe;IAACU,EAAE,EAAEA;EAAG,CAAE,CACR,CACzB,CACqB,CAC5B,CAAC;AAEX,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/LiveElementSlot.js","sources":["../../src/components/LiveElementSlot.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { ElementRenderer } from \"./ElementRenderer.js\";\nimport type { ElementSlotProps } from \"./ElementSlot.js\";\nimport { ElementSlotDepthProvider, useElementSlotDepth } from \"./ElementSlotDepthProvider.js\";\nimport { ElementIndexProvider } from \"./ElementIndexProvider.js\";\n\nexport const LiveElementSlot = ({ elements = [] }: Pick<ElementSlotProps, \"elements\">) => {\n const depth = useElementSlotDepth();\n return (\n <>\n <ElementSlotDepthProvider depth={depth + 1}>\n {elements.map((id, index) => (\n <ElementIndexProvider key={id} index={index}>\n <ElementRenderer id={id} />\n </ElementIndexProvider>\n ))}\n </ElementSlotDepthProvider>\n </>\n );\n};\n"],"names":["LiveElementSlot","elements","depth","useElementSlotDepth","ElementSlotDepthProvider","id","index","ElementIndexProvider","ElementRenderer"],"mappings":";;;;;AAOO,MAAMA,kBAAkB,CAAC,EAAEC,WAAW,EAAE,EAAsC;IACjF,MAAMC,QAAQC;IACd,OAAO,WAAP,GACI,wDACI,oBAACC,0BAAwBA;QAAC,OAAOF,QAAQ;OACpCD,SAAS,GAAG,CAAC,CAACI,IAAIC,QAAAA,WAAAA,GACf,oBAACC,sBAAoBA;YAAC,KAAKF;YAAI,OAAOC;yBAClC,oBAACE,iBAAeA;YAAC,IAAIH;;AAM7C"}
@@ -1,30 +1,24 @@
1
1
  "use client";
2
-
3
- import React from "react";
2
+ import react from "react";
4
3
  import { LiveElementSlot } from "./LiveElementSlot.js";
5
4
  import { useElementSlotDepth } from "./ElementSlotDepthProvider.js";
6
- export const PreviewElementSlot = ({
7
- parentId,
8
- slot,
9
- elements = []
10
- }) => {
11
- const depth = useElementSlotDepth();
12
- if (!elements.length) {
13
- return /*#__PURE__*/React.createElement("div", {
14
- style: {
15
- height: 100,
16
- width: "100% !important"
17
- },
18
- "data-role": "element-slot",
19
- "data-parent-id": parentId,
20
- "data-parent-slot": slot,
21
- "data-depth": depth,
22
- "data-empty": true
5
+ const PreviewElementSlot = ({ parentId, slot, elements = [] })=>{
6
+ const depth = useElementSlotDepth();
7
+ if (!elements.length) return /*#__PURE__*/ react.createElement("div", {
8
+ style: {
9
+ height: 100,
10
+ width: "100% !important"
11
+ },
12
+ "data-role": "element-slot",
13
+ "data-parent-id": parentId,
14
+ "data-parent-slot": slot,
15
+ "data-depth": depth,
16
+ "data-empty": true
17
+ });
18
+ return /*#__PURE__*/ react.createElement(LiveElementSlot, {
19
+ elements: elements
23
20
  });
24
- }
25
- return /*#__PURE__*/React.createElement(LiveElementSlot, {
26
- elements: elements
27
- });
28
21
  };
22
+ export { PreviewElementSlot };
29
23
 
30
24
  //# sourceMappingURL=PreviewElementSlot.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","LiveElementSlot","useElementSlotDepth","PreviewElementSlot","parentId","slot","elements","depth","length","createElement","style","height","width"],"sources":["PreviewElementSlot.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { LiveElementSlot } from \"./LiveElementSlot.js\";\nimport { useElementSlotDepth } from \"./ElementSlotDepthProvider.js\";\n\ninterface ElementSlotProps {\n // Element that contains this slot.\n parentId: string;\n // Path to the array of elements within the element's data structure.\n slot: string;\n // IDs of the elements to render.\n elements: string[];\n}\n\nexport const PreviewElementSlot = ({ parentId, slot, elements = [] }: ElementSlotProps) => {\n const depth = useElementSlotDepth();\n\n if (!elements.length) {\n return (\n <div\n style={{ height: 100, width: \"100% !important\" }}\n data-role={\"element-slot\"}\n data-parent-id={parentId}\n data-parent-slot={slot}\n data-depth={depth}\n data-empty={true}\n />\n );\n }\n\n return <LiveElementSlot elements={elements} />;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe;AACxB,SAASC,mBAAmB;AAW5B,OAAO,MAAMC,kBAAkB,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,IAAI;EAAEC,QAAQ,GAAG;AAAqB,CAAC,KAAK;EACvF,MAAMC,KAAK,GAAGL,mBAAmB,CAAC,CAAC;EAEnC,IAAI,CAACI,QAAQ,CAACE,MAAM,EAAE;IAClB,oBACIR,KAAA,CAAAS,aAAA;MACIC,KAAK,EAAE;QAAEC,MAAM,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAkB,CAAE;MACjD,aAAW,cAAe;MAC1B,kBAAgBR,QAAS;MACzB,oBAAkBC,IAAK;MACvB,cAAYE,KAAM;MAClB,cAAY;IAAK,CACpB,CAAC;EAEV;EAEA,oBAAOP,KAAA,CAAAS,aAAA,CAACR,eAAe;IAACK,QAAQ,EAAEA;EAAS,CAAE,CAAC;AAClD,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/PreviewElementSlot.js","sources":["../../src/components/PreviewElementSlot.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { LiveElementSlot } from \"./LiveElementSlot.js\";\nimport { useElementSlotDepth } from \"./ElementSlotDepthProvider.js\";\n\ninterface ElementSlotProps {\n // Element that contains this slot.\n parentId: string;\n // Path to the array of elements within the element's data structure.\n slot: string;\n // IDs of the elements to render.\n elements: string[];\n}\n\nexport const PreviewElementSlot = ({ parentId, slot, elements = [] }: ElementSlotProps) => {\n const depth = useElementSlotDepth();\n\n if (!elements.length) {\n return (\n <div\n style={{ height: 100, width: \"100% !important\" }}\n data-role={\"element-slot\"}\n data-parent-id={parentId}\n data-parent-slot={slot}\n data-depth={depth}\n data-empty={true}\n />\n );\n }\n\n return <LiveElementSlot elements={elements} />;\n};\n"],"names":["PreviewElementSlot","parentId","slot","elements","depth","useElementSlotDepth","LiveElementSlot"],"mappings":";;;;AAcO,MAAMA,qBAAqB,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,EAAoB;IAClF,MAAMC,QAAQC;IAEd,IAAI,CAACF,SAAS,MAAM,EAChB,OAAO,WAAP,GACI,oBAAC;QACG,OAAO;YAAE,QAAQ;YAAK,OAAO;QAAkB;QAC/C,aAAW;QACX,kBAAgBF;QAChB,oBAAkBC;QAClB,cAAYE;QACZ,cAAY;;IAKxB,OAAO,WAAP,GAAO,oBAACE,iBAAeA;QAAC,UAAUH;;AACtC"}
@@ -2,5 +2,3 @@ export * from "./DocumentRenderer.js";
2
2
  export * from "./DocumentFragment.js";
3
3
  export * from "./ElementSlot.js";
4
4
  export * from "./DocumentStoreProvider.js";
5
-
6
- //# sourceMappingURL=index.js.map
@@ -3,17 +3,19 @@ import { BindingsProcessor } from "@webiny/website-builder-sdk";
3
3
  import { useViewport } from "./useViewportInfo.js";
4
4
  import { useDocumentStore } from "./DocumentStoreProvider.js";
5
5
  import { useSelectFromState } from "./useSelectFromState.js";
6
- export const useBindingsForElement = (elementId, breakpoint) => {
7
- const documentStore = useDocumentStore();
8
- const viewport = useViewport();
9
- return useSelectFromState(() => documentStore.getDocument(), document => {
10
- const bindings = toJS(document.bindings[elementId]) ?? {};
11
- const breakpoints = viewport.breakpoints.map(bp => bp.name);
12
-
13
- // Merge element bindings.
14
- const bindingsProcessor = new BindingsProcessor(breakpoints);
15
- return bindingsProcessor.getBindings(bindings, breakpoint);
16
- }, [elementId, breakpoint]);
6
+ const useBindingsForElement = (elementId, breakpoint)=>{
7
+ const documentStore = useDocumentStore();
8
+ const viewport = useViewport();
9
+ return useSelectFromState(()=>documentStore.getDocument(), (document)=>{
10
+ const bindings = toJS(document.bindings[elementId]) ?? {};
11
+ const breakpoints = viewport.breakpoints.map((bp)=>bp.name);
12
+ const bindingsProcessor = new BindingsProcessor(breakpoints);
13
+ return bindingsProcessor.getBindings(bindings, breakpoint);
14
+ }, [
15
+ elementId,
16
+ breakpoint
17
+ ]);
17
18
  };
19
+ export { useBindingsForElement };
18
20
 
19
21
  //# sourceMappingURL=useBindingsForElement.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["toJS","BindingsProcessor","useViewport","useDocumentStore","useSelectFromState","useBindingsForElement","elementId","breakpoint","documentStore","viewport","getDocument","document","bindings","breakpoints","map","bp","name","bindingsProcessor","getBindings"],"sources":["useBindingsForElement.ts"],"sourcesContent":["import { toJS } from \"mobx\";\nimport { BindingsProcessor } from \"@webiny/website-builder-sdk\";\nimport { useViewport } from \"./useViewportInfo.js\";\nimport { useDocumentStore } from \"./DocumentStoreProvider.js\";\nimport { useSelectFromState } from \"./useSelectFromState.js\";\n\nexport const useBindingsForElement = (elementId: string, breakpoint: string) => {\n const documentStore = useDocumentStore();\n const viewport = useViewport();\n\n return useSelectFromState(\n () => documentStore.getDocument()!,\n document => {\n const bindings = toJS(document.bindings[elementId]) ?? {};\n const breakpoints = viewport.breakpoints.map(bp => bp.name);\n\n // Merge element bindings.\n const bindingsProcessor = new BindingsProcessor(breakpoints);\n\n return bindingsProcessor.getBindings(bindings, breakpoint);\n },\n [elementId, breakpoint]\n );\n};\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,MAAM;AAC3B,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,WAAW;AACpB,SAASC,gBAAgB;AACzB,SAASC,kBAAkB;AAE3B,OAAO,MAAMC,qBAAqB,GAAGA,CAACC,SAAiB,EAAEC,UAAkB,KAAK;EAC5E,MAAMC,aAAa,GAAGL,gBAAgB,CAAC,CAAC;EACxC,MAAMM,QAAQ,GAAGP,WAAW,CAAC,CAAC;EAE9B,OAAOE,kBAAkB,CACrB,MAAMI,aAAa,CAACE,WAAW,CAAC,CAAE,EAClCC,QAAQ,IAAI;IACR,MAAMC,QAAQ,GAAGZ,IAAI,CAACW,QAAQ,CAACC,QAAQ,CAACN,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,MAAMO,WAAW,GAAGJ,QAAQ,CAACI,WAAW,CAACC,GAAG,CAACC,EAAE,IAAIA,EAAE,CAACC,IAAI,CAAC;;IAE3D;IACA,MAAMC,iBAAiB,GAAG,IAAIhB,iBAAiB,CAACY,WAAW,CAAC;IAE5D,OAAOI,iBAAiB,CAACC,WAAW,CAACN,QAAQ,EAAEL,UAAU,CAAC;EAC9D,CAAC,EACD,CAACD,SAAS,EAAEC,UAAU,CAC1B,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/useBindingsForElement.js","sources":["../../src/components/useBindingsForElement.ts"],"sourcesContent":["import { toJS } from \"mobx\";\nimport { BindingsProcessor } from \"@webiny/website-builder-sdk\";\nimport { useViewport } from \"./useViewportInfo.js\";\nimport { useDocumentStore } from \"./DocumentStoreProvider.js\";\nimport { useSelectFromState } from \"./useSelectFromState.js\";\n\nexport const useBindingsForElement = (elementId: string, breakpoint: string) => {\n const documentStore = useDocumentStore();\n const viewport = useViewport();\n\n return useSelectFromState(\n () => documentStore.getDocument()!,\n document => {\n const bindings = toJS(document.bindings[elementId]) ?? {};\n const breakpoints = viewport.breakpoints.map(bp => bp.name);\n\n // Merge element bindings.\n const bindingsProcessor = new BindingsProcessor(breakpoints);\n\n return bindingsProcessor.getBindings(bindings, breakpoint);\n },\n [elementId, breakpoint]\n );\n};\n"],"names":["useBindingsForElement","elementId","breakpoint","documentStore","useDocumentStore","viewport","useViewport","useSelectFromState","document","bindings","toJS","breakpoints","bp","bindingsProcessor","BindingsProcessor"],"mappings":";;;;;AAMO,MAAMA,wBAAwB,CAACC,WAAmBC;IACrD,MAAMC,gBAAgBC;IACtB,MAAMC,WAAWC;IAEjB,OAAOC,mBACH,IAAMJ,cAAc,WAAW,IAC/BK,CAAAA;QACI,MAAMC,WAAWC,KAAKF,SAAS,QAAQ,CAACP,UAAU,KAAK,CAAC;QACxD,MAAMU,cAAcN,SAAS,WAAW,CAAC,GAAG,CAACO,CAAAA,KAAMA,GAAG,IAAI;QAG1D,MAAMC,oBAAoB,IAAIC,kBAAkBH;QAEhD,OAAOE,kBAAkB,WAAW,CAACJ,UAAUP;IACnD,GACA;QAACD;QAAWC;KAAW;AAE/B"}
@@ -1,8 +1,9 @@
1
1
  import { useDocumentStore } from "./DocumentStoreProvider.js";
2
2
  import { useSelectFromState } from "./useSelectFromState.js";
3
- export const useDocumentState = () => {
4
- const documentStore = useDocumentStore();
5
- return useSelectFromState(() => documentStore.getDocument(), document => document.state ?? {});
3
+ const useDocumentState = ()=>{
4
+ const documentStore = useDocumentStore();
5
+ return useSelectFromState(()=>documentStore.getDocument(), (document)=>document.state ?? {});
6
6
  };
7
+ export { useDocumentState };
7
8
 
8
9
  //# sourceMappingURL=useDocumentState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useDocumentStore","useSelectFromState","useDocumentState","documentStore","getDocument","document","state"],"sources":["useDocumentState.ts"],"sourcesContent":["import { useDocumentStore } from \"./DocumentStoreProvider.js\";\nimport { useSelectFromState } from \"./useSelectFromState.js\";\n\nexport const useDocumentState = () => {\n const documentStore = useDocumentStore();\n return useSelectFromState(\n () => documentStore.getDocument()!,\n document => document.state ?? {}\n );\n};\n"],"mappings":"AAAA,SAASA,gBAAgB;AACzB,SAASC,kBAAkB;AAE3B,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAClC,MAAMC,aAAa,GAAGH,gBAAgB,CAAC,CAAC;EACxC,OAAOC,kBAAkB,CACrB,MAAME,aAAa,CAACC,WAAW,CAAC,CAAE,EAClCC,QAAQ,IAAIA,QAAQ,CAACC,KAAK,IAAI,CAAC,CACnC,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/useDocumentState.js","sources":["../../src/components/useDocumentState.ts"],"sourcesContent":["import { useDocumentStore } from \"./DocumentStoreProvider.js\";\nimport { useSelectFromState } from \"./useSelectFromState.js\";\n\nexport const useDocumentState = () => {\n const documentStore = useDocumentStore();\n return useSelectFromState(\n () => documentStore.getDocument()!,\n document => document.state ?? {}\n );\n};\n"],"names":["useDocumentState","documentStore","useDocumentStore","useSelectFromState","document"],"mappings":";;AAGO,MAAMA,mBAAmB;IAC5B,MAAMC,gBAAgBC;IACtB,OAAOC,mBACH,IAAMF,cAAc,WAAW,IAC/BG,CAAAA,WAAYA,SAAS,KAAK,IAAI,CAAC;AAEvC"}
@@ -1,39 +1,33 @@
1
- import deepEqual from "deep-equal";
2
- import { useState, useEffect, useMemo } from "react";
1
+ import deep_equal from "deep-equal";
2
+ import { useEffect, useMemo, useState } from "react";
3
3
  import { reaction } from "mobx";
4
- /**
5
- * Subscribe to part of the document state.
6
- * @param selector Pick the slice of state you care about.
7
- * @param equals (optional) comparator, defaults to Object.is
8
- */
9
- export function useSelectFromState(getState, selector, deps = [], equals = deepEqual) {
10
- // Pull the initial slice synchronously
11
- const initialValue = useMemo(() => selector(getState()), deps);
12
- const [value, setValue] = useState(initialValue);
13
- useEffect(() => {
14
- setValue(selector(getState())); // reset state on dep change
15
- }, deps);
16
- useEffect(() => {
17
- // reaction tracks selector(doc) and only fires when newVal !== oldVal
18
- const disposer = reaction(() => {
19
- const state = getState();
20
- return selector(state);
21
- }, (newValue, oldValue) => {
22
- if (!equals(oldValue, newValue)) {
23
- setValue(newValue);
24
- }
25
- }, {
26
- // use your comparator to decide if newValue “really” changed
27
- equals,
28
- // we already set initial via useState
29
- fireImmediately: false
30
- });
31
- return () => {
32
- // clean up when the component unmounts
33
- disposer();
34
- };
35
- }, [getState, selector, equals, ...deps]);
36
- return value;
4
+ function useSelectFromState(getState, selector, deps = [], equals = deep_equal) {
5
+ const initialValue = useMemo(()=>selector(getState()), deps);
6
+ const [value, setValue] = useState(initialValue);
7
+ useEffect(()=>{
8
+ setValue(selector(getState()));
9
+ }, deps);
10
+ useEffect(()=>{
11
+ const disposer = reaction(()=>{
12
+ const state = getState();
13
+ return selector(state);
14
+ }, (newValue, oldValue)=>{
15
+ if (!equals(oldValue, newValue)) setValue(newValue);
16
+ }, {
17
+ equals,
18
+ fireImmediately: false
19
+ });
20
+ return ()=>{
21
+ disposer();
22
+ };
23
+ }, [
24
+ getState,
25
+ selector,
26
+ equals,
27
+ ...deps
28
+ ]);
29
+ return value;
37
30
  }
31
+ export { useSelectFromState };
38
32
 
39
33
  //# sourceMappingURL=useSelectFromState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["deepEqual","useState","useEffect","useMemo","reaction","useSelectFromState","getState","selector","deps","equals","initialValue","value","setValue","disposer","state","newValue","oldValue","fireImmediately"],"sources":["useSelectFromState.ts"],"sourcesContent":["import deepEqual from \"deep-equal\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport type { IReactionDisposer } from \"mobx\";\nimport { reaction } from \"mobx\";\n\ntype Equals<T> = (a: T, b: T) => boolean;\n\n/**\n * Subscribe to part of the document state.\n * @param selector Pick the slice of state you care about.\n * @param equals (optional) comparator, defaults to Object.is\n */\nexport function useSelectFromState<TState, T>(\n getState: () => TState,\n selector: (doc: TState) => T,\n deps: React.DependencyList = [],\n equals: Equals<T> = deepEqual\n): T {\n // Pull the initial slice synchronously\n const initialValue = useMemo(() => selector(getState()), deps);\n const [value, setValue] = useState<T>(initialValue);\n\n useEffect(() => {\n setValue(selector(getState())); // reset state on dep change\n }, deps);\n\n useEffect(() => {\n // reaction tracks selector(doc) and only fires when newVal !== oldVal\n const disposer: IReactionDisposer = reaction(\n () => {\n const state = getState();\n\n return selector(state);\n },\n (newValue, oldValue) => {\n if (!equals(oldValue, newValue)) {\n setValue(newValue);\n }\n },\n {\n // use your comparator to decide if newValue “really” changed\n equals,\n // we already set initial via useState\n fireImmediately: false\n }\n );\n\n return () => {\n // clean up when the component unmounts\n disposer();\n };\n }, [getState, selector, equals, ...deps]);\n\n return value;\n}\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAEpD,SAASC,QAAQ,QAAQ,MAAM;AAI/B;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAC9BC,QAAsB,EACtBC,QAA4B,EAC5BC,IAA0B,GAAG,EAAE,EAC/BC,MAAiB,GAAGT,SAAS,EAC5B;EACD;EACA,MAAMU,YAAY,GAAGP,OAAO,CAAC,MAAMI,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,EAAEE,IAAI,CAAC;EAC9D,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAGX,QAAQ,CAAIS,YAAY,CAAC;EAEnDR,SAAS,CAAC,MAAM;IACZU,QAAQ,CAACL,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpC,CAAC,EAAEE,IAAI,CAAC;EAERN,SAAS,CAAC,MAAM;IACZ;IACA,MAAMW,QAA2B,GAAGT,QAAQ,CACxC,MAAM;MACF,MAAMU,KAAK,GAAGR,QAAQ,CAAC,CAAC;MAExB,OAAOC,QAAQ,CAACO,KAAK,CAAC;IAC1B,CAAC,EACD,CAACC,QAAQ,EAAEC,QAAQ,KAAK;MACpB,IAAI,CAACP,MAAM,CAACO,QAAQ,EAAED,QAAQ,CAAC,EAAE;QAC7BH,QAAQ,CAACG,QAAQ,CAAC;MACtB;IACJ,CAAC,EACD;MACI;MACAN,MAAM;MACN;MACAQ,eAAe,EAAE;IACrB,CACJ,CAAC;IAED,OAAO,MAAM;MACT;MACAJ,QAAQ,CAAC,CAAC;IACd,CAAC;EACL,CAAC,EAAE,CAACP,QAAQ,EAAEC,QAAQ,EAAEE,MAAM,EAAE,GAAGD,IAAI,CAAC,CAAC;EAEzC,OAAOG,KAAK;AAChB","ignoreList":[]}
1
+ {"version":3,"file":"components/useSelectFromState.js","sources":["../../src/components/useSelectFromState.ts"],"sourcesContent":["import deepEqual from \"deep-equal\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport type { IReactionDisposer } from \"mobx\";\nimport { reaction } from \"mobx\";\n\ntype Equals<T> = (a: T, b: T) => boolean;\n\n/**\n * Subscribe to part of the document state.\n * @param selector Pick the slice of state you care about.\n * @param equals (optional) comparator, defaults to Object.is\n */\nexport function useSelectFromState<TState, T>(\n getState: () => TState,\n selector: (doc: TState) => T,\n deps: React.DependencyList = [],\n equals: Equals<T> = deepEqual\n): T {\n // Pull the initial slice synchronously\n const initialValue = useMemo(() => selector(getState()), deps);\n const [value, setValue] = useState<T>(initialValue);\n\n useEffect(() => {\n setValue(selector(getState())); // reset state on dep change\n }, deps);\n\n useEffect(() => {\n // reaction tracks selector(doc) and only fires when newVal !== oldVal\n const disposer: IReactionDisposer = reaction(\n () => {\n const state = getState();\n\n return selector(state);\n },\n (newValue, oldValue) => {\n if (!equals(oldValue, newValue)) {\n setValue(newValue);\n }\n },\n {\n // use your comparator to decide if newValue “really” changed\n equals,\n // we already set initial via useState\n fireImmediately: false\n }\n );\n\n return () => {\n // clean up when the component unmounts\n disposer();\n };\n }, [getState, selector, equals, ...deps]);\n\n return value;\n}\n"],"names":["useSelectFromState","getState","selector","deps","equals","deepEqual","initialValue","useMemo","value","setValue","useState","useEffect","disposer","reaction","state","newValue","oldValue"],"mappings":";;;AAYO,SAASA,mBACZC,QAAsB,EACtBC,QAA4B,EAC5BC,OAA6B,EAAE,EAC/BC,SAAoBC,UAAS;IAG7B,MAAMC,eAAeC,QAAQ,IAAML,SAASD,aAAaE;IACzD,MAAM,CAACK,OAAOC,SAAS,GAAGC,SAAYJ;IAEtCK,UAAU;QACNF,SAASP,SAASD;IACtB,GAAGE;IAEHQ,UAAU;QAEN,MAAMC,WAA8BC,SAChC;YACI,MAAMC,QAAQb;YAEd,OAAOC,SAASY;QACpB,GACA,CAACC,UAAUC;YACP,IAAI,CAACZ,OAAOY,UAAUD,WAClBN,SAASM;QAEjB,GACA;YAEIX;YAEA,iBAAiB;QACrB;QAGJ,OAAO;YAEHQ;QACJ;IACJ,GAAG;QAACX;QAAUC;QAAUE;WAAWD;KAAK;IAExC,OAAOK;AACX"}
@@ -1,11 +1,10 @@
1
1
  import { useEffect, useState } from "react";
2
2
  import { viewportManager } from "@webiny/website-builder-sdk";
3
- export const useViewport = () => {
4
- const [viewport, setViewport] = useState(viewportManager.getViewport());
5
- useEffect(() => {
6
- return viewportManager.onViewportChangeEnd(setViewport);
7
- }, []);
8
- return viewport;
3
+ const useViewport = ()=>{
4
+ const [viewport, setViewport] = useState(viewportManager.getViewport());
5
+ useEffect(()=>viewportManager.onViewportChangeEnd(setViewport), []);
6
+ return viewport;
9
7
  };
8
+ export { useViewport };
10
9
 
11
10
  //# sourceMappingURL=useViewportInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useState","viewportManager","useViewport","viewport","setViewport","getViewport","onViewportChangeEnd"],"sources":["useViewportInfo.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { viewportManager } from \"@webiny/website-builder-sdk\";\n\nexport const useViewport = () => {\n const [viewport, setViewport] = useState(viewportManager.getViewport());\n\n useEffect(() => {\n return viewportManager.onViewportChangeEnd(setViewport);\n }, []);\n\n return viewport;\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,eAAe,QAAQ,6BAA6B;AAE7D,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC7B,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGJ,QAAQ,CAACC,eAAe,CAACI,WAAW,CAAC,CAAC,CAAC;EAEvEN,SAAS,CAAC,MAAM;IACZ,OAAOE,eAAe,CAACK,mBAAmB,CAACF,WAAW,CAAC;EAC3D,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOD,QAAQ;AACnB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"components/useViewportInfo.js","sources":["../../src/components/useViewportInfo.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { viewportManager } from \"@webiny/website-builder-sdk\";\n\nexport const useViewport = () => {\n const [viewport, setViewport] = useState(viewportManager.getViewport());\n\n useEffect(() => {\n return viewportManager.onViewportChangeEnd(setViewport);\n }, []);\n\n return viewport;\n};\n"],"names":["useViewport","viewport","setViewport","useState","viewportManager","useEffect"],"mappings":";;AAGO,MAAMA,cAAc;IACvB,MAAM,CAACC,UAAUC,YAAY,GAAGC,SAASC,gBAAgB,WAAW;IAEpEC,UAAU,IACCD,gBAAgB,mBAAmB,CAACF,cAC5C,EAAE;IAEL,OAAOD;AACX"}