@weaverse/react 1.0.5 → 1.0.6

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.
Files changed (3) hide show
  1. package/dist/index.js +569 -458
  2. package/dist/index.mjs +557 -446
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@ __reExport(src_exports, require("@weaverse/core"), module.exports);
45
45
 
46
46
  // src/context.ts
47
47
  var import_core2 = require("@weaverse/core");
48
- var import_react30 = require("react");
48
+ var import_react38 = require("react");
49
49
 
50
50
  // src/elements/button.tsx
51
51
  var React = __toESM(require("react"));
@@ -123,6 +123,7 @@ var import_react4 = __toESM(require("react"));
123
123
  // src/constant/index.ts
124
124
  var TIMES = ["days", "hours", "minutes", "seconds"];
125
125
  var COUNTDOWN_KEY = "wv-cd-evergreen-start";
126
+ var INSTAGRAM_API = "https://graph.instagram.com";
126
127
 
127
128
  // src/utils/index.ts
128
129
  function getTime(_seconds) {
@@ -627,15 +628,20 @@ Video.defaultProps = {
627
628
  };
628
629
  var video_default = Video;
629
630
 
630
- // src/elements/slideshow/index.tsx
631
- var import_react22 = require("@stitches/react");
632
- var import_clsx5 = __toESM(require("clsx"));
633
- var import_react23 = __toESM(require("react"));
631
+ // src/elements/instagram.tsx
632
+ var import_react32 = __toESM(require("react"));
634
633
 
635
- // src/components/slider/arrows.tsx
636
- var import_react16 = require("@stitches/react");
637
- var import_clsx2 = __toESM(require("clsx"));
638
- var import_react17 = __toESM(require("react"));
634
+ // src/components/modal/index.tsx
635
+ var modal_exports = {};
636
+ __export(modal_exports, {
637
+ Modal: () => Modal,
638
+ ModalClose: () => ModalClose,
639
+ ModalContent: () => ModalContent,
640
+ ModalHeader: () => ModalHeader,
641
+ ModalTrigger: () => ModalTrigger
642
+ });
643
+ var import_react_dialog2 = require("@radix-ui/react-dialog");
644
+ var import_react18 = __toESM(require("react"));
639
645
 
640
646
  // src/components/icons/index.tsx
641
647
  var import_react15 = __toESM(require("react"));
@@ -1295,7 +1301,191 @@ function Icon({ name, className, ...props }) {
1295
1301
  return /* @__PURE__ */ import_react15.default.createElement(WeaverseIcon, { className: cls, ...props });
1296
1302
  }
1297
1303
 
1304
+ // src/components/modal/styled.ts
1305
+ var import_react_dialog = require("@radix-ui/react-dialog");
1306
+ var import_react16 = require("@stitches/react");
1307
+ var overlayShow = (0, import_react16.keyframes)({
1308
+ "0%": { opacity: 0 },
1309
+ "100%": { opacity: 1 }
1310
+ });
1311
+ var contentShow = (0, import_react16.keyframes)({
1312
+ "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
1313
+ "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
1314
+ });
1315
+ var StyledOverlay = (0, import_react16.styled)(import_react_dialog.Overlay, {
1316
+ display: "block !important",
1317
+ backgroundColor: "rgba(0, 0, 0, .3)",
1318
+ position: "fixed",
1319
+ zIndex: 99999,
1320
+ inset: 0,
1321
+ animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
1322
+ });
1323
+ var StyledTitle = (0, import_react16.styled)(import_react_dialog.Title, {
1324
+ margin: "0 0 24px",
1325
+ fontWeight: 500,
1326
+ fontSize: 24,
1327
+ "@media (max-width: 768px)": {
1328
+ margin: "0 0 16px",
1329
+ fontSize: 20
1330
+ }
1331
+ });
1332
+ var StyledContent = (0, import_react16.styled)(import_react_dialog.Content, {
1333
+ backgroundColor: "white",
1334
+ borderRadius: 6,
1335
+ boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
1336
+ position: "fixed",
1337
+ top: "50%",
1338
+ left: "50%",
1339
+ transform: "translate(-50%, -50%)",
1340
+ padding: 24,
1341
+ animation: `${contentShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`,
1342
+ zIndex: 99999,
1343
+ maxWidth: "90vw",
1344
+ width: "auto",
1345
+ "*": {
1346
+ maxWidth: "100%"
1347
+ },
1348
+ "&:focus": { outline: "none" },
1349
+ '&[data-size="fullscreen"]': {
1350
+ width: "100vw",
1351
+ height: "100vh",
1352
+ maxWidth: "100vw",
1353
+ borderRadius: 0
1354
+ },
1355
+ "@media (max-width: 768px)": {
1356
+ width: "90vw",
1357
+ padding: 12,
1358
+ '&[data-size="fullscreen"]': {
1359
+ width: "100vw"
1360
+ }
1361
+ }
1362
+ });
1363
+ var StyledCloseIcon = (0, import_react16.styled)("button", {
1364
+ all: "unset",
1365
+ cursor: "pointer",
1366
+ fontFamily: "inherit",
1367
+ borderRadius: "100%",
1368
+ height: 32,
1369
+ width: 32,
1370
+ padding: 4,
1371
+ display: "inline-flex",
1372
+ alignItems: "center",
1373
+ justifyContent: "center",
1374
+ color: "rgb(55, 65, 81)",
1375
+ position: "absolute",
1376
+ top: 8,
1377
+ right: 8,
1378
+ "&:hover": {
1379
+ backgroundColor: "rgba(112, 112, 112, .1)"
1380
+ },
1381
+ svg: {
1382
+ width: 24,
1383
+ height: 24
1384
+ }
1385
+ });
1386
+
1387
+ // src/components/modal/use-open-change-effect.ts
1388
+ var import_react17 = require("react");
1389
+ function useOpenChangeEffect(props) {
1390
+ let { open, defaultOpen, onOpenChange } = props;
1391
+ let rootCtx = (0, import_react17.useContext)(WeaverseContext);
1392
+ let toggleRootzIndex = (open2) => {
1393
+ let { contentRootElement } = rootCtx;
1394
+ if (contentRootElement) {
1395
+ if (open2) {
1396
+ contentRootElement.classList.add("modal-open");
1397
+ } else {
1398
+ contentRootElement.classList.remove("modal-open");
1399
+ }
1400
+ }
1401
+ };
1402
+ (0, import_react17.useEffect)(() => {
1403
+ let isOpen = open || defaultOpen;
1404
+ toggleRootzIndex(isOpen);
1405
+ }, [open, defaultOpen]);
1406
+ let handleOpenChange = (open2) => {
1407
+ toggleRootzIndex(open2);
1408
+ onOpenChange?.(open2);
1409
+ };
1410
+ return handleOpenChange;
1411
+ }
1412
+
1413
+ // src/components/modal/index.tsx
1414
+ var Modal = (props) => {
1415
+ let { children, open, defaultOpen, onOpenChange, ...rest } = props;
1416
+ let handleOpenChange = useOpenChangeEffect(props);
1417
+ return /* @__PURE__ */ import_react18.default.createElement(
1418
+ import_react_dialog2.Root,
1419
+ {
1420
+ open,
1421
+ defaultOpen,
1422
+ onOpenChange: handleOpenChange,
1423
+ ...rest
1424
+ },
1425
+ children
1426
+ );
1427
+ };
1428
+ var ModalTrigger = import_react_dialog2.Trigger;
1429
+ var ModalHeader = (0, import_react18.forwardRef)(
1430
+ (props, ref) => {
1431
+ let { children, ...rest } = props;
1432
+ return /* @__PURE__ */ import_react18.default.createElement(StyledTitle, { ref, ...rest, "data-wv-modal-header": true }, children);
1433
+ }
1434
+ );
1435
+ var ModalContent = (0, import_react18.forwardRef)(
1436
+ (props, ref) => {
1437
+ let { children, size, portal, ...rest } = props;
1438
+ let modalContent = /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react18.default.createElement(
1439
+ StyledContent,
1440
+ {
1441
+ ...rest,
1442
+ onCloseAutoFocus: (e) => e.preventDefault(),
1443
+ "data-wv-modal": true,
1444
+ "data-size": size,
1445
+ ref
1446
+ },
1447
+ /* @__PURE__ */ import_react18.default.createElement(ModalClose, null),
1448
+ /* @__PURE__ */ import_react18.default.createElement("div", { className: "wv-modal-content" }, children)
1449
+ ));
1450
+ if (portal) {
1451
+ return /* @__PURE__ */ import_react18.default.createElement(import_react_dialog2.Portal, null, modalContent);
1452
+ }
1453
+ return modalContent;
1454
+ }
1455
+ );
1456
+ ModalContent.defaultProps = {
1457
+ size: "auto",
1458
+ portal: false
1459
+ };
1460
+ var ModalClose = (0, import_react18.forwardRef)(
1461
+ (props, ref) => {
1462
+ let { asChild, children, ...rest } = props;
1463
+ let closeIcon = /* @__PURE__ */ import_react18.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react18.default.createElement(Icon, { name: "X" }));
1464
+ return /* @__PURE__ */ import_react18.default.createElement(import_react_dialog2.Close, { asChild: true, ...rest, ref }, asChild ? children : closeIcon);
1465
+ }
1466
+ );
1467
+
1468
+ // src/components/spinner.tsx
1469
+ var import_react19 = __toESM(require("react"));
1470
+ function Spinner() {
1471
+ return /* @__PURE__ */ import_react19.default.createElement("span", { className: "wv-spinner-wrapper" }, /* @__PURE__ */ import_react19.default.createElement(Icon, { name: "CircleNotch", className: "wv-spinner" }));
1472
+ }
1473
+
1474
+ // src/components/tooltip.tsx
1475
+ var import_react20 = __toESM(require("react"));
1476
+ function Tooltip({ children }) {
1477
+ return /* @__PURE__ */ import_react20.default.createElement("span", { className: "wv-tooltip" }, children);
1478
+ }
1479
+
1480
+ // src/components/slider/index.tsx
1481
+ var import_clsx3 = __toESM(require("clsx"));
1482
+ var import_react23 = require("keen-slider/react");
1483
+ var import_react24 = __toESM(require("react"));
1484
+
1298
1485
  // src/components/slider/arrows.tsx
