@weaverse/react 0.7.6 → 0.7.9
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 +4 -3
- package/dist/index.js +209 -132
- package/dist/index.mjs +191 -114
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -26,10 +26,11 @@ interface PlaceholderProps {
|
|
|
26
26
|
style?: CSSProperties;
|
|
27
27
|
}
|
|
28
28
|
interface ButtonElementProps extends WeaverseElementProps {
|
|
29
|
-
value: string;
|
|
30
|
-
openInNewTab: boolean;
|
|
31
|
-
target: string;
|
|
32
29
|
type: 'button' | 'submit' | 'reset';
|
|
30
|
+
text: string;
|
|
31
|
+
clickAction: 'none' | 'openLink';
|
|
32
|
+
linkTo: string;
|
|
33
|
+
openInNewTab: boolean;
|
|
33
34
|
}
|
|
34
35
|
interface ContainerElementProps extends WeaverseElementProps {
|
|
35
36
|
[key: string]: any;
|
package/dist/index.js
CHANGED
|
@@ -37,31 +37,32 @@ 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"));
|
|
44
44
|
var Button = React.forwardRef((props, ref) => {
|
|
45
|
-
let {
|
|
46
|
-
if (
|
|
45
|
+
let { text, clickAction, linkTo, openInNewTab, ...rest } = props;
|
|
46
|
+
if (clickAction && linkTo) {
|
|
47
47
|
return /* @__PURE__ */ React.createElement("a", {
|
|
48
|
-
href:
|
|
48
|
+
href: linkTo,
|
|
49
49
|
target: openInNewTab ? "_blank" : "_self",
|
|
50
50
|
rel: "noreferrer",
|
|
51
51
|
...rest,
|
|
52
52
|
ref
|
|
53
|
-
},
|
|
53
|
+
}, text);
|
|
54
54
|
}
|
|
55
55
|
return /* @__PURE__ */ React.createElement("button", {
|
|
56
56
|
ref,
|
|
57
57
|
...rest
|
|
58
|
-
},
|
|
58
|
+
}, text);
|
|
59
59
|
});
|
|
60
60
|
Button.defaultProps = {
|
|
61
|
-
value: "Shop now",
|
|
62
|
-
openInNewTab: false,
|
|
63
|
-
target: "",
|
|
64
61
|
type: "button",
|
|
62
|
+
text: "Shop now",
|
|
63
|
+
clickAction: "none",
|
|
64
|
+
linkTo: "",
|
|
65
|
+
openInNewTab: false,
|
|
65
66
|
css: {
|
|
66
67
|
"@desktop": {
|
|
67
68
|
borderRadius: "72px",
|
|
@@ -367,10 +368,7 @@ Text.defaultProps = {
|
|
|
367
368
|
value: "The quick brown fox jumps over the lazy dog",
|
|
368
369
|
css: {
|
|
369
370
|
"@desktop": {
|
|
370
|
-
|
|
371
|
-
height: "fit-content",
|
|
372
|
-
padding: "20px",
|
|
373
|
-
outline: "none",
|
|
371
|
+
padding: "10px",
|
|
374
372
|
wordBreak: "break-word",
|
|
375
373
|
overflowWrap: "break-word",
|
|
376
374
|
whiteSpace: "break-spaces"
|
|
@@ -426,27 +424,10 @@ var import_react9 = __toESM(require("react"));
|
|
|
426
424
|
var import_react8 = __toESM(require("react"));
|
|
427
425
|
var Placeholder = (0, import_react8.forwardRef)(
|
|
428
426
|
(props, ref) => {
|
|
429
|
-
let { element, children,
|
|
430
|
-
let defaultStyle = {
|
|
431
|
-
position: "absolute",
|
|
432
|
-
height: "calc(100% - 20px)",
|
|
433
|
-
width: "calc(100% - 20px)",
|
|
434
|
-
display: "flex",
|
|
435
|
-
flexDirection: "column",
|
|
436
|
-
alignItems: "center",
|
|
437
|
-
justifyContent: "center",
|
|
438
|
-
pointerEvents: "none",
|
|
439
|
-
zIndex: 1,
|
|
440
|
-
color: "#374151",
|
|
441
|
-
backgroundColor: "#F9FAFB",
|
|
442
|
-
border: "1px dashed #0F71FF",
|
|
443
|
-
borderRadius: 4,
|
|
444
|
-
margin: 10
|
|
445
|
-
};
|
|
446
|
-
const style = { ...defaultStyle, ...newStyle };
|
|
427
|
+
let { element, children, ...rest } = props;
|
|
447
428
|
return /* @__PURE__ */ import_react8.default.createElement("div", {
|
|
448
429
|
"data-wv-type": "placeholder",
|
|
449
|
-
style,
|
|
430
|
+
style: { display: "none" },
|
|
450
431
|
ref,
|
|
451
432
|
...rest
|
|
452
433
|
}, /* @__PURE__ */ import_react8.default.createElement("div", {
|
|
@@ -485,7 +466,7 @@ var Instagram = (0, import_react9.forwardRef)(
|
|
|
485
466
|
...rest
|
|
486
467
|
}, /* @__PURE__ */ import_react9.default.createElement(Placeholder_default, {
|
|
487
468
|
element: "Instagram"
|
|
488
|
-
}, !token ? "Connect
|
|
469
|
+
}, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
|
|
489
470
|
}
|
|
490
471
|
let style = {
|
|
491
472
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
@@ -541,78 +522,169 @@ var instagram_default = Instagram;
|
|
|
541
522
|
// src/elements/accordion/index.tsx
|
|
542
523
|
var import_react10 = __toESM(require("react"));
|
|
543
524
|
var AccordionContext = (0, import_react10.createContext)({
|
|
544
|
-
|
|
525
|
+
iconName: "arrow",
|
|
526
|
+
active: [],
|
|
545
527
|
setActive: () => {
|
|
546
528
|
}
|
|
547
529
|
});
|
|
548
530
|
var Accordion = (0, import_react10.forwardRef)(
|
|
549
531
|
(props, ref) => {
|
|
550
|
-
const {
|
|
551
|
-
const [active, setActive] = (0, import_react10.useState)(
|
|
532
|
+
const { iconName, children, ...rest } = props;
|
|
533
|
+
const [active, setActive] = (0, import_react10.useState)([]);
|
|
552
534
|
const setOpenAccordion = (id) => {
|
|
553
|
-
if (id
|
|
554
|
-
setActive(
|
|
535
|
+
if (active.includes(id)) {
|
|
536
|
+
setActive(active.filter((_id) => _id !== id));
|
|
555
537
|
} else {
|
|
556
|
-
setActive(id);
|
|
538
|
+
setActive([...active, id]);
|
|
557
539
|
}
|
|
558
540
|
};
|
|
559
541
|
return /* @__PURE__ */ import_react10.default.createElement("div", {
|
|
560
542
|
ref,
|
|
561
543
|
...rest
|
|
562
544
|
}, /* @__PURE__ */ import_react10.default.createElement(AccordionContext.Provider, {
|
|
563
|
-
value: { active, setActive: setOpenAccordion }
|
|
545
|
+
value: { active, setActive: setOpenAccordion, iconName }
|
|
564
546
|
}, children));
|
|
565
547
|
}
|
|
566
548
|
);
|
|
567
549
|
Accordion.defaultProps = {
|
|
550
|
+
iconName: "arrow",
|
|
568
551
|
css: {
|
|
569
552
|
"@desktop": {
|
|
570
553
|
display: "flex",
|
|
571
554
|
flexDirection: "column",
|
|
572
|
-
gap: 4
|
|
573
|
-
".wv-accordion-header": {
|
|
574
|
-
borderRadius: 4,
|
|
575
|
-
padding: 12,
|
|
576
|
-
marginBottom: 4,
|
|
577
|
-
border: "1px solid #76A9FA",
|
|
578
|
-
"&.active": {
|
|
579
|
-
color: "blue"
|
|
580
|
-
},
|
|
581
|
-
'&.active + [data-wv-type="accordion.content"]': {
|
|
582
|
-
maxHeight: "var(--max-height, inherit)"
|
|
583
|
-
}
|
|
584
|
-
}
|
|
555
|
+
gap: 4
|
|
585
556
|
}
|
|
586
557
|
}
|
|
587
558
|
};
|
|
588
559
|
var accordion_default = Accordion;
|
|
589
560
|
|
|
590
561
|
// src/elements/accordion/AccordionWrapper.tsx
|
|
562
|
+
var import_react12 = __toESM(require("react"));
|
|
563
|
+
|
|
564
|
+
// src/elements/accordion/Icon.tsx
|
|
591
565
|
var import_react11 = __toESM(require("react"));
|
|
592
|
-
var
|
|
566
|
+
var ICONS = {
|
|
567
|
+
caret: {
|
|
568
|
+
animationType: "rotate90",
|
|
569
|
+
css: {
|
|
570
|
+
position: "absolute!important",
|
|
571
|
+
left: 5,
|
|
572
|
+
top: 2,
|
|
573
|
+
width: 0,
|
|
574
|
+
height: 0,
|
|
575
|
+
borderTop: "6px solid transparent",
|
|
576
|
+
borderBottom: "6px solid transparent",
|
|
577
|
+
borderLeft: "6px solid #1F2A37"
|
|
578
|
+
}
|
|
579
|
+
},
|
|
580
|
+
arrow: {
|
|
581
|
+
animationType: "rotate90",
|
|
582
|
+
css: {
|
|
583
|
+
border: "solid #1F2A37",
|
|
584
|
+
borderWidth: "0 1px 1px 0",
|
|
585
|
+
display: "inline-block",
|
|
586
|
+
transform: "rotate(-45deg) translate(15%, -15%)",
|
|
587
|
+
padding: 4
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
plus: {
|
|
591
|
+
animationType: "custom",
|
|
592
|
+
css: {
|
|
593
|
+
display: "inline-block",
|
|
594
|
+
top: -6,
|
|
595
|
+
width: 15,
|
|
596
|
+
height: 1,
|
|
597
|
+
backgroundColor: "#1F2A37",
|
|
598
|
+
"&:after": {
|
|
599
|
+
position: "absolute",
|
|
600
|
+
content: "",
|
|
601
|
+
top: -7,
|
|
602
|
+
left: 7,
|
|
603
|
+
width: 1,
|
|
604
|
+
height: 15,
|
|
605
|
+
backgroundColor: "#1F2A37",
|
|
606
|
+
transition: "all 0.3s ease-in-out 0s"
|
|
607
|
+
},
|
|
608
|
+
"&.active": {
|
|
609
|
+
"&:after": {
|
|
610
|
+
transform: "rotate(90deg)"
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
};
|
|
616
|
+
var rotateAnimation = {
|
|
617
|
+
transition: "all 0.3s ease-in-out 0s",
|
|
618
|
+
transform: "rotate(90deg)"
|
|
619
|
+
};
|
|
620
|
+
function Icon(props) {
|
|
621
|
+
let { name, active = false, style, ...rest } = props;
|
|
622
|
+
let { stitchesInstance } = (0, import_react11.useContext)(WeaverseContext);
|
|
623
|
+
const { animationType, css } = ICONS[name];
|
|
624
|
+
if (active && animationType === "rotate90") {
|
|
625
|
+
style = { ...rotateAnimation, ...style };
|
|
626
|
+
}
|
|
627
|
+
let { className } = stitchesInstance.css(css)();
|
|
628
|
+
if (active)
|
|
629
|
+
className += " active";
|
|
630
|
+
return /* @__PURE__ */ import_react11.default.createElement("span", {
|
|
631
|
+
style,
|
|
632
|
+
...rest
|
|
633
|
+
}, /* @__PURE__ */ import_react11.default.createElement("i", {
|
|
634
|
+
className
|
|
635
|
+
}));
|
|
636
|
+
}
|
|
637
|
+
var Icon_default = Icon;
|
|
638
|
+
|
|
639
|
+
// src/elements/accordion/AccordionWrapper.tsx
|
|
640
|
+
var AccordionWrapper = (0, import_react12.forwardRef)((props, ref) => {
|
|
593
641
|
const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
|
|
594
|
-
const { active, setActive } = (0,
|
|
595
|
-
|
|
642
|
+
const { iconName, active, setActive } = (0, import_react12.useContext)(AccordionContext);
|
|
643
|
+
const isActive = active.includes(wvId);
|
|
644
|
+
return /* @__PURE__ */ import_react12.default.createElement("div", {
|
|
596
645
|
ref,
|
|
597
646
|
...rest
|
|
598
|
-
}, /* @__PURE__ */
|
|
647
|
+
}, /* @__PURE__ */ import_react12.default.createElement("div", {
|
|
599
648
|
onClick: () => setActive(wvId),
|
|
600
|
-
className: `wv-
|
|
601
|
-
}, name),
|
|
649
|
+
className: `wv-acc-header ${isActive ? "active" : ""}`
|
|
650
|
+
}, /* @__PURE__ */ import_react12.default.createElement("span", null, name), /* @__PURE__ */ import_react12.default.createElement(Icon_default, {
|
|
651
|
+
className: "wv-acc-icon",
|
|
652
|
+
active: isActive,
|
|
653
|
+
name: iconName
|
|
654
|
+
})), children);
|
|
602
655
|
});
|
|
603
656
|
AccordionWrapper.defaultProps = {
|
|
604
657
|
name: "Accordion item",
|
|
605
658
|
css: {
|
|
606
659
|
"@desktop": {
|
|
607
|
-
maxHeight: "100%"
|
|
660
|
+
maxHeight: "100%",
|
|
661
|
+
".wv-acc-icon": {
|
|
662
|
+
position: "absolute",
|
|
663
|
+
right: 16,
|
|
664
|
+
width: 16,
|
|
665
|
+
height: 16,
|
|
666
|
+
transition: "all 0.3s ease-in-out 0s"
|
|
667
|
+
},
|
|
668
|
+
".wv-acc-header": {
|
|
669
|
+
display: "flex",
|
|
670
|
+
alignItems: "center",
|
|
671
|
+
borderRadius: 4,
|
|
672
|
+
padding: 12,
|
|
673
|
+
marginBottom: 4,
|
|
674
|
+
border: "1px solid #76A9FA",
|
|
675
|
+
cursor: "pointer",
|
|
676
|
+
'&.active + [data-wv-type="accordion.content"]': {
|
|
677
|
+
maxHeight: "var(--max-height, inherit)"
|
|
678
|
+
}
|
|
679
|
+
}
|
|
608
680
|
}
|
|
609
681
|
}
|
|
610
682
|
};
|
|
611
683
|
var AccordionWrapper_default = AccordionWrapper;
|
|
612
684
|
|
|
613
685
|
// src/elements/accordion/AccordionContent.tsx
|
|
614
|
-
var
|
|
615
|
-
var AccordionContent = (0,
|
|
686
|
+
var import_react13 = __toESM(require("react"));
|
|
687
|
+
var AccordionContent = (0, import_react13.forwardRef)(
|
|
616
688
|
(props, ref) => {
|
|
617
689
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
618
690
|
let style = {
|
|
@@ -623,17 +695,17 @@ var AccordionContent = (0, import_react12.forwardRef)(
|
|
|
623
695
|
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
624
696
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
|
|
625
697
|
};
|
|
626
|
-
return /* @__PURE__ */
|
|
698
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
627
699
|
ref,
|
|
628
700
|
...rest,
|
|
629
701
|
style
|
|
630
|
-
},
|
|
702
|
+
}, import_react13.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react13.default.createElement(Placeholder_default, {
|
|
631
703
|
element: "Accordion Content"
|
|
632
|
-
}, "
|
|
704
|
+
}, "Drag and drop an element here."));
|
|
633
705
|
}
|
|
634
706
|
);
|
|
635
707
|
AccordionContent.defaultProps = {
|
|
636
|
-
rows:
|
|
708
|
+
rows: 3,
|
|
637
709
|
columns: 12,
|
|
638
710
|
gap: 4,
|
|
639
711
|
rowSize: 48,
|
|
@@ -655,65 +727,69 @@ AccordionContent.defaultProps = {
|
|
|
655
727
|
var AccordionContent_default = AccordionContent;
|
|
656
728
|
|
|
657
729
|
// src/elements/tab/index.tsx
|
|
658
|
-
var
|
|
730
|
+
var import_react15 = __toESM(require("react"));
|
|
659
731
|
|
|
660
732
|
// src/elements/tab/TabHeaderWrapper.tsx
|
|
661
|
-
var
|
|
733
|
+
var import_react14 = __toESM(require("react"));
|
|
662
734
|
function TabHeader(props) {
|
|
663
735
|
const { wvId } = props;
|
|
664
|
-
const { active, setActive } = (0,
|
|
665
|
-
const { itemInstances } = (0,
|
|
736
|
+
const { active, setActive } = (0, import_react14.useContext)(TabContext);
|
|
737
|
+
const { itemInstances } = (0, import_react14.useContext)(WeaverseContext);
|
|
666
738
|
const instance = itemInstances.get(wvId);
|
|
667
|
-
let [data, setData] = (0,
|
|
668
|
-
(0,
|
|
739
|
+
let [data, setData] = (0, import_react14.useState)(instance.data);
|
|
740
|
+
(0, import_react14.useEffect)(() => {
|
|
669
741
|
let update = (data2) => setData({ ...data2 });
|
|
670
742
|
instance.subscribe(update);
|
|
671
743
|
}, []);
|
|
672
|
-
return /* @__PURE__ */
|
|
744
|
+
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
673
745
|
onClick: () => setActive(wvId),
|
|
674
746
|
className: `wv-tab-header${active === wvId ? " active" : ""}`
|
|
675
747
|
}, data.name);
|
|
676
748
|
}
|
|
677
749
|
function TabHeaderWrapper(props) {
|
|
678
|
-
const { itemInstances } = (0,
|
|
750
|
+
const { itemInstances } = (0, import_react14.useContext)(WeaverseContext);
|
|
679
751
|
const instance = itemInstances.get(props.wvId);
|
|
680
752
|
const data = instance.data;
|
|
681
753
|
const childIds = data.childIds;
|
|
682
|
-
return /* @__PURE__ */
|
|
754
|
+
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
683
755
|
className: "wv-tab-header-wrapper"
|
|
684
|
-
}, childIds.map((id) => /* @__PURE__ */
|
|
756
|
+
}, childIds.map((id) => /* @__PURE__ */ import_react14.default.createElement(TabHeader, {
|
|
685
757
|
key: id,
|
|
686
758
|
wvId: id
|
|
687
759
|
})));
|
|
688
760
|
}
|
|
689
761
|
|
|
690
762
|
// src/elements/tab/index.tsx
|
|
691
|
-
var TabContext = (0,
|
|
763
|
+
var TabContext = (0, import_react15.createContext)({
|
|
692
764
|
active: null,
|
|
693
765
|
setActive: () => {
|
|
694
766
|
}
|
|
695
767
|
});
|
|
696
|
-
var Tab = (0,
|
|
768
|
+
var Tab = (0, import_react15.forwardRef)((props, ref) => {
|
|
697
769
|
var _a, _b, _c;
|
|
698
770
|
const wvId = props["data-wv-id"];
|
|
699
|
-
const { children, ...rest } = props;
|
|
700
|
-
const defaultActive = (_c = (_b = (_a =
|
|
701
|
-
const [active, setActive] = (0,
|
|
771
|
+
const { fullWidthTabHeader, children, ...rest } = props;
|
|
772
|
+
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;
|
|
773
|
+
const [active, setActive] = (0, import_react15.useState)(defaultActive);
|
|
702
774
|
const setOpenTab = (id) => {
|
|
703
775
|
if (id !== active) {
|
|
704
776
|
setActive(id);
|
|
705
777
|
}
|
|
706
778
|
};
|
|
707
|
-
return /* @__PURE__ */
|
|
779
|
+
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
708
780
|
ref,
|
|
709
|
-
...rest
|
|
710
|
-
|
|
781
|
+
...rest,
|
|
782
|
+
style: {
|
|
783
|
+
"--tab-width": fullWidthTabHeader ? "100%" : "auto"
|
|
784
|
+
}
|
|
785
|
+
}, /* @__PURE__ */ import_react15.default.createElement(TabContext.Provider, {
|
|
711
786
|
value: { active, setActive: setOpenTab }
|
|
712
|
-
}, /* @__PURE__ */
|
|
787
|
+
}, /* @__PURE__ */ import_react15.default.createElement(TabHeaderWrapper, {
|
|
713
788
|
wvId
|
|
714
789
|
}), children));
|
|
715
790
|
});
|
|
716
791
|
Tab.defaultProps = {
|
|
792
|
+
fullWidthTabHeader: false,
|
|
717
793
|
css: {
|
|
718
794
|
"@desktop": {
|
|
719
795
|
display: "flex",
|
|
@@ -729,6 +805,8 @@ Tab.defaultProps = {
|
|
|
729
805
|
padding: "15px 24px",
|
|
730
806
|
border: "1px solid #E4E7EB",
|
|
731
807
|
cursor: "pointer",
|
|
808
|
+
textAlign: "center",
|
|
809
|
+
width: "var(--tab-width, auto)",
|
|
732
810
|
"&.active": {
|
|
733
811
|
backgroundColor: "#E4E7EB"
|
|
734
812
|
}
|
|
@@ -739,10 +817,10 @@ Tab.defaultProps = {
|
|
|
739
817
|
var tab_default = Tab;
|
|
740
818
|
|
|
741
819
|
// src/elements/tab/TabContent.tsx
|
|
742
|
-
var
|
|
743
|
-
var TabContent = (0,
|
|
820
|
+
var import_react16 = __toESM(require("react"));
|
|
821
|
+
var TabContent = (0, import_react16.forwardRef)(
|
|
744
822
|
(props, ref) => {
|
|
745
|
-
const { active } = (0,
|
|
823
|
+
const { active } = (0, import_react16.useContext)(TabContext);
|
|
746
824
|
const wvId = props["data-wv-id"];
|
|
747
825
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
748
826
|
let style = {
|
|
@@ -754,17 +832,17 @@ var TabContent = (0, import_react15.forwardRef)(
|
|
|
754
832
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
755
833
|
"--content-active": active === wvId ? "grid" : "none"
|
|
756
834
|
};
|
|
757
|
-
return /* @__PURE__ */
|
|
835
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
758
836
|
ref,
|
|
759
837
|
...rest,
|
|
760
838
|
style
|
|
761
|
-
},
|
|
839
|
+
}, import_react16.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react16.default.createElement(Placeholder_default, {
|
|
762
840
|
element: "Tab Content"
|
|
763
|
-
}, "
|
|
841
|
+
}, "Drag and drop an element here."));
|
|
764
842
|
}
|
|
765
843
|
);
|
|
766
844
|
TabContent.defaultProps = {
|
|
767
|
-
rows:
|
|
845
|
+
rows: 3,
|
|
768
846
|
columns: 12,
|
|
769
847
|
gap: 4,
|
|
770
848
|
rowSize: 48,
|
|
@@ -784,29 +862,28 @@ TabContent.defaultProps = {
|
|
|
784
862
|
var TabContent_default = TabContent;
|
|
785
863
|
|
|
786
864
|
// src/elements/slider/index.tsx
|
|
787
|
-
var
|
|
788
|
-
var
|
|
789
|
-
var
|
|
790
|
-
|
|
791
|
-
const { isDesignMode } = (0, import_react16.useContext)(WeaverseContext);
|
|
865
|
+
var import_react17 = __toESM(require("react"));
|
|
866
|
+
var import_carousel = require("nuka-carousel/lib/carousel");
|
|
867
|
+
var Slider = (0, import_react17.forwardRef)((props, ref) => {
|
|
868
|
+
const { isDesignMode } = (0, import_react17.useContext)(WeaverseContext);
|
|
792
869
|
const { autoplay, delay, children, ...rest } = props;
|
|
793
|
-
return /* @__PURE__ */
|
|
870
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
794
871
|
...rest,
|
|
795
872
|
ref
|
|
796
|
-
}, /* @__PURE__ */
|
|
873
|
+
}, /* @__PURE__ */ import_react17.default.createElement(import_carousel.Carousel, {
|
|
797
874
|
dragging: false,
|
|
798
|
-
renderCenterLeftControls: (props2) => /* @__PURE__ */
|
|
875
|
+
renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
|
|
799
876
|
className: "wv-slider-btn",
|
|
800
877
|
onClick: props2.previousSlide,
|
|
801
878
|
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
802
|
-
}, /* @__PURE__ */
|
|
879
|
+
}, /* @__PURE__ */ import_react17.default.createElement("i", {
|
|
803
880
|
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
804
881
|
})),
|
|
805
|
-
renderCenterRightControls: (props2) => /* @__PURE__ */
|
|
882
|
+
renderCenterRightControls: (props2) => /* @__PURE__ */ import_react17.default.createElement("button", {
|
|
806
883
|
className: "wv-slider-btn",
|
|
807
884
|
onClick: props2.nextSlide,
|
|
808
885
|
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
809
|
-
}, /* @__PURE__ */
|
|
886
|
+
}, /* @__PURE__ */ import_react17.default.createElement("i", {
|
|
810
887
|
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
811
888
|
})),
|
|
812
889
|
wrapAround: !isDesignMode,
|
|
@@ -854,10 +931,10 @@ Slider.defaultProps = {
|
|
|
854
931
|
var slider_default = Slider;
|
|
855
932
|
|
|
856
933
|
// src/elements/slider/SliderContent.tsx
|
|
857
|
-
var
|
|
858
|
-
var SliderContent = (0,
|
|
934
|
+
var import_react18 = __toESM(require("react"));
|
|
935
|
+
var SliderContent = (0, import_react18.forwardRef)(
|
|
859
936
|
(props, ref) => {
|
|
860
|
-
const { isDesignMode } = (0,
|
|
937
|
+
const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
|
|
861
938
|
const {
|
|
862
939
|
mediaUrl,
|
|
863
940
|
targetLink,
|
|
@@ -883,13 +960,13 @@ var SliderContent = (0, import_react17.forwardRef)(
|
|
|
883
960
|
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
884
961
|
}
|
|
885
962
|
};
|
|
886
|
-
return /* @__PURE__ */
|
|
963
|
+
return /* @__PURE__ */ import_react18.default.createElement("div", {
|
|
887
964
|
...rest,
|
|
888
965
|
style,
|
|
889
966
|
onClick: handleClick
|
|
890
|
-
},
|
|
967
|
+
}, import_react18.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react18.default.createElement(Placeholder_default, {
|
|
891
968
|
element: "Slider Content"
|
|
892
|
-
}, "
|
|
969
|
+
}, "Drag and drop an element here."));
|
|
893
970
|
}
|
|
894
971
|
);
|
|
895
972
|
SliderContent.defaultProps = {
|
|
@@ -917,22 +994,22 @@ SliderContent.defaultProps = {
|
|
|
917
994
|
var SliderContent_default = SliderContent;
|
|
918
995
|
|
|
919
996
|
// src/elements/custom-html.tsx
|
|
920
|
-
var
|
|
921
|
-
var CustomHTML = (0,
|
|
997
|
+
var import_react19 = __toESM(require("react"));
|
|
998
|
+
var CustomHTML = (0, import_react19.forwardRef)(
|
|
922
999
|
(props, ref) => {
|
|
923
1000
|
const { content, children, ...rest } = props;
|
|
924
|
-
const { isDesignMode } = (0,
|
|
1001
|
+
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
925
1002
|
const style = {
|
|
926
1003
|
"--pointer-events": isDesignMode ? "none" : "auto"
|
|
927
1004
|
};
|
|
928
1005
|
if (!content)
|
|
929
|
-
return /* @__PURE__ */
|
|
1006
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
930
1007
|
ref,
|
|
931
1008
|
...rest
|
|
932
|
-
}, /* @__PURE__ */
|
|
1009
|
+
}, /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
933
1010
|
element: "Custom HTML"
|
|
934
|
-
}, "
|
|
935
|
-
return /* @__PURE__ */
|
|
1011
|
+
}, "Add your custom HTML code."));
|
|
1012
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
936
1013
|
ref,
|
|
937
1014
|
...rest,
|
|
938
1015
|
style,
|
|
@@ -1033,13 +1110,13 @@ var createRootContext = (configs) => {
|
|
|
1033
1110
|
});
|
|
1034
1111
|
return rootContext;
|
|
1035
1112
|
};
|
|
1036
|
-
var WeaverseContext = (0,
|
|
1113
|
+
var WeaverseContext = (0, import_react20.createContext)({});
|
|
1037
1114
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
1038
1115
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
1039
1116
|
|
|
1040
1117
|
// src/renderer.tsx
|
|
1041
1118
|
var import_core2 = require("@weaverse/core");
|
|
1042
|
-
var
|
|
1119
|
+
var import_react21 = __toESM(require("react"));
|
|
1043
1120
|
|
|
1044
1121
|
// src/utils/index.ts
|
|
1045
1122
|
function shortCssObject(css) {
|
|
@@ -1067,10 +1144,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
1067
1144
|
// src/renderer.tsx
|
|
1068
1145
|
var WeaverseRoot = ({ context }) => {
|
|
1069
1146
|
var _a, _b;
|
|
1070
|
-
let [, setData] = (0,
|
|
1071
|
-
let rootRef = (0,
|
|
1147
|
+
let [, setData] = (0, import_react21.useState)(context.projectData);
|
|
1148
|
+
let rootRef = (0, import_react21.useRef)();
|
|
1072
1149
|
let update = () => setData({});
|
|
1073
|
-
(0,
|
|
1150
|
+
(0, import_react21.useEffect)(() => {
|
|
1074
1151
|
context.subscribe(update);
|
|
1075
1152
|
context.contentRootElement = rootRef.current;
|
|
1076
1153
|
return () => {
|
|
@@ -1079,21 +1156,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1079
1156
|
}, []);
|
|
1080
1157
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1081
1158
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1082
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1159
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
1083
1160
|
className: `weaverse-content-root ${themeClass}`,
|
|
1084
1161
|
...eventHandlers,
|
|
1085
1162
|
ref: rootRef
|
|
1086
|
-
}, /* @__PURE__ */
|
|
1163
|
+
}, /* @__PURE__ */ import_react21.default.createElement(WeaverseContextProvider, {
|
|
1087
1164
|
value: context
|
|
1088
|
-
}, /* @__PURE__ */
|
|
1165
|
+
}, /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
|
|
1089
1166
|
id: context.projectData.rootId
|
|
1090
1167
|
}))) : null;
|
|
1091
1168
|
};
|
|
1092
1169
|
var ItemComponent = ({ instance }) => {
|
|
1093
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1094
|
-
let [data, setData] = (0,
|
|
1170
|
+
let { stitchesInstance, elementInstances } = (0, import_react21.useContext)(WeaverseContext);
|
|
1171
|
+
let [data, setData] = (0, import_react21.useState)(instance.data);
|
|
1095
1172
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
1096
|
-
(0,
|
|
1173
|
+
(0, import_react21.useEffect)(() => {
|
|
1097
1174
|
var _a;
|
|
1098
1175
|
let update = (data2) => setData({ ...data2 });
|
|
1099
1176
|
instance.subscribe(update);
|
|
@@ -1113,13 +1190,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1113
1190
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1114
1191
|
rest.ref = instance.ref;
|
|
1115
1192
|
}
|
|
1116
|
-
return /* @__PURE__ */
|
|
1193
|
+
return /* @__PURE__ */ import_react21.default.createElement(Component, {
|
|
1117
1194
|
key: id,
|
|
1118
1195
|
"data-wv-type": type,
|
|
1119
1196
|
"data-wv-id": id,
|
|
1120
1197
|
className: generateItemClass(instance, stitchesInstance),
|
|
1121
1198
|
...rest
|
|
1122
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1199
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react21.default.createElement(ItemInstance, {
|
|
1123
1200
|
key: id2,
|
|
1124
1201
|
id: id2
|
|
1125
1202
|
})));
|
|
@@ -1127,15 +1204,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1127
1204
|
return null;
|
|
1128
1205
|
};
|
|
1129
1206
|
var ItemInstance = ({ id }) => {
|
|
1130
|
-
let context = (0,
|
|
1207
|
+
let context = (0, import_react21.useContext)(WeaverseContext);
|
|
1131
1208
|
let { itemInstances } = context;
|
|
1132
1209
|
let instance = itemInstances.get(id);
|
|
1133
1210
|
if (!instance) {
|
|
1134
|
-
return /* @__PURE__ */
|
|
1211
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
1135
1212
|
style: { display: "none" }
|
|
1136
1213
|
}, "Item instance ", id, " not found");
|
|
1137
1214
|
}
|
|
1138
|
-
return /* @__PURE__ */
|
|
1215
|
+
return /* @__PURE__ */ import_react21.default.createElement(ItemComponent, {
|
|
1139
1216
|
instance
|
|
1140
1217
|
});
|
|
1141
1218
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -5,26 +5,27 @@ import { createContext as createContext3 } from "react";
|
|
|
5
5
|
// src/elements/button.tsx
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
var Button = React.forwardRef((props, ref) => {
|
|
8
|
-
let {
|
|
9
|
-
if (
|
|
8
|
+
let { text, clickAction, linkTo, openInNewTab, ...rest } = props;
|
|
9
|
+
if (clickAction && linkTo) {
|
|
10
10
|
return /* @__PURE__ */ React.createElement("a", {
|
|
11
|
-
href:
|
|
11
|
+
href: linkTo,
|
|
12
12
|
target: openInNewTab ? "_blank" : "_self",
|
|
13
13
|
rel: "noreferrer",
|
|
14
14
|
...rest,
|
|
15
15
|
ref
|
|
16
|
-
},
|
|
16
|
+
}, text);
|
|
17
17
|
}
|
|
18
18
|
return /* @__PURE__ */ React.createElement("button", {
|
|
19
19
|
ref,
|
|
20
20
|
...rest
|
|
21
|
-
},
|
|
21
|
+
}, text);
|
|
22
22
|
});
|
|
23
23
|
Button.defaultProps = {
|
|
24
|
-
value: "Shop now",
|
|
25
|
-
openInNewTab: false,
|
|
26
|
-
target: "",
|
|
27
24
|
type: "button",
|
|
25
|
+
text: "Shop now",
|
|
26
|
+
clickAction: "none",
|
|
27
|
+
linkTo: "",
|
|
28
|
+
openInNewTab: false,
|
|
28
29
|
css: {
|
|
29
30
|
"@desktop": {
|
|
30
31
|
borderRadius: "72px",
|
|
@@ -330,10 +331,7 @@ Text.defaultProps = {
|
|
|
330
331
|
value: "The quick brown fox jumps over the lazy dog",
|
|
331
332
|
css: {
|
|
332
333
|
"@desktop": {
|
|
333
|
-
|
|
334
|
-
height: "fit-content",
|
|
335
|
-
padding: "20px",
|
|
336
|
-
outline: "none",
|
|
334
|
+
padding: "10px",
|
|
337
335
|
wordBreak: "break-word",
|
|
338
336
|
overflowWrap: "break-word",
|
|
339
337
|
whiteSpace: "break-spaces"
|
|
@@ -389,27 +387,10 @@ import React11, { forwardRef as forwardRef9, useEffect as useEffect2, useState }
|
|
|
389
387
|
import React10, { forwardRef as forwardRef8 } from "react";
|
|
390
388
|
var Placeholder = forwardRef8(
|
|
391
389
|
(props, ref) => {
|
|
392
|
-
let { element, children,
|
|
393
|
-
let defaultStyle = {
|
|
394
|
-
position: "absolute",
|
|
395
|
-
height: "calc(100% - 20px)",
|
|
396
|
-
width: "calc(100% - 20px)",
|
|
397
|
-
display: "flex",
|
|
398
|
-
flexDirection: "column",
|
|
399
|
-
alignItems: "center",
|
|
400
|
-
justifyContent: "center",
|
|
401
|
-
pointerEvents: "none",
|
|
402
|
-
zIndex: 1,
|
|
403
|
-
color: "#374151",
|
|
404
|
-
backgroundColor: "#F9FAFB",
|
|
405
|
-
border: "1px dashed #0F71FF",
|
|
406
|
-
borderRadius: 4,
|
|
407
|
-
margin: 10
|
|
408
|
-
};
|
|
409
|
-
const style = { ...defaultStyle, ...newStyle };
|
|
390
|
+
let { element, children, ...rest } = props;
|
|
410
391
|
return /* @__PURE__ */ React10.createElement("div", {
|
|
411
392
|
"data-wv-type": "placeholder",
|
|
412
|
-
style,
|
|
393
|
+
style: { display: "none" },
|
|
413
394
|
ref,
|
|
414
395
|
...rest
|
|
415
396
|
}, /* @__PURE__ */ React10.createElement("div", {
|
|
@@ -448,7 +429,7 @@ var Instagram = forwardRef9(
|
|
|
448
429
|
...rest
|
|
449
430
|
}, /* @__PURE__ */ React11.createElement(Placeholder_default, {
|
|
450
431
|
element: "Instagram"
|
|
451
|
-
}, !token ? "Connect
|
|
432
|
+
}, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
|
|
452
433
|
}
|
|
453
434
|
let style = {
|
|
454
435
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
@@ -504,77 +485,168 @@ var instagram_default = Instagram;
|
|
|
504
485
|
// src/elements/accordion/index.tsx
|
|
505
486
|
import React12, { createContext, forwardRef as forwardRef10, useState as useState2 } from "react";
|
|
506
487
|
var AccordionContext = createContext({
|
|
507
|
-
|
|
488
|
+
iconName: "arrow",
|
|
489
|
+
active: [],
|
|
508
490
|
setActive: () => {
|
|
509
491
|
}
|
|
510
492
|
});
|
|
511
493
|
var Accordion = forwardRef10(
|
|
512
494
|
(props, ref) => {
|
|
513
|
-
const {
|
|
514
|
-
const [active, setActive] = useState2(
|
|
495
|
+
const { iconName, children, ...rest } = props;
|
|
496
|
+
const [active, setActive] = useState2([]);
|
|
515
497
|
const setOpenAccordion = (id) => {
|
|
516
|
-
if (id
|
|
517
|
-
setActive(
|
|
498
|
+
if (active.includes(id)) {
|
|
499
|
+
setActive(active.filter((_id) => _id !== id));
|
|
518
500
|
} else {
|
|
519
|
-
setActive(id);
|
|
501
|
+
setActive([...active, id]);
|
|
520
502
|
}
|
|
521
503
|
};
|
|
522
504
|
return /* @__PURE__ */ React12.createElement("div", {
|
|
523
505
|
ref,
|
|
524
506
|
...rest
|
|
525
507
|
}, /* @__PURE__ */ React12.createElement(AccordionContext.Provider, {
|
|
526
|
-
value: { active, setActive: setOpenAccordion }
|
|
508
|
+
value: { active, setActive: setOpenAccordion, iconName }
|
|
527
509
|
}, children));
|
|
528
510
|
}
|
|
529
511
|
);
|
|
530
512
|
Accordion.defaultProps = {
|
|
513
|
+
iconName: "arrow",
|
|
531
514
|
css: {
|
|
532
515
|
"@desktop": {
|
|
533
516
|
display: "flex",
|
|
534
517
|
flexDirection: "column",
|
|
535
|
-
gap: 4
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
518
|
+
gap: 4
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
var accordion_default = Accordion;
|
|
523
|
+
|
|
524
|
+
// src/elements/accordion/AccordionWrapper.tsx
|
|
525
|
+
import React14, { forwardRef as forwardRef11, useContext as useContext5 } from "react";
|
|
526
|
+
|
|
527
|
+
// src/elements/accordion/Icon.tsx
|
|
528
|
+
import React13, { useContext as useContext4 } from "react";
|
|
529
|
+
var ICONS = {
|
|
530
|
+
caret: {
|
|
531
|
+
animationType: "rotate90",
|
|
532
|
+
css: {
|
|
533
|
+
position: "absolute!important",
|
|
534
|
+
left: 5,
|
|
535
|
+
top: 2,
|
|
536
|
+
width: 0,
|
|
537
|
+
height: 0,
|
|
538
|
+
borderTop: "6px solid transparent",
|
|
539
|
+
borderBottom: "6px solid transparent",
|
|
540
|
+
borderLeft: "6px solid #1F2A37"
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
arrow: {
|
|
544
|
+
animationType: "rotate90",
|
|
545
|
+
css: {
|
|
546
|
+
border: "solid #1F2A37",
|
|
547
|
+
borderWidth: "0 1px 1px 0",
|
|
548
|
+
display: "inline-block",
|
|
549
|
+
transform: "rotate(-45deg) translate(15%, -15%)",
|
|
550
|
+
padding: 4
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
plus: {
|
|
554
|
+
animationType: "custom",
|
|
555
|
+
css: {
|
|
556
|
+
display: "inline-block",
|
|
557
|
+
top: -6,
|
|
558
|
+
width: 15,
|
|
559
|
+
height: 1,
|
|
560
|
+
backgroundColor: "#1F2A37",
|
|
561
|
+
"&:after": {
|
|
562
|
+
position: "absolute",
|
|
563
|
+
content: "",
|
|
564
|
+
top: -7,
|
|
565
|
+
left: 7,
|
|
566
|
+
width: 1,
|
|
567
|
+
height: 15,
|
|
568
|
+
backgroundColor: "#1F2A37",
|
|
569
|
+
transition: "all 0.3s ease-in-out 0s"
|
|
570
|
+
},
|
|
571
|
+
"&.active": {
|
|
572
|
+
"&:after": {
|
|
573
|
+
transform: "rotate(90deg)"
|
|
546
574
|
}
|
|
547
575
|
}
|
|
548
576
|
}
|
|
549
577
|
}
|
|
550
578
|
};
|
|
551
|
-
var
|
|
579
|
+
var rotateAnimation = {
|
|
580
|
+
transition: "all 0.3s ease-in-out 0s",
|
|
581
|
+
transform: "rotate(90deg)"
|
|
582
|
+
};
|
|
583
|
+
function Icon(props) {
|
|
584
|
+
let { name, active = false, style, ...rest } = props;
|
|
585
|
+
let { stitchesInstance } = useContext4(WeaverseContext);
|
|
586
|
+
const { animationType, css } = ICONS[name];
|
|
587
|
+
if (active && animationType === "rotate90") {
|
|
588
|
+
style = { ...rotateAnimation, ...style };
|
|
589
|
+
}
|
|
590
|
+
let { className } = stitchesInstance.css(css)();
|
|
591
|
+
if (active)
|
|
592
|
+
className += " active";
|
|
593
|
+
return /* @__PURE__ */ React13.createElement("span", {
|
|
594
|
+
style,
|
|
595
|
+
...rest
|
|
596
|
+
}, /* @__PURE__ */ React13.createElement("i", {
|
|
597
|
+
className
|
|
598
|
+
}));
|
|
599
|
+
}
|
|
600
|
+
var Icon_default = Icon;
|
|
552
601
|
|
|
553
602
|
// src/elements/accordion/AccordionWrapper.tsx
|
|
554
|
-
import React13, { forwardRef as forwardRef11, useContext as useContext4 } from "react";
|
|
555
603
|
var AccordionWrapper = forwardRef11((props, ref) => {
|
|
556
604
|
const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
|
|
557
|
-
const { active, setActive } =
|
|
558
|
-
|
|
605
|
+
const { iconName, active, setActive } = useContext5(AccordionContext);
|
|
606
|
+
const isActive = active.includes(wvId);
|
|
607
|
+
return /* @__PURE__ */ React14.createElement("div", {
|
|
559
608
|
ref,
|
|
560
609
|
...rest
|
|
561
|
-
}, /* @__PURE__ */
|
|
610
|
+
}, /* @__PURE__ */ React14.createElement("div", {
|
|
562
611
|
onClick: () => setActive(wvId),
|
|
563
|
-
className: `wv-
|
|
564
|
-
}, name),
|
|
612
|
+
className: `wv-acc-header ${isActive ? "active" : ""}`
|
|
613
|
+
}, /* @__PURE__ */ React14.createElement("span", null, name), /* @__PURE__ */ React14.createElement(Icon_default, {
|
|
614
|
+
className: "wv-acc-icon",
|
|
615
|
+
active: isActive,
|
|
616
|
+
name: iconName
|
|
617
|
+
})), children);
|
|
565
618
|
});
|
|
566
619
|
AccordionWrapper.defaultProps = {
|
|
567
620
|
name: "Accordion item",
|
|
568
621
|
css: {
|
|
569
622
|
"@desktop": {
|
|
570
|
-
maxHeight: "100%"
|
|
623
|
+
maxHeight: "100%",
|
|
624
|
+
".wv-acc-icon": {
|
|
625
|
+
position: "absolute",
|
|
626
|
+
right: 16,
|
|
627
|
+
width: 16,
|
|
628
|
+
height: 16,
|
|
629
|
+
transition: "all 0.3s ease-in-out 0s"
|
|
630
|
+
},
|
|
631
|
+
".wv-acc-header": {
|
|
632
|
+
display: "flex",
|
|
633
|
+
alignItems: "center",
|
|
634
|
+
borderRadius: 4,
|
|
635
|
+
padding: 12,
|
|
636
|
+
marginBottom: 4,
|
|
637
|
+
border: "1px solid #76A9FA",
|
|
638
|
+
cursor: "pointer",
|
|
639
|
+
'&.active + [data-wv-type="accordion.content"]': {
|
|
640
|
+
maxHeight: "var(--max-height, inherit)"
|
|
641
|
+
}
|
|
642
|
+
}
|
|
571
643
|
}
|
|
572
644
|
}
|
|
573
645
|
};
|
|
574
646
|
var AccordionWrapper_default = AccordionWrapper;
|
|
575
647
|
|
|
576
648
|
// src/elements/accordion/AccordionContent.tsx
|
|
577
|
-
import
|
|
649
|
+
import React15, { forwardRef as forwardRef12 } from "react";
|
|
578
650
|
var AccordionContent = forwardRef12(
|
|
579
651
|
(props, ref) => {
|
|
580
652
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
@@ -586,17 +658,17 @@ var AccordionContent = forwardRef12(
|
|
|
586
658
|
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
587
659
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
|
|
588
660
|
};
|
|
589
|
-
return /* @__PURE__ */
|
|
661
|
+
return /* @__PURE__ */ React15.createElement("div", {
|
|
590
662
|
ref,
|
|
591
663
|
...rest,
|
|
592
664
|
style
|
|
593
|
-
},
|
|
665
|
+
}, React15.Children.count(children) > 0 ? children : /* @__PURE__ */ React15.createElement(Placeholder_default, {
|
|
594
666
|
element: "Accordion Content"
|
|
595
|
-
}, "
|
|
667
|
+
}, "Drag and drop an element here."));
|
|
596
668
|
}
|
|
597
669
|
);
|
|
598
670
|
AccordionContent.defaultProps = {
|
|
599
|
-
rows:
|
|
671
|
+
rows: 3,
|
|
600
672
|
columns: 12,
|
|
601
673
|
gap: 4,
|
|
602
674
|
rowSize: 48,
|
|
@@ -618,33 +690,33 @@ AccordionContent.defaultProps = {
|
|
|
618
690
|
var AccordionContent_default = AccordionContent;
|
|
619
691
|
|
|
620
692
|
// src/elements/tab/index.tsx
|
|
621
|
-
import
|
|
693
|
+
import React17, { createContext as createContext2, forwardRef as forwardRef13, useState as useState4 } from "react";
|
|
622
694
|
|
|
623
695
|
// src/elements/tab/TabHeaderWrapper.tsx
|
|
624
|
-
import
|
|
696
|
+
import React16, { useContext as useContext6, useEffect as useEffect3, useState as useState3 } from "react";
|
|
625
697
|
function TabHeader(props) {
|
|
626
698
|
const { wvId } = props;
|
|
627
|
-
const { active, setActive } =
|
|
628
|
-
const { itemInstances } =
|
|
699
|
+
const { active, setActive } = useContext6(TabContext);
|
|
700
|
+
const { itemInstances } = useContext6(WeaverseContext);
|
|
629
701
|
const instance = itemInstances.get(wvId);
|
|
630
702
|
let [data, setData] = useState3(instance.data);
|
|
631
703
|
useEffect3(() => {
|
|
632
704
|
let update = (data2) => setData({ ...data2 });
|
|
633
705
|
instance.subscribe(update);
|
|
634
706
|
}, []);
|
|
635
|
-
return /* @__PURE__ */
|
|
707
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
636
708
|
onClick: () => setActive(wvId),
|
|
637
709
|
className: `wv-tab-header${active === wvId ? " active" : ""}`
|
|
638
710
|
}, data.name);
|
|
639
711
|
}
|
|
640
712
|
function TabHeaderWrapper(props) {
|
|
641
|
-
const { itemInstances } =
|
|
713
|
+
const { itemInstances } = useContext6(WeaverseContext);
|
|
642
714
|
const instance = itemInstances.get(props.wvId);
|
|
643
715
|
const data = instance.data;
|
|
644
716
|
const childIds = data.childIds;
|
|
645
|
-
return /* @__PURE__ */
|
|
717
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
646
718
|
className: "wv-tab-header-wrapper"
|
|
647
|
-
}, childIds.map((id) => /* @__PURE__ */
|
|
719
|
+
}, childIds.map((id) => /* @__PURE__ */ React16.createElement(TabHeader, {
|
|
648
720
|
key: id,
|
|
649
721
|
wvId: id
|
|
650
722
|
})));
|
|
@@ -659,24 +731,28 @@ var TabContext = createContext2({
|
|
|
659
731
|
var Tab = forwardRef13((props, ref) => {
|
|
660
732
|
var _a, _b, _c;
|
|
661
733
|
const wvId = props["data-wv-id"];
|
|
662
|
-
const { children, ...rest } = props;
|
|
663
|
-
const defaultActive = (_c = (_b = (_a =
|
|
734
|
+
const { fullWidthTabHeader, children, ...rest } = props;
|
|
735
|
+
const defaultActive = (_c = (_b = (_a = React17.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
|
|
664
736
|
const [active, setActive] = useState4(defaultActive);
|
|
665
737
|
const setOpenTab = (id) => {
|
|
666
738
|
if (id !== active) {
|
|
667
739
|
setActive(id);
|
|
668
740
|
}
|
|
669
741
|
};
|
|
670
|
-
return /* @__PURE__ */
|
|
742
|
+
return /* @__PURE__ */ React17.createElement("div", {
|
|
671
743
|
ref,
|
|
672
|
-
...rest
|
|
673
|
-
|
|
744
|
+
...rest,
|
|
745
|
+
style: {
|
|
746
|
+
"--tab-width": fullWidthTabHeader ? "100%" : "auto"
|
|
747
|
+
}
|
|
748
|
+
}, /* @__PURE__ */ React17.createElement(TabContext.Provider, {
|
|
674
749
|
value: { active, setActive: setOpenTab }
|
|
675
|
-
}, /* @__PURE__ */
|
|
750
|
+
}, /* @__PURE__ */ React17.createElement(TabHeaderWrapper, {
|
|
676
751
|
wvId
|
|
677
752
|
}), children));
|
|
678
753
|
});
|
|
679
754
|
Tab.defaultProps = {
|
|
755
|
+
fullWidthTabHeader: false,
|
|
680
756
|
css: {
|
|
681
757
|
"@desktop": {
|
|
682
758
|
display: "flex",
|
|
@@ -692,6 +768,8 @@ Tab.defaultProps = {
|
|
|
692
768
|
padding: "15px 24px",
|
|
693
769
|
border: "1px solid #E4E7EB",
|
|
694
770
|
cursor: "pointer",
|
|
771
|
+
textAlign: "center",
|
|
772
|
+
width: "var(--tab-width, auto)",
|
|
695
773
|
"&.active": {
|
|
696
774
|
backgroundColor: "#E4E7EB"
|
|
697
775
|
}
|
|
@@ -702,10 +780,10 @@ Tab.defaultProps = {
|
|
|
702
780
|
var tab_default = Tab;
|
|
703
781
|
|
|
704
782
|
// src/elements/tab/TabContent.tsx
|
|
705
|
-
import
|
|
783
|
+
import React18, { forwardRef as forwardRef14, useContext as useContext7 } from "react";
|
|
706
784
|
var TabContent = forwardRef14(
|
|
707
785
|
(props, ref) => {
|
|
708
|
-
const { active } =
|
|
786
|
+
const { active } = useContext7(TabContext);
|
|
709
787
|
const wvId = props["data-wv-id"];
|
|
710
788
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
711
789
|
let style = {
|
|
@@ -717,17 +795,17 @@ var TabContent = forwardRef14(
|
|
|
717
795
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
718
796
|
"--content-active": active === wvId ? "grid" : "none"
|
|
719
797
|
};
|
|
720
|
-
return /* @__PURE__ */
|
|
798
|
+
return /* @__PURE__ */ React18.createElement("div", {
|
|
721
799
|
ref,
|
|
722
800
|
...rest,
|
|
723
801
|
style
|
|
724
|
-
},
|
|
802
|
+
}, React18.Children.count(children) > 0 ? children : /* @__PURE__ */ React18.createElement(Placeholder_default, {
|
|
725
803
|
element: "Tab Content"
|
|
726
|
-
}, "
|
|
804
|
+
}, "Drag and drop an element here."));
|
|
727
805
|
}
|
|
728
806
|
);
|
|
729
807
|
TabContent.defaultProps = {
|
|
730
|
-
rows:
|
|
808
|
+
rows: 3,
|
|
731
809
|
columns: 12,
|
|
732
810
|
gap: 4,
|
|
733
811
|
rowSize: 48,
|
|
@@ -747,29 +825,28 @@ TabContent.defaultProps = {
|
|
|
747
825
|
var TabContent_default = TabContent;
|
|
748
826
|
|
|
749
827
|
// src/elements/slider/index.tsx
|
|
750
|
-
import
|
|
751
|
-
import
|
|
752
|
-
var Carousel = C.default;
|
|
828
|
+
import React19, { forwardRef as forwardRef15, useContext as useContext8 } from "react";
|
|
829
|
+
import { Carousel } from "nuka-carousel/lib/carousel";
|
|
753
830
|
var Slider = forwardRef15((props, ref) => {
|
|
754
|
-
const { isDesignMode } =
|
|
831
|
+
const { isDesignMode } = useContext8(WeaverseContext);
|
|
755
832
|
const { autoplay, delay, children, ...rest } = props;
|
|
756
|
-
return /* @__PURE__ */
|
|
833
|
+
return /* @__PURE__ */ React19.createElement("div", {
|
|
757
834
|
...rest,
|
|
758
835
|
ref
|
|
759
|
-
}, /* @__PURE__ */
|
|
836
|
+
}, /* @__PURE__ */ React19.createElement(Carousel, {
|
|
760
837
|
dragging: false,
|
|
761
|
-
renderCenterLeftControls: (props2) => /* @__PURE__ */
|
|
838
|
+
renderCenterLeftControls: (props2) => /* @__PURE__ */ React19.createElement("button", {
|
|
762
839
|
className: "wv-slider-btn",
|
|
763
840
|
onClick: props2.previousSlide,
|
|
764
841
|
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
765
|
-
}, /* @__PURE__ */
|
|
842
|
+
}, /* @__PURE__ */ React19.createElement("i", {
|
|
766
843
|
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
767
844
|
})),
|
|
768
|
-
renderCenterRightControls: (props2) => /* @__PURE__ */
|
|
845
|
+
renderCenterRightControls: (props2) => /* @__PURE__ */ React19.createElement("button", {
|
|
769
846
|
className: "wv-slider-btn",
|
|
770
847
|
onClick: props2.nextSlide,
|
|
771
848
|
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
772
|
-
}, /* @__PURE__ */
|
|
849
|
+
}, /* @__PURE__ */ React19.createElement("i", {
|
|
773
850
|
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
774
851
|
})),
|
|
775
852
|
wrapAround: !isDesignMode,
|
|
@@ -817,10 +894,10 @@ Slider.defaultProps = {
|
|
|
817
894
|
var slider_default = Slider;
|
|
818
895
|
|
|
819
896
|
// src/elements/slider/SliderContent.tsx
|
|
820
|
-
import
|
|
897
|
+
import React20, { forwardRef as forwardRef16, useContext as useContext9 } from "react";
|
|
821
898
|
var SliderContent = forwardRef16(
|
|
822
899
|
(props, ref) => {
|
|
823
|
-
const { isDesignMode } =
|
|
900
|
+
const { isDesignMode } = useContext9(WeaverseContext);
|
|
824
901
|
const {
|
|
825
902
|
mediaUrl,
|
|
826
903
|
targetLink,
|
|
@@ -846,13 +923,13 @@ var SliderContent = forwardRef16(
|
|
|
846
923
|
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
847
924
|
}
|
|
848
925
|
};
|
|
849
|
-
return /* @__PURE__ */
|
|
926
|
+
return /* @__PURE__ */ React20.createElement("div", {
|
|
850
927
|
...rest,
|
|
851
928
|
style,
|
|
852
929
|
onClick: handleClick
|
|
853
|
-
},
|
|
930
|
+
}, React20.Children.count(children) > 0 ? children : /* @__PURE__ */ React20.createElement(Placeholder_default, {
|
|
854
931
|
element: "Slider Content"
|
|
855
|
-
}, "
|
|
932
|
+
}, "Drag and drop an element here."));
|
|
856
933
|
}
|
|
857
934
|
);
|
|
858
935
|
SliderContent.defaultProps = {
|
|
@@ -880,22 +957,22 @@ SliderContent.defaultProps = {
|
|
|
880
957
|
var SliderContent_default = SliderContent;
|
|
881
958
|
|
|
882
959
|
// src/elements/custom-html.tsx
|
|
883
|
-
import
|
|
960
|
+
import React21, { forwardRef as forwardRef17, useContext as useContext10 } from "react";
|
|
884
961
|
var CustomHTML = forwardRef17(
|
|
885
962
|
(props, ref) => {
|
|
886
963
|
const { content, children, ...rest } = props;
|
|
887
|
-
const { isDesignMode } =
|
|
964
|
+
const { isDesignMode } = useContext10(WeaverseContext);
|
|
888
965
|
const style = {
|
|
889
966
|
"--pointer-events": isDesignMode ? "none" : "auto"
|
|
890
967
|
};
|
|
891
968
|
if (!content)
|
|
892
|
-
return /* @__PURE__ */
|
|
969
|
+
return /* @__PURE__ */ React21.createElement("div", {
|
|
893
970
|
ref,
|
|
894
971
|
...rest
|
|
895
|
-
}, /* @__PURE__ */
|
|
972
|
+
}, /* @__PURE__ */ React21.createElement(Placeholder_default, {
|
|
896
973
|
element: "Custom HTML"
|
|
897
|
-
}, "
|
|
898
|
-
return /* @__PURE__ */
|
|
974
|
+
}, "Add your custom HTML code."));
|
|
975
|
+
return /* @__PURE__ */ React21.createElement("div", {
|
|
899
976
|
ref,
|
|
900
977
|
...rest,
|
|
901
978
|
style,
|
|
@@ -1002,7 +1079,7 @@ var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
|
1002
1079
|
|
|
1003
1080
|
// src/renderer.tsx
|
|
1004
1081
|
import { isBrowser } from "@weaverse/core";
|
|
1005
|
-
import
|
|
1082
|
+
import React22, { useContext as useContext11, useEffect as useEffect4, useRef, useState as useState5 } from "react";
|
|
1006
1083
|
|
|
1007
1084
|
// src/utils/index.ts
|
|
1008
1085
|
function shortCssObject(css) {
|
|
@@ -1042,18 +1119,18 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1042
1119
|
}, []);
|
|
1043
1120
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1044
1121
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1045
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1122
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React22.createElement("div", {
|
|
1046
1123
|
className: `weaverse-content-root ${themeClass}`,
|
|
1047
1124
|
...eventHandlers,
|
|
1048
1125
|
ref: rootRef
|
|
1049
|
-
}, /* @__PURE__ */
|
|
1126
|
+
}, /* @__PURE__ */ React22.createElement(WeaverseContextProvider, {
|
|
1050
1127
|
value: context
|
|
1051
|
-
}, /* @__PURE__ */
|
|
1128
|
+
}, /* @__PURE__ */ React22.createElement(ItemInstance, {
|
|
1052
1129
|
id: context.projectData.rootId
|
|
1053
1130
|
}))) : null;
|
|
1054
1131
|
};
|
|
1055
1132
|
var ItemComponent = ({ instance }) => {
|
|
1056
|
-
let { stitchesInstance, elementInstances } =
|
|
1133
|
+
let { stitchesInstance, elementInstances } = useContext11(WeaverseContext);
|
|
1057
1134
|
let [data, setData] = useState5(instance.data);
|
|
1058
1135
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
1059
1136
|
useEffect4(() => {
|
|
@@ -1076,13 +1153,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1076
1153
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1077
1154
|
rest.ref = instance.ref;
|
|
1078
1155
|
}
|
|
1079
|
-
return /* @__PURE__ */
|
|
1156
|
+
return /* @__PURE__ */ React22.createElement(Component, {
|
|
1080
1157
|
key: id,
|
|
1081
1158
|
"data-wv-type": type,
|
|
1082
1159
|
"data-wv-id": id,
|
|
1083
1160
|
className: generateItemClass(instance, stitchesInstance),
|
|
1084
1161
|
...rest
|
|
1085
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1162
|
+
}, childIds.map((id2) => /* @__PURE__ */ React22.createElement(ItemInstance, {
|
|
1086
1163
|
key: id2,
|
|
1087
1164
|
id: id2
|
|
1088
1165
|
})));
|
|
@@ -1090,15 +1167,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1090
1167
|
return null;
|
|
1091
1168
|
};
|
|
1092
1169
|
var ItemInstance = ({ id }) => {
|
|
1093
|
-
let context =
|
|
1170
|
+
let context = useContext11(WeaverseContext);
|
|
1094
1171
|
let { itemInstances } = context;
|
|
1095
1172
|
let instance = itemInstances.get(id);
|
|
1096
1173
|
if (!instance) {
|
|
1097
|
-
return /* @__PURE__ */
|
|
1174
|
+
return /* @__PURE__ */ React22.createElement("div", {
|
|
1098
1175
|
style: { display: "none" }
|
|
1099
1176
|
}, "Item instance ", id, " not found");
|
|
1100
1177
|
}
|
|
1101
|
-
return /* @__PURE__ */
|
|
1178
|
+
return /* @__PURE__ */ React22.createElement(ItemComponent, {
|
|
1102
1179
|
instance
|
|
1103
1180
|
});
|
|
1104
1181
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.7.
|
|
2
|
+
"version": "0.7.9",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"name": "@weaverse/react",
|
|
32
32
|
"author": "Weaverse Team",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@weaverse/core": "0.7.
|
|
35
|
-
"nuka-carousel": "^5.
|
|
34
|
+
"@weaverse/core": "0.7.9",
|
|
35
|
+
"nuka-carousel": "^5.3.0"
|
|
36
36
|
}
|
|
37
37
|
}
|