@weaverse/react 0.7.14 → 0.7.16
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.js +88 -585
- package/dist/index.mjs +90 -587
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -60,16 +60,17 @@ Button.defaultProps = {
|
|
|
60
60
|
text: "Shop now",
|
|
61
61
|
clickAction: "none",
|
|
62
62
|
linkTo: "",
|
|
63
|
-
openInNewTab: false
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
openInNewTab: false
|
|
64
|
+
};
|
|
65
|
+
var css = {
|
|
66
|
+
"@desktop": {
|
|
67
|
+
borderRadius: "72px",
|
|
68
|
+
border: "none",
|
|
69
|
+
backgroundColor: "#0F71FF",
|
|
70
|
+
color: "#fff",
|
|
71
|
+
fontSize: "13px",
|
|
72
|
+
padding: "10px 20px",
|
|
73
|
+
textDecoration: "none"
|
|
73
74
|
}
|
|
74
75
|
};
|
|
75
76
|
var button_default = Button;
|
|
@@ -85,7 +86,7 @@ var Container = (0, import_react.forwardRef)(
|
|
|
85
86
|
}, children);
|
|
86
87
|
}
|
|
87
88
|
);
|
|
88
|
-
var
|
|
89
|
+
var css2 = {
|
|
89
90
|
"@desktop": {
|
|
90
91
|
alignItems: "flex-start",
|
|
91
92
|
backgroundColor: "rgba(248,203,203,0.38)",
|
|
@@ -122,10 +123,12 @@ var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
|
122
123
|
// src/elements/countdown/timer-block.tsx
|
|
123
124
|
var import_react3 = __toESM(require("react"));
|
|
124
125
|
function TimerBlock({ value, label }) {
|
|
125
|
-
return /* @__PURE__ */ import_react3.default.createElement("div",
|
|
126
|
-
className: "wv-
|
|
126
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
127
|
+
className: "wv-cd-block"
|
|
128
|
+
}, /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
129
|
+
className: "wv-cd-number"
|
|
127
130
|
}, value.toString().padStart(2, "0")), label && /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
128
|
-
className: "wv-
|
|
131
|
+
className: "wv-cd-label"
|
|
129
132
|
}, label));
|
|
130
133
|
}
|
|
131
134
|
|
|
@@ -173,6 +176,7 @@ var Countdown = (0, import_react4.forwardRef)(
|
|
|
173
176
|
);
|
|
174
177
|
if (!isDesignMode && redirectUrl && remainingTime > 0 && remainingTime < 1e3) {
|
|
175
178
|
window.open(redirectUrl, openInNewTab ? "_blank" : "_self");
|
|
179
|
+
clearInterval(flag);
|
|
176
180
|
}
|
|
177
181
|
setRemaining(remainingTime);
|
|
178
182
|
}, 1e3);
|
|
@@ -190,13 +194,13 @@ var Countdown = (0, import_react4.forwardRef)(
|
|
|
190
194
|
}, /* @__PURE__ */ import_react4.default.createElement(TimerBlock, {
|
|
191
195
|
label: showLabel ? time : "",
|
|
192
196
|
value: timer[time]
|
|
193
|
-
}), time !== "seconds" && /* @__PURE__ */ import_react4.default.createElement("span", {
|
|
194
|
-
className: `wv-
|
|
195
|
-
}, ":"));
|
|
197
|
+
}), time !== "seconds" && /* @__PURE__ */ import_react4.default.createElement("div", null, /* @__PURE__ */ import_react4.default.createElement("span", {
|
|
198
|
+
className: `wv-cd-number ${showColon ? "" : "hidden"}`
|
|
199
|
+
}, ":")));
|
|
196
200
|
}));
|
|
197
201
|
}
|
|
198
202
|
);
|
|
199
|
-
var
|
|
203
|
+
var css3 = {
|
|
200
204
|
"@desktop": {
|
|
201
205
|
fontFamily: "Inter",
|
|
202
206
|
fontSize: 36,
|
|
@@ -204,11 +208,12 @@ var css2 = {
|
|
|
204
208
|
display: "grid",
|
|
205
209
|
gridAutoFlow: "column",
|
|
206
210
|
gap: 10,
|
|
207
|
-
|
|
211
|
+
lineHeight: "initial",
|
|
212
|
+
".wv-cd-block": {
|
|
208
213
|
width: 48,
|
|
209
214
|
textAlign: "center"
|
|
210
215
|
},
|
|
211
|
-
".wv-
|
|
216
|
+
".wv-cd-label": {
|
|
212
217
|
fontSize: 10
|
|
213
218
|
},
|
|
214
219
|
"& > span": {
|
|
@@ -222,7 +227,7 @@ var css2 = {
|
|
|
222
227
|
Countdown.defaultProps = {
|
|
223
228
|
timerType: "fixed-time",
|
|
224
229
|
startTime: Date.now(),
|
|
225
|
-
endTime:
|
|
230
|
+
endTime: 1666756528e3,
|
|
226
231
|
periods: 90,
|
|
227
232
|
redirectUrl: "https://myshop.com",
|
|
228
233
|
openInNewTab: false,
|
|
@@ -235,7 +240,6 @@ var countdown_default = Countdown;
|
|
|
235
240
|
var import_react5 = __toESM(require("react"));
|
|
236
241
|
var Image = import_react5.default.forwardRef(
|
|
237
242
|
(props, ref) => {
|
|
238
|
-
let { isDesignMode } = (0, import_react5.useContext)(WeaverseContext);
|
|
239
243
|
let {
|
|
240
244
|
src,
|
|
241
245
|
alt,
|
|
@@ -243,38 +247,41 @@ var Image = import_react5.default.forwardRef(
|
|
|
243
247
|
objectPosition,
|
|
244
248
|
onClickAction,
|
|
245
249
|
openLinkInNewTab,
|
|
250
|
+
linkTo,
|
|
246
251
|
...rest
|
|
247
252
|
} = props;
|
|
248
253
|
let style = {
|
|
249
254
|
"--wv-img-object-fit": objectFit,
|
|
250
255
|
"--wv-img-object-position": objectPosition
|
|
251
256
|
};
|
|
252
|
-
let
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
257
|
+
let content = /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
258
|
+
alt,
|
|
259
|
+
"data-blink-src": src
|
|
260
|
+
});
|
|
261
|
+
if (onClickAction === "open-link" && linkTo) {
|
|
262
|
+
let target = openLinkInNewTab ? "_blank" : "_self";
|
|
263
|
+
content = /* @__PURE__ */ import_react5.default.createElement("a", {
|
|
264
|
+
href: linkTo,
|
|
265
|
+
target
|
|
266
|
+
}, content);
|
|
267
|
+
}
|
|
260
268
|
return /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
261
269
|
ref,
|
|
262
270
|
...rest,
|
|
263
|
-
style
|
|
264
|
-
|
|
265
|
-
}, /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
266
|
-
alt,
|
|
267
|
-
src
|
|
268
|
-
}));
|
|
271
|
+
style
|
|
272
|
+
}, content);
|
|
269
273
|
}
|
|
270
274
|
);
|
|
271
|
-
var
|
|
275
|
+
var css4 = {
|
|
272
276
|
"@desktop": {
|
|
273
277
|
img: {
|
|
274
278
|
width: "100%",
|
|
275
279
|
height: "100%",
|
|
276
280
|
objectFit: "var(--wv-img-object-fit, cover)",
|
|
277
281
|
objectPosition: "var(--wv-img-object-position, center)"
|
|
282
|
+
},
|
|
283
|
+
"& [data-blink-src]": {
|
|
284
|
+
visibility: "hidden"
|
|
278
285
|
}
|
|
279
286
|
}
|
|
280
287
|
};
|
|
@@ -283,8 +290,9 @@ Image.defaultProps = {
|
|
|
283
290
|
alt: "Image alt text",
|
|
284
291
|
objectFit: "cover",
|
|
285
292
|
objectPosition: "center",
|
|
286
|
-
onClickAction: "open-
|
|
287
|
-
openLinkInNewTab: false
|
|
293
|
+
onClickAction: "open-link",
|
|
294
|
+
openLinkInNewTab: false,
|
|
295
|
+
linkTo: ""
|
|
288
296
|
};
|
|
289
297
|
var image_default = Image;
|
|
290
298
|
|
|
@@ -308,7 +316,7 @@ var Layout = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
308
316
|
"data-layout-content": true
|
|
309
317
|
}, children));
|
|
310
318
|
});
|
|
311
|
-
var
|
|
319
|
+
var css5 = {
|
|
312
320
|
"@desktop": {
|
|
313
321
|
paddingTop: "16px",
|
|
314
322
|
paddingBottom: "16px",
|
|
@@ -357,7 +365,7 @@ var Map = (0, import_react7.forwardRef)((props, ref) => {
|
|
|
357
365
|
style: { pointerEvents: "none" }
|
|
358
366
|
}));
|
|
359
367
|
});
|
|
360
|
-
var
|
|
368
|
+
var css6 = {};
|
|
361
369
|
Map.defaultProps = {
|
|
362
370
|
place: "Hanoi",
|
|
363
371
|
zoom: 14
|
|
@@ -376,7 +384,7 @@ var Text = React8.forwardRef(
|
|
|
376
384
|
});
|
|
377
385
|
}
|
|
378
386
|
);
|
|
379
|
-
var
|
|
387
|
+
var css7 = {
|
|
380
388
|
"@desktop": {
|
|
381
389
|
padding: "10px",
|
|
382
390
|
wordBreak: "break-word",
|
|
@@ -407,9 +415,12 @@ var Video = (0, import_react8.forwardRef)((props, ref) => {
|
|
|
407
415
|
}, /* @__PURE__ */ import_react8.default.createElement("source", {
|
|
408
416
|
src,
|
|
409
417
|
type: type || "video/mp4"
|
|
418
|
+
}), /* @__PURE__ */ import_react8.default.createElement("source", {
|
|
419
|
+
src,
|
|
420
|
+
type: "video/ogg"
|
|
410
421
|
}), "Your browser does not support the video tag."));
|
|
411
422
|
});
|
|
412
|
-
var
|
|
423
|
+
var css8 = {
|
|
413
424
|
"@desktop": {
|
|
414
425
|
video: {
|
|
415
426
|
height: "100%",
|
|
@@ -420,7 +431,7 @@ var css7 = {
|
|
|
420
431
|
};
|
|
421
432
|
Video.defaultProps = {
|
|
422
433
|
src: "https://youtu.be/wM-NT6hcw48",
|
|
423
|
-
poster: "https://ucarecdn.com/
|
|
434
|
+
poster: "https://ucarecdn.com/c413b8fe-ceec-4948-9c42-a0434c4ca920/-/preview/-/quality/smart/-/format/auto/",
|
|
424
435
|
loop: false,
|
|
425
436
|
type: "video/mp4",
|
|
426
437
|
controls: false,
|
|
@@ -504,7 +515,7 @@ var Instagram = (0, import_react10.forwardRef)(
|
|
|
504
515
|
})));
|
|
505
516
|
}
|
|
506
517
|
);
|
|
507
|
-
var
|
|
518
|
+
var css9 = {
|
|
508
519
|
"@desktop": {
|
|
509
520
|
".wv-ig-media-container": {
|
|
510
521
|
overflow: "hidden",
|
|
@@ -531,480 +542,6 @@ Instagram.defaultProps = {
|
|
|
531
542
|
};
|
|
532
543
|
var instagram_default = Instagram;
|
|
533
544
|
|
|
534
|
-
// src/elements/accordion/index.tsx
|
|
535
|
-
var import_react11 = __toESM(require("react"));
|
|
536
|
-
var AccordionContext = (0, import_react11.createContext)({
|
|
537
|
-
iconName: "arrow",
|
|
538
|
-
active: [],
|
|
539
|
-
setActive: () => {
|
|
540
|
-
}
|
|
541
|
-
});
|
|
542
|
-
var Accordion = (0, import_react11.forwardRef)(
|
|
543
|
-
(props, ref) => {
|
|
544
|
-
const { iconName, children, ...rest } = props;
|
|
545
|
-
const [active, setActive] = (0, import_react11.useState)([]);
|
|
546
|
-
const setOpenAccordion = (id) => {
|
|
547
|
-
if (active.includes(id)) {
|
|
548
|
-
setActive(active.filter((_id) => _id !== id));
|
|
549
|
-
} else {
|
|
550
|
-
setActive([...active, id]);
|
|
551
|
-
}
|
|
552
|
-
};
|
|
553
|
-
return /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
554
|
-
ref,
|
|
555
|
-
...rest
|
|
556
|
-
}, /* @__PURE__ */ import_react11.default.createElement(AccordionContext.Provider, {
|
|
557
|
-
value: { active, setActive: setOpenAccordion, iconName }
|
|
558
|
-
}, children));
|
|
559
|
-
}
|
|
560
|
-
);
|
|
561
|
-
var css9 = {
|
|
562
|
-
"@desktop": {
|
|
563
|
-
display: "flex",
|
|
564
|
-
flexDirection: "column",
|
|
565
|
-
gap: 4
|
|
566
|
-
}
|
|
567
|
-
};
|
|
568
|
-
Accordion.defaultProps = {
|
|
569
|
-
iconName: "arrow"
|
|
570
|
-
};
|
|
571
|
-
var accordion_default = Accordion;
|
|
572
|
-
|
|
573
|
-
// src/elements/accordion/AccordionWrapper.tsx
|
|
574
|
-
var import_react13 = __toESM(require("react"));
|
|
575
|
-
|
|
576
|
-
// src/elements/accordion/Icon.tsx
|
|
577
|
-
var import_react12 = __toESM(require("react"));
|
|
578
|
-
var ICONS = {
|
|
579
|
-
caret: {
|
|
580
|
-
animationType: "rotate90",
|
|
581
|
-
css: {
|
|
582
|
-
position: "absolute!important",
|
|
583
|
-
left: 5,
|
|
584
|
-
top: 2,
|
|
585
|
-
width: 0,
|
|
586
|
-
height: 0,
|
|
587
|
-
borderTop: "6px solid transparent",
|
|
588
|
-
borderBottom: "6px solid transparent",
|
|
589
|
-
borderLeft: "6px solid #1F2A37"
|
|
590
|
-
}
|
|
591
|
-
},
|
|
592
|
-
arrow: {
|
|
593
|
-
animationType: "rotate90",
|
|
594
|
-
css: {
|
|
595
|
-
border: "solid #1F2A37",
|
|
596
|
-
borderWidth: "0 1px 1px 0",
|
|
597
|
-
display: "inline-block",
|
|
598
|
-
transform: "rotate(-45deg) translate(15%, -15%)",
|
|
599
|
-
padding: 4
|
|
600
|
-
}
|
|
601
|
-
},
|
|
602
|
-
plus: {
|
|
603
|
-
animationType: "custom",
|
|
604
|
-
css: {
|
|
605
|
-
display: "inline-block",
|
|
606
|
-
top: -6,
|
|
607
|
-
width: 15,
|
|
608
|
-
height: 1,
|
|
609
|
-
backgroundColor: "#1F2A37",
|
|
610
|
-
"&:after": {
|
|
611
|
-
position: "absolute",
|
|
612
|
-
content: "",
|
|
613
|
-
top: -7,
|
|
614
|
-
left: 7,
|
|
615
|
-
width: 1,
|
|
616
|
-
height: 15,
|
|
617
|
-
backgroundColor: "#1F2A37",
|
|
618
|
-
transition: "all 0.3s ease-in-out 0s"
|
|
619
|
-
},
|
|
620
|
-
"&.active": {
|
|
621
|
-
"&:after": {
|
|
622
|
-
transform: "rotate(90deg)"
|
|
623
|
-
}
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
};
|
|
628
|
-
var rotateAnimation = {
|
|
629
|
-
transition: "all 0.3s ease-in-out 0s",
|
|
630
|
-
transform: "rotate(90deg)"
|
|
631
|
-
};
|
|
632
|
-
function Icon(props) {
|
|
633
|
-
let { name, active = false, style, ...rest } = props;
|
|
634
|
-
let { stitchesInstance } = (0, import_react12.useContext)(WeaverseContext);
|
|
635
|
-
const { animationType, css: css16 } = ICONS[name];
|
|
636
|
-
if (active && animationType === "rotate90") {
|
|
637
|
-
style = { ...rotateAnimation, ...style };
|
|
638
|
-
}
|
|
639
|
-
let { className } = stitchesInstance.css(css16)();
|
|
640
|
-
if (active)
|
|
641
|
-
className += " active";
|
|
642
|
-
return /* @__PURE__ */ import_react12.default.createElement("span", {
|
|
643
|
-
style,
|
|
644
|
-
...rest
|
|
645
|
-
}, /* @__PURE__ */ import_react12.default.createElement("i", {
|
|
646
|
-
className
|
|
647
|
-
}));
|
|
648
|
-
}
|
|
649
|
-
var Icon_default = Icon;
|
|
650
|
-
|
|
651
|
-
// src/elements/accordion/AccordionWrapper.tsx
|
|
652
|
-
var AccordionWrapper = (0, import_react13.forwardRef)((props, ref) => {
|
|
653
|
-
const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
|
|
654
|
-
const { iconName, active, setActive } = (0, import_react13.useContext)(AccordionContext);
|
|
655
|
-
const isActive = active.includes(wvId);
|
|
656
|
-
return /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
657
|
-
ref,
|
|
658
|
-
...rest
|
|
659
|
-
}, /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
660
|
-
onClick: () => setActive(wvId),
|
|
661
|
-
className: `wv-acc-header ${isActive ? "active" : ""}`
|
|
662
|
-
}, /* @__PURE__ */ import_react13.default.createElement("span", null, name), /* @__PURE__ */ import_react13.default.createElement(Icon_default, {
|
|
663
|
-
className: "wv-acc-icon",
|
|
664
|
-
active: isActive,
|
|
665
|
-
name: iconName
|
|
666
|
-
})), children);
|
|
667
|
-
});
|
|
668
|
-
var css10 = {
|
|
669
|
-
"@desktop": {
|
|
670
|
-
maxHeight: "100%",
|
|
671
|
-
".wv-acc-icon": {
|
|
672
|
-
position: "absolute",
|
|
673
|
-
right: 16,
|
|
674
|
-
width: 16,
|
|
675
|
-
height: 16,
|
|
676
|
-
transition: "all 0.3s ease-in-out 0s"
|
|
677
|
-
},
|
|
678
|
-
".wv-acc-header": {
|
|
679
|
-
display: "flex",
|
|
680
|
-
alignItems: "center",
|
|
681
|
-
borderRadius: 4,
|
|
682
|
-
padding: 12,
|
|
683
|
-
marginBottom: 4,
|
|
684
|
-
border: "1px solid #76A9FA",
|
|
685
|
-
cursor: "pointer",
|
|
686
|
-
'&.active + [data-wv-type="accordion.content"]': {
|
|
687
|
-
maxHeight: "var(--max-height, inherit)"
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
};
|
|
692
|
-
AccordionWrapper.defaultProps = {
|
|
693
|
-
name: "Accordion item"
|
|
694
|
-
};
|
|
695
|
-
var AccordionWrapper_default = AccordionWrapper;
|
|
696
|
-
|
|
697
|
-
// src/elements/accordion/AccordionContent.tsx
|
|
698
|
-
var import_react14 = __toESM(require("react"));
|
|
699
|
-
var AccordionContent = (0, import_react14.forwardRef)(
|
|
700
|
-
(props, ref) => {
|
|
701
|
-
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
702
|
-
let style = {
|
|
703
|
-
"--rows": rows,
|
|
704
|
-
"--columns": columns,
|
|
705
|
-
"--gap": gap + "px",
|
|
706
|
-
"--row-size": rowSize + "px",
|
|
707
|
-
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
708
|
-
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
|
|
709
|
-
};
|
|
710
|
-
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
711
|
-
ref,
|
|
712
|
-
...rest,
|
|
713
|
-
style
|
|
714
|
-
}, import_react14.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react14.default.createElement(Placeholder_default, {
|
|
715
|
-
element: "Accordion Content"
|
|
716
|
-
}, "Drag and drop an element here."));
|
|
717
|
-
}
|
|
718
|
-
);
|
|
719
|
-
var css11 = {
|
|
720
|
-
"@desktop": {
|
|
721
|
-
width: "100%",
|
|
722
|
-
maxWidth: "var(--grid-size)",
|
|
723
|
-
display: "grid",
|
|
724
|
-
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
725
|
-
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
726
|
-
gap: "var(--gap)",
|
|
727
|
-
overflow: "hidden",
|
|
728
|
-
maxHeight: 0,
|
|
729
|
-
transition: "all var(--transition-duration, 0.3s) ease-in-out",
|
|
730
|
-
borderRadius: 4
|
|
731
|
-
}
|
|
732
|
-
};
|
|
733
|
-
AccordionContent.defaultProps = {
|
|
734
|
-
rows: 3,
|
|
735
|
-
columns: 12,
|
|
736
|
-
gap: 4,
|
|
737
|
-
rowSize: 48
|
|
738
|
-
};
|
|
739
|
-
var AccordionContent_default = AccordionContent;
|
|
740
|
-
|
|
741
|
-
// src/elements/tab/index.tsx
|
|
742
|
-
var import_react16 = __toESM(require("react"));
|
|
743
|
-
|
|
744
|
-
// src/elements/tab/TabHeaderWrapper.tsx
|
|
745
|
-
var import_react15 = __toESM(require("react"));
|
|
746
|
-
function TabHeader(props) {
|
|
747
|
-
const { wvId } = props;
|
|
748
|
-
const { active, setActive } = (0, import_react15.useContext)(TabContext);
|
|
749
|
-
const { itemInstances } = (0, import_react15.useContext)(WeaverseContext);
|
|
750
|
-
const instance = itemInstances.get(wvId);
|
|
751
|
-
let [data, setData] = (0, import_react15.useState)(instance.data);
|
|
752
|
-
(0, import_react15.useEffect)(() => {
|
|
753
|
-
let update = (data2) => setData({ ...data2 });
|
|
754
|
-
instance.subscribe(update);
|
|
755
|
-
}, []);
|
|
756
|
-
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
757
|
-
onClick: () => setActive(wvId),
|
|
758
|
-
className: `wv-tab-header${active === wvId ? " active" : ""}`
|
|
759
|
-
}, data.name);
|
|
760
|
-
}
|
|
761
|
-
function TabHeaderWrapper(props) {
|
|
762
|
-
const { itemInstances } = (0, import_react15.useContext)(WeaverseContext);
|
|
763
|
-
const instance = itemInstances.get(props.wvId);
|
|
764
|
-
const data = instance.data;
|
|
765
|
-
const childIds = data.childIds;
|
|
766
|
-
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
767
|
-
className: "wv-tab-header-wrapper"
|
|
768
|
-
}, childIds.map((id) => /* @__PURE__ */ import_react15.default.createElement(TabHeader, {
|
|
769
|
-
key: id,
|
|
770
|
-
wvId: id
|
|
771
|
-
})));
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
// src/elements/tab/index.tsx
|
|
775
|
-
var TabContext = (0, import_react16.createContext)({
|
|
776
|
-
active: null,
|
|
777
|
-
setActive: () => {
|
|
778
|
-
}
|
|
779
|
-
});
|
|
780
|
-
var Tab = (0, import_react16.forwardRef)((props, ref) => {
|
|
781
|
-
var _a, _b, _c;
|
|
782
|
-
const wvId = props["data-wv-id"];
|
|
783
|
-
const { fullWidthTabHeader, children, ...rest } = props;
|
|
784
|
-
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;
|
|
785
|
-
const [active, setActive] = (0, import_react16.useState)(defaultActive);
|
|
786
|
-
const setOpenTab = (id) => {
|
|
787
|
-
if (id !== active) {
|
|
788
|
-
setActive(id);
|
|
789
|
-
}
|
|
790
|
-
};
|
|
791
|
-
return /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
792
|
-
ref,
|
|
793
|
-
...rest,
|
|
794
|
-
style: {
|
|
795
|
-
"--tab-width": fullWidthTabHeader ? "100%" : "auto"
|
|
796
|
-
}
|
|
797
|
-
}, /* @__PURE__ */ import_react16.default.createElement(TabContext.Provider, {
|
|
798
|
-
value: { active, setActive: setOpenTab }
|
|
799
|
-
}, /* @__PURE__ */ import_react16.default.createElement(TabHeaderWrapper, {
|
|
800
|
-
wvId
|
|
801
|
-
}), children));
|
|
802
|
-
});
|
|
803
|
-
var css12 = {
|
|
804
|
-
"@desktop": {
|
|
805
|
-
display: "flex",
|
|
806
|
-
flexDirection: "column",
|
|
807
|
-
gap: 4,
|
|
808
|
-
"& .wv-tab-header-wrapper": {
|
|
809
|
-
width: "100%",
|
|
810
|
-
display: "flex",
|
|
811
|
-
marginBottom: 10
|
|
812
|
-
},
|
|
813
|
-
"& .wv-tab-header": {
|
|
814
|
-
backgroundColor: "#fff",
|
|
815
|
-
padding: "15px 24px",
|
|
816
|
-
border: "1px solid #E4E7EB",
|
|
817
|
-
cursor: "pointer",
|
|
818
|
-
textAlign: "center",
|
|
819
|
-
width: "var(--tab-width, auto)",
|
|
820
|
-
"&.active": {
|
|
821
|
-
backgroundColor: "#E4E7EB"
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
};
|
|
826
|
-
Tab.defaultProps = {
|
|
827
|
-
fullWidthTabHeader: false
|
|
828
|
-
};
|
|
829
|
-
var tab_default = Tab;
|
|
830
|
-
|
|
831
|
-
// src/elements/tab/TabContent.tsx
|
|
832
|
-
var import_react17 = __toESM(require("react"));
|
|
833
|
-
var TabContent = (0, import_react17.forwardRef)(
|
|
834
|
-
(props, ref) => {
|
|
835
|
-
const { active } = (0, import_react17.useContext)(TabContext);
|
|
836
|
-
const wvId = props["data-wv-id"];
|
|
837
|
-
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
838
|
-
let style = {
|
|
839
|
-
"--rows": rows,
|
|
840
|
-
"--columns": columns,
|
|
841
|
-
"--gap": gap + "px",
|
|
842
|
-
"--row-size": rowSize + "px",
|
|
843
|
-
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
844
|
-
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
845
|
-
"--content-active": active === wvId ? "grid" : "none"
|
|
846
|
-
};
|
|
847
|
-
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
848
|
-
ref,
|
|
849
|
-
...rest,
|
|
850
|
-
style
|
|
851
|
-
}, import_react17.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react17.default.createElement(Placeholder_default, {
|
|
852
|
-
element: "Tab Content"
|
|
853
|
-
}, "Drag and drop an element here."));
|
|
854
|
-
}
|
|
855
|
-
);
|
|
856
|
-
var css13 = {
|
|
857
|
-
"@desktop": {
|
|
858
|
-
width: "100%",
|
|
859
|
-
maxWidth: "var(--grid-size)",
|
|
860
|
-
display: "var(--content-active, none)",
|
|
861
|
-
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
862
|
-
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
863
|
-
gap: "var(--gap)",
|
|
864
|
-
borderRadius: 4
|
|
865
|
-
}
|
|
866
|
-
};
|
|
867
|
-
TabContent.defaultProps = {
|
|
868
|
-
rows: 3,
|
|
869
|
-
columns: 12,
|
|
870
|
-
gap: 4,
|
|
871
|
-
rowSize: 48,
|
|
872
|
-
name: "Tab header"
|
|
873
|
-
};
|
|
874
|
-
var TabContent_default = TabContent;
|
|
875
|
-
|
|
876
|
-
// src/elements/slider/index.tsx
|
|
877
|
-
var import_react18 = __toESM(require("react"));
|
|
878
|
-
var import_carousel = require("nuka-carousel/lib/carousel");
|
|
879
|
-
var Slider = (0, import_react18.forwardRef)((props, ref) => {
|
|
880
|
-
const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
|
|
881
|
-
const { autoplay, delay, children, ...rest } = props;
|
|
882
|
-
return /* @__PURE__ */ import_react18.default.createElement("div", {
|
|
883
|
-
...rest,
|
|
884
|
-
ref
|
|
885
|
-
}, /* @__PURE__ */ import_react18.default.createElement(import_carousel.Carousel, {
|
|
886
|
-
dragging: false,
|
|
887
|
-
renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react18.default.createElement("button", {
|
|
888
|
-
className: "wv-slider-btn",
|
|
889
|
-
onClick: props2.previousSlide,
|
|
890
|
-
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
891
|
-
}, /* @__PURE__ */ import_react18.default.createElement("i", {
|
|
892
|
-
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
893
|
-
})),
|
|
894
|
-
renderCenterRightControls: (props2) => /* @__PURE__ */ import_react18.default.createElement("button", {
|
|
895
|
-
className: "wv-slider-btn",
|
|
896
|
-
onClick: props2.nextSlide,
|
|
897
|
-
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
898
|
-
}, /* @__PURE__ */ import_react18.default.createElement("i", {
|
|
899
|
-
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
900
|
-
})),
|
|
901
|
-
wrapAround: !isDesignMode,
|
|
902
|
-
autoplay: !isDesignMode && autoplay,
|
|
903
|
-
autoplayInterval: delay * 1e3
|
|
904
|
-
}, children));
|
|
905
|
-
});
|
|
906
|
-
var css14 = {
|
|
907
|
-
"@desktop": {
|
|
908
|
-
"& .wv-slider-btn": {
|
|
909
|
-
borderRadius: "100%",
|
|
910
|
-
width: 40,
|
|
911
|
-
height: 40,
|
|
912
|
-
background: "#fff",
|
|
913
|
-
border: "none",
|
|
914
|
-
cursor: "pointer",
|
|
915
|
-
"&[disabled]": {
|
|
916
|
-
cursor: "not-allowed"
|
|
917
|
-
},
|
|
918
|
-
"&:hover .wv-slider-arrow": {
|
|
919
|
-
borderColor: "#999"
|
|
920
|
-
},
|
|
921
|
-
"& .wv-slider-arrow": {
|
|
922
|
-
border: "solid black",
|
|
923
|
-
borderWidth: "0 1px 1px 0",
|
|
924
|
-
display: "inline-block",
|
|
925
|
-
padding: 5
|
|
926
|
-
},
|
|
927
|
-
"& .wv-slider-arrow-right": {
|
|
928
|
-
transform: "rotate(-45deg)",
|
|
929
|
-
marginRight: 5
|
|
930
|
-
},
|
|
931
|
-
"& .wv-slider-arrow-left": {
|
|
932
|
-
transform: "rotate(135deg)",
|
|
933
|
-
marginLeft: 5
|
|
934
|
-
}
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
};
|
|
938
|
-
Slider.defaultProps = {
|
|
939
|
-
fullWidth: true,
|
|
940
|
-
autoplay: true,
|
|
941
|
-
delay: 3
|
|
942
|
-
};
|
|
943
|
-
var slider_default = Slider;
|
|
944
|
-
|
|
945
|
-
// src/elements/slider/SliderContent.tsx
|
|
946
|
-
var import_react19 = __toESM(require("react"));
|
|
947
|
-
var SliderContent = (0, import_react19.forwardRef)(
|
|
948
|
-
(props, ref) => {
|
|
949
|
-
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
950
|
-
const {
|
|
951
|
-
mediaUrl,
|
|
952
|
-
targetLink,
|
|
953
|
-
openInNewTab,
|
|
954
|
-
rows,
|
|
955
|
-
columns,
|
|
956
|
-
gap,
|
|
957
|
-
rowSize,
|
|
958
|
-
children,
|
|
959
|
-
...rest
|
|
960
|
-
} = props;
|
|
961
|
-
let style = {
|
|
962
|
-
"--rows": rows,
|
|
963
|
-
"--columns": columns,
|
|
964
|
-
"--gap": gap + "px",
|
|
965
|
-
"--row-size": rowSize + "px",
|
|
966
|
-
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
967
|
-
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
968
|
-
"--background-url": `url(${mediaUrl}`
|
|
969
|
-
};
|
|
970
|
-
const handleClick = () => {
|
|
971
|
-
if (!isDesignMode && targetLink) {
|
|
972
|
-
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
973
|
-
}
|
|
974
|
-
};
|
|
975
|
-
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
976
|
-
...rest,
|
|
977
|
-
style,
|
|
978
|
-
onClick: handleClick
|
|
979
|
-
}, import_react19.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
980
|
-
element: "Slider Content"
|
|
981
|
-
}, "Drag and drop an element here."));
|
|
982
|
-
}
|
|
983
|
-
);
|
|
984
|
-
var css15 = {
|
|
985
|
-
"@desktop": {
|
|
986
|
-
width: "100%",
|
|
987
|
-
maxWidth: "var(--grid-size)",
|
|
988
|
-
display: "grid",
|
|
989
|
-
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
990
|
-
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
991
|
-
gap: "var(--gap)",
|
|
992
|
-
borderRadius: 4,
|
|
993
|
-
backgroundImage: "var(--background-url, none)"
|
|
994
|
-
}
|
|
995
|
-
};
|
|
996
|
-
SliderContent.defaultProps = {
|
|
997
|
-
name: "Slider",
|
|
998
|
-
mediaUrl: "",
|
|
999
|
-
openInNewTab: false,
|
|
1000
|
-
targetLink: "https://myshop.com",
|
|
1001
|
-
rows: 4,
|
|
1002
|
-
columns: 12,
|
|
1003
|
-
gap: 4,
|
|
1004
|
-
rowSize: 48
|
|
1005
|
-
};
|
|
1006
|
-
var SliderContent_default = SliderContent;
|
|
1007
|
-
|
|
1008
545
|
// src/elements/index.ts
|
|
1009
546
|
var SharedComponents = {
|
|
1010
547
|
Placeholder: Placeholder_default
|
|
@@ -1013,99 +550,65 @@ var Elements = {
|
|
|
1013
550
|
Countdown: {
|
|
1014
551
|
Component: countdown_default,
|
|
1015
552
|
type: "countdown",
|
|
1016
|
-
defaultCss:
|
|
553
|
+
defaultCss: css3
|
|
1017
554
|
},
|
|
1018
555
|
Button: {
|
|
1019
556
|
Component: button_default,
|
|
1020
|
-
type: "button"
|
|
557
|
+
type: "button",
|
|
558
|
+
defaultCss: css
|
|
1021
559
|
},
|
|
1022
560
|
Container: {
|
|
1023
561
|
Component: container_default,
|
|
1024
562
|
type: "container",
|
|
1025
|
-
defaultCss:
|
|
563
|
+
defaultCss: css2
|
|
1026
564
|
},
|
|
1027
565
|
Image: {
|
|
1028
566
|
Component: image_default,
|
|
1029
567
|
type: "image",
|
|
1030
|
-
defaultCss:
|
|
568
|
+
defaultCss: css4
|
|
1031
569
|
},
|
|
1032
570
|
Instagram: {
|
|
1033
571
|
Component: instagram_default,
|
|
1034
572
|
type: "instagram",
|
|
1035
|
-
defaultCss:
|
|
573
|
+
defaultCss: css9
|
|
1036
574
|
},
|
|
1037
575
|
Layout: {
|
|
1038
576
|
Component: layout_default,
|
|
1039
577
|
type: "layout",
|
|
1040
|
-
defaultCss:
|
|
578
|
+
defaultCss: css5
|
|
1041
579
|
},
|
|
1042
580
|
Map: {
|
|
1043
581
|
Component: map_default,
|
|
1044
582
|
type: "map",
|
|
1045
|
-
defaultCss:
|
|
583
|
+
defaultCss: css6
|
|
1046
584
|
},
|
|
1047
585
|
Text: {
|
|
1048
586
|
Component: text_default,
|
|
1049
587
|
type: "text",
|
|
1050
|
-
defaultCss:
|
|
588
|
+
defaultCss: css7
|
|
1051
589
|
},
|
|
1052
590
|
Video: {
|
|
1053
591
|
Component: video_default,
|
|
1054
592
|
type: "video",
|
|
1055
|
-
defaultCss:
|
|
1056
|
-
},
|
|
1057
|
-
Accordion: {
|
|
1058
|
-
Component: accordion_default,
|
|
1059
|
-
type: "accordion",
|
|
1060
|
-
defaultCss: css9
|
|
1061
|
-
},
|
|
1062
|
-
AccordionWrapper: {
|
|
1063
|
-
Component: AccordionWrapper_default,
|
|
1064
|
-
type: "accordion.wrapper",
|
|
1065
|
-
defaultCss: css10
|
|
1066
|
-
},
|
|
1067
|
-
AccordionContent: {
|
|
1068
|
-
Component: AccordionContent_default,
|
|
1069
|
-
type: "accordion.content",
|
|
1070
|
-
defaultCss: css11
|
|
1071
|
-
},
|
|
1072
|
-
Tab: {
|
|
1073
|
-
Component: tab_default,
|
|
1074
|
-
type: "tab",
|
|
1075
|
-
defaultCss: css12
|
|
1076
|
-
},
|
|
1077
|
-
TabContent: {
|
|
1078
|
-
Component: TabContent_default,
|
|
1079
|
-
type: "tab.content",
|
|
1080
|
-
defaultCss: css13
|
|
1081
|
-
},
|
|
1082
|
-
Slider: {
|
|
1083
|
-
Component: slider_default,
|
|
1084
|
-
type: "slider",
|
|
1085
|
-
defaultCss: css14
|
|
1086
|
-
},
|
|
1087
|
-
SliderContent: {
|
|
1088
|
-
Component: SliderContent_default,
|
|
1089
|
-
type: "slider.content",
|
|
1090
|
-
defaultCss: css15
|
|
593
|
+
defaultCss: css8
|
|
1091
594
|
}
|
|
1092
595
|
};
|
|
1093
596
|
|
|
1094
597
|
// src/renderer.tsx
|
|
1095
598
|
var import_core2 = require("@weaverse/core");
|
|
1096
|
-
var
|
|
599
|
+
var import_react11 = __toESM(require("react"));
|
|
1097
600
|
|
|
1098
601
|
// src/utils/index.ts
|
|
1099
|
-
function shortCssObject(
|
|
602
|
+
function shortCssObject(css10) {
|
|
1100
603
|
return {
|
|
1101
|
-
"@desktop":
|
|
1102
|
-
"@mobile":
|
|
604
|
+
"@desktop": css10["@desktop"],
|
|
605
|
+
"@mobile": css10["@mobile"]
|
|
1103
606
|
};
|
|
1104
607
|
}
|
|
1105
608
|
var permanentClasses = {};
|
|
1106
609
|
function generateItemClass(instance, stitchesInstance) {
|
|
1107
610
|
var _a, _b;
|
|
1108
|
-
let { css:
|
|
611
|
+
let { css: css10, type, className: cls = "" } = instance.data;
|
|
1109
612
|
let className = "";
|
|
1110
613
|
let permanentClass = "";
|
|
1111
614
|
let perCss = (_a = instance.Element) == null ? void 0 : _a.permanentCss;
|
|
@@ -1119,8 +622,8 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
1119
622
|
}
|
|
1120
623
|
}
|
|
1121
624
|
className = permanentClass;
|
|
1122
|
-
if (
|
|
1123
|
-
let formattedCss = shortCssObject(
|
|
625
|
+
if (css10) {
|
|
626
|
+
let formattedCss = shortCssObject(css10);
|
|
1124
627
|
let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
|
|
1125
628
|
let { stitchesClass } = instance;
|
|
1126
629
|
let otherClass = (((_b = instance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
|
|
@@ -1133,10 +636,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
1133
636
|
// src/renderer.tsx
|
|
1134
637
|
var WeaverseRoot = ({ context }) => {
|
|
1135
638
|
var _a, _b;
|
|
1136
|
-
let [, setData] = (0,
|
|
1137
|
-
let rootRef = (0,
|
|
639
|
+
let [, setData] = (0, import_react11.useState)(context.projectData);
|
|
640
|
+
let rootRef = (0, import_react11.useRef)();
|
|
1138
641
|
let update = () => setData({});
|
|
1139
|
-
(0,
|
|
642
|
+
(0, import_react11.useEffect)(() => {
|
|
1140
643
|
context.subscribe(update);
|
|
1141
644
|
context.contentRootElement = rootRef.current;
|
|
1142
645
|
return () => {
|
|
@@ -1145,21 +648,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1145
648
|
}, []);
|
|
1146
649
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1147
650
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1148
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
651
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
1149
652
|
className: `weaverse-content-root ${themeClass}`,
|
|
1150
653
|
...eventHandlers,
|
|
1151
654
|
ref: rootRef
|
|
1152
|
-
}, /* @__PURE__ */
|
|
655
|
+
}, /* @__PURE__ */ import_react11.default.createElement(WeaverseContextProvider, {
|
|
1153
656
|
value: context
|
|
1154
|
-
}, /* @__PURE__ */
|
|
657
|
+
}, /* @__PURE__ */ import_react11.default.createElement(ItemInstance, {
|
|
1155
658
|
id: context.projectData.rootId
|
|
1156
659
|
}))) : null;
|
|
1157
660
|
};
|
|
1158
661
|
var ItemComponent = ({ instance }) => {
|
|
1159
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1160
|
-
let [data, setData] = (0,
|
|
1161
|
-
let { id, type, childIds = [], css:
|
|
1162
|
-
(0,
|
|
662
|
+
let { stitchesInstance, elementInstances } = (0, import_react11.useContext)(WeaverseContext);
|
|
663
|
+
let [data, setData] = (0, import_react11.useState)(instance.data);
|
|
664
|
+
let { id, type, childIds = [], css: css10, className, ...rest } = data;
|
|
665
|
+
(0, import_react11.useEffect)(() => {
|
|
1163
666
|
let update = (data2) => setData({ ...data2 });
|
|
1164
667
|
instance.subscribe(update);
|
|
1165
668
|
if (import_core2.isBrowser && !instance.ref.current) {
|
|
@@ -1175,13 +678,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1175
678
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1176
679
|
rest.ref = instance.ref;
|
|
1177
680
|
}
|
|
1178
|
-
return /* @__PURE__ */
|
|
681
|
+
return /* @__PURE__ */ import_react11.default.createElement(Component, {
|
|
1179
682
|
key: id,
|
|
1180
683
|
"data-wv-type": type,
|
|
1181
684
|
"data-wv-id": id,
|
|
1182
685
|
className: generateItemClass(instance, stitchesInstance),
|
|
1183
686
|
...rest
|
|
1184
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
687
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react11.default.createElement(ItemInstance, {
|
|
1185
688
|
key: id2,
|
|
1186
689
|
id: id2
|
|
1187
690
|
})));
|
|
@@ -1189,15 +692,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1189
692
|
return null;
|
|
1190
693
|
};
|
|
1191
694
|
var ItemInstance = ({ id }) => {
|
|
1192
|
-
let context = (0,
|
|
695
|
+
let context = (0, import_react11.useContext)(WeaverseContext);
|
|
1193
696
|
let { itemInstances } = context;
|
|
1194
697
|
let instance = itemInstances.get(id);
|
|
1195
698
|
if (!instance) {
|
|
1196
|
-
return /* @__PURE__ */
|
|
699
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
1197
700
|
style: { display: "none" }
|
|
1198
701
|
}, "Item instance ", id, " not found");
|
|
1199
702
|
}
|
|
1200
|
-
return /* @__PURE__ */
|
|
703
|
+
return /* @__PURE__ */ import_react11.default.createElement(ItemComponent, {
|
|
1201
704
|
instance
|
|
1202
705
|
});
|
|
1203
706
|
};
|