@weaverse/react 0.7.58 → 0.7.59

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 CHANGED
@@ -29,6 +29,7 @@ var src_exports = {};
29
29
  __export(src_exports, {
30
30
  Components: () => Components,
31
31
  Elements: () => Elements,
32
+ SliderComponents: () => SliderComponents,
32
33
  WeaverseContext: () => WeaverseContext,
33
34
  WeaverseContextConsumer: () => WeaverseContextConsumer,
34
35
  WeaverseContextProvider: () => WeaverseContextProvider,
@@ -40,7 +41,7 @@ __reExport(src_exports, require("@weaverse/core"), module.exports);
40
41
 
41
42
  // src/context.ts
42
43
  var import_core = require("@weaverse/core");
43
- var import_react27 = require("react");
44
+ var import_react30 = require("react");
44
45
 
45
46
  // src/elements/Button.tsx
46
47
  var React = __toESM(require("react"));
@@ -520,6 +521,7 @@ var Text = React10.forwardRef(
520
521
  );
521
522
  var css7 = {
522
523
  "@desktop": {
524
+ display: "flex",
523
525
  padding: "10px",
524
526
  overflow: "hidden",
525
527
  ".wv-text-content": {
@@ -657,8 +659,9 @@ Video.defaultProps = {
657
659
  var Video_default = Video;
658
660
 
659
661
  // src/elements/Slideshow/index.tsx
660
- var import_react20 = require("keen-slider/react");
661
- var import_react21 = __toESM(require("react"));
662
+ var import_react22 = require("@stitches/react");
663
+ var import_clsx5 = __toESM(require("clsx"));
664
+ var import_react23 = __toESM(require("react"));
662
665
 
663
666
  // src/components/Slider/Arrows.tsx
664
667
  var import_react16 = require("@stitches/react");
@@ -924,25 +927,21 @@ function Icon({ name, className, ...props }) {
924
927
 
925
928
  // src/components/Slider/Arrows.tsx
926
929
  function Arrows(props) {
927
- let { currentSlide, instanceRef, className } = props;
928
- let isFirstSlide = currentSlide === 0;
929
- let isLastSlide = false;
930
+ let { currentSlide, instanceRef, className, offset } = props;
931
+ let isFirst = currentSlide === 0;
932
+ let isLast = false;
930
933
  if (instanceRef.current) {
931
- isLastSlide = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
934
+ isLast = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
932
935
  }
933
- let arrowLeftClass = (0, import_clsx2.default)(
934
- "wv-slider-arrow arrow--left",
935
- isFirstSlide && "arrow--disabled"
936
- );
937
- let arrowRightClass = (0, import_clsx2.default)(
938
- "wv-slider-arrow arrow--right",
939
- isLastSlide && "arrow--disabled"
940
- );
936
+ let style = {
937
+ "--offset": `${offset}px`
938
+ };
941
939
  return /* @__PURE__ */ import_react17.default.createElement(StyledArrows, {
942
- className
940
+ className,
941
+ style
943
942
  }, /* @__PURE__ */ import_react17.default.createElement("button", {
944
943
  type: "button",
945
- className: arrowLeftClass,
944
+ className: (0, import_clsx2.default)("arrow arrow--left", isFirst && "arrow--disabled"),
946
945
  onClick: (e) => {
947
946
  e.stopPropagation();
948
947
  instanceRef?.current?.prev();
@@ -951,7 +950,7 @@ function Arrows(props) {
951
950
  name: "ArrowLeft"
952
951
  })), /* @__PURE__ */ import_react17.default.createElement("button", {
953
952
  type: "button",
954
- className: arrowRightClass,
953
+ className: (0, import_clsx2.default)("arrow arrow--right", isLast && "arrow--disabled"),
955
954
  onClick: (e) => {
956
955
  e.stopPropagation();
957
956
  instanceRef?.current?.next();
@@ -961,7 +960,7 @@ function Arrows(props) {
961
960
  })));
962
961
  }
963
962
  var StyledArrows = (0, import_react16.styled)("div", {
964
- ".wv-slider-arrow": {
963
+ ".arrow": {
965
964
  position: "absolute",
966
965
  top: "50%",
967
966
  transform: "translateY(-50%)",
@@ -985,17 +984,17 @@ var StyledArrows = (0, import_react16.styled)("div", {
985
984
  height: "22px"
986
985
  },
987
986
  "&.arrow--left": {
988
- left: "-80px"
987
+ left: "var(--offset, 0px)"
989
988
  },
990
989
  "&.arrow--right": {
991
- right: "-80px"
990
+ right: "var(--offset, 0px)"
992
991
  },
993
992
  "&.arrow--disabled": {
994
993
  opacity: 0.5
995
994
  }
996
995
  },
997
996
  "@media (max-width: 768px)": {
998
- ".wv-slider-arrow": {
997
+ ".arrow": {
999
998
  display: "none"
1000
999
  }
1001
1000
  }
@@ -1006,9 +1005,15 @@ var import_react18 = require("@stitches/react");
1006
1005
  var import_clsx3 = __toESM(require("clsx"));
1007
1006
  var import_react19 = __toESM(require("react"));
1008
1007
  function Dots(props) {
1009
- let { currentSlide, instanceRef, className } = props;
1008
+ let { currentSlide, instanceRef, className, absolute, position, color } = props;
1009
+ let _className = (0, import_clsx3.default)(
1010
+ className,
1011
+ absolute && "dots--absolute",
1012
+ position && `dots--${position}`,
1013
+ color && `dots--${color}`
1014
+ );
1010
1015
  return /* @__PURE__ */ import_react19.default.createElement(StyledDots, {
1011
- className
1016
+ className: _className
1012
1017
  }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1013
1018
  (idx) => {
1014
1019
  let className2 = (0, import_clsx3.default)("dot", currentSlide === idx && "dot--active");
@@ -1023,22 +1028,86 @@ function Dots(props) {
1023
1028
  }
1024
1029
  var StyledDots = (0, import_react18.styled)("div", {
1025
1030
  padding: "10px 0",
1031
+ display: "flex",
1026
1032
  justifyContent: "center",
1033
+ alignItems: "center",
1034
+ gap: "12px",
1035
+ "&.dots--absolute": {
1036
+ position: "absolute",
1037
+ "&.dots--top, &.dots--bottom": { left: 0, right: 0 },
1038
+ "&.dots--top": { top: 10 },
1039
+ "&.dots--bottom": { bottom: 10 },
1040
+ "&.dots--left, &.dots--right": {
1041
+ top: 0,
1042
+ bottom: 0,
1043
+ flexDirection: "column"
1044
+ },
1045
+ "&.dots--left": { left: 20 },
1046
+ "&.dots--right": { right: 20 }
1047
+ },
1048
+ "&.dots--light": {
1049
+ ".dot": {
1050
+ backgroundColor: "#ffffff66",
1051
+ "&.dot--active": {
1052
+ backgroundColor: "#ffffff"
1053
+ }
1054
+ }
1055
+ },
1056
+ "&.dots--dark": {
1057
+ ".dot": {
1058
+ backgroundColor: "#00000033",
1059
+ "&.dot--active": {
1060
+ backgroundColor: "#000000"
1061
+ }
1062
+ }
1063
+ },
1027
1064
  ".dot": {
1028
1065
  width: "9px",
1029
1066
  height: "9px",
1030
1067
  padding: "0",
1031
- margin: "0 5px",
1032
1068
  border: "none",
1033
1069
  borderRadius: "50%",
1034
- background: "#2125291a",
1035
- transition: "all 0.2s ease-in-out",
1036
- "&.dot--active": {
1037
- background: "#212529"
1038
- }
1070
+ transition: "all 0.2s ease-in-out"
1039
1071
  }
1040
1072
  });
1041
1073
 
1074
+ // src/elements/Slideshow/useSlideshowConfigs.ts
1075
+ var import_react20 = require("keen-slider/react");
1076
+ var import_react21 = __toESM(require("react"));
1077
+
1078
+ // src/components/Slider/AutoplayPlugin.ts
1079
+ function AutoplayPlugin(changeSlidesEvery) {
1080
+ return (slider) => {
1081
+ let timeout;
1082
+ let mouseOver = false;
1083
+ function clearNextTimeout() {
1084
+ clearTimeout(timeout);
1085
+ }
1086
+ function nextTimeout() {
1087
+ clearTimeout(timeout);
1088
+ if (mouseOver)
1089
+ return;
1090
+ timeout = setTimeout(() => {
1091
+ slider.next();
1092
+ }, changeSlidesEvery * 1e3);
1093
+ }
1094
+ slider.on("created", () => {
1095
+ slider.container.addEventListener("mouseover", () => {
1096
+ mouseOver = true;
1097
+ clearNextTimeout();
1098
+ });
1099
+ slider.container.addEventListener("mouseout", () => {
1100
+ mouseOver = false;
1101
+ nextTimeout();
1102
+ });
1103
+ nextTimeout();
1104
+ });
1105
+ slider.on("dragStarted", clearNextTimeout);
1106
+ slider.on("animationEnded", nextTimeout);
1107
+ slider.on("updated", nextTimeout);
1108
+ };
1109
+ }
1110
+
1042
1111
  // src/components/Slider/ResizePlugin.ts
1043
1112
  var ResizePlugin = (slider) => {
1044
1113
  let observer = new ResizeObserver(() => slider.update());
@@ -1098,37 +1167,46 @@ function loadCSS(attrs) {
1098
1167
  });
1099
1168
  }
1100
1169
 
1101
- // src/elements/Slideshow/index.tsx
1102
- var Slideshow = (0, import_react21.forwardRef)((props, ref) => {
1170
+ // src/elements/Slideshow/useSlideshowConfigs.ts
1171
+ function useSlideshowConfigs(props) {
1103
1172
  let {
1104
1173
  animation,
1105
1174
  slidesPerView,
1106
- spacing,
1107
- showArrows,
1108
- showDots,
1109
- dotsPosition,
1175
+ loop,
1110
1176
  autoRotate,
1111
1177
  changeSlidesEvery,
1112
- children,
1113
- ...rest
1178
+ children
1114
1179
  } = props;
1180
+ let { isDesignMode } = (0, import_react21.useContext)(WeaverseContext);
1181
+ let [opacities, setOpacities] = import_react21.default.useState([]);
1115
1182
  let [cssLoaded, setCssLoaded] = (0, import_react21.useState)(false);
1116
1183
  let [created, setCreated] = (0, import_react21.useState)(false);
1117
1184
  let [ready, setReady] = (0, import_react21.useState)(false);
1118
1185
  let [currentSlide, setCurrentSlide] = (0, import_react21.useState)(0);
1186
+ let sliderPlugins = [ResizePlugin];
1187
+ if (autoRotate && !isDesignMode) {
1188
+ sliderPlugins.push(AutoplayPlugin(changeSlidesEvery));
1189
+ }
1119
1190
  let [sliderRef, instanceRef] = (0, import_react20.useKeenSlider)(
1120
1191
  {
1121
- slides: {
1122
- perView: slidesPerView
1123
- },
1192
+ slides: animation === "fade" ? import_react21.default.Children.count(children) : { perView: slidesPerView },
1193
+ drag: !isDesignMode,
1194
+ loop,
1195
+ selector: animation === "fade" ? null : ".keen-slider__slide",
1124
1196
  created: () => {
1125
1197
  setCreated(true);
1126
1198
  },
1127
1199
  slideChanged: (slider) => {
1128
1200
  setCurrentSlide(slider.track.details.rel);
1201
+ },
1202
+ detailsChanged: (slider) => {
1203
+ let newOpacities = slider.track?.details?.slides?.map(
1204
+ (slide) => slide.portion
1205
+ );
1206
+ setOpacities(newOpacities);
1129
1207
  }
1130
1208
  },
1131
- [ResizePlugin]
1209
+ sliderPlugins
1132
1210
  );
1133
1211
  (0, import_react21.useEffect)(() => {
1134
1212
  loadCSS({
@@ -1141,53 +1219,105 @@ var Slideshow = (0, import_react21.forwardRef)((props, ref) => {
1141
1219
  setReady(true);
1142
1220
  }
1143
1221
  }, [created, cssLoaded]);
1222
+ return {
1223
+ sliderRef,
1224
+ instanceRef,
1225
+ currentSlide,
1226
+ opacities,
1227
+ ready,
1228
+ created
1229
+ };
1230
+ }
1231
+
1232
+ // src/elements/Slideshow/index.tsx
1233
+ var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
1234
+ let {
1235
+ animation,
1236
+ showArrows,
1237
+ showDots,
1238
+ dotsPosition,
1239
+ dotsColor,
1240
+ children,
1241
+ ...rest
1242
+ } = props;
1243
+ let { sliderRef, instanceRef, currentSlide, opacities, ready, created } = useSlideshowConfigs(props);
1144
1244
  let style = {
1145
1245
  "--slider-opacity": ready ? 1 : 0
1146
1246
  };
1147
- return /* @__PURE__ */ import_react21.default.createElement("div", {
1247
+ let faderClass = "";
1248
+ if (animation === "fade") {
1249
+ faderClass = (0, import_react22.css)({
1250
+ ".keen-slider__slide": opacities.reduce((acc, opacity, index) => {
1251
+ acc[`&:nth-child(${index + 1})`] = {
1252
+ opacity
1253
+ };
1254
+ return acc;
1255
+ }, {})
1256
+ })().className;
1257
+ }
1258
+ let _className = (0, import_clsx5.default)(
1259
+ faderClass,
1260
+ animation === "slide" ? "keen-slider" : "keen-fader"
1261
+ );
1262
+ return /* @__PURE__ */ import_react23.default.createElement("div", {
1148
1263
  ref,
1149
1264
  style,
1150
1265
  ...rest
1151
- }, /* @__PURE__ */ import_react21.default.createElement("div", {
1266
+ }, /* @__PURE__ */ import_react23.default.createElement("div", {
1152
1267
  ref: sliderRef,
1153
- className: "keen-slider"
1154
- }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ import_react21.default.createElement(Arrows, {
1268
+ className: _className
1269
+ }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ import_react23.default.createElement(Arrows, {
1155
1270
  instanceRef,
1156
1271
  currentSlide,
1157
- className: "wv-slideshow--arrows"
1158
- }), showDots && created && instanceRef?.current && /* @__PURE__ */ import_react21.default.createElement(Dots, {
1272
+ className: "wv-slideshow--arrows",
1273
+ offset: 20
1274
+ }), showDots && created && instanceRef?.current && /* @__PURE__ */ import_react23.default.createElement(Dots, {
1159
1275
  instanceRef,
1160
1276
  currentSlide,
1161
- className: "wv-slideshow--dots"
1277
+ className: "wv-slideshow--dots",
1278
+ position: dotsPosition,
1279
+ color: dotsColor,
1280
+ absolute: true
1162
1281
  }));
1163
1282
  });
1164
1283
  var css9 = {
1165
1284
  "@desktop": {
1166
1285
  opacity: "var(--slider-opacity, 0)",
1167
1286
  padding: "32px 0",
1287
+ position: "relative",
1168
1288
  ".keen-slider": {
1169
1289
  height: "100%"
1290
+ },
1291
+ ".keen-fader": {
1292
+ position: "relative",
1293
+ height: "100%",
1294
+ ".keen-slider__slide": {
1295
+ position: "absolute",
1296
+ inset: 0
1297
+ }
1170
1298
  }
1171
1299
  }
1172
1300
  };
1173
1301
  Slideshow.defaultProps = {
1174
- animation: "fade",
1302
+ animation: "slide",
1175
1303
  slidesPerView: 1,
1176
1304
  spacing: 0,
1177
1305
  showArrows: true,
1178
1306
  showDots: true,
1179
1307
  dotsPosition: "bottom",
1308
+ dotsColor: "light",
1309
+ loop: true,
1180
1310
  autoRotate: false,
1181
1311
  changeSlidesEvery: 5
1182
1312
  };
1183
1313
  var Slideshow_default = Slideshow;
1184
1314
 
1185
1315
  // src/elements/Slideshow/Slide.tsx
1186
- var import_react26 = __toESM(require("react"));
1316
+ var import_react29 = __toESM(require("react"));
1187
1317
 
1188
1318
  // src/components/Background.tsx
1189
- var import_react22 = require("@stitches/react");
1190
- var import_react23 = __toESM(require("react"));
1319
+ var import_react24 = require("@stitches/react");
1320
+ var import_react25 = __toESM(require("react"));
1191
1321
  function Background2(props) {
1192
1322
  let {
1193
1323
  backgroundColor,
@@ -1202,10 +1332,10 @@ function Background2(props) {
1202
1332
  ["--bg-position"]: backgroundPosition
1203
1333
  };
1204
1334
  if (backgroundImage || backgroundColor) {
1205
- return /* @__PURE__ */ import_react23.default.createElement(StyledBackground, {
1335
+ return /* @__PURE__ */ import_react25.default.createElement(StyledBackground, {
1206
1336
  style,
1207
1337
  className
1208
- }, backgroundImage && /* @__PURE__ */ import_react23.default.createElement("img", {
1338
+ }, backgroundImage && /* @__PURE__ */ import_react25.default.createElement("img", {
1209
1339
  width: "100%",
1210
1340
  height: "100%",
1211
1341
  "data-blink-src": backgroundImage,
@@ -1214,7 +1344,7 @@ function Background2(props) {
1214
1344
  }
1215
1345
  return null;
1216
1346
  }
1217
- var StyledBackground = (0, import_react22.styled)("div", {
1347
+ var StyledBackground = (0, import_react24.styled)("div", {
1218
1348
  display: "block !important",
1219
1349
  position: "absolute",
1220
1350
  inset: 0,
@@ -1226,25 +1356,42 @@ var StyledBackground = (0, import_react22.styled)("div", {
1226
1356
  });
1227
1357
 
1228
1358
  // src/components/Overlay.tsx
1229
- var import_react24 = require("@stitches/react");
1230
- var import_react25 = __toESM(require("react"));
1359
+ var import_react26 = require("@stitches/react");
1360
+ var import_react27 = __toESM(require("react"));
1231
1361
  function Overlay2(props) {
1232
1362
  let { enableOverlay: enabled, overlayOpacity: opacity, className } = props;
1233
1363
  if (enabled) {
1234
- return /* @__PURE__ */ import_react25.default.createElement(StyledOverlay, {
1364
+ return /* @__PURE__ */ import_react27.default.createElement(StyledOverlay, {
1235
1365
  className,
1236
1366
  css: { ["--overlay-opacity"]: opacity / 100 }
1237
1367
  });
1238
1368
  }
1239
1369
  return null;
1240
1370
  }
1241
- var StyledOverlay = (0, import_react24.styled)("div", {
1371
+ var StyledOverlay = (0, import_react26.styled)("div", {
1242
1372
  display: "block !important",
1243
1373
  position: "absolute",
1244
1374
  inset: 0,
1245
1375
  backgroundColor: "rgba(0, 0, 0, var(--overlay-opacity, .3))"
1246
1376
  });
1247
1377
 
1378
+ // src/components/Placeholder.tsx
1379
+ var import_react28 = __toESM(require("react"));
1380
+ var Placeholder = (0, import_react28.forwardRef)(
1381
+ (props, ref) => {
1382
+ let { element, className, children, ...rest } = props;
1383
+ return /* @__PURE__ */ import_react28.default.createElement("div", {
1384
+ "data-wv-placeholder": true,
1385
+ ref,
1386
+ className,
1387
+ ...rest
1388
+ }, /* @__PURE__ */ import_react28.default.createElement("div", {
1389
+ style: { fontWeight: 600, marginBottom: "10px" }
1390
+ }, element), /* @__PURE__ */ import_react28.default.createElement("div", null, children));
1391
+ }
1392
+ );
1393
+ var Placeholder_default = Placeholder;
1394
+
1248
1395
  // src/elements/Slideshow/position.ts
1249
1396
  var slidePositionMap = {
1250
1397
  "top left": {
@@ -1286,7 +1433,7 @@ var slidePositionMap = {
1286
1433
  };
1287
1434
 
1288
1435
  // src/elements/Slideshow/Slide.tsx
1289
- var Slide = (0, import_react26.forwardRef)((props, ref) => {
1436
+ var Slide = (0, import_react29.forwardRef)((props, ref) => {
1290
1437
  let {
1291
1438
  contentPosition,
1292
1439
  backgroundColor,
@@ -1298,34 +1445,41 @@ var Slide = (0, import_react26.forwardRef)((props, ref) => {
1298
1445
  children,
1299
1446
  ...rest
1300
1447
  } = props;
1301
- let style = slidePositionMap[contentPosition];
1302
- return /* @__PURE__ */ import_react26.default.createElement("div", {
1448
+ return /* @__PURE__ */ import_react29.default.createElement("div", {
1303
1449
  className: "keen-slider__slide"
1304
- }, /* @__PURE__ */ import_react26.default.createElement(Background2, {
1450
+ }, /* @__PURE__ */ import_react29.default.createElement(Background2, {
1305
1451
  backgroundColor,
1306
1452
  backgroundImage,
1307
1453
  backgroundFit,
1308
1454
  backgroundPosition,
1309
1455
  className: "slide-background"
1310
- }), /* @__PURE__ */ import_react26.default.createElement(Overlay2, {
1456
+ }), /* @__PURE__ */ import_react29.default.createElement(Overlay2, {
1311
1457
  enableOverlay,
1312
1458
  overlayOpacity,
1313
1459
  className: "slide-overlay"
1314
- }), /* @__PURE__ */ import_react26.default.createElement("div", {
1460
+ }), /* @__PURE__ */ import_react29.default.createElement("div", {
1315
1461
  ref,
1316
- style,
1462
+ style: slidePositionMap[contentPosition],
1317
1463
  ...rest
1318
- }, children?.length ? children : "Add element here"));
1464
+ }, children?.length ? children : /* @__PURE__ */ import_react29.default.createElement(Placeholder_default, {
1465
+ element: "Slide",
1466
+ className: "wv-slide-placeholder"
1467
+ }, "Drag and drop elements here")));
1319
1468
  });
1320
1469
  var css10 = {
1321
1470
  "@desktop": {
1322
1471
  position: "relative",
1323
1472
  height: "100%",
1324
1473
  width: "1224px",
1474
+ maxWidth: "100%",
1325
1475
  margin: "0 auto",
1326
1476
  display: "flex",
1327
1477
  flexDirection: "column",
1328
- padding: "100px 20px"
1478
+ padding: "100px 20px",
1479
+ ".wv-slide-placeholder": {
1480
+ height: "200px",
1481
+ zIndex: 1
1482
+ }
1329
1483
  }
1330
1484
  };
1331
1485
  Slide.defaultProps = {
@@ -1399,26 +1553,10 @@ var createRootContext = (configs) => {
1399
1553
  });
1400
1554
  return rootContext;
1401
1555
  };
1402
- var WeaverseContext = (0, import_react27.createContext)({});
1556
+ var WeaverseContext = (0, import_react30.createContext)({});
1403
1557
  var WeaverseContextProvider = WeaverseContext.Provider;
1404
1558
  var WeaverseContextConsumer = WeaverseContext.Consumer;
1405
1559
 
1406
- // src/components/Placeholder.tsx
1407
- var import_react28 = __toESM(require("react"));
1408
- var Placeholder = (0, import_react28.forwardRef)(
1409
- (props, ref) => {
1410
- let { element, children, ...rest } = props;
1411
- return /* @__PURE__ */ import_react28.default.createElement("div", {
1412
- "data-wv-placeholder": true,
1413
- ref,
1414
- ...rest
1415
- }, /* @__PURE__ */ import_react28.default.createElement("div", {
1416
- style: { fontWeight: 600, marginBottom: "10px" }
1417
- }, element), /* @__PURE__ */ import_react28.default.createElement("div", null, children));
1418
- }
1419
- );
1420
- var Placeholder_default = Placeholder;
1421
-
1422
1560
  // src/components/Modal/index.tsx
1423
1561
  var Modal_exports = {};
1424
1562
  __export(Modal_exports, {
@@ -1429,20 +1567,20 @@ __export(Modal_exports, {
1429
1567
  ModalTrigger: () => ModalTrigger
1430
1568
  });
1431
1569
  var import_react_dialog2 = require("@radix-ui/react-dialog");
1432
- var import_react31 = __toESM(require("react"));
1570
+ var import_react33 = __toESM(require("react"));
1433
1571
 
1434
1572
  // src/components/Modal/styled.ts
1435
1573
  var import_react_dialog = require("@radix-ui/react-dialog");
1436
- var import_react29 = require("@stitches/react");
1437
- var overlayShow = (0, import_react29.keyframes)({
1574
+ var import_react31 = require("@stitches/react");
1575
+ var overlayShow = (0, import_react31.keyframes)({
1438
1576
  "0%": { opacity: 0 },
1439
1577
  "100%": { opacity: 1 }
1440
1578
  });
1441
- var contentShow = (0, import_react29.keyframes)({
1579
+ var contentShow = (0, import_react31.keyframes)({
1442
1580
  "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
1443
1581
  "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
1444
1582
  });
1445
- var StyledOverlay2 = (0, import_react29.styled)(import_react_dialog.Overlay, {
1583
+ var StyledOverlay2 = (0, import_react31.styled)(import_react_dialog.Overlay, {
1446
1584
  display: "block !important",
1447
1585
  backgroundColor: "rgba(0, 0, 0, .3)",
1448
1586
  position: "fixed",
@@ -1450,7 +1588,7 @@ var StyledOverlay2 = (0, import_react29.styled)(import_react_dialog.Overlay, {
1450
1588
  inset: 0,
1451
1589
  animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
1452
1590
  });
1453
- var StyledTitle = (0, import_react29.styled)(import_react_dialog.Title, {
1591
+ var StyledTitle = (0, import_react31.styled)(import_react_dialog.Title, {
1454
1592
  margin: "0 0 24px",
1455
1593
  fontWeight: 500,
1456
1594
  fontSize: 24,
@@ -1459,7 +1597,7 @@ var StyledTitle = (0, import_react29.styled)(import_react_dialog.Title, {
1459
1597
  fontSize: 20
1460
1598
  }
1461
1599
  });
1462
- var StyledContent = (0, import_react29.styled)(import_react_dialog.Content, {
1600
+ var StyledContent = (0, import_react31.styled)(import_react_dialog.Content, {
1463
1601
  backgroundColor: "white",
1464
1602
  borderRadius: 6,
1465
1603
  boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
@@ -1490,7 +1628,7 @@ var StyledContent = (0, import_react29.styled)(import_react_dialog.Content, {
1490
1628
  }
1491
1629
  }
1492
1630
  });
1493
- var StyledCloseIcon = (0, import_react29.styled)("button", {
1631
+ var StyledCloseIcon = (0, import_react31.styled)("button", {
1494
1632
  all: "unset",
1495
1633
  cursor: "pointer",
1496
1634
  fontFamily: "inherit",
@@ -1515,10 +1653,10 @@ var StyledCloseIcon = (0, import_react29.styled)("button", {
1515
1653
  });
1516
1654
 
1517
1655
  // src/components/Modal/useOpenChangeEffect.ts
1518
- var import_react30 = require("react");
1656
+ var import_react32 = require("react");
1519
1657
  function useOpenChangeEffect(props) {
1520
1658
  let { open, defaultOpen, onOpenChange } = props;
1521
- let rootCtx = (0, import_react30.useContext)(WeaverseContext);
1659
+ let rootCtx = (0, import_react32.useContext)(WeaverseContext);
1522
1660
  let toggleRootzIndex = (open2) => {
1523
1661
  let { contentRootElement } = rootCtx;
1524
1662
  if (contentRootElement) {
@@ -1529,7 +1667,7 @@ function useOpenChangeEffect(props) {
1529
1667
  }
1530
1668
  }
1531
1669
  };
1532
- (0, import_react30.useEffect)(() => {
1670
+ (0, import_react32.useEffect)(() => {
1533
1671
  let isOpen = open || defaultOpen;
1534
1672
  toggleRootzIndex(isOpen);
1535
1673
  }, [open, defaultOpen]);
@@ -1544,7 +1682,7 @@ function useOpenChangeEffect(props) {
1544
1682
  var Modal = (props) => {
1545
1683
  let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1546
1684
  let handleOpenChange = useOpenChangeEffect(props);
1547
- return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Root, {
1685
+ return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Root, {
1548
1686
  open,
1549
1687
  defaultOpen,
1550
1688
  onOpenChange: handleOpenChange,
@@ -1552,30 +1690,30 @@ var Modal = (props) => {
1552
1690
  }, children);
1553
1691
  };
1554
1692
  var ModalTrigger = import_react_dialog2.Trigger;
1555
- var ModalHeader = (0, import_react31.forwardRef)(
1693
+ var ModalHeader = (0, import_react33.forwardRef)(
1556
1694
  (props, ref) => {
1557
1695
  let { children, ...rest } = props;
1558
- return /* @__PURE__ */ import_react31.default.createElement(StyledTitle, {
1696
+ return /* @__PURE__ */ import_react33.default.createElement(StyledTitle, {
1559
1697
  ref,
1560
1698
  ...rest,
1561
1699
  "data-wv-modal-header": true
1562
1700
  }, children);
1563
1701
  }
1564
1702
  );
1565
- var ModalContent = (0, import_react31.forwardRef)(
1703
+ var ModalContent = (0, import_react33.forwardRef)(
1566
1704
  (props, ref) => {
1567
1705
  let { children, size, portal, ...rest } = props;
1568
- let modalContent = /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(StyledOverlay2, null), /* @__PURE__ */ import_react31.default.createElement(StyledContent, {
1706
+ let modalContent = /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, /* @__PURE__ */ import_react33.default.createElement(StyledOverlay2, null), /* @__PURE__ */ import_react33.default.createElement(StyledContent, {
1569
1707
  ...rest,
1570
1708
  onCloseAutoFocus: (e) => e.preventDefault(),
1571
1709
  "data-wv-modal": true,
1572
1710
  "data-size": size,
1573
1711
  ref
1574
- }, /* @__PURE__ */ import_react31.default.createElement(ModalClose, null), /* @__PURE__ */ import_react31.default.createElement("div", {
1712
+ }, /* @__PURE__ */ import_react33.default.createElement(ModalClose, null), /* @__PURE__ */ import_react33.default.createElement("div", {
1575
1713
  className: "wv-modal-content"
1576
1714
  }, children)));
1577
1715
  if (portal) {
1578
- return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Portal, null, modalContent);
1716
+ return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Portal, null, modalContent);
1579
1717
  }
1580
1718
  return modalContent;
1581
1719
  }
@@ -1584,13 +1722,13 @@ ModalContent.defaultProps = {
1584
1722
  size: "auto",
1585
1723
  portal: false
1586
1724
  };
1587
- var ModalClose = (0, import_react31.forwardRef)(
1725
+ var ModalClose = (0, import_react33.forwardRef)(
1588
1726
  (props, ref) => {
1589
1727
  let { asChild, children, ...rest } = props;
1590
- let closeIcon = /* @__PURE__ */ import_react31.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react31.default.createElement(Icon, {
1728
+ let closeIcon = /* @__PURE__ */ import_react33.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react33.default.createElement(Icon, {
1591
1729
  name: "X"
1592
1730
  }));
1593
- return /* @__PURE__ */ import_react31.default.createElement(import_react_dialog2.Close, {
1731
+ return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Close, {
1594
1732
  asChild: true,
1595
1733
  ...rest,
1596
1734
  ref
@@ -1599,32 +1737,33 @@ var ModalClose = (0, import_react31.forwardRef)(
1599
1737
  );
1600
1738
 
1601
1739
  // src/components/Spinner.tsx
1602
- var import_react32 = __toESM(require("react"));
1740
+ var import_react34 = __toESM(require("react"));
1603
1741
  function Spinner() {
1604
- return /* @__PURE__ */ import_react32.default.createElement("span", {
1742
+ return /* @__PURE__ */ import_react34.default.createElement("span", {
1605
1743
  className: "wv-spinner-wrapper"
1606
- }, /* @__PURE__ */ import_react32.default.createElement(Icon, {
1744
+ }, /* @__PURE__ */ import_react34.default.createElement(Icon, {
1607
1745
  name: "CircleNotch",
1608
1746
  className: "wv-spinner"
1609
1747
  }));
1610
1748
  }
1611
1749
 
1612
1750
  // src/components/Tooltip.tsx
1613
- var import_react33 = __toESM(require("react"));
1751
+ var import_react35 = __toESM(require("react"));
1614
1752
  function Tooltip({ children }) {
1615
- return /* @__PURE__ */ import_react33.default.createElement("span", {
1753
+ return /* @__PURE__ */ import_react35.default.createElement("span", {
1616
1754
  className: "wv-tooltip"
1617
1755
  }, children);
1618
1756
  }
1619
1757
 
1620
1758
  // src/components/Slider/index.tsx
1621
- var import_clsx5 = __toESM(require("clsx"));
1622
- var import_react34 = require("keen-slider/react");
1623
- var import_react35 = __toESM(require("react"));
1624
- function Slider({ children, className, gap }) {
1625
- let [currentSlide, setCurrentSlide] = (0, import_react35.useState)(0);
1626
- let [created, setCreated] = (0, import_react35.useState)(false);
1627
- let [ref, instanceRef] = (0, import_react34.useKeenSlider)(
1759
+ var import_clsx6 = __toESM(require("clsx"));
1760
+ var import_react36 = require("keen-slider/react");
1761
+ var import_react37 = __toESM(require("react"));
1762
+ function Slider(props) {
1763
+ let { children, className, gap, arrowOffset } = props;
1764
+ let [currentSlide, setCurrentSlide] = (0, import_react37.useState)(0);
1765
+ let [created, setCreated] = (0, import_react37.useState)(false);
1766
+ let [ref, instanceRef] = (0, import_react36.useKeenSlider)(
1628
1767
  {
1629
1768
  slides: { perView: 4, spacing: gap },
1630
1769
  breakpoints: {
@@ -1647,18 +1786,19 @@ function Slider({ children, className, gap }) {
1647
1786
  },
1648
1787
  [ResizePlugin]
1649
1788
  );
1650
- let _className = (0, import_clsx5.default)("keen-slider", className);
1651
- let arrowsClass = (0, import_clsx5.default)(className && `${className}-arrows`);
1652
- return /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement("div", {
1789
+ let _className = (0, import_clsx6.default)("keen-slider", className);
1790
+ let arrowsClass = (0, import_clsx6.default)(className && `${className}-arrows`);
1791
+ return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement("div", {
1653
1792
  ref,
1654
1793
  className: _className
1655
- }, /* @__PURE__ */ import_react35.default.createElement("link", {
1794
+ }, /* @__PURE__ */ import_react37.default.createElement("link", {
1656
1795
  rel: "stylesheet",
1657
1796
  href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1658
- }), children), created && instanceRef?.current && /* @__PURE__ */ import_react35.default.createElement(Arrows, {
1797
+ }), children), created && instanceRef?.current && /* @__PURE__ */ import_react37.default.createElement(Arrows, {
1659
1798
  currentSlide,
1660
1799
  instanceRef,
1661
- className: arrowsClass
1800
+ className: arrowsClass,
1801
+ offset: arrowOffset
1662
1802
  }));
1663
1803
  }
1664
1804
 
@@ -1673,15 +1813,21 @@ var Components = {
1673
1813
  Slider,
1674
1814
  Tooltip
1675
1815
  };
1816
+ var SliderComponents = {
1817
+ Arrows,
1818
+ Dots,
1819
+ ResizePlugin,
1820
+ AutoplayPlugin
1821
+ };
1676
1822
 
1677
1823
  // src/renderer.tsx
1678
1824
  var import_core2 = require("@weaverse/core");
1679
- var import_react36 = __toESM(require("react"));
1825
+ var import_react38 = __toESM(require("react"));
1680
1826
  var WeaverseRoot = ({ context }) => {
1681
- let [, setData] = (0, import_react36.useState)(context.projectData);
1682
- let rootRef = (0, import_react36.useRef)();
1827
+ let [, setData] = (0, import_react38.useState)(context.projectData);
1828
+ let rootRef = (0, import_react38.useRef)();
1683
1829
  let renderRoot = () => setData({});
1684
- (0, import_react36.useEffect)(() => {
1830
+ (0, import_react38.useEffect)(() => {
1685
1831
  context.subscribe(renderRoot);
1686
1832
  context.contentRootElement = rootRef.current;
1687
1833
  return () => {
@@ -1691,23 +1837,23 @@ var WeaverseRoot = ({ context }) => {
1691
1837
  let eventHandlers = context?.studioBridge?.eventHandlers || {};
1692
1838
  let themeClass = context.stitchesInstance.theme.className;
1693
1839
  if (context.projectData?.rootId) {
1694
- return /* @__PURE__ */ import_react36.default.createElement("div", {
1840
+ return /* @__PURE__ */ import_react38.default.createElement("div", {
1695
1841
  className: `weaverse-content-root ${themeClass}`,
1696
1842
  ...eventHandlers,
1697
1843
  ref: rootRef
1698
- }, /* @__PURE__ */ import_react36.default.createElement(WeaverseContextProvider, {
1844
+ }, /* @__PURE__ */ import_react38.default.createElement(WeaverseContextProvider, {
1699
1845
  value: context
1700
- }, /* @__PURE__ */ import_react36.default.createElement(ItemInstance, {
1846
+ }, /* @__PURE__ */ import_react38.default.createElement(ItemInstance, {
1701
1847
  id: context.projectData.rootId
1702
1848
  })));
1703
1849
  }
1704
1850
  return null;
1705
1851
  };
1706
1852
  var ItemComponent = ({ instance }) => {
1707
- let { stitchesInstance, elementInstances } = (0, import_react36.useContext)(WeaverseContext);
1708
- let [data, setData] = (0, import_react36.useState)(instance.data);
1853
+ let { stitchesInstance, elementInstances } = (0, import_react38.useContext)(WeaverseContext);
1854
+ let [data, setData] = (0, import_react38.useState)(instance.data);
1709
1855
  let { id, type, childIds = [], css: css11, className, ...rest } = data;
1710
- (0, import_react36.useEffect)(() => {
1856
+ (0, import_react38.useEffect)(() => {
1711
1857
  let render = (data2) => setData({ ...data2 });
1712
1858
  instance.subscribe(render);
1713
1859
  if (import_core2.isBrowser && !instance.ref.current) {
@@ -1723,13 +1869,13 @@ var ItemComponent = ({ instance }) => {
1723
1869
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1724
1870
  rest.ref = instance.ref;
1725
1871
  }
1726
- return /* @__PURE__ */ import_react36.default.createElement(Component, {
1872
+ return /* @__PURE__ */ import_react38.default.createElement(Component, {
1727
1873
  key: id,
1728
1874
  "data-wv-type": type,
1729
1875
  "data-wv-id": id,
1730
1876
  className: generateItemClassName(instance, stitchesInstance),
1731
1877
  ...rest
1732
- }, childIds.map((id2) => /* @__PURE__ */ import_react36.default.createElement(ItemInstance, {
1878
+ }, childIds.map((id2) => /* @__PURE__ */ import_react38.default.createElement(ItemInstance, {
1733
1879
  key: id2,
1734
1880
  id: id2
1735
1881
  })));
@@ -1739,15 +1885,15 @@ var ItemComponent = ({ instance }) => {
1739
1885
  }
1740
1886
  };
1741
1887
  var ItemInstance = ({ id }) => {
1742
- let context = (0, import_react36.useContext)(WeaverseContext);
1888
+ let context = (0, import_react38.useContext)(WeaverseContext);
1743
1889
  let { itemInstances } = context;
1744
1890
  let instance = itemInstances.get(id);
1745
1891
  if (!instance) {
1746
- return /* @__PURE__ */ import_react36.default.createElement("div", {
1892
+ return /* @__PURE__ */ import_react38.default.createElement("div", {
1747
1893
  style: { display: "none" }
1748
1894
  }, "Item instance ", id, " not found");
1749
1895
  }
1750
- return /* @__PURE__ */ import_react36.default.createElement(ItemComponent, {
1896
+ return /* @__PURE__ */ import_react38.default.createElement(ItemComponent, {
1751
1897
  key: id,
1752
1898
  instance
1753
1899
  });
@@ -1756,6 +1902,7 @@ var ItemInstance = ({ id }) => {
1756
1902
  0 && (module.exports = {
1757
1903
  Components,
1758
1904
  Elements,
1905
+ SliderComponents,
1759
1906
  WeaverseContext,
1760
1907
  WeaverseContextConsumer,
1761
1908
  WeaverseContextProvider,