@weaverse/react 0.7.15 → 0.7.17
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 +8 -3
- package/dist/index.js +91 -579
- package/dist/index.mjs +90 -578
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -238,34 +238,6 @@ var countdown_default = Countdown;
|
|
|
238
238
|
|
|
239
239
|
// src/elements/image.tsx
|
|
240
240
|
var import_react5 = __toESM(require("react"));
|
|
241
|
-
var import_core2 = require("@weaverse/core");
|
|
242
|
-
var loadUploadCareAdaptiveDelivery = () => {
|
|
243
|
-
if (!window.Blinkloader) {
|
|
244
|
-
console.log("loadUploadCareAdaptiveDelivery");
|
|
245
|
-
(function(src, cb) {
|
|
246
|
-
let s = document.createElement("script");
|
|
247
|
-
s.setAttribute("src", src);
|
|
248
|
-
s.onload = cb;
|
|
249
|
-
(document.head || document.body).appendChild(s);
|
|
250
|
-
})(
|
|
251
|
-
"https://ucarecdn.com/libs/blinkloader/3.x/blinkloader.min.js",
|
|
252
|
-
function() {
|
|
253
|
-
window.Blinkloader.optimize({
|
|
254
|
-
pubkey: "1a22133d1a1bdc089d4c",
|
|
255
|
-
fadeIn: true,
|
|
256
|
-
lazyload: true,
|
|
257
|
-
smartCompression: true,
|
|
258
|
-
responsive: true,
|
|
259
|
-
retina: true,
|
|
260
|
-
webp: true
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
);
|
|
264
|
-
}
|
|
265
|
-
};
|
|
266
|
-
if (import_core2.isBrowser) {
|
|
267
|
-
loadUploadCareAdaptiveDelivery();
|
|
268
|
-
}
|
|
269
241
|
var Image = import_react5.default.forwardRef(
|
|
270
242
|
(props, ref) => {
|
|
271
243
|
let {
|
|
@@ -308,7 +280,7 @@ var css4 = {
|
|
|
308
280
|
objectFit: "var(--wv-img-object-fit, cover)",
|
|
309
281
|
objectPosition: "var(--wv-img-object-position, center)"
|
|
310
282
|
},
|
|
311
|
-
"
|
|
283
|
+
"& [data-blink-src]": {
|
|
312
284
|
visibility: "hidden"
|
|
313
285
|
}
|
|
314
286
|
}
|
|
@@ -327,7 +299,18 @@ var image_default = Image;
|
|
|
327
299
|
// src/elements/layout.tsx
|
|
328
300
|
var import_react6 = __toESM(require("react"));
|
|
329
301
|
var Layout = (0, import_react6.forwardRef)((props, ref) => {
|
|
330
|
-
let {
|
|
302
|
+
let {
|
|
303
|
+
children,
|
|
304
|
+
rows,
|
|
305
|
+
gap,
|
|
306
|
+
rowSize,
|
|
307
|
+
columns,
|
|
308
|
+
gridSize,
|
|
309
|
+
backgroundColor,
|
|
310
|
+
backgroundImage,
|
|
311
|
+
objectFit,
|
|
312
|
+
...rest
|
|
313
|
+
} = props;
|
|
331
314
|
let style = {
|
|
332
315
|
"--grid-size": gridSize + "px",
|
|
333
316
|
"--rows": rows,
|
|
@@ -340,10 +323,30 @@ var Layout = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
340
323
|
ref,
|
|
341
324
|
...rest,
|
|
342
325
|
style
|
|
343
|
-
}, /* @__PURE__ */ import_react6.default.createElement(
|
|
326
|
+
}, /* @__PURE__ */ import_react6.default.createElement(LayoutBackground, {
|
|
327
|
+
imgUrl: backgroundImage,
|
|
328
|
+
bgColor: backgroundColor,
|
|
329
|
+
objectFit
|
|
330
|
+
}), /* @__PURE__ */ import_react6.default.createElement("div", {
|
|
344
331
|
"data-layout-content": true
|
|
345
332
|
}, children));
|
|
346
333
|
});
|
|
334
|
+
var LayoutBackground = (props) => {
|
|
335
|
+
let { bgColor, imgUrl, objectFit } = props;
|
|
336
|
+
let style = {
|
|
337
|
+
["--bg-color"]: bgColor,
|
|
338
|
+
["--object-fit"]: objectFit
|
|
339
|
+
};
|
|
340
|
+
return imgUrl || bgColor ? /* @__PURE__ */ import_react6.default.createElement("div", {
|
|
341
|
+
"data-wv-bg": true,
|
|
342
|
+
style
|
|
343
|
+
}, imgUrl && /* @__PURE__ */ import_react6.default.createElement("img", {
|
|
344
|
+
width: "100%",
|
|
345
|
+
height: "100%",
|
|
346
|
+
"data-blink-src": imgUrl,
|
|
347
|
+
alt: "wv-layout-background"
|
|
348
|
+
})) : null;
|
|
349
|
+
};
|
|
347
350
|
var css5 = {
|
|
348
351
|
"@desktop": {
|
|
349
352
|
paddingTop: "16px",
|
|
@@ -367,6 +370,18 @@ var css5 = {
|
|
|
367
370
|
}
|
|
368
371
|
}
|
|
369
372
|
};
|
|
373
|
+
var permanentCss = {
|
|
374
|
+
"@desktop": {
|
|
375
|
+
"[data-wv-bg]": {
|
|
376
|
+
position: "absolute",
|
|
377
|
+
inset: 0,
|
|
378
|
+
backgroundColor: "var(--bg-color)"
|
|
379
|
+
},
|
|
380
|
+
img: {
|
|
381
|
+
objectFit: "var(--object-fit, cover)"
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
};
|
|
370
385
|
Layout.defaultProps = {
|
|
371
386
|
gridSize: 1224,
|
|
372
387
|
rows: 12,
|
|
@@ -477,7 +492,7 @@ var Placeholder = (0, import_react9.forwardRef)(
|
|
|
477
492
|
(props, ref) => {
|
|
478
493
|
let { element, children, ...rest } = props;
|
|
479
494
|
return /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
480
|
-
"data-wv-
|
|
495
|
+
"data-wv-placeholder": true,
|
|
481
496
|
style: { display: "none" },
|
|
482
497
|
ref,
|
|
483
498
|
...rest
|
|
@@ -570,480 +585,6 @@ Instagram.defaultProps = {
|
|
|
570
585
|
};
|
|
571
586
|
var instagram_default = Instagram;
|
|
572
587
|
|
|
573
|
-
// src/elements/accordion/index.tsx
|
|
574
|
-
var import_react11 = __toESM(require("react"));
|
|
575
|
-
var AccordionContext = (0, import_react11.createContext)({
|
|
576
|
-
iconName: "arrow",
|
|
577
|
-
active: [],
|
|
578
|
-
setActive: () => {
|
|
579
|
-
}
|
|
580
|
-
});
|
|
581
|
-
var Accordion = (0, import_react11.forwardRef)(
|
|
582
|
-
(props, ref) => {
|
|
583
|
-
const { iconName, children, ...rest } = props;
|
|
584
|
-
const [active, setActive] = (0, import_react11.useState)([]);
|
|
585
|
-
const setOpenAccordion = (id) => {
|
|
586
|
-
if (active.includes(id)) {
|
|
587
|
-
setActive(active.filter((_id) => _id !== id));
|
|
588
|
-
} else {
|
|
589
|
-
setActive([...active, id]);
|
|
590
|
-
}
|
|
591
|
-
};
|
|
592
|
-
return /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
593
|
-
ref,
|
|
594
|
-
...rest
|
|
595
|
-
}, /* @__PURE__ */ import_react11.default.createElement(AccordionContext.Provider, {
|
|
596
|
-
value: { active, setActive: setOpenAccordion, iconName }
|
|
597
|
-
}, children));
|
|
598
|
-
}
|
|
599
|
-
);
|
|
600
|
-
var css10 = {
|
|
601
|
-
"@desktop": {
|
|
602
|
-
display: "flex",
|
|
603
|
-
flexDirection: "column",
|
|
604
|
-
gap: 4
|
|
605
|
-
}
|
|
606
|
-
};
|
|
607
|
-
Accordion.defaultProps = {
|
|
608
|
-
iconName: "arrow"
|
|
609
|
-
};
|
|
610
|
-
var accordion_default = Accordion;
|
|
611
|
-
|
|
612
|
-
// src/elements/accordion/AccordionWrapper.tsx
|
|
613
|
-
var import_react13 = __toESM(require("react"));
|
|
614
|
-
|
|
615
|
-
// src/elements/accordion/Icon.tsx
|
|
616
|
-
var import_react12 = __toESM(require("react"));
|
|
617
|
-
var ICONS = {
|
|
618
|
-
caret: {
|
|
619
|
-
animationType: "rotate90",
|
|
620
|
-
css: {
|
|
621
|
-
position: "absolute!important",
|
|
622
|
-
left: 5,
|
|
623
|
-
top: 2,
|
|
624
|
-
width: 0,
|
|
625
|
-
height: 0,
|
|
626
|
-
borderTop: "6px solid transparent",
|
|
627
|
-
borderBottom: "6px solid transparent",
|
|
628
|
-
borderLeft: "6px solid #1F2A37"
|
|
629
|
-
}
|
|
630
|
-
},
|
|
631
|
-
arrow: {
|
|
632
|
-
animationType: "rotate90",
|
|
633
|
-
css: {
|
|
634
|
-
border: "solid #1F2A37",
|
|
635
|
-
borderWidth: "0 1px 1px 0",
|
|
636
|
-
display: "inline-block",
|
|
637
|
-
transform: "rotate(-45deg) translate(15%, -15%)",
|
|
638
|
-
padding: 4
|
|
639
|
-
}
|
|
640
|
-
},
|
|
641
|
-
plus: {
|
|
642
|
-
animationType: "custom",
|
|
643
|
-
css: {
|
|
644
|
-
display: "inline-block",
|
|
645
|
-
top: -6,
|
|
646
|
-
width: 15,
|
|
647
|
-
height: 1,
|
|
648
|
-
backgroundColor: "#1F2A37",
|
|
649
|
-
"&:after": {
|
|
650
|
-
position: "absolute",
|
|
651
|
-
content: "",
|
|
652
|
-
top: -7,
|
|
653
|
-
left: 7,
|
|
654
|
-
width: 1,
|
|
655
|
-
height: 15,
|
|
656
|
-
backgroundColor: "#1F2A37",
|
|
657
|
-
transition: "all 0.3s ease-in-out 0s"
|
|
658
|
-
},
|
|
659
|
-
"&.active": {
|
|
660
|
-
"&:after": {
|
|
661
|
-
transform: "rotate(90deg)"
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
};
|
|
667
|
-
var rotateAnimation = {
|
|
668
|
-
transition: "all 0.3s ease-in-out 0s",
|
|
669
|
-
transform: "rotate(90deg)"
|
|
670
|
-
};
|
|
671
|
-
function Icon(props) {
|
|
672
|
-
let { name, active = false, style, ...rest } = props;
|
|
673
|
-
let { stitchesInstance } = (0, import_react12.useContext)(WeaverseContext);
|
|
674
|
-
const { animationType, css: css17 } = ICONS[name];
|
|
675
|
-
if (active && animationType === "rotate90") {
|
|
676
|
-
style = { ...rotateAnimation, ...style };
|
|
677
|
-
}
|
|
678
|
-
let { className } = stitchesInstance.css(css17)();
|
|
679
|
-
if (active)
|
|
680
|
-
className += " active";
|
|
681
|
-
return /* @__PURE__ */ import_react12.default.createElement("span", {
|
|
682
|
-
style,
|
|
683
|
-
...rest
|
|
684
|
-
}, /* @__PURE__ */ import_react12.default.createElement("i", {
|
|
685
|
-
className
|
|
686
|
-
}));
|
|
687
|
-
}
|
|
688
|
-
var Icon_default = Icon;
|
|
689
|
-
|
|
690
|
-
// src/elements/accordion/AccordionWrapper.tsx
|
|
691
|
-
var AccordionWrapper = (0, import_react13.forwardRef)((props, ref) => {
|
|
692
|
-
const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
|
|
693
|
-
const { iconName, active, setActive } = (0, import_react13.useContext)(AccordionContext);
|
|
694
|
-
const isActive = active.includes(wvId);
|
|
695
|
-
return /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
696
|
-
ref,
|
|
697
|
-
...rest
|
|
698
|
-
}, /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
699
|
-
onClick: () => setActive(wvId),
|
|
700
|
-
className: `wv-acc-header ${isActive ? "active" : ""}`
|
|
701
|
-
}, /* @__PURE__ */ import_react13.default.createElement("span", null, name), /* @__PURE__ */ import_react13.default.createElement(Icon_default, {
|
|
702
|
-
className: "wv-acc-icon",
|
|
703
|
-
active: isActive,
|
|
704
|
-
name: iconName
|
|
705
|
-
})), children);
|
|
706
|
-
});
|
|
707
|
-
var css11 = {
|
|
708
|
-
"@desktop": {
|
|
709
|
-
maxHeight: "100%",
|
|
710
|
-
".wv-acc-icon": {
|
|
711
|
-
position: "absolute",
|
|
712
|
-
right: 16,
|
|
713
|
-
width: 16,
|
|
714
|
-
height: 16,
|
|
715
|
-
transition: "all 0.3s ease-in-out 0s"
|
|
716
|
-
},
|
|
717
|
-
".wv-acc-header": {
|
|
718
|
-
display: "flex",
|
|
719
|
-
alignItems: "center",
|
|
720
|
-
borderRadius: 4,
|
|
721
|
-
padding: 12,
|
|
722
|
-
marginBottom: 4,
|
|
723
|
-
border: "1px solid #76A9FA",
|
|
724
|
-
cursor: "pointer",
|
|
725
|
-
'&.active + [data-wv-type="accordion.content"]': {
|
|
726
|
-
maxHeight: "var(--max-height, inherit)"
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
};
|
|
731
|
-
AccordionWrapper.defaultProps = {
|
|
732
|
-
name: "Accordion item"
|
|
733
|
-
};
|
|
734
|
-
var AccordionWrapper_default = AccordionWrapper;
|
|
735
|
-
|
|
736
|
-
// src/elements/accordion/AccordionContent.tsx
|
|
737
|
-
var import_react14 = __toESM(require("react"));
|
|
738
|
-
var AccordionContent = (0, import_react14.forwardRef)(
|
|
739
|
-
(props, ref) => {
|
|
740
|
-
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
741
|
-
let style = {
|
|
742
|
-
"--rows": rows,
|
|
743
|
-
"--columns": columns,
|
|
744
|
-
"--gap": gap + "px",
|
|
745
|
-
"--row-size": rowSize + "px",
|
|
746
|
-
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
747
|
-
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
|
|
748
|
-
};
|
|
749
|
-
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
750
|
-
ref,
|
|
751
|
-
...rest,
|
|
752
|
-
style
|
|
753
|
-
}, import_react14.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react14.default.createElement(Placeholder_default, {
|
|
754
|
-
element: "Accordion Content"
|
|
755
|
-
}, "Drag and drop an element here."));
|
|
756
|
-
}
|
|
757
|
-
);
|
|
758
|
-
var css12 = {
|
|
759
|
-
"@desktop": {
|
|
760
|
-
width: "100%",
|
|
761
|
-
maxWidth: "var(--grid-size)",
|
|
762
|
-
display: "grid",
|
|
763
|
-
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
764
|
-
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
765
|
-
gap: "var(--gap)",
|
|
766
|
-
overflow: "hidden",
|
|
767
|
-
maxHeight: 0,
|
|
768
|
-
transition: "all var(--transition-duration, 0.3s) ease-in-out",
|
|
769
|
-
borderRadius: 4
|
|
770
|
-
}
|
|
771
|
-
};
|
|
772
|
-
AccordionContent.defaultProps = {
|
|
773
|
-
rows: 3,
|
|
774
|
-
columns: 12,
|
|
775
|
-
gap: 4,
|
|
776
|
-
rowSize: 48
|
|
777
|
-
};
|
|
778
|
-
var AccordionContent_default = AccordionContent;
|
|
779
|
-
|
|
780
|
-
// src/elements/tab/index.tsx
|
|
781
|
-
var import_react16 = __toESM(require("react"));
|
|
782
|
-
|
|
783
|
-
// src/elements/tab/TabHeaderWrapper.tsx
|
|
784
|
-
var import_react15 = __toESM(require("react"));
|
|
785
|
-
function TabHeader(props) {
|
|
786
|
-
const { wvId } = props;
|
|
787
|
-
const { active, setActive } = (0, import_react15.useContext)(TabContext);
|
|
788
|
-
const { itemInstances } = (0, import_react15.useContext)(WeaverseContext);
|
|
789
|
-
const instance = itemInstances.get(wvId);
|
|
790
|
-
let [data, setData] = (0, import_react15.useState)(instance.data);
|
|
791
|
-
(0, import_react15.useEffect)(() => {
|
|
792
|
-
let update = (data2) => setData({ ...data2 });
|
|
793
|
-
instance.subscribe(update);
|
|
794
|
-
}, []);
|
|
795
|
-
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
796
|
-
onClick: () => setActive(wvId),
|
|
797
|
-
className: `wv-tab-header${active === wvId ? " active" : ""}`
|
|
798
|
-
}, data.name);
|
|
799
|
-
}
|
|
800
|
-
function TabHeaderWrapper(props) {
|
|
801
|
-
const { itemInstances } = (0, import_react15.useContext)(WeaverseContext);
|
|
802
|
-
const instance = itemInstances.get(props.wvId);
|
|
803
|
-
const data = instance.data;
|
|
804
|
-
const childIds = data.childIds;
|
|
805
|
-
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
806
|
-
className: "wv-tab-header-wrapper"
|
|
807
|
-
}, childIds.map((id) => /* @__PURE__ */ import_react15.default.createElement(TabHeader, {
|
|
808
|
-
key: id,
|
|
809
|
-
wvId: id
|
|
810
|
-
})));
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
// src/elements/tab/index.tsx
|
|
814
|
-
var TabContext = (0, import_react16.createContext)({
|
|
815
|
-
active: null,
|
|
816
|
-
setActive: () => {
|
|
817
|
-
}
|
|
818
|
-
});
|
|
819
|
-
var Tab = (0, import_react16.forwardRef)((props, ref) => {
|
|
820
|
-
var _a, _b, _c;
|
|
821
|
-
const wvId = props["data-wv-id"];
|
|
822
|
-
const { fullWidthTabHeader, children, ...rest } = props;
|
|
823
|
-
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;
|
|
824
|
-
const [active, setActive] = (0, import_react16.useState)(defaultActive);
|
|
825
|
-
const setOpenTab = (id) => {
|
|
826
|
-
if (id !== active) {
|
|
827
|
-
setActive(id);
|
|
828
|
-
}
|
|
829
|
-
};
|
|
830
|
-
return /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
831
|
-
ref,
|
|
832
|
-
...rest,
|
|
833
|
-
style: {
|
|
834
|
-
"--tab-width": fullWidthTabHeader ? "100%" : "auto"
|
|
835
|
-
}
|
|
836
|
-
}, /* @__PURE__ */ import_react16.default.createElement(TabContext.Provider, {
|
|
837
|
-
value: { active, setActive: setOpenTab }
|
|
838
|
-
}, /* @__PURE__ */ import_react16.default.createElement(TabHeaderWrapper, {
|
|
839
|
-
wvId
|
|
840
|
-
}), children));
|
|
841
|
-
});
|
|
842
|
-
var css13 = {
|
|
843
|
-
"@desktop": {
|
|
844
|
-
display: "flex",
|
|
845
|
-
flexDirection: "column",
|
|
846
|
-
gap: 4,
|
|
847
|
-
"& .wv-tab-header-wrapper": {
|
|
848
|
-
width: "100%",
|
|
849
|
-
display: "flex",
|
|
850
|
-
marginBottom: 10
|
|
851
|
-
},
|
|
852
|
-
"& .wv-tab-header": {
|
|
853
|
-
backgroundColor: "#fff",
|
|
854
|
-
padding: "15px 24px",
|
|
855
|
-
border: "1px solid #E4E7EB",
|
|
856
|
-
cursor: "pointer",
|
|
857
|
-
textAlign: "center",
|
|
858
|
-
width: "var(--tab-width, auto)",
|
|
859
|
-
"&.active": {
|
|
860
|
-
backgroundColor: "#E4E7EB"
|
|
861
|
-
}
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
};
|
|
865
|
-
Tab.defaultProps = {
|
|
866
|
-
fullWidthTabHeader: false
|
|
867
|
-
};
|
|
868
|
-
var tab_default = Tab;
|
|
869
|
-
|
|
870
|
-
// src/elements/tab/TabContent.tsx
|
|
871
|
-
var import_react17 = __toESM(require("react"));
|
|
872
|
-
var TabContent = (0, import_react17.forwardRef)(
|
|
873
|
-
(props, ref) => {
|
|
874
|
-
const { active } = (0, import_react17.useContext)(TabContext);
|
|
875
|
-
const wvId = props["data-wv-id"];
|
|
876
|
-
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
877
|
-
let style = {
|
|
878
|
-
"--rows": rows,
|
|
879
|
-
"--columns": columns,
|
|
880
|
-
"--gap": gap + "px",
|
|
881
|
-
"--row-size": rowSize + "px",
|
|
882
|
-
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
883
|
-
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
884
|
-
"--content-active": active === wvId ? "grid" : "none"
|
|
885
|
-
};
|
|
886
|
-
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
887
|
-
ref,
|
|
888
|
-
...rest,
|
|
889
|
-
style
|
|
890
|
-
}, import_react17.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react17.default.createElement(Placeholder_default, {
|
|
891
|
-
element: "Tab Content"
|
|
892
|
-
}, "Drag and drop an element here."));
|
|
893
|
-
}
|
|
894
|
-
);
|
|
895
|
-
var css14 = {
|
|
896
|
-
"@desktop": {
|
|
897
|
-
width: "100%",
|
|
898
|
-
maxWidth: "var(--grid-size)",
|
|
899
|
-
display: "var(--content-active, none)",
|
|
900
|
-
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
901
|
-
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
902
|
-
gap: "var(--gap)",
|
|
903
|
-
borderRadius: 4
|
|
904
|
-
}
|
|
905
|
-
};
|
|
906
|
-
TabContent.defaultProps = {
|
|
907
|
-
rows: 3,
|
|
908
|
-
columns: 12,
|
|
909
|
-
gap: 4,
|
|
910
|
-
rowSize: 48,
|
|
911
|
-
name: "Tab header"
|
|
912
|
-
};
|
|
913
|
-
var TabContent_default = TabContent;
|
|
914
|
-
|
|
915
|
-
// src/elements/slider/index.tsx
|
|
916
|
-
var import_react18 = __toESM(require("react"));
|
|
917
|
-
var import_carousel = require("nuka-carousel/lib/carousel");
|
|
918
|
-
var Slider = (0, import_react18.forwardRef)((props, ref) => {
|
|
919
|
-
const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
|
|
920
|
-
const { autoplay, delay, children, ...rest } = props;
|
|
921
|
-
return /* @__PURE__ */ import_react18.default.createElement("div", {
|
|
922
|
-
...rest,
|
|
923
|
-
ref
|
|
924
|
-
}, /* @__PURE__ */ import_react18.default.createElement(import_carousel.Carousel, {
|
|
925
|
-
dragging: false,
|
|
926
|
-
renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react18.default.createElement("button", {
|
|
927
|
-
className: "wv-slider-btn",
|
|
928
|
-
onClick: props2.previousSlide,
|
|
929
|
-
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
930
|
-
}, /* @__PURE__ */ import_react18.default.createElement("i", {
|
|
931
|
-
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
932
|
-
})),
|
|
933
|
-
renderCenterRightControls: (props2) => /* @__PURE__ */ import_react18.default.createElement("button", {
|
|
934
|
-
className: "wv-slider-btn",
|
|
935
|
-
onClick: props2.nextSlide,
|
|
936
|
-
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
937
|
-
}, /* @__PURE__ */ import_react18.default.createElement("i", {
|
|
938
|
-
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
939
|
-
})),
|
|
940
|
-
wrapAround: !isDesignMode,
|
|
941
|
-
autoplay: !isDesignMode && autoplay,
|
|
942
|
-
autoplayInterval: delay * 1e3
|
|
943
|
-
}, children));
|
|
944
|
-
});
|
|
945
|
-
var css15 = {
|
|
946
|
-
"@desktop": {
|
|
947
|
-
"& .wv-slider-btn": {
|
|
948
|
-
borderRadius: "100%",
|
|
949
|
-
width: 40,
|
|
950
|
-
height: 40,
|
|
951
|
-
background: "#fff",
|
|
952
|
-
border: "none",
|
|
953
|
-
cursor: "pointer",
|
|
954
|
-
"&[disabled]": {
|
|
955
|
-
cursor: "not-allowed"
|
|
956
|
-
},
|
|
957
|
-
"&:hover .wv-slider-arrow": {
|
|
958
|
-
borderColor: "#999"
|
|
959
|
-
},
|
|
960
|
-
"& .wv-slider-arrow": {
|
|
961
|
-
border: "solid black",
|
|
962
|
-
borderWidth: "0 1px 1px 0",
|
|
963
|
-
display: "inline-block",
|
|
964
|
-
padding: 5
|
|
965
|
-
},
|
|
966
|
-
"& .wv-slider-arrow-right": {
|
|
967
|
-
transform: "rotate(-45deg)",
|
|
968
|
-
marginRight: 5
|
|
969
|
-
},
|
|
970
|
-
"& .wv-slider-arrow-left": {
|
|
971
|
-
transform: "rotate(135deg)",
|
|
972
|
-
marginLeft: 5
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
}
|
|
976
|
-
};
|
|
977
|
-
Slider.defaultProps = {
|
|
978
|
-
fullWidth: true,
|
|
979
|
-
autoplay: true,
|
|
980
|
-
delay: 3
|
|
981
|
-
};
|
|
982
|
-
var slider_default = Slider;
|
|
983
|
-
|
|
984
|
-
// src/elements/slider/SliderContent.tsx
|
|
985
|
-
var import_react19 = __toESM(require("react"));
|
|
986
|
-
var SliderContent = (0, import_react19.forwardRef)(
|
|
987
|
-
(props, ref) => {
|
|
988
|
-
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
989
|
-
const {
|
|
990
|
-
mediaUrl,
|
|
991
|
-
targetLink,
|
|
992
|
-
openInNewTab,
|
|
993
|
-
rows,
|
|
994
|
-
columns,
|
|
995
|
-
gap,
|
|
996
|
-
rowSize,
|
|
997
|
-
children,
|
|
998
|
-
...rest
|
|
999
|
-
} = props;
|
|
1000
|
-
let style = {
|
|
1001
|
-
"--rows": rows,
|
|
1002
|
-
"--columns": columns,
|
|
1003
|
-
"--gap": gap + "px",
|
|
1004
|
-
"--row-size": rowSize + "px",
|
|
1005
|
-
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
1006
|
-
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
1007
|
-
"--background-url": `url(${mediaUrl}`
|
|
1008
|
-
};
|
|
1009
|
-
const handleClick = () => {
|
|
1010
|
-
if (!isDesignMode && targetLink) {
|
|
1011
|
-
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
1012
|
-
}
|
|
1013
|
-
};
|
|
1014
|
-
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1015
|
-
...rest,
|
|
1016
|
-
style,
|
|
1017
|
-
onClick: handleClick
|
|
1018
|
-
}, import_react19.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
1019
|
-
element: "Slider Content"
|
|
1020
|
-
}, "Drag and drop an element here."));
|
|
1021
|
-
}
|
|
1022
|
-
);
|
|
1023
|
-
var css16 = {
|
|
1024
|
-
"@desktop": {
|
|
1025
|
-
width: "100%",
|
|
1026
|
-
maxWidth: "var(--grid-size)",
|
|
1027
|
-
display: "grid",
|
|
1028
|
-
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
1029
|
-
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
1030
|
-
gap: "var(--gap)",
|
|
1031
|
-
borderRadius: 4,
|
|
1032
|
-
backgroundImage: "var(--background-url, none)"
|
|
1033
|
-
}
|
|
1034
|
-
};
|
|
1035
|
-
SliderContent.defaultProps = {
|
|
1036
|
-
name: "Slider",
|
|
1037
|
-
mediaUrl: "",
|
|
1038
|
-
openInNewTab: false,
|
|
1039
|
-
targetLink: "https://myshop.com",
|
|
1040
|
-
rows: 4,
|
|
1041
|
-
columns: 12,
|
|
1042
|
-
gap: 4,
|
|
1043
|
-
rowSize: 48
|
|
1044
|
-
};
|
|
1045
|
-
var SliderContent_default = SliderContent;
|
|
1046
|
-
|
|
1047
588
|
// src/elements/index.ts
|
|
1048
589
|
var SharedComponents = {
|
|
1049
590
|
Placeholder: Placeholder_default
|
|
@@ -1077,7 +618,8 @@ var Elements = {
|
|
|
1077
618
|
Layout: {
|
|
1078
619
|
Component: layout_default,
|
|
1079
620
|
type: "layout",
|
|
1080
|
-
defaultCss: css5
|
|
621
|
+
defaultCss: css5,
|
|
622
|
+
permanentCss
|
|
1081
623
|
},
|
|
1082
624
|
Map: {
|
|
1083
625
|
Component: map_default,
|
|
@@ -1093,59 +635,24 @@ var Elements = {
|
|
|
1093
635
|
Component: video_default,
|
|
1094
636
|
type: "video",
|
|
1095
637
|
defaultCss: css8
|
|
1096
|
-
},
|
|
1097
|
-
Accordion: {
|
|
1098
|
-
Component: accordion_default,
|
|
1099
|
-
type: "accordion",
|
|
1100
|
-
defaultCss: css10
|
|
1101
|
-
},
|
|
1102
|
-
AccordionWrapper: {
|
|
1103
|
-
Component: AccordionWrapper_default,
|
|
1104
|
-
type: "accordion.wrapper",
|
|
1105
|
-
defaultCss: css11
|
|
1106
|
-
},
|
|
1107
|
-
AccordionContent: {
|
|
1108
|
-
Component: AccordionContent_default,
|
|
1109
|
-
type: "accordion.content",
|
|
1110
|
-
defaultCss: css12
|
|
1111
|
-
},
|
|
1112
|
-
Tab: {
|
|
1113
|
-
Component: tab_default,
|
|
1114
|
-
type: "tab",
|
|
1115
|
-
defaultCss: css13
|
|
1116
|
-
},
|
|
1117
|
-
TabContent: {
|
|
1118
|
-
Component: TabContent_default,
|
|
1119
|
-
type: "tab.content",
|
|
1120
|
-
defaultCss: css14
|
|
1121
|
-
},
|
|
1122
|
-
Slider: {
|
|
1123
|
-
Component: slider_default,
|
|
1124
|
-
type: "slider",
|
|
1125
|
-
defaultCss: css15
|
|
1126
|
-
},
|
|
1127
|
-
SliderContent: {
|
|
1128
|
-
Component: SliderContent_default,
|
|
1129
|
-
type: "slider.content",
|
|
1130
|
-
defaultCss: css16
|
|
1131
638
|
}
|
|
1132
639
|
};
|
|
1133
640
|
|
|
1134
641
|
// src/renderer.tsx
|
|
1135
|
-
var
|
|
1136
|
-
var
|
|
642
|
+
var import_core2 = require("@weaverse/core");
|
|
643
|
+
var import_react11 = __toESM(require("react"));
|
|
1137
644
|
|
|
1138
645
|
// src/utils/index.ts
|
|
1139
|
-
function shortCssObject(
|
|
646
|
+
function shortCssObject(css10) {
|
|
1140
647
|
return {
|
|
1141
|
-
"@desktop":
|
|
1142
|
-
"@mobile":
|
|
648
|
+
"@desktop": css10["@desktop"],
|
|
649
|
+
"@mobile": css10["@mobile"]
|
|
1143
650
|
};
|
|
1144
651
|
}
|
|
1145
652
|
var permanentClasses = {};
|
|
1146
653
|
function generateItemClass(instance, stitchesInstance) {
|
|
1147
654
|
var _a, _b;
|
|
1148
|
-
let { css:
|
|
655
|
+
let { css: css10, type, className: cls = "" } = instance.data;
|
|
1149
656
|
let className = "";
|
|
1150
657
|
let permanentClass = "";
|
|
1151
658
|
let perCss = (_a = instance.Element) == null ? void 0 : _a.permanentCss;
|
|
@@ -1159,8 +666,8 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
1159
666
|
}
|
|
1160
667
|
}
|
|
1161
668
|
className = permanentClass;
|
|
1162
|
-
if (
|
|
1163
|
-
let formattedCss = shortCssObject(
|
|
669
|
+
if (css10) {
|
|
670
|
+
let formattedCss = shortCssObject(css10);
|
|
1164
671
|
let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
|
|
1165
672
|
let { stitchesClass } = instance;
|
|
1166
673
|
let otherClass = (((_b = instance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
|
|
@@ -1173,41 +680,44 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
1173
680
|
// src/renderer.tsx
|
|
1174
681
|
var WeaverseRoot = ({ context }) => {
|
|
1175
682
|
var _a, _b;
|
|
1176
|
-
let [, setData] = (0,
|
|
1177
|
-
let rootRef = (0,
|
|
1178
|
-
let
|
|
1179
|
-
(0,
|
|
1180
|
-
context.subscribe(
|
|
683
|
+
let [, setData] = (0, import_react11.useState)(context.projectData);
|
|
684
|
+
let rootRef = (0, import_react11.useRef)();
|
|
685
|
+
let renderRoot = () => setData({});
|
|
686
|
+
(0, import_react11.useEffect)(() => {
|
|
687
|
+
context.subscribe(renderRoot);
|
|
1181
688
|
context.contentRootElement = rootRef.current;
|
|
1182
689
|
return () => {
|
|
1183
|
-
context.unsubscribe(
|
|
690
|
+
context.unsubscribe(renderRoot);
|
|
1184
691
|
};
|
|
1185
692
|
}, []);
|
|
1186
693
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1187
694
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
695
|
+
if ((_b = context.projectData) == null ? void 0 : _b.rootId) {
|
|
696
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
697
|
+
className: `weaverse-content-root ${themeClass}`,
|
|
698
|
+
...eventHandlers,
|
|
699
|
+
ref: rootRef
|
|
700
|
+
}, /* @__PURE__ */ import_react11.default.createElement(WeaverseContextProvider, {
|
|
701
|
+
value: context
|
|
702
|
+
}, /* @__PURE__ */ import_react11.default.createElement(ItemInstance, {
|
|
703
|
+
id: context.projectData.rootId
|
|
704
|
+
})));
|
|
705
|
+
}
|
|
706
|
+
return null;
|
|
1197
707
|
};
|
|
1198
708
|
var ItemComponent = ({ instance }) => {
|
|
1199
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1200
|
-
let [data, setData] = (0,
|
|
1201
|
-
let { id, type, childIds = [], css:
|
|
1202
|
-
(0,
|
|
1203
|
-
let
|
|
1204
|
-
instance.subscribe(
|
|
1205
|
-
if (
|
|
709
|
+
let { stitchesInstance, elementInstances } = (0, import_react11.useContext)(WeaverseContext);
|
|
710
|
+
let [data, setData] = (0, import_react11.useState)(instance.data);
|
|
711
|
+
let { id, type, childIds = [], css: css10, className, ...rest } = data;
|
|
712
|
+
(0, import_react11.useEffect)(() => {
|
|
713
|
+
let render = (data2) => setData({ ...data2 });
|
|
714
|
+
instance.subscribe(render);
|
|
715
|
+
if (import_core2.isBrowser && !instance.ref.current) {
|
|
1206
716
|
Object.assign(instance.ref, {
|
|
1207
717
|
current: document.querySelector(`[data-wv-id="${id}"]`)
|
|
1208
718
|
});
|
|
1209
719
|
}
|
|
1210
|
-
return () => instance.unsubscribe(
|
|
720
|
+
return () => instance.unsubscribe(render);
|
|
1211
721
|
}, []);
|
|
1212
722
|
let Element = elementInstances.get(type);
|
|
1213
723
|
if (Element == null ? void 0 : Element.Component) {
|
|
@@ -1215,29 +725,31 @@ var ItemComponent = ({ instance }) => {
|
|
|
1215
725
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1216
726
|
rest.ref = instance.ref;
|
|
1217
727
|
}
|
|
1218
|
-
return /* @__PURE__ */
|
|
728
|
+
return /* @__PURE__ */ import_react11.default.createElement(Component, {
|
|
1219
729
|
key: id,
|
|
1220
730
|
"data-wv-type": type,
|
|
1221
731
|
"data-wv-id": id,
|
|
1222
732
|
className: generateItemClass(instance, stitchesInstance),
|
|
1223
733
|
...rest
|
|
1224
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
734
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react11.default.createElement(ItemInstance, {
|
|
1225
735
|
key: id2,
|
|
1226
736
|
id: id2
|
|
1227
737
|
})));
|
|
738
|
+
} else {
|
|
739
|
+
console.log(`Unknown element: ${type}`);
|
|
740
|
+
return null;
|
|
1228
741
|
}
|
|
1229
|
-
return null;
|
|
1230
742
|
};
|
|
1231
743
|
var ItemInstance = ({ id }) => {
|
|
1232
|
-
let context = (0,
|
|
744
|
+
let context = (0, import_react11.useContext)(WeaverseContext);
|
|
1233
745
|
let { itemInstances } = context;
|
|
1234
746
|
let instance = itemInstances.get(id);
|
|
1235
747
|
if (!instance) {
|
|
1236
|
-
return /* @__PURE__ */
|
|
748
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
1237
749
|
style: { display: "none" }
|
|
1238
750
|
}, "Item instance ", id, " not found");
|
|
1239
751
|
}
|
|
1240
|
-
return /* @__PURE__ */
|
|
752
|
+
return /* @__PURE__ */ import_react11.default.createElement(ItemComponent, {
|
|
1241
753
|
instance
|
|
1242
754
|
});
|
|
1243
755
|
};
|