@weaverse/react 0.6.27 → 0.6.30

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 (2) hide show
  1. package/dist/index.js +165 -19
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ module.exports = __toCommonJS(src_exports);
62
62
 
63
63
  // src/context.ts
64
64
  var import_core = require("@weaverse/core");
65
- var import_react13 = require("react");
65
+ var import_react16 = require("react");
66
66
 
67
67
  // src/elements/button.tsx
68
68
  var React = __toESM(require("react"));
@@ -562,7 +562,6 @@ var Accordion = (0, import_react10.forwardRef)((props, ref) => {
562
562
  setActive(id);
563
563
  }
564
564
  };
565
- console.info("9779 active", active);
566
565
  return /* @__PURE__ */ import_react10.default.createElement("div", __spreadValues({
567
566
  ref
568
567
  }, rest), /* @__PURE__ */ import_react10.default.createElement(AccordionContext.Provider, {
@@ -660,13 +659,152 @@ AccordionContent.defaultProps = {
660
659
  gap: "var(--gap)",
661
660
  overflow: "hidden",
662
661
  maxHeight: 0,
663
- transition: "all 0.3s ease-in-out",
662
+ transition: "all var(--transition-duration, 0.3s) ease-in-out",
664
663
  borderRadius: 4
665
664
  }
666
665
  }
667
666
  };
668
667
  var AccordionContent_default = AccordionContent;
669
668
 
669
+ // src/elements/tab/index.tsx
670
+ var import_react14 = __toESM(require("react"));
671
+
672
+ // src/elements/tab/TabHeaderWrapper.tsx
673
+ var import_react13 = __toESM(require("react"));
674
+ function TabHeader(props) {
675
+ const { wvId } = props;
676
+ const { active, setActive } = (0, import_react13.useContext)(TabContext);
677
+ const { itemInstances } = (0, import_react13.useContext)(WeaverseContext);
678
+ const instance = itemInstances.get(wvId);
679
+ let [data, setData] = (0, import_react13.useState)(instance.data);
680
+ (0, import_react13.useEffect)(() => {
681
+ let update = (data2) => setData(__spreadValues({}, data2));
682
+ instance.subscribe(update);
683
+ }, []);
684
+ const text = data.headerText;
685
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
686
+ onClick: () => setActive(wvId),
687
+ className: `wv-tab-header${active === wvId ? " active" : ""}`
688
+ }, text);
689
+ }
690
+ function TabHeaderWrapper(props) {
691
+ const { itemInstances } = (0, import_react13.useContext)(WeaverseContext);
692
+ const instance = itemInstances.get(props.wvId);
693
+ const data = instance.data;
694
+ const childIds = data.childIds;
695
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
696
+ className: "wv-tab-headerWrapper"
697
+ }, childIds.map((id) => /* @__PURE__ */ import_react13.default.createElement(TabHeader, {
698
+ key: id,
699
+ wvId: id
700
+ })));
701
+ }
702
+
703
+ // src/elements/tab/index.tsx
704
+ var TabContext = (0, import_react14.createContext)({
705
+ active: null,
706
+ setActive: () => {
707
+ }
708
+ });
709
+ var Tab = (0, import_react14.forwardRef)((props, ref) => {
710
+ var _b, _c, _d;
711
+ const wvId = props["data-wv-id"];
712
+ const _a = props, { items, children } = _a, rest = __objRest(_a, ["items", "children"]);
713
+ const defaultActive = (_d = (_c = (_b = import_react14.default.Children.toArray(children)) == null ? void 0 : _b[0]) == null ? void 0 : _c.props) == null ? void 0 : _d.id;
714
+ const [active, setActive] = (0, import_react14.useState)(defaultActive);
715
+ const setOpenTab = (id) => {
716
+ if (id === active) {
717
+ setActive(null);
718
+ } else {
719
+ setActive(id);
720
+ }
721
+ };
722
+ return /* @__PURE__ */ import_react14.default.createElement("div", __spreadValues({
723
+ ref
724
+ }, rest), /* @__PURE__ */ import_react14.default.createElement(TabContext.Provider, {
725
+ value: { active, setActive: setOpenTab }
726
+ }, /* @__PURE__ */ import_react14.default.createElement(TabHeaderWrapper, {
727
+ wvId
728
+ }), children));
729
+ });
730
+ Tab.defaultProps = {
731
+ items: [
732
+ {
733
+ headerText: "Header 1"
734
+ },
735
+ {
736
+ headerText: "Header 2"
737
+ },
738
+ {
739
+ headerText: "Header 2"
740
+ }
741
+ ],
742
+ css: {
743
+ "@desktop": {
744
+ display: "flex",
745
+ flexDirection: "column",
746
+ gap: 4,
747
+ "& .wv-tab-headerWrapper": {
748
+ width: "100%",
749
+ display: "flex",
750
+ marginBottom: 10
751
+ },
752
+ "& .wv-tab-header": {
753
+ backgroundColor: "#f0f2f3",
754
+ padding: "10px 16px",
755
+ cursor: "pointer",
756
+ "&.active": {
757
+ backgroundColor: "#0F71FF",
758
+ color: "#fff"
759
+ }
760
+ }
761
+ }
762
+ }
763
+ };
764
+ var tab_default = Tab;
765
+
766
+ // src/elements/tab/TabContent.tsx
767
+ var import_react15 = __toESM(require("react"));
768
+ var TabContent = (0, import_react15.forwardRef)((props, ref) => {
769
+ const { active } = (0, import_react15.useContext)(TabContext);
770
+ const wvId = props["data-wv-id"];
771
+ const _a = props, { rows, columns, gap, rowSize, children } = _a, rest = __objRest(_a, ["rows", "columns", "gap", "rowSize", "children"]);
772
+ let style = {
773
+ "--rows": rows,
774
+ "--columns": columns,
775
+ "--gap": gap + "px",
776
+ "--row-size": rowSize + "px",
777
+ "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
778
+ "--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
779
+ "--content-active": active === wvId ? "grid" : "none"
780
+ };
781
+ return /* @__PURE__ */ import_react15.default.createElement("div", __spreadProps(__spreadValues({
782
+ ref
783
+ }, rest), {
784
+ style
785
+ }), import_react15.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react15.default.createElement(Placeholder_default, {
786
+ element: "Tab"
787
+ }, "Item Content"));
788
+ });
789
+ TabContent.defaultProps = {
790
+ rows: 2,
791
+ columns: 12,
792
+ gap: 4,
793
+ rowSize: 48,
794
+ css: {
795
+ "@desktop": {
796
+ width: "100%",
797
+ maxWidth: "var(--grid-size)",
798
+ display: "var(--content-active, none)",
799
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
800
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
801
+ gap: "var(--gap)",
802
+ borderRadius: 4
803
+ }
804
+ }
805
+ };
806
+ var TabContent_default = TabContent;
807
+
670
808
  // src/elements/index.ts
