@weaverse/react 0.7.3 → 0.7.7
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 +344 -186
- package/dist/index.mjs +332 -178
- package/package.json +2 -2
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,91 @@ 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_nuka_carousel = __toESM(require("nuka-carousel"));
|
|
869
|
+
var Carousel = import_nuka_carousel.default.default;
|
|
870
|
+
var Slider = (0, import_react17.forwardRef)((props, ref) => {
|
|
871
|
+
const { isDesignMode } = (0, import_react17.useContext)(WeaverseContext);
|
|
872
|
+
const { autoplay, delay, children, ...rest } = props;
|
|
873
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
816
874
|
...rest,
|
|
817
875
|
ref
|
|
818
|
-
}, /* @__PURE__ */
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
876
|
+
}, /* @__PURE__ */ import_react17.default.createElement(Carousel, {
|
|
877
|
+
dragging: false,
|
|
878
|
+
renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
|
|
879
|
+
className: "wv-slider-btn",
|
|
880
|
+
onClick: props2.previousSlide,
|
|
881
|
+
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
882
|
+
}, /* @__PURE__ */ import_react17.default.createElement("i", {
|
|
883
|
+
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
884
|
+
})),
|
|
885
|
+
renderCenterRightControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
|
|
886
|
+
className: "wv-slider-btn",
|
|
887
|
+
onClick: props2.nextSlide,
|
|
888
|
+
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
889
|
+
}, /* @__PURE__ */ import_react17.default.createElement("i", {
|
|
890
|
+
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
891
|
+
})),
|
|
892
|
+
wrapAround: !isDesignMode,
|
|
893
|
+
autoplay: !isDesignMode && autoplay,
|
|
894
|
+
autoplayInterval: delay * 1e3
|
|
895
|
+
}, children));
|
|
829
896
|
});
|
|
830
897
|
Slider.defaultProps = {
|
|
898
|
+
fullWidth: true,
|
|
899
|
+
autoplay: true,
|
|
900
|
+
delay: 3,
|
|
831
901
|
css: {
|
|
832
|
-
"@desktop": {
|
|
902
|
+
"@desktop": {
|
|
903
|
+
"& .wv-slider-btn": {
|
|
904
|
+
borderRadius: "100%",
|
|
905
|
+
width: 40,
|
|
906
|
+
height: 40,
|
|
907
|
+
background: "#fff",
|
|
908
|
+
border: "none",
|
|
909
|
+
cursor: "pointer",
|
|
910
|
+
"&[disabled]": {
|
|
911
|
+
cursor: "not-allowed"
|
|
912
|
+
},
|
|
913
|
+
"&:hover .wv-slider-arrow": {
|
|
914
|
+
borderColor: "#999"
|
|
915
|
+
},
|
|
916
|
+
"& .wv-slider-arrow": {
|
|
917
|
+
border: "solid black",
|
|
918
|
+
borderWidth: "0 1px 1px 0",
|
|
919
|
+
display: "inline-block",
|
|
920
|
+
padding: 5
|
|
921
|
+
},
|
|
922
|
+
"& .wv-slider-arrow-right": {
|
|
923
|
+
transform: "rotate(-45deg)",
|
|
924
|
+
marginRight: 5
|
|
925
|
+
},
|
|
926
|
+
"& .wv-slider-arrow-left": {
|
|
927
|
+
transform: "rotate(135deg)",
|
|
928
|
+
marginLeft: 5
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
}
|
|
833
932
|
}
|
|
834
933
|
};
|
|
835
934
|
var slider_default = Slider;
|
|
836
935
|
|
|
837
936
|
// src/elements/slider/SliderContent.tsx
|
|
838
|
-
var
|
|
839
|
-
var SliderContent = (0,
|
|
937
|
+
var import_react18 = __toESM(require("react"));
|
|
938
|
+
var SliderContent = (0, import_react18.forwardRef)(
|
|
840
939
|
(props, ref) => {
|
|
841
|
-
const {
|
|
842
|
-
const
|
|
843
|
-
|
|
940
|
+
const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
|
|
941
|
+
const {
|
|
942
|
+
mediaUrl,
|
|
943
|
+
targetLink,
|
|
944
|
+
openInNewTab,
|
|
945
|
+
rows,
|
|
946
|
+
columns,
|
|
947
|
+
gap,
|
|
948
|
+
rowSize,
|
|
949
|
+
children,
|
|
950
|
+
...rest
|
|
951
|
+
} = props;
|
|
844
952
|
let style = {
|
|
845
953
|
"--rows": rows,
|
|
846
954
|
"--columns": columns,
|
|
@@ -848,19 +956,28 @@ var SliderContent = (0, import_react17.forwardRef)(
|
|
|
848
956
|
"--row-size": rowSize + "px",
|
|
849
957
|
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
850
958
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
851
|
-
"--
|
|
959
|
+
"--background-url": `url(${mediaUrl}`
|
|
852
960
|
};
|
|
853
|
-
|
|
854
|
-
|
|
961
|
+
const handleClick = () => {
|
|
962
|
+
if (!isDesignMode && targetLink) {
|
|
963
|
+
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
964
|
+
}
|
|
965
|
+
};
|
|
966
|
+
return /* @__PURE__ */ import_react18.default.createElement("div", {
|
|
855
967
|
...rest,
|
|
856
|
-
style
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
968
|
+
style,
|
|
969
|
+
onClick: handleClick
|
|
970
|
+
}, import_react18.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react18.default.createElement(Placeholder_default, {
|
|
971
|
+
element: "Slider Content"
|
|
972
|
+
}, "Please drag and drop an element here"));
|
|
860
973
|
}
|
|
861
974
|
);
|
|
862
975
|
SliderContent.defaultProps = {
|
|
863
|
-
|
|
976
|
+
name: "Slider",
|
|
977
|
+
mediaUrl: "",
|
|
978
|
+
openInNewTab: false,
|
|
979
|
+
targetLink: "https://myshop.com",
|
|
980
|
+
rows: 4,
|
|
864
981
|
columns: 12,
|
|
865
982
|
gap: 4,
|
|
866
983
|
rowSize: 48,
|
|
@@ -868,18 +985,56 @@ SliderContent.defaultProps = {
|
|
|
868
985
|
"@desktop": {
|
|
869
986
|
width: "100%",
|
|
870
987
|
maxWidth: "var(--grid-size)",
|
|
871
|
-
display: "
|
|
988
|
+
display: "grid",
|
|
872
989
|
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
873
990
|
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
874
991
|
gap: "var(--gap)",
|
|
875
|
-
borderRadius: 4
|
|
992
|
+
borderRadius: 4,
|
|
993
|
+
backgroundImage: "var(--background-url, none)"
|
|
876
994
|
}
|
|
877
995
|
}
|
|
878
996
|
};
|
|
879
997
|
var SliderContent_default = SliderContent;
|
|
880
998
|
|
|
999
|
+
// src/elements/custom-html.tsx
|
|
1000
|
+
var import_react19 = __toESM(require("react"));
|
|
1001
|
+
var CustomHTML = (0, import_react19.forwardRef)(
|
|
1002
|
+
(props, ref) => {
|
|
1003
|
+
const { content, children, ...rest } = props;
|
|
1004
|
+
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
1005
|
+
const style = {
|
|
1006
|
+
"--pointer-events": isDesignMode ? "none" : "auto"
|
|
1007
|
+
};
|
|
1008
|
+
if (!content)
|
|
1009
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1010
|
+
ref,
|
|
1011
|
+
...rest
|
|
1012
|
+
}, /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
1013
|
+
element: "Custom HTML"
|
|
1014
|
+
}, "Please add your custom HTML codes."));
|
|
1015
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1016
|
+
ref,
|
|
1017
|
+
...rest,
|
|
1018
|
+
style,
|
|
1019
|
+
dangerouslySetInnerHTML: { __html: content }
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
1022
|
+
);
|
|
1023
|
+
CustomHTML.defaultProps = {
|
|
1024
|
+
content: "",
|
|
1025
|
+
type: "custom.html",
|
|
1026
|
+
css: {
|
|
1027
|
+
"@desktop": {
|
|
1028
|
+
"& > *": {
|
|
1029
|
+
pointerEvents: "var(--pointer-events, unset)"
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
};
|
|
1034
|
+
var custom_html_default = CustomHTML;
|
|
1035
|
+
|
|
881
1036
|
// src/elements/index.ts
|
|
882
|
-
var
|
|
1037
|
+
var Elements = {
|
|
883
1038
|
Countdown: {
|
|
884
1039
|
Component: countdown_default,
|
|
885
1040
|
type: "countdown"
|
|
@@ -943,33 +1098,36 @@ var elements = {
|
|
|
943
1098
|
SliderContent: {
|
|
944
1099
|
Component: SliderContent_default,
|
|
945
1100
|
type: "slider.content"
|
|
1101
|
+
},
|
|
1102
|
+
CustomHTML: {
|
|
1103
|
+
Component: custom_html_default,
|
|
1104
|
+
type: "custom.html"
|
|
946
1105
|
}
|
|
947
1106
|
};
|
|
948
|
-
var elements_default = elements;
|
|
949
1107
|
|
|
950
1108
|
// src/context.ts
|
|
951
1109
|
var createRootContext = (configs) => {
|
|
952
1110
|
let rootContext = new import_core.Weaverse(configs);
|
|
953
|
-
Object.keys(
|
|
954
|
-
rootContext.registerElement(
|
|
1111
|
+
Object.keys(Elements).forEach((key) => {
|
|
1112
|
+
rootContext.registerElement(Elements[key]);
|
|
955
1113
|
});
|
|
956
1114
|
return rootContext;
|
|
957
1115
|
};
|
|
958
|
-
var WeaverseContext = (0,
|
|
1116
|
+
var WeaverseContext = (0, import_react20.createContext)({});
|
|
959
1117
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
960
1118
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
961
1119
|
|
|
962
1120
|
// src/renderer.tsx
|
|
963
1121
|
var import_core2 = require("@weaverse/core");
|
|
964
|
-
var
|
|
1122
|
+
var import_react21 = __toESM(require("react"));
|
|
965
1123
|
|
|
966
1124
|
// src/utils/index.ts
|
|
967
|
-
|
|
1125
|
+
function shortCssObject(css) {
|
|
968
1126
|
return {
|
|
969
1127
|
"@desktop": css["@desktop"],
|
|
970
1128
|
"@mobile": css["@mobile"]
|
|
971
1129
|
};
|
|
972
|
-
}
|
|
1130
|
+
}
|
|
973
1131
|
function generateItemClass(instance, stitchesInstance) {
|
|
974
1132
|
var _a, _b, _c, _d;
|
|
975
1133
|
let { css, className: cls = "" } = instance.data;
|
|
@@ -989,10 +1147,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
989
1147
|
// src/renderer.tsx
|
|
990
1148
|
var WeaverseRoot = ({ context }) => {
|
|
991
1149
|
var _a, _b;
|
|
992
|
-
let [, setData] = (0,
|
|
993
|
-
let rootRef = (0,
|
|
1150
|
+
let [, setData] = (0, import_react21.useState)(context.projectData);
|
|
1151
|
+
let rootRef = (0, import_react21.useRef)();
|
|
994
1152
|
let update = () => setData({});
|
|
995
|
-
(0,
|
|
1153
|
+
(0, import_react21.useEffect)(() => {
|
|
996
1154
|
context.subscribe(update);
|
|
997
1155
|
context.contentRootElement = rootRef.current;
|
|
998
1156
|
return () => {
|
|
@@ -1001,21 +1159,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1001
1159
|
}, []);
|
|
1002
1160
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1003
1161
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1004
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1162
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
1005
1163
|
className: `weaverse-content-root ${themeClass}`,
|
|
1006
1164
|
...eventHandlers,
|
|
1007
1165
|
ref: rootRef
|
|
1008
|
-
}, /* @__PURE__ */
|
|
1166
|
+
}, /* @__PURE__ */ import_react21.default.createElement(WeaverseContextProvider, {
|
|
1009
1167
|
value: context
|
|
1010
|
-
}, /* @__PURE__ */
|
|
1168
|
+
}, /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
|
|
1011
1169
|
id: context.projectData.rootId
|
|
1012
1170
|
}))) : null;
|
|
1013
1171
|
};
|
|
1014
1172
|
var ItemComponent = ({ instance }) => {
|
|
1015
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1016
|
-
let [data, setData] = (0,
|
|
1173
|
+
let { stitchesInstance, elementInstances } = (0, import_react21.useContext)(WeaverseContext);
|
|
1174
|
+
let [data, setData] = (0, import_react21.useState)(instance.data);
|
|
1017
1175
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
1018
|
-
(0,
|
|
1176
|
+
(0, import_react21.useEffect)(() => {
|
|
1019
1177
|
var _a;
|
|
1020
1178
|
let update = (data2) => setData({ ...data2 });
|
|
1021
1179
|
instance.subscribe(update);
|
|
@@ -1035,13 +1193,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1035
1193
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1036
1194
|
rest.ref = instance.ref;
|
|
1037
1195
|
}
|
|
1038
|
-
return /* @__PURE__ */
|
|
1196
|
+
return /* @__PURE__ */ import_react21.default.createElement(Component, {
|
|
1039
1197
|
key: id,
|
|
1040
1198
|
"data-wv-type": type,
|
|
1041
1199
|
"data-wv-id": id,
|
|
1042
1200
|
className: generateItemClass(instance, stitchesInstance),
|
|
1043
1201
|
...rest
|
|
1044
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1202
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
|
|
1045
1203
|
key: id2,
|
|
1046
1204
|
id: id2
|
|
1047
1205
|
})));
|
|
@@ -1049,15 +1207,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1049
1207
|
return null;
|
|
1050
1208
|
};
|
|
1051
1209
|
var ItemInstance = ({ id }) => {
|
|
1052
|
-
let context = (0,
|
|
1210
|
+
let context = (0, import_react21.useContext)(WeaverseContext);
|
|
1053
1211
|
let { itemInstances } = context;
|
|
1054
1212
|
let instance = itemInstances.get(id);
|
|
1055
1213
|
if (!instance) {
|
|
1056
|
-
return /* @__PURE__ */
|
|
1214
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
1057
1215
|
style: { display: "none" }
|
|
1058
1216
|
}, "Item instance ", id, " not found");
|
|
1059
1217
|
}
|
|
1060
|
-
return /* @__PURE__ */
|
|
1218
|
+
return /* @__PURE__ */ import_react21.default.createElement(ItemComponent, {
|
|
1061
1219
|
instance
|
|
1062
1220
|
});
|
|
1063
1221
|
};
|