@weaverse/react 0.7.5 → 0.7.8
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 +9 -5
- package/dist/index.js +343 -186
- package/dist/index.mjs +331 -178
- package/package.json +3 -3
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_react20 = require("react");
|
|
41
41
|
|
|
42
42
|
// src/elements/button.tsx
|
|
43
43
|
var React = __toESM(require("react"));
|
|
@@ -257,7 +257,7 @@ var Image = import_react4.default.forwardRef(
|
|
|
257
257
|
}
|
|
258
258
|
);
|
|
259
259
|
Image.defaultProps = {
|
|
260
|
-
src: "https://ucarecdn.com/
|
|
260
|
+
src: "https://ucarecdn.com/c413b8fe-ceec-4948-9c42-a0434c4ca920/",
|
|
261
261
|
alt: "Image alt text",
|
|
262
262
|
objectFit: "cover",
|
|
263
263
|
objectPosition: "center",
|
|
@@ -427,20 +427,9 @@ var import_react8 = __toESM(require("react"));
|
|
|
427
427
|
var Placeholder = (0, import_react8.forwardRef)(
|
|
428
428
|
(props, ref) => {
|
|
429
429
|
let { element, children, ...rest } = props;
|
|
430
|
-
let style = {
|
|
431
|
-
position: "absolute",
|
|
432
|
-
height: "100%",
|
|
433
|
-
width: "100%",
|
|
434
|
-
display: "flex",
|
|
435
|
-
flexDirection: "column",
|
|
436
|
-
alignItems: "center",
|
|
437
|
-
justifyContent: "center",
|
|
438
|
-
color: "#374151",
|
|
439
|
-
pointerEvents: "none",
|
|
440
|
-
zIndex: 1
|
|
441
|
-
};
|
|
442
430
|
return /* @__PURE__ */ import_react8.default.createElement("div", {
|
|
443
|
-
|
|
431
|
+
"data-wv-type": "placeholder",
|
|
432
|
+
style: { display: "none" },
|
|
444
433
|
ref,
|
|
445
434
|
...rest
|
|
446
435
|
}, /* @__PURE__ */ import_react8.default.createElement("div", {
|
|
@@ -535,108 +524,190 @@ var instagram_default = Instagram;
|
|
|
535
524
|
// src/elements/accordion/index.tsx
|
|
536
525
|
var import_react10 = __toESM(require("react"));
|
|
537
526
|
var AccordionContext = (0, import_react10.createContext)({
|
|
538
|
-
|
|
527
|
+
iconName: "arrow",
|
|
528
|
+
active: [],
|
|
539
529
|
setActive: () => {
|
|
540
530
|
}
|
|
541
531
|
});
|
|
542
532
|
var Accordion = (0, import_react10.forwardRef)(
|
|
543
533
|
(props, ref) => {
|
|
544
|
-
const {
|
|
545
|
-
const [active, setActive] = (0, import_react10.useState)(
|
|
534
|
+
const { iconName, children, ...rest } = props;
|
|
535
|
+
const [active, setActive] = (0, import_react10.useState)([]);
|
|
546
536
|
const setOpenAccordion = (id) => {
|
|
547
|
-
if (id
|
|
548
|
-
setActive(
|
|
537
|
+
if (active.includes(id)) {
|
|
538
|
+
setActive(active.filter((_id) => _id !== id));
|
|
549
539
|
} else {
|
|
550
|
-
setActive(id);
|
|
540
|
+
setActive([...active, id]);
|
|
551
541
|
}
|
|
552
542
|
};
|
|
553
543
|
return /* @__PURE__ */ import_react10.default.createElement("div", {
|
|
554
544
|
ref,
|
|
555
545
|
...rest
|
|
556
546
|
}, /* @__PURE__ */ import_react10.default.createElement(AccordionContext.Provider, {
|
|
557
|
-
value: { active, setActive: setOpenAccordion }
|
|
547
|
+
value: { active, setActive: setOpenAccordion, iconName }
|
|
558
548
|
}, children));
|
|
559
549
|
}
|
|
560
550
|
);
|
|
561
551
|
Accordion.defaultProps = {
|
|
562
|
-
|
|
563
|
-
{
|
|
564
|
-
id: 1,
|
|
565
|
-
headerText: "Header 1",
|
|
566
|
-
childrenId: true
|
|
567
|
-
},
|
|
568
|
-
{
|
|
569
|
-
id: 2,
|
|
570
|
-
headerText: "Header 2"
|
|
571
|
-
}
|
|
572
|
-
],
|
|
552
|
+
iconName: "arrow",
|
|
573
553
|
css: {
|
|
574
554
|
"@desktop": {
|
|
575
555
|
display: "flex",
|
|
576
556
|
flexDirection: "column",
|
|
577
|
-
gap: 4
|
|
578
|
-
".wv-accordion-header": {
|
|
579
|
-
borderRadius: 4,
|
|
580
|
-
padding: 12,
|
|
581
|
-
marginBottom: 4,
|
|
582
|
-
border: "1px solid #76A9FA",
|
|
583
|
-
"&.active": {
|
|
584
|
-
color: "blue"
|
|
585
|
-
},
|
|
586
|
-
'&.active + [data-wv-type="accordion.content"]': {
|
|
587
|
-
maxHeight: "var(--max-height, inherit)"
|
|
588
|
-
}
|
|
589
|
-
}
|
|
557
|
+
gap: 4
|
|
590
558
|
}
|
|
591
559
|
}
|
|
592
560
|
};
|
|
593
561
|
var accordion_default = Accordion;
|
|
594
562
|
|
|
595
563
|
// src/elements/accordion/AccordionWrapper.tsx
|
|
564
|
+
var import_react12 = __toESM(require("react"));
|
|
565
|
+
|
|
566
|
+
// src/elements/accordion/Icon.tsx
|
|
596
567
|
var import_react11 = __toESM(require("react"));
|
|
597
|
-
var
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
568
|
+
var ICONS = {
|
|
569
|
+
caret: {
|
|
570
|
+
animationType: "rotate90",
|
|
571
|
+
css: {
|
|
572
|
+
position: "absolute!important",
|
|
573
|
+
left: 5,
|
|
574
|
+
top: 2,
|
|
575
|
+
width: 0,
|
|
576
|
+
height: 0,
|
|
577
|
+
borderTop: "6px solid transparent",
|
|
578
|
+
borderBottom: "6px solid transparent",
|
|
579
|
+
borderLeft: "6px solid #1F2A37"
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
arrow: {
|
|
583
|
+
animationType: "rotate90",
|
|
584
|
+
css: {
|
|
585
|
+
border: "solid #1F2A37",
|
|
586
|
+
borderWidth: "0 1px 1px 0",
|
|
587
|
+
display: "inline-block",
|
|
588
|
+
transform: "rotate(-45deg) translate(15%, -15%)",
|
|
589
|
+
padding: 4
|
|
590
|
+
}
|
|
591
|
+
},
|
|
592
|
+
plus: {
|
|
593
|
+
animationType: "custom",
|
|
594
|
+
css: {
|
|
595
|
+
display: "inline-block",
|
|
596
|
+
top: -6,
|
|
597
|
+
width: 15,
|
|
598
|
+
height: 1,
|
|
599
|
+
backgroundColor: "#1F2A37",
|
|
600
|
+
"&:after": {
|
|
601
|
+
position: "absolute",
|
|
602
|
+
content: "",
|
|
603
|
+
top: -7,
|
|
604
|
+
left: 7,
|
|
605
|
+
width: 1,
|
|
606
|
+
height: 15,
|
|
607
|
+
backgroundColor: "#1F2A37",
|
|
608
|
+
transition: "all 0.3s ease-in-out 0s"
|
|
609
|
+
},
|
|
610
|
+
"&.active": {
|
|
611
|
+
"&:after": {
|
|
612
|
+
transform: "rotate(90deg)"
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
var rotateAnimation = {
|
|
619
|
+
transition: "all 0.3s ease-in-out 0s",
|
|
620
|
+
transform: "rotate(90deg)"
|
|
621
|
+
};
|
|
622
|
+
function Icon(props) {
|
|
623
|
+
let { name, active = false, style, ...rest } = props;
|
|
624
|
+
let { stitchesInstance } = (0, import_react11.useContext)(WeaverseContext);
|
|
625
|
+
const { animationType, css } = ICONS[name];
|
|
626
|
+
if (active && animationType === "rotate90") {
|
|
627
|
+
style = { ...rotateAnimation, ...style };
|
|
628
|
+
}
|
|
629
|
+
let { className } = stitchesInstance.css(css)();
|
|
630
|
+
if (active)
|
|
631
|
+
className += " active";
|
|
632
|
+
return /* @__PURE__ */ import_react11.default.createElement("span", {
|
|
633
|
+
style,
|
|
634
|
+
...rest
|
|
635
|
+
}, /* @__PURE__ */ import_react11.default.createElement("i", {
|
|
636
|
+
className
|
|
637
|
+
}));
|
|
638
|
+
}
|
|
639
|
+
var Icon_default = Icon;
|
|
640
|
+
|
|
641
|
+
// src/elements/accordion/AccordionWrapper.tsx
|
|
642
|
+
var AccordionWrapper = (0, import_react12.forwardRef)((props, ref) => {
|
|
643
|
+
const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
|
|
644
|
+
const { iconName, active, setActive } = (0, import_react12.useContext)(AccordionContext);
|
|
645
|
+
const isActive = active.includes(wvId);
|
|
646
|
+
return /* @__PURE__ */ import_react12.default.createElement("div", {
|
|
601
647
|
ref,
|
|
602
648
|
...rest
|
|
603
|
-
}, /* @__PURE__ */
|
|
649
|
+
}, /* @__PURE__ */ import_react12.default.createElement("div", {
|
|
604
650
|
onClick: () => setActive(wvId),
|
|
605
|
-
className: `wv-
|
|
606
|
-
},
|
|
651
|
+
className: `wv-acc-header ${isActive ? "active" : ""}`
|
|
652
|
+
}, /* @__PURE__ */ import_react12.default.createElement("span", null, name), /* @__PURE__ */ import_react12.default.createElement(Icon_default, {
|
|
653
|
+
className: "wv-acc-icon",
|
|
654
|
+
active: isActive,
|
|
655
|
+
name: iconName
|
|
656
|
+
})), children);
|
|
607
657
|
});
|
|
608
658
|
AccordionWrapper.defaultProps = {
|
|
609
|
-
|
|
659
|
+
name: "Accordion item",
|
|
610
660
|
css: {
|
|
611
661
|
"@desktop": {
|
|
612
|
-
maxHeight: "100%"
|
|
662
|
+
maxHeight: "100%",
|
|
663
|
+
".wv-acc-icon": {
|
|
664
|
+
position: "absolute",
|
|
665
|
+
right: 16,
|
|
666
|
+
width: 16,
|
|
667
|
+
height: 16,
|
|
668
|
+
transition: "all 0.3s ease-in-out 0s"
|
|
669
|
+
},
|
|
670
|
+
".wv-acc-header": {
|
|
671
|
+
display: "flex",
|
|
672
|
+
alignItems: "center",
|
|
673
|
+
borderRadius: 4,
|
|
674
|
+
padding: 12,
|
|
675
|
+
marginBottom: 4,
|
|
676
|
+
border: "1px solid #76A9FA",
|
|
677
|
+
cursor: "pointer",
|
|
678
|
+
'&.active + [data-wv-type="accordion.content"]': {
|
|
679
|
+
maxHeight: "var(--max-height, inherit)"
|
|
680
|
+
}
|
|
681
|
+
}
|
|
613
682
|
}
|
|
614
683
|
}
|
|
615
684
|
};
|
|
616
685
|
var AccordionWrapper_default = AccordionWrapper;
|
|
617
686
|
|
|
618
687
|
// src/elements/accordion/AccordionContent.tsx
|
|
619
|
-
var
|
|
620
|
-
var AccordionContent = (0,
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
});
|
|
688
|
+
var import_react13 = __toESM(require("react"));
|
|
689
|
+
var AccordionContent = (0, import_react13.forwardRef)(
|
|
690
|
+
(props, ref) => {
|
|
691
|
+
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
692
|
+
let style = {
|
|
693
|
+
"--rows": rows,
|
|
694
|
+
"--columns": columns,
|
|
695
|
+
"--gap": gap + "px",
|
|
696
|
+
"--row-size": rowSize + "px",
|
|
697
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
698
|
+
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
|
|
699
|
+
};
|
|
700
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
701
|
+
ref,
|
|
702
|
+
...rest,
|
|
703
|
+
style
|
|
704
|
+
}, import_react13.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react13.default.createElement(Placeholder_default, {
|
|
705
|
+
element: "Accordion Content"
|
|
706
|
+
}, "Please drag and drop an element here"));
|
|
707
|
+
}
|
|
708
|
+
);
|
|
638
709
|
AccordionContent.defaultProps = {
|
|
639
|
-
rows:
|
|
710
|
+
rows: 3,
|
|
640
711
|
columns: 12,
|
|
641
712
|
gap: 4,
|
|
642
713
|
rowSize: 48,
|
|
@@ -658,96 +729,88 @@ AccordionContent.defaultProps = {
|
|
|
658
729
|
var AccordionContent_default = AccordionContent;
|
|
659
730
|
|
|
660
731
|
// src/elements/tab/index.tsx
|
|
661
|
-
var
|
|
732
|
+
var import_react15 = __toESM(require("react"));
|
|
662
733
|
|
|
663
734
|
// src/elements/tab/TabHeaderWrapper.tsx
|
|
664
|
-
var
|
|
735
|
+
var import_react14 = __toESM(require("react"));
|
|
665
736
|
function TabHeader(props) {
|
|
666
737
|
const { wvId } = props;
|
|
667
|
-
const { active, setActive } = (0,
|
|
668
|
-
const { itemInstances } = (0,
|
|
738
|
+
const { active, setActive } = (0, import_react14.useContext)(TabContext);
|
|
739
|
+
const { itemInstances } = (0, import_react14.useContext)(WeaverseContext);
|
|
669
740
|
const instance = itemInstances.get(wvId);
|
|
670
|
-
let [data, setData] = (0,
|
|
671
|
-
(0,
|
|
741
|
+
let [data, setData] = (0, import_react14.useState)(instance.data);
|
|
742
|
+
(0, import_react14.useEffect)(() => {
|
|
672
743
|
let update = (data2) => setData({ ...data2 });
|
|
673
744
|
instance.subscribe(update);
|
|
674
745
|
}, []);
|
|
675
|
-
|
|
676
|
-
return /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
746
|
+
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
677
747
|
onClick: () => setActive(wvId),
|
|
678
748
|
className: `wv-tab-header${active === wvId ? " active" : ""}`
|
|
679
|
-
},
|
|
749
|
+
}, data.name);
|
|
680
750
|
}
|
|
681
751
|
function TabHeaderWrapper(props) {
|
|
682
|
-
const { itemInstances } = (0,
|
|
752
|
+
const { itemInstances } = (0, import_react14.useContext)(WeaverseContext);
|
|
683
753
|
const instance = itemInstances.get(props.wvId);
|
|
684
754
|
const data = instance.data;
|
|
685
755
|
const childIds = data.childIds;
|
|
686
|
-
return /* @__PURE__ */
|
|
687
|
-
className: "wv-tab-
|
|
688
|
-
}, childIds.map((id) => /* @__PURE__ */
|
|
756
|
+
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
757
|
+
className: "wv-tab-header-wrapper"
|
|
758
|
+
}, childIds.map((id) => /* @__PURE__ */ import_react14.default.createElement(TabHeader, {
|
|
689
759
|
key: id,
|
|
690
760
|
wvId: id
|
|
691
761
|
})));
|
|
692
762
|
}
|
|
693
763
|
|
|
694
764
|
// src/elements/tab/index.tsx
|
|
695
|
-
var TabContext = (0,
|
|
765
|
+
var TabContext = (0, import_react15.createContext)({
|
|
696
766
|
active: null,
|
|
697
767
|
setActive: () => {
|
|
698
768
|
}
|
|
699
769
|
});
|
|
700
|
-
var Tab = (0,
|
|
770
|
+
var Tab = (0, import_react15.forwardRef)((props, ref) => {
|
|
701
771
|
var _a, _b, _c;
|
|
702
772
|
const wvId = props["data-wv-id"];
|
|
703
|
-
const {
|
|
704
|
-
const defaultActive = (_c = (_b = (_a =
|
|
705
|
-
const [active, setActive] = (0,
|
|
773
|
+
const { fullWidthTabHeader, children, ...rest } = props;
|
|
774
|
+
const defaultActive = (_c = (_b = (_a = import_react15.default.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
|
|
775
|
+
const [active, setActive] = (0, import_react15.useState)(defaultActive);
|
|
706
776
|
const setOpenTab = (id) => {
|
|
707
|
-
if (id
|
|
708
|
-
setActive(null);
|
|
709
|
-
} else {
|
|
777
|
+
if (id !== active) {
|
|
710
778
|
setActive(id);
|
|
711
779
|
}
|
|
712
780
|
};
|
|
713
|
-
return /* @__PURE__ */
|
|
781
|
+
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
714
782
|
ref,
|
|
715
|
-
...rest
|
|
716
|
-
|
|
783
|
+
...rest,
|
|
784
|
+
style: {
|
|
785
|
+
"--tab-width": fullWidthTabHeader ? "100%" : "auto"
|
|
786
|
+
}
|
|
787
|
+
}, /* @__PURE__ */ import_react15.default.createElement(TabContext.Provider, {
|
|
717
788
|
value: { active, setActive: setOpenTab }
|
|
718
|
-
}, /* @__PURE__ */
|
|
789
|
+
}, /* @__PURE__ */ import_react15.default.createElement(TabHeaderWrapper, {
|
|
719
790
|
wvId
|
|
720
791
|
}), children));
|
|
721
792
|
});
|
|
722
793
|
Tab.defaultProps = {
|
|
723
|
-
|
|
724
|
-
{
|
|
725
|
-
headerText: "Header 1"
|
|
726
|
-
},
|
|
727
|
-
{
|
|
728
|
-
headerText: "Header 2"
|
|
729
|
-
},
|
|
730
|
-
{
|
|
731
|
-
headerText: "Header 2"
|
|
732
|
-
}
|
|
733
|
-
],
|
|
794
|
+
fullWidthTabHeader: false,
|
|
734
795
|
css: {
|
|
735
796
|
"@desktop": {
|
|
736
797
|
display: "flex",
|
|
737
798
|
flexDirection: "column",
|
|
738
799
|
gap: 4,
|
|
739
|
-
"& .wv-tab-
|
|
800
|
+
"& .wv-tab-header-wrapper": {
|
|
740
801
|
width: "100%",
|
|
741
802
|
display: "flex",
|
|
742
803
|
marginBottom: 10
|
|
743
804
|
},
|
|
744
805
|
"& .wv-tab-header": {
|
|
745
|
-
backgroundColor: "#
|
|
746
|
-
padding: "
|
|
806
|
+
backgroundColor: "#fff",
|
|
807
|
+
padding: "15px 24px",
|
|
808
|
+
border: "1px solid #E4E7EB",
|
|
747
809
|
cursor: "pointer",
|
|
810
|
+
textAlign: "center",
|
|
811
|
+
width: "var(--tab-width, auto)",
|
|
748
812
|
"&.active": {
|
|
749
|
-
backgroundColor: "#
|
|
750
|
-
color: "#fff"
|
|
813
|
+
backgroundColor: "#E4E7EB"
|
|
751
814
|
}
|
|
752
815
|
}
|
|
753
816
|
}
|
|
@@ -756,10 +819,10 @@ Tab.defaultProps = {
|
|
|
756
819
|
var tab_default = Tab;
|
|
757
820
|
|
|
758
821
|
// src/elements/tab/TabContent.tsx
|
|
759
|
-
var
|
|
760
|
-
var TabContent = (0,
|
|
822
|
+
var import_react16 = __toESM(require("react"));
|
|
823
|
+
var TabContent = (0, import_react16.forwardRef)(
|
|
761
824
|
(props, ref) => {
|
|
762
|
-
const { active } = (0,
|
|
825
|
+
const { active } = (0, import_react16.useContext)(TabContext);
|
|
763
826
|
const wvId = props["data-wv-id"];
|
|
764
827
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
765
828
|
let style = {
|
|
@@ -771,20 +834,21 @@ var TabContent = (0, import_react15.forwardRef)(
|
|
|
771
834
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
772
835
|
"--content-active": active === wvId ? "grid" : "none"
|
|
773
836
|
};
|
|
774
|
-
return /* @__PURE__ */
|
|
837
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
775
838
|
ref,
|
|
776
839
|
...rest,
|
|
777
840
|
style
|
|
778
|
-
},
|
|
779
|
-
element: "Tab"
|
|
780
|
-
}, "
|
|
841
|
+
}, import_react16.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react16.default.createElement(Placeholder_default, {
|
|
842
|
+
element: "Tab Content"
|
|
843
|
+
}, "Please drag and drop an element here"));
|
|
781
844
|
}
|
|
782
845
|
);
|
|
783
846
|
TabContent.defaultProps = {
|
|
784
|
-
rows:
|
|
847
|
+
rows: 3,
|
|
785
848
|
columns: 12,
|
|
786
849
|
gap: 4,
|
|
787
850
|
rowSize: 48,
|
|
851
|
+
name: "Tab header",
|
|
788
852
|
css: {
|
|
789
853
|
"@desktop": {
|
|
790
854
|
width: "100%",
|
|
@@ -800,47 +864,90 @@ TabContent.defaultProps = {
|
|
|
800
864
|
var TabContent_default = TabContent;
|
|
801
865
|
|
|
802
866
|
// src/elements/slider/index.tsx
|
|
803
|
-
var
|
|
804
|
-
var
|
|
805
|
-
var
|
|
806
|
-
|
|
807
|
-
|
|
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", {
|
|
867
|
+
var import_react17 = __toESM(require("react"));
|
|
868
|
+
var import_carousel = require("nuka-carousel/lib/carousel");
|
|
869
|
+
var Slider = (0, import_react17.forwardRef)((props, ref) => {
|
|
870
|
+
const { isDesignMode } = (0, import_react17.useContext)(WeaverseContext);
|
|
871
|
+
const { autoplay, delay, children, ...rest } = props;
|
|
872
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
816
873
|
...rest,
|
|
817
874
|
ref
|
|
818
|
-
}, /* @__PURE__ */
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
875
|
+
}, /* @__PURE__ */ import_react17.default.createElement(import_carousel.Carousel, {
|
|
876
|
+
dragging: false,
|
|
877
|
+
renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
|
|
878
|
+
className: "wv-slider-btn",
|
|
879
|
+
onClick: props2.previousSlide,
|
|
880
|
+
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
881
|
+
}, /* @__PURE__ */ import_react17.default.createElement("i", {
|
|
882
|
+
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
883
|
+
})),
|
|
884
|
+
renderCenterRightControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
|
|
885
|
+
className: "wv-slider-btn",
|
|
886
|
+
onClick: props2.nextSlide,
|
|
887
|
+
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
888
|
+
}, /* @__PURE__ */ import_react17.default.createElement("i", {
|
|
889
|
+
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
890
|
+
})),
|
|
891
|
+
wrapAround: !isDesignMode,
|
|
892
|
+
autoplay: !isDesignMode && autoplay,
|
|
893
|
+
autoplayInterval: delay * 1e3
|
|
894
|
+
}, children));
|
|
829
895
|
});
|
|
830
896
|
Slider.defaultProps = {
|
|
897
|
+
fullWidth: true,
|
|
898
|
+
autoplay: true,
|
|
899
|
+
delay: 3,
|
|
831
900
|
css: {
|
|
832
|
-
"@desktop": {
|
|
901
|
+
"@desktop": {
|
|
902
|
+
"& .wv-slider-btn": {
|
|
903
|
+
borderRadius: "100%",
|
|
904
|
+
width: 40,
|
|
905
|
+
height: 40,
|
|
906
|
+
background: "#fff",
|
|
907
|
+
border: "none",
|
|
908
|
+
cursor: "pointer",
|
|
909
|
+
"&[disabled]": {
|
|
910
|
+
cursor: "not-allowed"
|
|
911
|
+
},
|
|
912
|
+
"&:hover .wv-slider-arrow": {
|
|
913
|
+
borderColor: "#999"
|
|
914
|
+
},
|
|
915
|
+
"& .wv-slider-arrow": {
|
|
916
|
+
border: "solid black",
|
|
917
|
+
borderWidth: "0 1px 1px 0",
|
|
918
|
+
display: "inline-block",
|
|
919
|
+
padding: 5
|
|
920
|
+
},
|
|
921
|
+
"& .wv-slider-arrow-right": {
|
|
922
|
+
transform: "rotate(-45deg)",
|
|
923
|
+
marginRight: 5
|
|
924
|
+
},
|
|
925
|
+
"& .wv-slider-arrow-left": {
|
|
926
|
+
transform: "rotate(135deg)",
|
|
927
|
+
marginLeft: 5
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
833
931
|
}
|
|
834
932
|
};
|
|
835
933
|
var slider_default = Slider;
|
|
836
934
|
|
|
837
935
|
// src/elements/slider/SliderContent.tsx
|
|
838
|
-
var
|
|
839
|
-
var SliderContent = (0,
|
|
936
|
+
var import_react18 = __toESM(require("react"));
|
|
937
|
+
var SliderContent = (0, import_react18.forwardRef)(
|
|
840
938
|
(props, ref) => {
|
|
841
|
-
const {
|
|
842
|
-
const
|
|
843
|
-
|
|
939
|
+
const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
|
|
940
|
+
const {
|
|
941
|
+
mediaUrl,
|
|
942
|
+
targetLink,
|
|
943
|
+
openInNewTab,
|
|
944
|
+
rows,
|
|
945
|
+
columns,
|
|
946
|
+
gap,
|
|
947
|
+
rowSize,
|
|
948
|
+
children,
|
|
949
|
+
...rest
|
|
950
|
+
} = props;
|
|
844
951
|
let style = {
|
|
845
952
|
"--rows": rows,
|
|
846
953
|
"--columns": columns,
|
|
@@ -848,19 +955,28 @@ var SliderContent = (0, import_react17.forwardRef)(
|
|
|
848
955
|
"--row-size": rowSize + "px",
|
|
849
956
|
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
850
957
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
851
|
-
"--
|
|
958
|
+
"--background-url": `url(${mediaUrl}`
|
|
852
959
|
};
|
|
853
|
-
|
|
854
|
-
|
|
960
|
+
const handleClick = () => {
|
|
961
|
+
if (!isDesignMode && targetLink) {
|
|
962
|
+
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
963
|
+
}
|
|
964
|
+
};
|
|
965
|
+
return /* @__PURE__ */ import_react18.default.createElement("div", {
|
|
855
966
|
...rest,
|
|
856
|
-
style
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
967
|
+
style,
|
|
968
|
+
onClick: handleClick
|
|
969
|
+
}, import_react18.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react18.default.createElement(Placeholder_default, {
|
|
970
|
+
element: "Slider Content"
|
|
971
|
+
}, "Please drag and drop an element here"));
|
|
860
972
|
}
|
|
861
973
|
);
|
|
862
974
|
SliderContent.defaultProps = {
|
|
863
|
-
|
|
975
|
+
name: "Slider",
|
|
976
|
+
mediaUrl: "",
|
|
977
|
+
openInNewTab: false,
|
|
978
|
+
targetLink: "https://myshop.com",
|
|
979
|
+
rows: 4,
|
|
864
980
|
columns: 12,
|
|
865
981
|
gap: 4,
|
|
866
982
|
rowSize: 48,
|
|
@@ -868,18 +984,56 @@ SliderContent.defaultProps = {
|
|
|
868
984
|
"@desktop": {
|
|
869
985
|
width: "100%",
|
|
870
986
|
maxWidth: "var(--grid-size)",
|
|
871
|
-
display: "
|
|
987
|
+
display: "grid",
|
|
872
988
|
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
873
989
|
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
874
990
|
gap: "var(--gap)",
|
|
875
|
-
borderRadius: 4
|
|
991
|
+
borderRadius: 4,
|
|
992
|
+
backgroundImage: "var(--background-url, none)"
|
|
876
993
|
}
|
|
877
994
|
}
|
|
878
995
|
};
|
|
879
996
|
var SliderContent_default = SliderContent;
|
|
880
997
|
|
|
998
|
+
// src/elements/custom-html.tsx
|
|
999
|
+
var import_react19 = __toESM(require("react"));
|
|
1000
|
+
var CustomHTML = (0, import_react19.forwardRef)(
|
|
1001
|
+
(props, ref) => {
|
|
1002
|
+
const { content, children, ...rest } = props;
|
|
1003
|
+
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
1004
|
+
const style = {
|
|
1005
|
+
"--pointer-events": isDesignMode ? "none" : "auto"
|
|
1006
|
+
};
|
|
1007
|
+
if (!content)
|
|
1008
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1009
|
+
ref,
|
|
1010
|
+
...rest
|
|
1011
|
+
}, /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
1012
|
+
element: "Custom HTML"
|
|
1013
|
+
}, "Please add your custom HTML codes."));
|
|
1014
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1015
|
+
ref,
|
|
1016
|
+
...rest,
|
|
1017
|
+
style,
|
|
1018
|
+
dangerouslySetInnerHTML: { __html: content }
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
1021
|
+
);
|
|
1022
|
+
CustomHTML.defaultProps = {
|
|
1023
|
+
content: "",
|
|
1024
|
+
type: "custom.html",
|
|
1025
|
+
css: {
|
|
1026
|
+
"@desktop": {
|
|
1027
|
+
"& > *": {
|
|
1028
|
+
pointerEvents: "var(--pointer-events, unset)"
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
};
|
|
1033
|
+
var custom_html_default = CustomHTML;
|
|
1034
|
+
|
|
881
1035
|
// src/elements/index.ts
|
|
882
|
-
var
|
|
1036
|
+
var Elements = {
|
|
883
1037
|
Countdown: {
|
|
884
1038
|
Component: countdown_default,
|
|
885
1039
|
type: "countdown"
|
|
@@ -943,33 +1097,36 @@ var elements = {
|
|
|
943
1097
|
SliderContent: {
|
|
944
1098
|
Component: SliderContent_default,
|
|
945
1099
|
type: "slider.content"
|
|
1100
|
+
},
|
|
1101
|
+
CustomHTML: {
|
|
1102
|
+
Component: custom_html_default,
|
|
1103
|
+
type: "custom.html"
|
|
946
1104
|
}
|
|
947
1105
|
};
|
|
948
|
-
var elements_default = elements;
|
|
949
1106
|
|
|
950
1107
|
// src/context.ts
|
|
951
1108
|
var createRootContext = (configs) => {
|
|
952
1109
|
let rootContext = new import_core.Weaverse(configs);
|
|
953
|
-
Object.keys(
|
|
954
|
-
rootContext.registerElement(
|
|
1110
|
+
Object.keys(Elements).forEach((key) => {
|
|
1111
|
+
rootContext.registerElement(Elements[key]);
|
|
955
1112
|
});
|
|
956
1113
|
return rootContext;
|
|
957
1114
|
};
|
|
958
|
-
var WeaverseContext = (0,
|
|
1115
|
+
var WeaverseContext = (0, import_react20.createContext)({});
|
|
959
1116
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
960
1117
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
961
1118
|
|
|
962
1119
|
// src/renderer.tsx
|
|
963
1120
|
var import_core2 = require("@weaverse/core");
|
|
964
|
-
var
|
|
1121
|
+
var import_react21 = __toESM(require("react"));
|
|
965
1122
|
|
|
966
1123
|
// src/utils/index.ts
|
|
967
|
-
|
|
1124
|
+
function shortCssObject(css) {
|
|
968
1125
|
return {
|
|
969
1126
|
"@desktop": css["@desktop"],
|
|
970
1127
|
"@mobile": css["@mobile"]
|
|
971
1128
|
};
|
|
972
|
-
}
|
|
1129
|
+
}
|
|
973
1130
|
function generateItemClass(instance, stitchesInstance) {
|
|
974
1131
|
var _a, _b, _c, _d;
|
|
975
1132
|
let { css, className: cls = "" } = instance.data;
|
|
@@ -989,10 +1146,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
989
1146
|
// src/renderer.tsx
|
|
990
1147
|
var WeaverseRoot = ({ context }) => {
|
|
991
1148
|
var _a, _b;
|
|
992
|
-
let [, setData] = (0,
|
|
993
|
-
let rootRef = (0,
|
|
1149
|
+
let [, setData] = (0, import_react21.useState)(context.projectData);
|
|
1150
|
+
let rootRef = (0, import_react21.useRef)();
|
|
994
1151
|
let update = () => setData({});
|
|
995
|
-
(0,
|
|
1152
|
+
(0, import_react21.useEffect)(() => {
|
|
996
1153
|
context.subscribe(update);
|
|
997
1154
|
context.contentRootElement = rootRef.current;
|
|
998
1155
|
return () => {
|
|
@@ -1001,21 +1158,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1001
1158
|
}, []);
|
|
1002
1159
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1003
1160
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1004
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1161
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
1005
1162
|
className: `weaverse-content-root ${themeClass}`,
|
|
1006
1163
|
...eventHandlers,
|
|
1007
1164
|
ref: rootRef
|
|
1008
|
-
}, /* @__PURE__ */
|
|
1165
|
+
}, /* @__PURE__ */ import_react21.default.createElement(WeaverseContextProvider, {
|
|
1009
1166
|
value: context
|
|
1010
|
-
}, /* @__PURE__ */
|
|
1167
|
+
}, /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
|
|
1011
1168
|
id: context.projectData.rootId
|
|
1012
1169
|
}))) : null;
|
|
1013
1170
|
};
|
|
1014
1171
|
var ItemComponent = ({ instance }) => {
|
|
1015
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1016
|
-
let [data, setData] = (0,
|
|
1172
|
+
let { stitchesInstance, elementInstances } = (0, import_react21.useContext)(WeaverseContext);
|
|
1173
|
+
let [data, setData] = (0, import_react21.useState)(instance.data);
|
|
1017
1174
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
1018
|
-
(0,
|
|
1175
|
+
(0, import_react21.useEffect)(() => {
|
|
1019
1176
|
var _a;
|
|
1020
1177
|
let update = (data2) => setData({ ...data2 });
|
|
1021
1178
|
instance.subscribe(update);
|
|
@@ -1035,13 +1192,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1035
1192
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1036
1193
|
rest.ref = instance.ref;
|
|
1037
1194
|
}
|
|
1038
|
-
return /* @__PURE__ */
|
|
1195
|
+
return /* @__PURE__ */ import_react21.default.createElement(Component, {
|
|
1039
1196
|
key: id,
|
|
1040
1197
|
"data-wv-type": type,
|
|
1041
1198
|
"data-wv-id": id,
|
|
1042
1199
|
className: generateItemClass(instance, stitchesInstance),
|
|
1043
1200
|
...rest
|
|
1044
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1201
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
|
|
1045
1202
|
key: id2,
|
|
1046
1203
|
id: id2
|
|
1047
1204
|
})));
|
|
@@ -1049,15 +1206,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1049
1206
|
return null;
|
|
1050
1207
|
};
|
|
1051
1208
|
var ItemInstance = ({ id }) => {
|
|
1052
|
-
let context = (0,
|
|
1209
|
+
let context = (0, import_react21.useContext)(WeaverseContext);
|
|
1053
1210
|
let { itemInstances } = context;
|
|
1054
1211
|
let instance = itemInstances.get(id);
|
|
1055
1212
|
if (!instance) {
|
|
1056
|
-
return /* @__PURE__ */
|
|
1213
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
1057
1214
|
style: { display: "none" }
|
|
1058
1215
|
}, "Item instance ", id, " not found");
|
|
1059
1216
|
}
|
|
1060
|
-
return /* @__PURE__ */
|
|
1217
|
+
return /* @__PURE__ */ import_react21.default.createElement(ItemComponent, {
|
|
1061
1218
|
instance
|
|
1062
1219
|
});
|
|
1063
1220
|
};
|