1486
+ var import_react21 = require("@stitches/react");
1487
+ var import_clsx2 = __toESM(require("clsx"));
1488
+ var import_react22 = __toESM(require("react"));
1299
1489
  function Arrows(props) {
1300
1490
  let { currentSlide, instanceRef, className, icon, offset } = props;
1301
1491
  let isFirst = currentSlide === 0;
@@ -1306,7 +1496,7 @@ function Arrows(props) {
1306
1496
  let style = {
1307
1497
  "--offset": `${offset}px`
1308
1498
  };
1309
- return /* @__PURE__ */ import_react17.default.createElement(StyledArrows, { className, style }, /* @__PURE__ */ import_react17.default.createElement(
1499
+ return /* @__PURE__ */ import_react22.default.createElement(StyledArrows, { className, style }, /* @__PURE__ */ import_react22.default.createElement(
1310
1500
  "button",
1311
1501
  {
1312
1502
  type: "button",
@@ -1316,8 +1506,8 @@ function Arrows(props) {
1316
1506
  instanceRef?.current?.prev();
1317
1507
  }
1318
1508
  },
1319
- /* @__PURE__ */ import_react17.default.createElement(Icon, { name: icon === "caret" ? "CaretLeft" : "ArrowLeft" })
1320
- ), /* @__PURE__ */ import_react17.default.createElement(
1509
+ /* @__PURE__ */ import_react22.default.createElement(Icon, { name: icon === "caret" ? "CaretLeft" : "ArrowLeft" })
1510
+ ), /* @__PURE__ */ import_react22.default.createElement(
1321
1511
  "button",
1322
1512
  {
1323
1513
  type: "button",
@@ -1327,10 +1517,10 @@ function Arrows(props) {
1327
1517
  instanceRef?.current?.next();
1328
1518
  }
1329
1519
  },
1330
- /* @__PURE__ */ import_react17.default.createElement(Icon, { name: icon === "caret" ? "CaretRight" : "ArrowRight" })
1520
+ /* @__PURE__ */ import_react22.default.createElement(Icon, { name: icon === "caret" ? "CaretRight" : "ArrowRight" })
1331
1521
  ));
1332
1522
  }
1333
- var StyledArrows = (0, import_react16.styled)("div", {
1523
+ var StyledArrows = (0, import_react21.styled)("div", {
1334
1524
  ".arrow": {
1335
1525
  position: "absolute",
1336
1526
  top: "50%",
@@ -1371,53 +1561,175 @@ var StyledArrows = (0, import_react16.styled)("div", {
1371
1561
  }
1372
1562
  });
1373
1563
 
1374
- // src/components/slider/dots.tsx
1375
- var import_react18 = require("@stitches/react");
1376
- var import_clsx3 = __toESM(require("clsx"));
1377
- var import_react19 = __toESM(require("react"));
1378
- function Dots(props) {
1379
- let { currentSlide, instanceRef, className, absolute, position, color } = props;
1380
- let _className = (0, import_clsx3.default)(
1381
- className,
1382
- absolute && "dots--absolute",
1383
- position && `dots--${position}`,
1384
- color && `dots--${color}`
1385
- );
1386
- return /* @__PURE__ */ import_react19.default.createElement(StyledDots, { className: _className }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1387
- (idx) => {
1388
- let className2 = (0, import_clsx3.default)("dot", currentSlide === idx && "dot--active");
1389
- return /* @__PURE__ */ import_react19.default.createElement(
1390
- "button",
1391
- {
1392
- key: idx,
1393
- type: "button",
1394
- onClick: () => instanceRef.current?.moveToIdx(idx),
1395
- className: className2
1564
+ // src/components/slider/resize-plugin.ts
1565
+ var ResizePlugin = (slider) => {
1566
+ let observer = new ResizeObserver(() => slider.update());
1567
+ slider.on("created", () => {
1568
+ observer.observe(slider.container);
1569
+ });
1570
+ slider.on("destroyed", () => {
1571
+ observer.unobserve(slider.container);
1572
+ });
1573
+ };
1574
+
1575
+ // src/components/slider/index.tsx
1576
+ function Slider(props) {
1577
+ let { children, className, gap, slidesPerView, arrowOffset } = props;
1578
+ let [currentSlide, setCurrentSlide] = (0, import_react24.useState)(0);
1579
+ let [created, setCreated] = (0, import_react24.useState)(false);
1580
+ let [ref, instanceRef] = (0, import_react23.useKeenSlider)(
1581
+ {
1582
+ slides: { perView: slidesPerView, spacing: gap },
1583
+ breakpoints: {
1584
+ "(max-width: 1024px)": {
1585
+ slides: { perView: 3, spacing: gap }
1586
+ },
1587
+ "(max-width: 768px)": {
1588
+ slides: {
1589
+ perView: 1,
1590
+ spacing: 32
1591
+ }
1396
1592
  }
1397
- );
1593
+ },
1594
+ created: () => {
1595
+ setCreated(true);
1596
+ },
1597
+ slideChanged: (slider) => {
1598
+ setCurrentSlide(slider.track.details.rel);
1599
+ }
1600
+ },
1601
+ [ResizePlugin]
1602
+ );
1603
+ let _className = (0, import_clsx3.default)("keen-slider", className);
1604
+ let arrowsClass = (0, import_clsx3.default)(className && `${className}-arrows`);
1605
+ return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", { ref, className: _className }, /* @__PURE__ */ import_react24.default.createElement(
1606
+ "link",
1607
+ {
1608
+ rel: "stylesheet",
1609
+ href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1610
+ }
1611
+ ), children), created && instanceRef?.current && /* @__PURE__ */ import_react24.default.createElement(
1612
+ Arrows,
1613
+ {
1614
+ currentSlide,
1615
+ instanceRef,
1616
+ className: arrowsClass,
1617
+ offset: arrowOffset,
1618
+ icon: "arrow"
1398
1619
  }
1399
1620
  ));
1400
1621
  }
1401
- var StyledDots = (0, import_react18.styled)("div", {
1402
- padding: "10px 0",
1403
- display: "flex",
1404
- justifyContent: "center",
1405
- alignItems: "center",
1406
- gap: "12px",
1407
- "&.dots--absolute": {
1408
- position: "absolute",
1409
- "&.dots--top, &.dots--bottom": { left: 0, right: 0 },
1410
- "&.dots--top": { top: 10 },
1411
- "&.dots--bottom": { bottom: 10 },
1412
- "&.dots--left, &.dots--right": {
1413
- top: 0,
1414
- bottom: 0,
1415
- flexDirection: "column"
1416
- },
1417
- "&.dots--left": { left: 20 },
1418
- "&.dots--right": { right: 20 }
1419
- },
1420
- "&.dots--light": {
1622
+
1623
+ // src/components/background.tsx
1624
+ var import_react25 = require("@stitches/react");
1625
+ var import_react26 = __toESM(require("react"));
1626
+ function Background2(props) {
1627
+ let {
1628
+ backgroundColor,
1629
+ backgroundImage,
1630
+ backgroundFit,
1631
+ backgroundPosition,
1632
+ className
1633
+ } = props;
1634
+ let style = {
1635
+ ["--bg-color"]: backgroundColor,
1636
+ ["--bg-fit"]: backgroundFit,
1637
+ ["--bg-position"]: backgroundPosition
1638
+ };
1639
+ if (backgroundImage || backgroundColor) {
1640
+ return /* @__PURE__ */ import_react26.default.createElement(StyledBackground, { style, className }, backgroundImage && /* @__PURE__ */ import_react26.default.createElement(
1641
+ "img",
1642
+ {
1643
+ width: "100%",
1644
+ height: "100%",
1645
+ "data-blink-src": backgroundImage,
1646
+ alt: "Background"
1647
+ }
1648
+ ));
1649
+ }
1650
+ return null;
1651
+ }
1652
+ var StyledBackground = (0, import_react25.styled)("div", {
1653
+ display: "block !important",
1654
+ position: "absolute",
1655
+ inset: 0,
1656
+ backgroundColor: "var(--bg-color)",
1657
+ img: {
1658
+ objectFit: "var(--bg-fit, cover)",
1659
+ objectPosition: "var(--bg-position, 50% 50%)"
1660
+ }
1661
+ });
1662
+
1663
+ // src/components/overlay.tsx
1664
+ var import_react27 = require("@stitches/react");
1665
+ var import_react28 = __toESM(require("react"));
1666
+ function Overlay3(props) {
1667
+ let { enableOverlay: enabled, overlayOpacity: opacity, className } = props;
1668
+ if (enabled) {
1669
+ return /* @__PURE__ */ import_react28.default.createElement(
1670
+ StyledOverlay2,
1671
+ {
1672
+ className,
1673
+ css: { ["--overlay-opacity"]: opacity / 100 }
1674
+ }
1675
+ );
1676
+ }
1677
+ return null;
1678
+ }
1679
+ var StyledOverlay2 = (0, import_react27.styled)("div", {
1680
+ display: "block !important",
1681
+ position: "absolute",
1682
+ inset: 0,
1683
+ backgroundColor: "rgba(0, 0, 0, var(--overlay-opacity, .3))"
1684
+ });
1685
+
1686
+ // src/components/slider/dots.tsx
1687
+ var import_react29 = require("@stitches/react");
1688
+ var import_clsx4 = __toESM(require("clsx"));
1689
+ var import_react30 = __toESM(require("react"));
1690
+ function Dots(props) {
1691
+ let { currentSlide, instanceRef, className, absolute, position, color } = props;
1692
+ let _className = (0, import_clsx4.default)(
1693
+ className,
1694
+ absolute && "dots--absolute",
1695
+ position && `dots--${position}`,
1696
+ color && `dots--${color}`
1697
+ );
1698
+ return /* @__PURE__ */ import_react30.default.createElement(StyledDots, { className: _className }, [...Array(instanceRef.current?.track.details.slides.length).keys()].map(
1699
+ (idx) => {
1700
+ let className2 = (0, import_clsx4.default)("dot", currentSlide === idx && "dot--active");
1701
+ return /* @__PURE__ */ import_react30.default.createElement(
1702
+ "button",
1703
+ {
1704
+ key: idx,
1705
+ type: "button",
1706
+ onClick: () => instanceRef.current?.moveToIdx(idx),
1707
+ className: className2
1708
+ }
1709
+ );
1710
+ }
1711
+ ));
1712
+ }
1713
+ var StyledDots = (0, import_react29.styled)("div", {
1714
+ padding: "10px 0",
1715
+ display: "flex",
1716
+ justifyContent: "center",
1717
+ alignItems: "center",
1718
+ gap: "12px",
1719
+ "&.dots--absolute": {
1720
+ position: "absolute",
1721
+ "&.dots--top, &.dots--bottom": { left: 0, right: 0 },
1722
+ "&.dots--top": { top: 10 },
1723
+ "&.dots--bottom": { bottom: 10 },
1724
+ "&.dots--left, &.dots--right": {
1725
+ top: 0,
1726
+ bottom: 0,
1727
+ flexDirection: "column"
1728
+ },
1729
+ "&.dots--left": { left: 20 },
1730
+ "&.dots--right": { right: 20 }
1731
+ },
1732
+ "&.dots--light": {
1421
1733
  ".dot": {
1422
1734
  backgroundColor: "#ffffff66",
1423
1735
  "&.dot--active": {
@@ -1443,10 +1755,6 @@ var StyledDots = (0, import_react18.styled)("div", {
1443
1755
  }
1444
1756
  });
1445
1757
 
1446
- // src/elements/slideshow/use-slideshow-configs.ts
1447
- var import_react20 = require("keen-slider/react");
1448
- var import_react21 = __toESM(require("react"));
1449
-
1450
1758
  // src/components/slider/autoplay-plugin.ts
1451
1759
  function AutoplayPlugin(changeSlidesEvery) {
1452
1760
  return (slider) => {
@@ -1480,28 +1788,161 @@ function AutoplayPlugin(changeSlidesEvery) {
1480
1788
  };
1481
1789
  }
1482
1790
 
1483
- // src/components/slider/resize-plugin.ts
1484
- var ResizePlugin = (slider) => {
1485
- let observer = new ResizeObserver(() => slider.update());
1486
- slider.on("created", () => {
1487
- observer.observe(slider.container);
1488
- });
1489
- slider.on("destroyed", () => {
1490
- observer.unobserve(slider.container);
1491
- });
1791
+ // src/components/placeholder.tsx
1792
+ var import_react31 = __toESM(require("react"));
1793
+ var Placeholder = (0, import_react31.forwardRef)(
1794
+ (props, ref) => {
1795
+ let { element, className, children, ...rest } = props;
1796
+ return /* @__PURE__ */ import_react31.default.createElement("div", { "data-wv-placeholder": true, ref, className, ...rest }, /* @__PURE__ */ import_react31.default.createElement("div", { style: { fontWeight: 600, marginBottom: "10px" } }, element), /* @__PURE__ */ import_react31.default.createElement("div", null, children));
1797
+ }
1798
+ );
1799
+ var placeholder_default = Placeholder;
1800
+
1801
+ // src/components/index.ts
1802
+ var Components = {
1803
+ Background: Background2,
1804
+ Icon,
1805
+ ModalComponents: modal_exports,
1806
+ Overlay: Overlay3,
1807
+ Placeholder: placeholder_default,
1808
+ Spinner,
1809
+ Slider,
1810
+ Tooltip
1811
+ };
1812
+ var SliderComponents = {
1813
+ Arrows,
1814
+ Dots,
1815
+ ResizePlugin,
1816
+ AutoplayPlugin
1492
1817
  };
1493
1818
 
1819
+ // src/elements/instagram.tsx
1820
+ var Instagram = (0, import_react32.forwardRef)(
1821
+ (props, ref) => {
1822
+ let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
1823
+ let [media, setMedia] = (0, import_react32.useState)([]);
1824
+ let [error, setError] = (0, import_react32.useState)(null);
1825
+ (0, import_react32.useEffect)(() => {
1826
+ if (token) {
1827
+ let params = new URLSearchParams({
1828
+ access_token: token,
1829
+ fields: "id,media_type,caption,media_url,permalink,thumbnail_url"
1830
+ });
1831
+ fetch(`${INSTAGRAM_API}/me/media?${params.toString()}`).then((res) => res.json()).then((res) => {
1832
+ if (res.error) {
1833
+ setError(res);
1834
+ } else {
1835
+ setError(null);
1836
+ setMedia([...res.data]);
1837
+ }
1838
+ }).catch(setError);
1839
+ }
1840
+ }, [token]);
1841
+ if (!token || error) {
1842
+ return /* @__PURE__ */ import_react32.default.createElement("div", { ref, ...rest }, /* @__PURE__ */ import_react32.default.createElement(Components.Placeholder, { element: "Instagram" }, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
1843
+ }
1844
+ let style = {
1845
+ "--wv-ig-images-per-row": imagesPerRow,
1846
+ "--wv-ig-images-gap": gap + "px"
1847
+ };
1848
+ return /* @__PURE__ */ import_react32.default.createElement("div", { ref, ...rest, style }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "wv-ig-media-container" }, media.slice(0, numberOfImages).map((item) => {
1849
+ let {
1850
+ id,
1851
+ permalink,
1852
+ caption,
1853
+ media_url,
1854
+ media_type,
1855
+ thumbnail_url
1856
+ } = item;
1857
+ if (media_type === "VIDEO") {
1858
+ return /* @__PURE__ */ import_react32.default.createElement("video", { key: id, controls: true, poster: thumbnail_url }, /* @__PURE__ */ import_react32.default.createElement("source", { src: media_url, type: "video/mp4" }));
1859
+ }
1860
+ return /* @__PURE__ */ import_react32.default.createElement("a", { key: id, href: permalink, target: "_blank", rel: "noreferrer" }, /* @__PURE__ */ import_react32.default.createElement("img", { alt: caption, src: media_url }));
1861
+ })));
1862
+ }
1863
+ );
1864
+ var css9 = {
1865
+ // '@desktop': {
1866
+ // '.wv-ig-media-container': {
1867
+ // overflow: 'hidden',
1868
+ // maxWidth: '100%',
1869
+ // maxHeight: '100%',
1870
+ // display: 'grid',
1871
+ // gridTemplateColumns: 'repeat(var(--wv-ig-images-per-row, 4), 1fr)',
1872
+ // gap: 'var(--wv-ig-images-gap, 0px)',
1873
+ // img: {
1874
+ // // aspectRatio: '1 / 1',
1875
+ // maxWidth: '100%',
1876
+ // maxHeight: '100%',
1877
+ // objectFit: 'cover',
1878
+ // },
1879
+ // },
1880
+ // },
1881
+ };
1882
+ var permanentCss = {
1883
+ "@desktop": {
1884
+ ".wv-ig-media-container": {
1885
+ overflow: "hidden",
1886
+ maxWidth: "100%",
1887
+ maxHeight: "100%",
1888
+ display: "grid",
1889
+ gridTemplateColumns: "repeat(var(--wv-ig-images-per-row, 4), 1fr)",
1890
+ gap: "var(--wv-ig-images-gap, 0px)",
1891
+ img: {
1892
+ // aspectRatio: '1 / 1',
1893
+ maxWidth: "100%",
1894
+ maxHeight: "100%",
1895
+ objectFit: "cover"
1896
+ },
1897
+ video: {
1898
+ width: "100%",
1899
+ height: "100%"
1900
+ }
1901
+ }
1902
+ },
1903
+ "@mobile": {
1904
+ ".wv-ig-media-container": {
1905
+ overflowX: "auto",
1906
+ display: "flex",
1907
+ scrollSnapType: "x mandatory"
1908
+ },
1909
+ ".wv-ig-media-container a": {
1910
+ scrollSnapAlign: "start",
1911
+ flexGrow: 0,
1912
+ flexShrink: 0,
1913
+ flexBasis: "100%"
1914
+ }
1915
+ }
1916
+ };
1917
+ Instagram.defaultProps = {
1918
+ token: "",
1919
+ username: "",
1920
+ numberOfImages: 8,
1921
+ imagesPerRow: 4,
1922
+ gap: 0
1923
+ };
1924
+ var instagram_default = Instagram;
1925
+
1926
+ // src/elements/slideshow/index.tsx
1927
+ var import_react35 = require("@stitches/react");
1928
+ var import_clsx6 = __toESM(require("clsx"));
1929
+ var import_react36 = __toESM(require("react"));
1930
+
1931
+ // src/elements/slideshow/use-slideshow-configs.ts
1932
+ var import_react33 = require("keen-slider/react");
1933
+ var import_react34 = __toESM(require("react"));
1934
+
1494
1935
  // src/utils/css.ts
1495
- var import_clsx4 = __toESM(require("clsx"));
1496
- function formatCSS(css11) {
1936
+ var import_clsx5 = __toESM(require("clsx"));
1937
+ function formatCSS(css12) {
1497
1938
  return {
1498
- "@desktop": css11["@desktop"],
1499
- "@mobile": css11["@mobile"]
1939
+ "@desktop": css12["@desktop"],
1940
+ "@mobile": css12["@mobile"]
1500
1941
  };
1501
1942
  }
1502
1943
  var permanentClasses = {};
1503
1944
  function generateItemClassName(instance, stitchesInstance) {
1504
- let { css: css11, type, className: cls = "" } = instance.data;
1945
+ let { css: css12, type, className: cls = "" } = instance.data;
1505
1946
  let className = "";
1506
1947
  let permanentClass = "";
1507
1948
  let perCss = instance.Element?.permanentCss;
@@ -1515,12 +1956,12 @@ function generateItemClassName(instance, stitchesInstance) {
1515
1956
  }
1516
1957
  }
1517
1958
  className = permanentClass;
1518
- if (css11) {
1519
- let formattedCss = formatCSS(css11);
1959
+ if (css12) {
1960
+ let formattedCss = formatCSS(css12);
1520
1961
  let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
1521
1962
  let { stitchesClass } = instance;
1522
1963
  let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
1523
- className = (0, import_clsx4.default)(permanentClass, cls, newStitchesClass, otherClass);
1964
+ className = (0, import_clsx5.default)(permanentClass, cls, newStitchesClass, otherClass);
1524
1965
  instance.stitchesClass = newStitchesClass;
1525
1966
  }
1526
1967
  return className;
@@ -1549,19 +1990,19 @@ function useSlideshowConfigs(props) {
1549
1990
  changeSlidesEvery,
1550
1991
  children
1551
1992
  } = props;
1552
- let { isDesignMode, isPreviewMode } = (0, import_react21.useContext)(WeaverseContext);
1553
- let [opacities, setOpacities] = import_react21.default.useState([]);
1554
- let [cssLoaded, setCssLoaded] = (0, import_react21.useState)(false);
1555
- let [created, setCreated] = (0, import_react21.useState)(false);
1556
- let [ready, setReady] = (0, import_react21.useState)(false);
1557
- let [currentSlide, setCurrentSlide] = (0, import_react21.useState)(0);
1993
+ let { isDesignMode, isPreviewMode } = (0, import_react34.useContext)(WeaverseContext);
1994
+ let [opacities, setOpacities] = import_react34.default.useState([]);
1995
+ let [cssLoaded, setCssLoaded] = (0, import_react34.useState)(false);
1996
+ let [created, setCreated] = (0, import_react34.useState)(false);
1997
+ let [ready, setReady] = (0, import_react34.useState)(false);
1998
+ let [currentSlide, setCurrentSlide] = (0, import_react34.useState)(0);
1558
1999
  let sliderPlugins = [ResizePlugin];
1559
2000
  if (autoRotate && (isPreviewMode || !isDesignMode)) {
1560
2001
  sliderPlugins.push(AutoplayPlugin(changeSlidesEvery));
1561
2002
  }
1562
- let [sliderRef, instanceRef] = (0, import_react20.useKeenSlider)(
2003
+ let [sliderRef, instanceRef] = (0, import_react33.useKeenSlider)(
1563
2004
  {
1564
- slides: animation === "fade" ? import_react21.default.Children.count(children) : { perView: slidesPerView, number: import_react21.default.Children.count(children) },
2005
+ slides: animation === "fade" ? import_react34.default.Children.count(children) : { perView: slidesPerView, number: import_react34.default.Children.count(children) },
1565
2006
  drag: isPreviewMode || !isDesignMode,
1566
2007
  loop,
1567
2008
  selector: animation === "fade" ? null : ".keen-slider__slide",
@@ -1591,13 +2032,13 @@ function useSlideshowConfigs(props) {
1591
2032
  },
1592
2033
  sliderPlugins
1593
2034
  );
1594
- (0, import_react21.useEffect)(() => {
2035
+ (0, import_react34.useEffect)(() => {
1595
2036
  loadCSS({
1596
2037
  rel: "stylesheet",
1597
2038
  href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
1598
2039
  }).then(() => setCssLoaded(true));
1599
2040
  }, []);
1600
- (0, import_react21.useEffect)(() => {
2041
+ (0, import_react34.useEffect)(() => {
1601
2042
  if (created && cssLoaded) {
1602
2043
  setReady(true);
1603
2044
  }
@@ -1613,7 +2054,7 @@ function useSlideshowConfigs(props) {
1613
2054
  }
1614
2055
 
1615
2056
  // src/elements/slideshow/index.tsx
1616
- var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
2057
+ var Slideshow = (0, import_react36.forwardRef)((props, ref) => {
1617
2058
  let {
1618
2059
  animation,
1619
2060
  showArrows,
@@ -1632,7 +2073,7 @@ var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
1632
2073
  };
1633
2074
  let faderClass = "";
1634
2075
  if (animation === "fade") {
1635
- faderClass = (0, import_react22.css)({
2076
+ faderClass = (0, import_react35.css)({
1636
2077
  ".keen-slider__slide": opacities.reduce((acc, opacity, index) => {
1637
2078
  acc[`&:nth-child(${index + 1})`] = {
1638
2079
  opacity
@@ -1641,16 +2082,16 @@ var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
1641
2082
  }, {})
1642
2083
  })().className;
1643
2084
  }
1644
- let _className = (0, import_clsx5.default)(
2085
+ let _className = (0, import_clsx6.default)(
1645
2086
  faderClass,
1646
2087
  animation === "slide" ? "keen-slider" : "keen-fader"
1647
2088
  );
1648
- let arrowsClass = (0, import_clsx5.default)(
2089
+ let arrowsClass = (0, import_clsx6.default)(
1649
2090
  "wv-slideshow--arrows",
1650
2091
  showArrowsOnHover && "show-on-hover",
1651
2092
  `arrows--${arrowsColor}`
1652
2093
  );
1653
- return /* @__PURE__ */ import_react23.default.createElement("div", { ref, style, ...rest }, /* @__PURE__ */ import_react23.default.createElement("div", { ref: sliderRef, className: _className }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ import_react23.default.createElement(
2094
+ return /* @__PURE__ */ import_react36.default.createElement("div", { ref, style, ...rest }, /* @__PURE__ */ import_react36.default.createElement("div", { ref: sliderRef, className: _className }, children), showArrows && created && instanceRef?.current && /* @__PURE__ */ import_react36.default.createElement(
1654
2095
  Arrows,
1655
2096
  {
1656
2097
  instanceRef,
@@ -1659,7 +2100,7 @@ var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
1659
2100
  icon: arrowIcon,
1660
2101
  offset: 20
1661
2102
  }
1662
- ), showDots && created && instanceRef?.current && /* @__PURE__ */ import_react23.default.createElement(
2103
+ ), showDots && created && instanceRef?.current && /* @__PURE__ */ import_react36.default.createElement(
1663
2104
  Dots,
1664
2105
  {
1665
2106
  instanceRef,
@@ -1671,7 +2112,7 @@ var Slideshow = (0, import_react23.forwardRef)((props, ref) => {
1671
2112
  }
1672
2113
  ));
1673
2114
  });
1674
- var css9 = {
2115
+ var css10 = {
1675
2116
  "@desktop": {
1676
2117
  opacity: "var(--slider-opacity, 0)",
1677
2118
  padding: "32px 0",
@@ -1740,80 +2181,7 @@ Slideshow.defaultProps = {
1740
2181
  var slideshow_default = Slideshow;
1741
2182
 
1742
2183
  // src/elements/slideshow/slide.tsx
1743
- var import_react29 = __toESM(require("react"));
1744
-
1745
- // src/components/background.tsx
1746
- var import_react24 = require("@stitches/react");
1747
- var import_react25 = __toESM(require("react"));
1748
- function Background2(props) {
1749
- let {
1750
- backgroundColor,
1751
- backgroundImage,
1752
- backgroundFit,
1753
- backgroundPosition,
1754
- className
1755
- } = props;
1756
- let style = {
1757
- ["--bg-color"]: backgroundColor,
1758
- ["--bg-fit"]: backgroundFit,
1759
- ["--bg-position"]: backgroundPosition
1760
- };
1761
- if (backgroundImage || backgroundColor) {
1762
- return /* @__PURE__ */ import_react25.default.createElement(StyledBackground, { style, className }, backgroundImage && /* @__PURE__ */ import_react25.default.createElement(
1763
- "img",
1764
- {
1765
- width: "100%",
1766
- height: "100%",
1767
- "data-blink-src": backgroundImage,
1768
- alt: "Background"
1769
- }
1770
- ));
1771
- }
1772
- return null;
1773
- }
1774
- var StyledBackground = (0, import_react24.styled)("div", {
1775
- display: "block !important",
1776
- position: "absolute",
1777
- inset: 0,
1778
- backgroundColor: "var(--bg-color)",
1779
- img: {
1780
- objectFit: "var(--bg-fit, cover)",
1781
- objectPosition: "var(--bg-position, 50% 50%)"
1782
- }
1783
- });
1784
-
1785
- // src/components/overlay.tsx
1786
- var import_react26 = require("@stitches/react");
1787
- var import_react27 = __toESM(require("react"));
1788
- function Overlay2(props) {
1789
- let { enableOverlay: enabled, overlayOpacity: opacity, className } = props;
1790
- if (enabled) {
1791
- return /* @__PURE__ */ import_react27.default.createElement(
1792
- StyledOverlay,
1793
- {
1794
- className,
1795
- css: { ["--overlay-opacity"]: opacity / 100 }
1796
- }
1797
- );
1798
- }
1799
- return null;
1800
- }
1801
- var StyledOverlay = (0, import_react26.styled)("div", {
1802
- display: "block !important",
1803
- position: "absolute",
1804
- inset: 0,
1805
- backgroundColor: "rgba(0, 0, 0, var(--overlay-opacity, .3))"
1806
- });
1807
-
1808
- // src/components/placeholder.tsx
1809
- var import_react28 = __toESM(require("react"));
1810
- var Placeholder = (0, import_react28.forwardRef)(
1811
- (props, ref) => {
1812
- let { element, className, children, ...rest } = props;
1813
- return /* @__PURE__ */ import_react28.default.createElement("div", { "data-wv-placeholder": true, ref, className, ...rest }, /* @__PURE__ */ import_react28.default.createElement("div", { style: { fontWeight: 600, marginBottom: "10px" } }, element), /* @__PURE__ */ import_react28.default.createElement("div", null, children));
1814
- }
1815
- );
1816
- var placeholder_default = Placeholder;
2184
+ var import_react37 = __toESM(require("react"));
1817
2185
 
1818
2186
  // src/elements/slideshow/position.ts
1819
2187
  var slidePositionMap = {
@@ -1856,7 +2224,7 @@ var slidePositionMap = {
1856
2224
  };
1857
2225
 
1858
2226
  // src/elements/slideshow/slide.tsx
1859
- var Slide = (0, import_react29.forwardRef)((props, ref) => {
2227
+ var Slide = (0, import_react37.forwardRef)((props, ref) => {
1860
2228
  let {
1861
2229
  contentPosition,
1862
2230
  backgroundColor,
@@ -1868,7 +2236,7 @@ var Slide = (0, import_react29.forwardRef)((props, ref) => {
1868
2236
  children,
1869
2237
  ...rest
1870
2238
  } = props;
1871
- return /* @__PURE__ */ import_react29.default.createElement("div", { className: "keen-slider__slide" }, /* @__PURE__ */ import_react29.default.createElement(
2239
+ return /* @__PURE__ */ import_react37.default.createElement("div", { className: "keen-slider__slide" }, /* @__PURE__ */ import_react37.default.createElement(
1872
2240
  Background2,
1873
2241
  {
1874
2242
  backgroundColor,
@@ -1877,16 +2245,16 @@ var Slide = (0, import_react29.forwardRef)((props, ref) => {
1877
2245
  backgroundPosition,
1878
2246
  className: "slide-background"
1879
2247
  }
1880
- ), /* @__PURE__ */ import_react29.default.createElement(
1881
- Overlay2,
2248
+ ), /* @__PURE__ */ import_react37.default.createElement(
2249
+ Overlay3,
1882
2250
  {
1883
2251
  enableOverlay,
1884
2252
  overlayOpacity,
1885
2253
  className: "slide-overlay"
1886
2254
  }
1887
- ), /* @__PURE__ */ import_react29.default.createElement("div", { ref, style: slidePositionMap[contentPosition], ...rest }, children?.length ? children : /* @__PURE__ */ import_react29.default.createElement(placeholder_default, { element: "Slide", className: "wv-slide-placeholder" }, "Drag and drop elements here")));
2255
+ ), /* @__PURE__ */ import_react37.default.createElement("div", { ref, style: slidePositionMap[contentPosition], ...rest }, children?.length ? children : /* @__PURE__ */ import_react37.default.createElement(placeholder_default, { element: "Slide", className: "wv-slide-placeholder" }, "Drag and drop elements here")));
1888
2256
  });
1889
- var css10 = {
2257
+ var css11 = {
1890
2258
  "@desktop": {
1891
2259
  position: "relative",
1892
2260
  height: "100%",
@@ -1933,12 +2301,12 @@ var Elements = {
1933
2301
  type: "image",
1934
2302
  defaultCss: css4
1935
2303
  },
1936
- // Instagram: {
1937
- // Component: Instagram.default,
1938
- // type: 'instagram',
1939
- // defaultCss: Instagram.css,
1940
- // permanentCss: Instagram.permanentCss,
1941
- // },
2304
+ Instagram: {
2305
+ Component: instagram_default,
2306
+ type: "instagram",
2307
+ defaultCss: css9,
2308
+ permanentCss
2309
+ },
1942
2310
  Layout: {
1943
2311
  Component: layout_default,
1944
2312
  type: "layout",
@@ -1987,12 +2355,12 @@ var Elements = {
1987
2355
  Slideshow: {
1988
2356
  Component: slideshow_default,
1989
2357
  type: "slideshow",
1990
- defaultCss: css9
2358
+ defaultCss: css10
1991
2359
  },
1992
2360
  Slide: {
1993
2361
  Component: slide_default,
1994
2362
  type: "slide",
1995
- defaultCss: css10
2363
+ defaultCss: css11
1996
2364
  }
1997
2365
  };
1998
2366
 
@@ -2034,275 +2402,18 @@ var createRootContext = (configs) => {
2034
2402
  });
2035
2403
  return rootContext;
2036
2404
  };
2037
- var WeaverseContext = (0, import_react30.createContext)({});
2405
+ var WeaverseContext = (0, import_react38.createContext)({});
2038
2406
  var WeaverseContextProvider = WeaverseContext.Provider;
2039
2407
  var WeaverseContextConsumer = WeaverseContext.Consumer;
2040
2408
 
2041
- // src/components/modal/index.tsx
2042
- var modal_exports = {};
2043
- __export(modal_exports, {
2044
- Modal: () => Modal,
2045
- ModalClose: () => ModalClose,
2046
- ModalContent: () => ModalContent,
2047
- ModalHeader: () => ModalHeader,
2048
- ModalTrigger: () => ModalTrigger
2049
- });
2050
- var import_react_dialog2 = require("@radix-ui/react-dialog");
2051
- var import_react33 = __toESM(require("react"));
2052
-
2053
- // src/components/modal/styled.ts
2054
- var import_react_dialog = require("@radix-ui/react-dialog");
2055
- var import_react31 = require("@stitches/react");
2056
- var overlayShow = (0, import_react31.keyframes)({
2057
- "0%": { opacity: 0 },
2058
- "100%": { opacity: 1 }
2059
- });
2060
- var contentShow = (0, import_react31.keyframes)({
2061
- "0%": { opacity: 0, transform: "translate(-50%, -48%) scale(.96)" },
2062
- "100%": { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }
2063
- });
2064
- var StyledOverlay2 = (0, import_react31.styled)(import_react_dialog.Overlay, {
2065
- display: "block !important",
2066
- backgroundColor: "rgba(0, 0, 0, .3)",
2067
- position: "fixed",
2068
- zIndex: 99999,
2069
- inset: 0,
2070
- animation: `${overlayShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`
2071
- });
2072
- var StyledTitle = (0, import_react31.styled)(import_react_dialog.Title, {
2073
- margin: "0 0 24px",
2074
- fontWeight: 500,
2075
- fontSize: 24,
2076
- "@media (max-width: 768px)": {
2077
- margin: "0 0 16px",
2078
- fontSize: 20
2079
- }
2080
- });
2081
- var StyledContent = (0, import_react31.styled)(import_react_dialog.Content, {
2082
- backgroundColor: "white",
2083
- borderRadius: 6,
2084
- boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
2085
- position: "fixed",
2086
- top: "50%",
2087
- left: "50%",
2088
- transform: "translate(-50%, -50%)",
2089
- padding: 24,
2090
- animation: `${contentShow} 300ms cubic-bezier(0.16, 1, 0.3, 1)`,
2091
- zIndex: 99999,
2092
- maxWidth: "90vw",
2093
- width: "auto",
2094
- "*": {
2095
- maxWidth: "100%"
2096
- },
2097
- "&:focus": { outline: "none" },
2098
- '&[data-size="fullscreen"]': {
2099
- width: "100vw",
2100
- height: "100vh",
2101
- maxWidth: "100vw",
2102
- borderRadius: 0
2103
- },
2104
- "@media (max-width: 768px)": {
2105
- width: "90vw",
2106
- padding: 12,
2107
- '&[data-size="fullscreen"]': {
2108
- width: "100vw"
2109
- }
2110
- }
2111
- });
2112
- var StyledCloseIcon = (0, import_react31.styled)("button", {
2113
- all: "unset",
2114
- cursor: "pointer",
2115
- fontFamily: "inherit",
2116
- borderRadius: "100%",
2117
- height: 32,
2118
- width: 32,
2119
- padding: 4,
2120
- display: "inline-flex",
2121
- alignItems: "center",
2122
- justifyContent: "center",
2123
- color: "rgb(55, 65, 81)",
2124
- position: "absolute",
2125
- top: 8,
2126
- right: 8,
2127
- "&:hover": {
2128
- backgroundColor: "rgba(112, 112, 112, .1)"
2129
- },
2130
- svg: {
2131
- width: 24,
2132
- height: 24
2133
- }
2134
- });
2135
-
2136
- // src/components/modal/use-open-change-effect.ts
2137
- var import_react32 = require("react");
2138
- function useOpenChangeEffect(props) {
2139
- let { open, defaultOpen, onOpenChange } = props;
2140
- let rootCtx = (0, import_react32.useContext)(WeaverseContext);
2141
- let toggleRootzIndex = (open2) => {
2142
- let { contentRootElement } = rootCtx;
2143
- if (contentRootElement) {
2144
- if (open2) {
2145
- contentRootElement.classList.add("modal-open");
2146
- } else {
2147
- contentRootElement.classList.remove("modal-open");
2148
- }
2149
- }
2150
- };
2151
- (0, import_react32.useEffect)(() => {
2152
- let isOpen = open || defaultOpen;
2153
- toggleRootzIndex(isOpen);
2154
- }, [open, defaultOpen]);
2155
- let handleOpenChange = (open2) => {
2156
- toggleRootzIndex(open2);
2157
- onOpenChange?.(open2);
2158
- };
2159
- return handleOpenChange;
2160
- }
2161
-
2162
- // src/components/modal/index.tsx
2163
- var Modal = (props) => {
2164
- let { children, open, defaultOpen, onOpenChange, ...rest } = props;
2165
- let handleOpenChange = useOpenChangeEffect(props);
2166
- return /* @__PURE__ */ import_react33.default.createElement(
2167
- import_react_dialog2.Root,
2168
- {
2169
- open,
2170
- defaultOpen,
2171
- onOpenChange: handleOpenChange,
2172
- ...rest
2173
- },
2174
- children
2175
- );
2176
- };
2177
- var ModalTrigger = import_react_dialog2.Trigger;
2178
- var ModalHeader = (0, import_react33.forwardRef)(
2179
- (props, ref) => {
2180
- let { children, ...rest } = props;
2181
- return /* @__PURE__ */ import_react33.default.createElement(StyledTitle, { ref, ...rest, "data-wv-modal-header": true }, children);
2182
- }
2183
- );
2184
- var ModalContent = (0, import_react33.forwardRef)(
2185
- (props, ref) => {
2186
- let { children, size, portal, ...rest } = props;
2187
- let modalContent = /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, /* @__PURE__ */ import_react33.default.createElement(StyledOverlay2, null), /* @__PURE__ */ import_react33.default.createElement(
2188
- StyledContent,
2189
- {
2190
- ...rest,
2191
- onCloseAutoFocus: (e) => e.preventDefault(),
2192
- "data-wv-modal": true,
2193
- "data-size": size,
2194
- ref
2195
- },
2196
- /* @__PURE__ */ import_react33.default.createElement(ModalClose, null),
2197
- /* @__PURE__ */ import_react33.default.createElement("div", { className: "wv-modal-content" }, children)
2198
- ));
2199
- if (portal) {
2200
- return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Portal, null, modalContent);
2201
- }
2202
- return modalContent;
2203
- }
2204
- );
2205
- ModalContent.defaultProps = {
2206
- size: "auto",
2207
- portal: false
2208
- };
2209
- var ModalClose = (0, import_react33.forwardRef)(
2210
- (props, ref) => {
2211
- let { asChild, children, ...rest } = props;
2212
- let closeIcon = /* @__PURE__ */ import_react33.default.createElement(StyledCloseIcon, null, /* @__PURE__ */ import_react33.default.createElement(Icon, { name: "X" }));
2213
- return /* @__PURE__ */ import_react33.default.createElement(import_react_dialog2.Close, { asChild: true, ...rest, ref }, asChild ? children : closeIcon);
2214
- }
2215
- );
2216
-
2217
- // src/components/spinner.tsx
2218
- var import_react34 = __toESM(require("react"));
2219
- function Spinner() {
2220
- return /* @__PURE__ */ import_react34.default.createElement("span", { className: "wv-spinner-wrapper" }, /* @__PURE__ */ import_react34.default.createElement(Icon, { name: "CircleNotch", className: "wv-spinner" }));
2221
- }
2222
-
2223
- // src/components/tooltip.tsx
2224
- var import_react35 = __toESM(require("react"));
2225
- function Tooltip({ children }) {
2226
- return /* @__PURE__ */ import_react35.default.createElement("span", { className: "wv-tooltip" }, children);
2227
- }
2228
-
2229
- // src/components/slider/index.tsx
2230
- var import_clsx6 = __toESM(require("clsx"));
2231
- var import_react36 = require("keen-slider/react");
2232
- var import_react37 = __toESM(require("react"));
2233
- function Slider(props) {
2234
- let { children, className, gap, slidesPerView, arrowOffset } = props;
2235
- let [currentSlide, setCurrentSlide] = (0, import_react37.useState)(0);
2236
- let [created, setCreated] = (0, import_react37.useState)(false);
2237
- let [ref, instanceRef] = (0, import_react36.useKeenSlider)(
2238
- {
2239
- slides: { perView: slidesPerView, spacing: gap },
2240
- breakpoints: {
2241
- "(max-width: 1024px)": {
2242
- slides: { perView: 3, spacing: gap }
2243
- },
2244
- "(max-width: 768px)": {
2245
- slides: {
2246
- perView: 1,
2247
- spacing: 32
2248
- }
2249
- }
2250
- },
2251
- created: () => {
2252
- setCreated(true);
2253
- },
2254
- slideChanged: (slider) => {
2255
- setCurrentSlide(slider.track.details.rel);
2256
- }
2257
- },
2258
- [ResizePlugin]
2259
- );
2260
- let _className = (0, import_clsx6.default)("keen-slider", className);
2261
- let arrowsClass = (0, import_clsx6.default)(className && `${className}-arrows`);
2262
- return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement("div", { ref, className: _className }, /* @__PURE__ */ import_react37.default.createElement(
2263
- "link",
2264
- {
2265
- rel: "stylesheet",
2266
- href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
2267
- }
2268
- ), children), created && instanceRef?.current && /* @__PURE__ */ import_react37.default.createElement(
2269
- Arrows,
2270
- {
2271
- currentSlide,
2272
- instanceRef,
2273
- className: arrowsClass,
2274
- offset: arrowOffset,
2275
- icon: "arrow"
2276
- }
2277
- ));
2278
- }
2279
-
2280
- // src/components/index.ts
2281
- var Components = {
2282
- Background: Background2,
2283
- Icon,
2284
- ModalComponents: modal_exports,
2285
- Overlay: Overlay2,
2286
- Placeholder: placeholder_default,
2287
- Spinner,
2288
- Slider,
2289
- Tooltip
2290
- };
2291
- var SliderComponents = {
2292
- Arrows,
2293
- Dots,
2294
- ResizePlugin,
2295
- AutoplayPlugin
2296
- };
2297
-
2298
2409
  // src/renderer.tsx
2299
2410
  var import_core3 = require("@weaverse/core");
2300
- var import_react38 = __toESM(require("react"));
2411
+ var import_react39 = __toESM(require("react"));
2301
2412
  var WeaverseRoot = ({ context }) => {
2302
- let [, setData] = (0, import_react38.useState)(context.data);
2303
- let rootRef = (0, import_react38.useRef)();
2413
+ let [, setData] = (0, import_react39.useState)(context.data);
2414
+ let rootRef = (0, import_react39.useRef)();
2304
2415
  let renderRoot = () => setData({});
2305
- (0, import_react38.useEffect)(() => {
2416
+ (0, import_react39.useEffect)(() => {
2306
2417
  context.subscribe(renderRoot);
2307
2418
  context.contentRootElement = rootRef.current;
2308
2419
  initUploadCareAdaptiveDelivery(context.weaverseHost);
@@ -2313,24 +2424,24 @@ var WeaverseRoot = ({ context }) => {
2313
2424
  let eventHandlers = context?.studioBridge?.eventHandlers || {};
2314
2425
  let themeClass = context.stitchesInstance.theme.className;
2315
2426
  if (context.data?.rootId) {
2316
- return /* @__PURE__ */ import_react38.default.createElement(
2427
+ return /* @__PURE__ */ import_react39.default.createElement(
2317
2428
  "div",
2318
2429
  {
2319
2430
  className: `weaverse-content-root ${themeClass}`,
2320
2431
  ...eventHandlers,
2321
2432
  ref: rootRef
2322
2433
  },
2323
- /* @__PURE__ */ import_react38.default.createElement(WeaverseContextProvider, { value: context }, /* @__PURE__ */ import_react38.default.createElement(ItemInstance, { id: context.data.rootId })),
2324
- context.platformType === "react-ssr" ? /* @__PURE__ */ import_react38.default.createElement(StitchesSSR, { stitchesInstance: context.stitchesInstance }) : null
2434
+ /* @__PURE__ */ import_react39.default.createElement(WeaverseContextProvider, { value: context }, /* @__PURE__ */ import_react39.default.createElement(ItemInstance, { id: context.data.rootId })),
2435
+ context.platformType === "react-ssr" ? /* @__PURE__ */ import_react39.default.createElement(StitchesSSR, { stitchesInstance: context.stitchesInstance }) : null
2325
2436
  );
2326
2437
  }
2327
2438
  return null;
2328
2439
  };
2329
2440
  var ItemComponent = ({ instance }) => {
2330
- let { stitchesInstance, elementInstances } = (0, import_react38.useContext)(WeaverseContext);
2331
- let [data, setData] = (0, import_react38.useState)(instance.data);
2332
- let { id, type, childIds = [], css: css11, className, ...rest } = data;
2333
- (0, import_react38.useEffect)(() => {
2441
+ let { stitchesInstance, elementInstances } = (0, import_react39.useContext)(WeaverseContext);
2442
+ let [data, setData] = (0, import_react39.useState)(instance.data);
2443
+ let { id, type, childIds = [], css: css12, className, ...rest } = data;
2444
+ (0, import_react39.useEffect)(() => {
2334
2445
  let render = (data2) => setData({ ...data2 });
2335
2446
  instance.subscribe(render);
2336
2447
  if (import_core3.isBrowser && !instance.ref.current) {
@@ -2346,7 +2457,7 @@ var ItemComponent = ({ instance }) => {
2346
2457
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
2347
2458
  rest.ref = instance.ref;
2348
2459
  }
2349
- return /* @__PURE__ */ import_react38.default.createElement(
2460
+ return /* @__PURE__ */ import_react39.default.createElement(
2350
2461
  Component,
2351
2462
  {
2352
2463
  key: id,
@@ -2355,7 +2466,7 @@ var ItemComponent = ({ instance }) => {
2355
2466
  className: generateItemClassName(instance, stitchesInstance),
2356
2467
  ...rest
2357
2468
  },
2358
- childIds.map((id2) => /* @__PURE__ */ import_react38.default.createElement(ItemInstance, { key: id2, id: id2 }))
2469
+ childIds.map((id2) => /* @__PURE__ */ import_react39.default.createElement(ItemInstance, { key: id2, id: id2 }))
2359
2470
  );
2360
2471
  } else {
2361
2472
  console.log(`Unknown element: ${type}`);
@@ -2364,7 +2475,7 @@ var ItemComponent = ({ instance }) => {
2364
2475
  };
2365
2476
  var StitchesSSR = ({ stitchesInstance }) => {
2366
2477
  const stitchesCss2 = stitchesInstance.getCssText();
2367
- return /* @__PURE__ */ import_react38.default.createElement(
2478
+ return /* @__PURE__ */ import_react39.default.createElement(
2368
2479
  "style",
2369
2480
  {
2370
2481
  id: "stitches",
@@ -2375,13 +2486,13 @@ var StitchesSSR = ({ stitchesInstance }) => {
2375
2486
  );
2376
2487
  };
2377
2488
  var ItemInstance = ({ id }) => {
2378
- let context = (0, import_react38.useContext)(WeaverseContext);
2489
+ let context = (0, import_react39.useContext)(WeaverseContext);
2379
2490
  let { itemInstances } = context;
2380
2491
  let instance = itemInstances.get(id);
2381
2492
  if (!instance) {
2382
- return /* @__PURE__ */ import_react38.default.createElement("div", { style: { display: "none" } }, "Item instance ", id, " not found");
2493
+ return /* @__PURE__ */ import_react39.default.createElement("div", { style: { display: "none" } }, "Item instance ", id, " not found");
2383
2494
  }
2384
- return /* @__PURE__ */ import_react38.default.createElement(ItemComponent, { key: id, instance });
2495
+ return /* @__PURE__ */ import_react39.default.createElement(ItemComponent, { key: id, instance });
2385
2496
  };
2386
2497
  // Annotate the CommonJS export names for ESM import in node:
2387
2498
  0 && (module.exports = {