@weaverse/react 0.7.0 → 0.7.3
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.
- package/dist/index.d.ts +0 -0
- package/dist/index.js +104 -17
- package/dist/index.mjs +105 -14
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
37
37
|
|
|
38
38
|
// src/context.ts
|
|
39
39
|
var import_core = require("@weaverse/core");
|
|
40
|
-
var
|
|
40
|
+
var import_react18 = require("react");
|
|
41
41
|
|
|
42
42
|
// src/elements/button.tsx
|
|
43
43
|
var React = __toESM(require("react"));
|
|
@@ -799,6 +799,85 @@ TabContent.defaultProps = {
|
|
|
799
799
|
};
|
|
800
800
|
var TabContent_default = TabContent;
|
|
801
801
|
|
|
802
|
+
// src/elements/slider/index.tsx
|
|
803
|
+
var import_react16 = __toESM(require("react"));
|
|
804
|
+
var Carousel = __toESM(require("nuka-carousel"));
|
|
805
|
+
var SliderContext = (0, import_react16.createContext)({
|
|
806
|
+
active: null,
|
|
807
|
+
setActive: () => {
|
|
808
|
+
}
|
|
809
|
+
});
|
|
810
|
+
var Slider = (0, import_react16.forwardRef)((props, ref) => {
|
|
811
|
+
var _a, _b, _c;
|
|
812
|
+
const { children, ...rest } = props;
|
|
813
|
+
const defaultActive = (_c = (_b = (_a = import_react16.default.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
|
|
814
|
+
const [active, setActive] = (0, import_react16.useState)(defaultActive);
|
|
815
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
816
|
+
...rest,
|
|
817
|
+
ref
|
|
818
|
+
}, /* @__PURE__ */ import_react16.default.createElement(SliderContext.Provider, {
|
|
819
|
+
value: { active, setActive }
|
|
820
|
+
}, children), /* @__PURE__ */ import_react16.default.createElement(Carousel.default, null, /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
821
|
+
className: "slide"
|
|
822
|
+
}, "Hi"), /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
823
|
+
className: "slide"
|
|
824
|
+
}, "Hieee"), /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
825
|
+
className: "slide"
|
|
826
|
+
}, "Hixxx"), /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
827
|
+
className: "slide"
|
|
828
|
+
}, "Hi3")));
|
|
829
|
+
});
|
|
830
|
+
Slider.defaultProps = {
|
|
831
|
+
css: {
|
|
832
|
+
"@desktop": {}
|
|
833
|
+
}
|
|
834
|
+
};
|
|
835
|
+
var slider_default = Slider;
|
|
836
|
+
|
|
837
|
+
// src/elements/slider/SliderContent.tsx
|
|
838
|
+
var import_react17 = __toESM(require("react"));
|
|
839
|
+
var SliderContent = (0, import_react17.forwardRef)(
|
|
840
|
+
(props, ref) => {
|
|
841
|
+
const { active } = (0, import_react17.useContext)(SliderContext);
|
|
842
|
+
const wvId = props["data-wv-id"];
|
|
843
|
+
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
844
|
+
let style = {
|
|
845
|
+
"--rows": rows,
|
|
846
|
+
"--columns": columns,
|
|
847
|
+
"--gap": gap + "px",
|
|
848
|
+
"--row-size": rowSize + "px",
|
|
849
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
850
|
+
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
851
|
+
"--content-active": active === wvId ? "grid" : "none"
|
|
852
|
+
};
|
|
853
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
854
|
+
ref,
|
|
855
|
+
...rest,
|
|
856
|
+
style
|
|
857
|
+
}, import_react17.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react17.default.createElement(Placeholder_default, {
|
|
858
|
+
element: "Slider"
|
|
859
|
+
}, "Slider Content"));
|
|
860
|
+
}
|
|
861
|
+
);
|
|
862
|
+
SliderContent.defaultProps = {
|
|
863
|
+
rows: 2,
|
|
864
|
+
columns: 12,
|
|
865
|
+
gap: 4,
|
|
866
|
+
rowSize: 48,
|
|
867
|
+
css: {
|
|
868
|
+
"@desktop": {
|
|
869
|
+
width: "100%",
|
|
870
|
+
maxWidth: "var(--grid-size)",
|
|
871
|
+
display: "var(--content-active, none)",
|
|
872
|
+
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
873
|
+
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
874
|
+
gap: "var(--gap)",
|
|
875
|
+
borderRadius: 4
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
};
|
|
879
|
+
var SliderContent_default = SliderContent;
|
|
880
|
+
|
|
802
881
|
// src/elements/index.ts
|
|
803
882
|
var elements = {
|
|
804
883
|
Countdown: {
|
|
@@ -856,6 +935,14 @@ var elements = {
|
|
|
856
935
|
TabContent: {
|
|
857
936
|
Component: TabContent_default,
|
|
858
937
|
type: "tab.content"
|
|
938
|
+
},
|
|
939
|
+
Slider: {
|
|
940
|
+
Component: slider_default,
|
|
941
|
+
type: "slider"
|
|
942
|
+
},
|
|
943
|
+
SliderContent: {
|
|
944
|
+
Component: SliderContent_default,
|
|
945
|
+
type: "slider.content"
|
|
859
946
|
}
|
|
860
947
|
};
|
|
861
948
|
var elements_default = elements;
|
|
@@ -868,13 +955,13 @@ var createRootContext = (configs) => {
|
|
|
868
955
|
});
|
|
869
956
|
return rootContext;
|
|
870
957
|
};
|
|
871
|
-
var WeaverseContext = (0,
|
|
958
|
+
var WeaverseContext = (0, import_react18.createContext)({});
|
|
872
959
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
873
960
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
874
961
|
|
|
875
962
|
// src/renderer.tsx
|
|
876
963
|
var import_core2 = require("@weaverse/core");
|
|
877
|
-
var
|
|
964
|
+
var import_react19 = __toESM(require("react"));
|
|
878
965
|
|
|
879
966
|
// src/utils/index.ts
|
|
880
967
|
var shortCssObject = (css) => {
|
|
@@ -902,10 +989,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
902
989
|
// src/renderer.tsx
|
|
903
990
|
var WeaverseRoot = ({ context }) => {
|
|
904
991
|
var _a, _b;
|
|
905
|
-
let [, setData] = (0,
|
|
906
|
-
let rootRef = (0,
|
|
992
|
+
let [, setData] = (0, import_react19.useState)(context.projectData);
|
|
993
|
+
let rootRef = (0, import_react19.useRef)();
|
|
907
994
|
let update = () => setData({});
|
|
908
|
-
(0,
|
|
995
|
+
(0, import_react19.useEffect)(() => {
|
|
909
996
|
context.subscribe(update);
|
|
910
997
|
context.contentRootElement = rootRef.current;
|
|
911
998
|
return () => {
|
|
@@ -914,21 +1001,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
914
1001
|
}, []);
|
|
915
1002
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
916
1003
|
let themeClass = context.stitchesInstance.theme.className;
|
|
917
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1004
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
918
1005
|
className: `weaverse-content-root ${themeClass}`,
|
|
919
1006
|
...eventHandlers,
|
|
920
1007
|
ref: rootRef
|
|
921
|
-
}, /* @__PURE__ */
|
|
1008
|
+
}, /* @__PURE__ */ import_react19.default.createElement(WeaverseContextProvider, {
|
|
922
1009
|
value: context
|
|
923
|
-
}, /* @__PURE__ */
|
|
1010
|
+
}, /* @__PURE__ */ import_react19.default.createElement(ItemInstance, {
|
|
924
1011
|
id: context.projectData.rootId
|
|
925
1012
|
}))) : null;
|
|
926
1013
|
};
|
|
927
1014
|
var ItemComponent = ({ instance }) => {
|
|
928
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
929
|
-
let [data, setData] = (0,
|
|
1015
|
+
let { stitchesInstance, elementInstances } = (0, import_react19.useContext)(WeaverseContext);
|
|
1016
|
+
let [data, setData] = (0, import_react19.useState)(instance.data);
|
|
930
1017
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
931
|
-
(0,
|
|
1018
|
+
(0, import_react19.useEffect)(() => {
|
|
932
1019
|
var _a;
|
|
933
1020
|
let update = (data2) => setData({ ...data2 });
|
|
934
1021
|
instance.subscribe(update);
|
|
@@ -948,13 +1035,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
948
1035
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
949
1036
|
rest.ref = instance.ref;
|
|
950
1037
|
}
|
|
951
|
-
return /* @__PURE__ */
|
|
1038
|
+
return /* @__PURE__ */ import_react19.default.createElement(Component, {
|
|
952
1039
|
key: id,
|
|
953
1040
|
"data-wv-type": type,
|
|
954
1041
|
"data-wv-id": id,
|
|
955
1042
|
className: generateItemClass(instance, stitchesInstance),
|
|
956
1043
|
...rest
|
|
957
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1044
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react19.default.createElement(ItemInstance, {
|
|
958
1045
|
key: id2,
|
|
959
1046
|
id: id2
|
|
960
1047
|
})));
|
|
@@ -962,15 +1049,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
962
1049
|
return null;
|
|
963
1050
|
};
|
|
964
1051
|
var ItemInstance = ({ id }) => {
|
|
965
|
-
let context = (0,
|
|
1052
|
+
let context = (0, import_react19.useContext)(WeaverseContext);
|
|
966
1053
|
let { itemInstances } = context;
|
|
967
1054
|
let instance = itemInstances.get(id);
|
|
968
1055
|
if (!instance) {
|
|
969
|
-
return /* @__PURE__ */
|
|
1056
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
970
1057
|
style: { display: "none" }
|
|
971
1058
|
}, "Item instance ", id, " not found");
|
|
972
1059
|
}
|
|
973
|
-
return /* @__PURE__ */
|
|
1060
|
+
return /* @__PURE__ */ import_react19.default.createElement(ItemComponent, {
|
|
974
1061
|
instance
|
|
975
1062
|
});
|
|
976
1063
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/context.ts
|
|
2
2
|
import { Weaverse } from "@weaverse/core";
|
|
3
|
-
import { createContext as
|
|
3
|
+
import { createContext as createContext4 } from "react";
|
|
4
4
|
|
|
5
5
|
// src/elements/button.tsx
|
|
6
6
|
import * as React from "react";
|
|
@@ -762,6 +762,89 @@ TabContent.defaultProps = {
|
|
|
762
762
|
};
|
|
763
763
|
var TabContent_default = TabContent;
|
|
764
764
|
|
|
765
|
+
// src/elements/slider/index.tsx
|
|
766
|
+
import React18, {
|
|
767
|
+
createContext as createContext3,
|
|
768
|
+
forwardRef as forwardRef15,
|
|
769
|
+
useState as useState5
|
|
770
|
+
} from "react";
|
|
771
|
+
import * as Carousel from "nuka-carousel";
|
|
772
|
+
var SliderContext = createContext3({
|
|
773
|
+
active: null,
|
|
774
|
+
setActive: () => {
|
|
775
|
+
}
|
|
776
|
+
});
|
|
777
|
+
var Slider = forwardRef15((props, ref) => {
|
|
778
|
+
var _a, _b, _c;
|
|
779
|
+
const { children, ...rest } = props;
|
|
780
|
+
const defaultActive = (_c = (_b = (_a = React18.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
|
|
781
|
+
const [active, setActive] = useState5(defaultActive);
|
|
782
|
+
return /* @__PURE__ */ React18.createElement("div", {
|
|
783
|
+
...rest,
|
|
784
|
+
ref
|
|
785
|
+
}, /* @__PURE__ */ React18.createElement(SliderContext.Provider, {
|
|
786
|
+
value: { active, setActive }
|
|
787
|
+
}, children), /* @__PURE__ */ React18.createElement(Carousel.default, null, /* @__PURE__ */ React18.createElement("div", {
|
|
788
|
+
className: "slide"
|
|
789
|
+
}, "Hi"), /* @__PURE__ */ React18.createElement("div", {
|
|
790
|
+
className: "slide"
|
|
791
|
+
}, "Hieee"), /* @__PURE__ */ React18.createElement("div", {
|
|
792
|
+
className: "slide"
|
|
793
|
+
}, "Hixxx"), /* @__PURE__ */ React18.createElement("div", {
|
|
794
|
+
className: "slide"
|
|
795
|
+
}, "Hi3")));
|
|
796
|
+
});
|
|
797
|
+
Slider.defaultProps = {
|
|
798
|
+
css: {
|
|
799
|
+
"@desktop": {}
|
|
800
|
+
}
|
|
801
|
+
};
|
|
802
|
+
var slider_default = Slider;
|
|
803
|
+
|
|
804
|
+
// src/elements/slider/SliderContent.tsx
|
|
805
|
+
import React19, { forwardRef as forwardRef16, useContext as useContext7 } from "react";
|
|
806
|
+
var SliderContent = forwardRef16(
|
|
807
|
+
(props, ref) => {
|
|
808
|
+
const { active } = useContext7(SliderContext);
|
|
809
|
+
const wvId = props["data-wv-id"];
|
|
810
|
+
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
811
|
+
let style = {
|
|
812
|
+
"--rows": rows,
|
|
813
|
+
"--columns": columns,
|
|
814
|
+
"--gap": gap + "px",
|
|
815
|
+
"--row-size": rowSize + "px",
|
|
816
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
817
|
+
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
818
|
+
"--content-active": active === wvId ? "grid" : "none"
|
|
819
|
+
};
|
|
820
|
+
return /* @__PURE__ */ React19.createElement("div", {
|
|
821
|
+
ref,
|
|
822
|
+
...rest,
|
|
823
|
+
style
|
|
824
|
+
}, React19.Children.count(children) > 0 ? children : /* @__PURE__ */ React19.createElement(Placeholder_default, {
|
|
825
|
+
element: "Slider"
|
|
826
|
+
}, "Slider Content"));
|
|
827
|
+
}
|
|
828
|
+
);
|
|
829
|
+
SliderContent.defaultProps = {
|
|
830
|
+
rows: 2,
|
|
831
|
+
columns: 12,
|
|
832
|
+
gap: 4,
|
|
833
|
+
rowSize: 48,
|
|
834
|
+
css: {
|
|
835
|
+
"@desktop": {
|
|
836
|
+
width: "100%",
|
|
837
|
+
maxWidth: "var(--grid-size)",
|
|
838
|
+
display: "var(--content-active, none)",
|
|
839
|
+
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
840
|
+
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
841
|
+
gap: "var(--gap)",
|
|
842
|
+
borderRadius: 4
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
};
|
|
846
|
+
var SliderContent_default = SliderContent;
|
|
847
|
+
|
|
765
848
|
// src/elements/index.ts
|
|
766
849
|
var elements = {
|
|
767
850
|
Countdown: {
|
|
@@ -819,6 +902,14 @@ var elements = {
|
|
|
819
902
|
TabContent: {
|
|
820
903
|
Component: TabContent_default,
|
|
821
904
|
type: "tab.content"
|
|
905
|
+
},
|
|
906
|
+
Slider: {
|
|
907
|
+
Component: slider_default,
|
|
908
|
+
type: "slider"
|
|
909
|
+
},
|
|
910
|
+
SliderContent: {
|
|
911
|
+
Component: SliderContent_default,
|
|
912
|
+
type: "slider.content"
|
|
822
913
|
}
|
|
823
914
|
};
|
|
824
915
|
var elements_default = elements;
|
|
@@ -831,13 +922,13 @@ var createRootContext = (configs) => {
|
|
|
831
922
|
});
|
|
832
923
|
return rootContext;
|
|
833
924
|
};
|
|
834
|
-
var WeaverseContext =
|
|
925
|
+
var WeaverseContext = createContext4({});
|
|
835
926
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
836
927
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
837
928
|
|
|
838
929
|
// src/renderer.tsx
|
|
839
930
|
import { isBrowser } from "@weaverse/core";
|
|
840
|
-
import
|
|
931
|
+
import React20, { useContext as useContext8, useEffect as useEffect4, useRef, useState as useState6 } from "react";
|
|
841
932
|
|
|
842
933
|
// src/utils/index.ts
|
|
843
934
|
var shortCssObject = (css) => {
|
|
@@ -865,7 +956,7 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
865
956
|
// src/renderer.tsx
|
|
866
957
|
var WeaverseRoot = ({ context }) => {
|
|
867
958
|
var _a, _b;
|
|
868
|
-
let [, setData] =
|
|
959
|
+
let [, setData] = useState6(context.projectData);
|
|
869
960
|
let rootRef = useRef();
|
|
870
961
|
let update = () => setData({});
|
|
871
962
|
useEffect4(() => {
|
|
@@ -877,19 +968,19 @@ var WeaverseRoot = ({ context }) => {
|
|
|
877
968
|
}, []);
|
|
878
969
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
879
970
|
let themeClass = context.stitchesInstance.theme.className;
|
|
880
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
971
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React20.createElement("div", {
|
|
881
972
|
className: `weaverse-content-root ${themeClass}`,
|
|
882
973
|
...eventHandlers,
|
|
883
974
|
ref: rootRef
|
|
884
|
-
}, /* @__PURE__ */
|
|
975
|
+
}, /* @__PURE__ */ React20.createElement(WeaverseContextProvider, {
|
|
885
976
|
value: context
|
|
886
|
-
}, /* @__PURE__ */
|
|
977
|
+
}, /* @__PURE__ */ React20.createElement(ItemInstance, {
|
|
887
978
|
id: context.projectData.rootId
|
|
888
979
|
}))) : null;
|
|
889
980
|
};
|
|
890
981
|
var ItemComponent = ({ instance }) => {
|
|
891
|
-
let { stitchesInstance, elementInstances } =
|
|
892
|
-
let [data, setData] =
|
|
982
|
+
let { stitchesInstance, elementInstances } = useContext8(WeaverseContext);
|
|
983
|
+
let [data, setData] = useState6(instance.data);
|
|
893
984
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
894
985
|
useEffect4(() => {
|
|
895
986
|
var _a;
|
|
@@ -911,13 +1002,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
911
1002
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
912
1003
|
rest.ref = instance.ref;
|
|
913
1004
|
}
|
|
914
|
-
return /* @__PURE__ */
|
|
1005
|
+
return /* @__PURE__ */ React20.createElement(Component, {
|
|
915
1006
|
key: id,
|
|
916
1007
|
"data-wv-type": type,
|
|
917
1008
|
"data-wv-id": id,
|
|
918
1009
|
className: generateItemClass(instance, stitchesInstance),
|
|
919
1010
|
...rest
|
|
920
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1011
|
+
}, childIds.map((id2) => /* @__PURE__ */ React20.createElement(ItemInstance, {
|
|
921
1012
|
key: id2,
|
|
922
1013
|
id: id2
|
|
923
1014
|
})));
|
|
@@ -925,15 +1016,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
925
1016
|
return null;
|
|
926
1017
|
};
|
|
927
1018
|
var ItemInstance = ({ id }) => {
|
|
928
|
-
let context =
|
|
1019
|
+
let context = useContext8(WeaverseContext);
|
|
929
1020
|
let { itemInstances } = context;
|
|
930
1021
|
let instance = itemInstances.get(id);
|
|
931
1022
|
if (!instance) {
|
|
932
|
-
return /* @__PURE__ */
|
|
1023
|
+
return /* @__PURE__ */ React20.createElement("div", {
|
|
933
1024
|
style: { display: "none" }
|
|
934
1025
|
}, "Item instance ", id, " not found");
|
|
935
1026
|
}
|
|
936
|
-
return /* @__PURE__ */
|
|
1027
|
+
return /* @__PURE__ */ React20.createElement(ItemComponent, {
|
|
937
1028
|
instance
|
|
938
1029
|
});
|
|
939
1030
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.7.
|
|
2
|
+
"version": "0.7.3",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"name": "@weaverse/react",
|
|
32
32
|
"author": "Weaverse Team",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@weaverse/core": "0.7.
|
|
34
|
+
"@weaverse/core": "0.7.2",
|
|
35
|
+
"nuka-carousel": "^5.2.0"
|
|
35
36
|
}
|
|
36
37
|
}
|