671
809
  var elements = {
672
810
  Countdown: {
@@ -716,6 +854,14 @@ var elements = {
716
854
  AccordionContent: {
717
855
  Component: AccordionContent_default,
718
856
  type: "accordion.content"
857
+ },
858
+ Tab: {
859
+ Component: tab_default,
860
+ type: "tab"
861
+ },
862
+ TabContent: {
863
+ Component: TabContent_default,
864
+ type: "tab.content"
719
865
  }
720
866
  };
721
867
  var elements_default = elements;
@@ -728,13 +874,13 @@ var createRootContext = (configs) => {
728
874
  });
729
875
  return rootContext;
730
876
  };
731
- var WeaverseContext = (0, import_react13.createContext)({});
877
+ var WeaverseContext = (0, import_react16.createContext)({});
732
878
  var WeaverseContextProvider = WeaverseContext.Provider;
733
879
  var WeaverseContextConsumer = WeaverseContext.Consumer;
734
880
 
735
881
  // src/renderer.tsx
736
882
  var import_core2 = require("@weaverse/core");
737
- var import_react14 = __toESM(require("react"));
883
+ var import_react17 = __toESM(require("react"));
738
884
 
739
885
  // src/utils/index.ts
740
886
  var shortCssObject = (css) => {
@@ -762,10 +908,10 @@ function generateItemClass(instance, stitchesInstance) {
762
908
  // src/renderer.tsx
763
909
  var WeaverseRoot = ({ context }) => {
764
910
  var _a, _b;
765
- let [, setData] = (0, import_react14.useState)(context.projectData);
766
- let rootRef = (0, import_react14.useRef)();
911
+ let [, setData] = (0, import_react17.useState)(context.projectData);
912
+ let rootRef = (0, import_react17.useRef)();
767
913
  let update = () => setData({});
768
- (0, import_react14.useEffect)(() => {
914
+ (0, import_react17.useEffect)(() => {
769
915
  context.subscribe(update);
770
916
  context.contentRootElement = rootRef.current;
771
917
  return () => {
@@ -774,21 +920,21 @@ var WeaverseRoot = ({ context }) => {
774
920
  }, []);
775
921
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
776
922
  let themeClass = context.stitchesInstance.theme.className;
777
- return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react14.default.createElement("div", __spreadProps(__spreadValues({
923
+ return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react17.default.createElement("div", __spreadProps(__spreadValues({
778
924
  className: `weaverse-content-root ${themeClass}`
779
925
  }, eventHandlers), {
780
926
  ref: rootRef
781
- }), /* @__PURE__ */ import_react14.default.createElement(WeaverseContextProvider, {
927
+ }), /* @__PURE__ */ import_react17.default.createElement(WeaverseContextProvider, {
782
928
  value: context
783
- }, /* @__PURE__ */ import_react14.default.createElement(ItemInstance, {
929
+ }, /* @__PURE__ */ import_react17.default.createElement(ItemInstance, {
784
930
  id: context.projectData.rootId
785
931
  }))) : null;
786
932
  };
787
933
  var ItemComponent = ({ instance }) => {
788
- let { stitchesInstance, elementInstances } = (0, import_react14.useContext)(WeaverseContext);
789
- let [data, setData] = (0, import_react14.useState)(instance.data);
934
+ let { stitchesInstance, elementInstances } = (0, import_react17.useContext)(WeaverseContext);
935
+ let [data, setData] = (0, import_react17.useState)(instance.data);
790
936
  let _a = data, { id, type, childIds = [], css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
791
- (0, import_react14.useEffect)(() => {
937
+ (0, import_react17.useEffect)(() => {
792
938
  var _a2;
793
939
  let update = (data2) => setData(__spreadValues({}, data2));
794
940
  instance.subscribe(update);
@@ -808,12 +954,12 @@ var ItemComponent = ({ instance }) => {
808
954
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
809
955
  rest.ref = instance.ref;
810
956
  }
811
- return /* @__PURE__ */ import_react14.default.createElement(Component, __spreadValues({
957
+ return /* @__PURE__ */ import_react17.default.createElement(Component, __spreadValues({
812
958
  key: id,
813
959
  "data-wv-type": type,
814
960
  "data-wv-id": id,
815
961
  className: generateItemClass(instance, stitchesInstance)
816
- }, rest), childIds.map((id2) => /* @__PURE__ */ import_react14.default.createElement(ItemInstance, {
962
+ }, rest), childIds.map((id2) => /* @__PURE__ */ import_react17.default.createElement(ItemInstance, {
817
963
  key: id2,
818
964
  id: id2
819
965
  })));
@@ -821,15 +967,15 @@ var ItemComponent = ({ instance }) => {
821
967
  return null;
822
968
  };
823
969
  var ItemInstance = ({ id }) => {
824
- let context = (0, import_react14.useContext)(WeaverseContext);
970
+ let context = (0, import_react17.useContext)(WeaverseContext);
825
971
  let { itemInstances } = context;
826
972
  let instance = itemInstances.get(id);
827
973
  if (!instance) {
828
- return /* @__PURE__ */ import_react14.default.createElement("div", {
974
+ return /* @__PURE__ */ import_react17.default.createElement("div", {
829
975
  style: { display: "none" }
830
976
  }, "Item instance ", id, " not found");
831
977
  }
832
- return /* @__PURE__ */ import_react14.default.createElement(ItemComponent, {
978
+ return /* @__PURE__ */ import_react17.default.createElement(ItemComponent, {
833
979
  instance
834
980
  });
835
981
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.27",
2
+ "version": "0.6.30",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -31,6 +31,6 @@
31
31
  "name": "@weaverse/react",
32
32
  "author": "Weaverse Team",
33
33
  "dependencies": {
34
- "@weaverse/core": "0.6.27"
34
+ "@weaverse/core": "0.6.30"
35
35
  }
36
36
  }