glide-react 1.0.0 → 2.0.1
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/README.md +19 -0
- package/dist/glide-theme.css +42 -0
- package/dist/glide.css +108 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +241 -102
- package/dist/index.mjs +241 -102
- package/package.json +18 -3
package/dist/index.mjs
CHANGED
|
@@ -503,10 +503,12 @@ var calculateSlideWidth = (listWidth, slidesToShow, centerMode, centerPadding, v
|
|
|
503
503
|
let centerPaddingAdj = 0;
|
|
504
504
|
if (centerMode) {
|
|
505
505
|
const paddingValue = parseInt(centerPadding, 10) || 0;
|
|
506
|
-
centerPaddingAdj = paddingValue * 2;
|
|
507
506
|
if (centerPadding.endsWith("%")) {
|
|
508
|
-
centerPaddingAdj = listWidth * paddingValue
|
|
507
|
+
centerPaddingAdj = listWidth * paddingValue / 100;
|
|
508
|
+
} else {
|
|
509
|
+
centerPaddingAdj = paddingValue;
|
|
509
510
|
}
|
|
511
|
+
centerPaddingAdj = centerPaddingAdj * 2;
|
|
510
512
|
}
|
|
511
513
|
return Math.ceil((listWidth - centerPaddingAdj) / slidesToShow);
|
|
512
514
|
};
|
|
@@ -591,6 +593,9 @@ var getSlideStyle = (spec) => {
|
|
|
591
593
|
if (!spec.variableWidth) {
|
|
592
594
|
style.width = spec.slideWidth;
|
|
593
595
|
}
|
|
596
|
+
if (spec.vertical && spec.slideHeight) {
|
|
597
|
+
style.height = spec.slideHeight;
|
|
598
|
+
}
|
|
594
599
|
if (spec.fade) {
|
|
595
600
|
style.position = "relative";
|
|
596
601
|
if (spec.vertical) {
|
|
@@ -599,7 +604,7 @@ var getSlideStyle = (spec) => {
|
|
|
599
604
|
style.left = -spec.index * spec.slideWidth;
|
|
600
605
|
}
|
|
601
606
|
style.opacity = spec.currentSlide === spec.index ? 1 : 0;
|
|
602
|
-
style.zIndex = spec.currentSlide === spec.index ?
|
|
607
|
+
style.zIndex = spec.currentSlide === spec.index ? 1 : 0;
|
|
603
608
|
if (spec.useCSS) {
|
|
604
609
|
style.transition = `opacity ${spec.speed}ms ${spec.cssEase}, visibility ${spec.speed}ms ${spec.cssEase}`;
|
|
605
610
|
}
|
|
@@ -855,7 +860,7 @@ var Track = forwardRef(function Track2({
|
|
|
855
860
|
const baseTrackStyle = {
|
|
856
861
|
position: "relative",
|
|
857
862
|
display: fade ? "block" : "flex",
|
|
858
|
-
flexDirection: vertical ? "column" : "row",
|
|
863
|
+
...fade ? {} : { flexDirection: vertical ? "column" : "row" },
|
|
859
864
|
...trackStyle
|
|
860
865
|
};
|
|
861
866
|
return /* @__PURE__ */ jsx(
|
|
@@ -875,7 +880,7 @@ var Track = forwardRef(function Track2({
|
|
|
875
880
|
// src/components/Arrows.tsx
|
|
876
881
|
import { cloneElement as cloneElement2, isValidElement as isValidElement2 } from "react";
|
|
877
882
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
878
|
-
var PrevArrowSVG = ({ className }) => /* @__PURE__ */ jsx2(
|
|
883
|
+
var PrevArrowSVG = ({ className, vertical }) => /* @__PURE__ */ jsx2(
|
|
879
884
|
"svg",
|
|
880
885
|
{
|
|
881
886
|
className,
|
|
@@ -890,7 +895,7 @@ var PrevArrowSVG = ({ className }) => /* @__PURE__ */ jsx2(
|
|
|
890
895
|
children: /* @__PURE__ */ jsx2("polyline", { points: "15 18 9 12 15 6" })
|
|
891
896
|
}
|
|
892
897
|
);
|
|
893
|
-
var NextArrowSVG = ({ className }) => /* @__PURE__ */ jsx2(
|
|
898
|
+
var NextArrowSVG = ({ className, vertical }) => /* @__PURE__ */ jsx2(
|
|
894
899
|
"svg",
|
|
895
900
|
{
|
|
896
901
|
className,
|
|
@@ -907,9 +912,7 @@ var NextArrowSVG = ({ className }) => /* @__PURE__ */ jsx2(
|
|
|
907
912
|
);
|
|
908
913
|
var baseArrowStyle = {
|
|
909
914
|
position: "absolute",
|
|
910
|
-
|
|
911
|
-
transform: "translateY(-50%)",
|
|
912
|
-
zIndex: 10,
|
|
915
|
+
zIndex: 100,
|
|
913
916
|
display: "flex",
|
|
914
917
|
alignItems: "center",
|
|
915
918
|
justifyContent: "center",
|
|
@@ -934,6 +937,7 @@ var PrevArrow = ({
|
|
|
934
937
|
slidesToShow,
|
|
935
938
|
infinite,
|
|
936
939
|
centerMode,
|
|
940
|
+
vertical,
|
|
937
941
|
onClick,
|
|
938
942
|
customArrow
|
|
939
943
|
}) => {
|
|
@@ -965,13 +969,15 @@ var PrevArrow = ({
|
|
|
965
969
|
className: `glide-arrow glide-prev ${!canGo ? "glide-disabled" : ""}`,
|
|
966
970
|
style: {
|
|
967
971
|
...canGo ? baseArrowStyle : disabledArrowStyle,
|
|
968
|
-
left: 10
|
|
972
|
+
left: 10,
|
|
973
|
+
top: "50%",
|
|
974
|
+
transform: "translateY(-50%)"
|
|
969
975
|
},
|
|
970
976
|
onClick: handleClick,
|
|
971
977
|
"aria-label": "Previous slide",
|
|
972
978
|
"aria-disabled": !canGo,
|
|
973
979
|
disabled: !canGo,
|
|
974
|
-
children: /* @__PURE__ */ jsx2(PrevArrowSVG, {})
|
|
980
|
+
children: /* @__PURE__ */ jsx2(PrevArrowSVG, { vertical })
|
|
975
981
|
}
|
|
976
982
|
);
|
|
977
983
|
};
|
|
@@ -981,6 +987,7 @@ var NextArrow = ({
|
|
|
981
987
|
slidesToShow,
|
|
982
988
|
infinite,
|
|
983
989
|
centerMode,
|
|
990
|
+
vertical,
|
|
984
991
|
onClick,
|
|
985
992
|
customArrow
|
|
986
993
|
}) => {
|
|
@@ -1015,13 +1022,15 @@ var NextArrow = ({
|
|
|
1015
1022
|
className: `glide-arrow glide-next ${!canGo ? "glide-disabled" : ""}`,
|
|
1016
1023
|
style: {
|
|
1017
1024
|
...canGo ? baseArrowStyle : disabledArrowStyle,
|
|
1018
|
-
right: 10
|
|
1025
|
+
right: 10,
|
|
1026
|
+
top: "50%",
|
|
1027
|
+
transform: "translateY(-50%)"
|
|
1019
1028
|
},
|
|
1020
1029
|
onClick: handleClick,
|
|
1021
1030
|
"aria-label": "Next slide",
|
|
1022
1031
|
"aria-disabled": !canGo,
|
|
1023
1032
|
disabled: !canGo,
|
|
1024
|
-
children: /* @__PURE__ */ jsx2(NextArrowSVG, {})
|
|
1033
|
+
children: /* @__PURE__ */ jsx2(NextArrowSVG, { vertical })
|
|
1025
1034
|
}
|
|
1026
1035
|
);
|
|
1027
1036
|
};
|
|
@@ -1444,6 +1453,95 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1444
1453
|
scrolling
|
|
1445
1454
|
} = state;
|
|
1446
1455
|
const slideCount = Children2.count(children);
|
|
1456
|
+
const [breakpoint, setBreakpoint] = React4.useState(null);
|
|
1457
|
+
useEffect(() => {
|
|
1458
|
+
if (!canUseDOM() || !settings.responsive) return;
|
|
1459
|
+
const responsiveSettings2 = settings.responsive;
|
|
1460
|
+
const breakpoints = responsiveSettings2.map((bp) => bp.breakpoint).sort((a, b) => a - b);
|
|
1461
|
+
const mediaQueryListeners = [];
|
|
1462
|
+
breakpoints.forEach((bp, index) => {
|
|
1463
|
+
let query;
|
|
1464
|
+
if (index === 0) {
|
|
1465
|
+
query = `(max-width: ${bp}px)`;
|
|
1466
|
+
} else {
|
|
1467
|
+
query = `(min-width: ${breakpoints[index - 1] + 1}px) and (max-width: ${bp}px)`;
|
|
1468
|
+
}
|
|
1469
|
+
const mql = window.matchMedia(query);
|
|
1470
|
+
const listener = (e) => {
|
|
1471
|
+
if (e.matches) {
|
|
1472
|
+
setBreakpoint(bp);
|
|
1473
|
+
}
|
|
1474
|
+
};
|
|
1475
|
+
mql.addEventListener("change", listener);
|
|
1476
|
+
mediaQueryListeners.push({ mql, listener });
|
|
1477
|
+
if (mql.matches) {
|
|
1478
|
+
setBreakpoint(bp);
|
|
1479
|
+
}
|
|
1480
|
+
});
|
|
1481
|
+
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
|
1482
|
+
const fullScreenQuery = `(min-width: ${maxBreakpoint + 1}px)`;
|
|
1483
|
+
const fullScreenMql = window.matchMedia(fullScreenQuery);
|
|
1484
|
+
const fullScreenListener = (e) => {
|
|
1485
|
+
if (e.matches) {
|
|
1486
|
+
setBreakpoint(null);
|
|
1487
|
+
}
|
|
1488
|
+
};
|
|
1489
|
+
fullScreenMql.addEventListener("change", fullScreenListener);
|
|
1490
|
+
mediaQueryListeners.push({ mql: fullScreenMql, listener: fullScreenListener });
|
|
1491
|
+
if (fullScreenMql.matches) {
|
|
1492
|
+
setBreakpoint(null);
|
|
1493
|
+
}
|
|
1494
|
+
return () => {
|
|
1495
|
+
mediaQueryListeners.forEach(({ mql, listener }) => {
|
|
1496
|
+
mql.removeEventListener("change", listener);
|
|
1497
|
+
});
|
|
1498
|
+
};
|
|
1499
|
+
}, [settings.responsive]);
|
|
1500
|
+
const responsiveSettings = useMemo4(() => {
|
|
1501
|
+
let merged;
|
|
1502
|
+
if (!breakpoint || !settings.responsive) {
|
|
1503
|
+
merged = settings;
|
|
1504
|
+
} else {
|
|
1505
|
+
const matchedBreakpoint = settings.responsive.find((bp) => bp.breakpoint === breakpoint);
|
|
1506
|
+
if (!matchedBreakpoint) {
|
|
1507
|
+
merged = settings;
|
|
1508
|
+
} else if (matchedBreakpoint.settings === "disabled") {
|
|
1509
|
+
merged = { ...settings, slidesToShow: 1, slidesToScroll: 1 };
|
|
1510
|
+
} else {
|
|
1511
|
+
merged = { ...settings, ...matchedBreakpoint.settings };
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
if (merged.centerMode && merged.slidesToScroll > 1) {
|
|
1515
|
+
if (process.env.NODE_ENV !== "production") {
|
|
1516
|
+
console.warn(
|
|
1517
|
+
`slidesToScroll should be equal to 1 in centerMode, you are using ${merged.slidesToScroll}`
|
|
1518
|
+
);
|
|
1519
|
+
}
|
|
1520
|
+
merged = { ...merged, slidesToScroll: 1 };
|
|
1521
|
+
}
|
|
1522
|
+
if (merged.fade) {
|
|
1523
|
+
if (merged.slidesToShow > 1 && process.env.NODE_ENV !== "production") {
|
|
1524
|
+
console.warn(
|
|
1525
|
+
`slidesToShow should be equal to 1 when fade is true, you're using ${merged.slidesToShow}`
|
|
1526
|
+
);
|
|
1527
|
+
}
|
|
1528
|
+
if (merged.slidesToScroll > 1 && process.env.NODE_ENV !== "production") {
|
|
1529
|
+
console.warn(
|
|
1530
|
+
`slidesToScroll should be equal to 1 when fade is true, you're using ${merged.slidesToScroll}`
|
|
1531
|
+
);
|
|
1532
|
+
}
|
|
1533
|
+
merged = { ...merged, slidesToShow: 1, slidesToScroll: 1 };
|
|
1534
|
+
}
|
|
1535
|
+
return merged;
|
|
1536
|
+
}, [breakpoint, settings]);
|
|
1537
|
+
const {
|
|
1538
|
+
slidesToShow: responsiveSlidesToShow,
|
|
1539
|
+
slidesToScroll: responsiveSlidesToScroll,
|
|
1540
|
+
infinite: responsiveInfinite,
|
|
1541
|
+
centerMode: responsiveCenterMode,
|
|
1542
|
+
dots: responsiveDots,
|
|
1543
|
+
arrows: responsiveArrows
|
|
1544
|
+
} = responsiveSettings;
|
|
1447
1545
|
const {
|
|
1448
1546
|
slideWidth: calculatedSlideWidth,
|
|
1449
1547
|
trackStyle,
|
|
@@ -1455,10 +1553,10 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1455
1553
|
} = useTrack({
|
|
1456
1554
|
currentSlide,
|
|
1457
1555
|
slideCount,
|
|
1458
|
-
slidesToShow,
|
|
1459
|
-
slidesToScroll,
|
|
1460
|
-
infinite,
|
|
1461
|
-
centerMode,
|
|
1556
|
+
slidesToShow: responsiveSlidesToShow,
|
|
1557
|
+
slidesToScroll: responsiveSlidesToScroll,
|
|
1558
|
+
infinite: responsiveInfinite,
|
|
1559
|
+
centerMode: responsiveCenterMode,
|
|
1462
1560
|
centerPadding,
|
|
1463
1561
|
listWidth: listWidth || 0,
|
|
1464
1562
|
listHeight: listHeight || 0,
|
|
@@ -1476,47 +1574,53 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1476
1574
|
swipeLeft
|
|
1477
1575
|
});
|
|
1478
1576
|
useEffect(() => {
|
|
1479
|
-
if (!canUseDOM()
|
|
1480
|
-
const
|
|
1577
|
+
if (!canUseDOM()) return;
|
|
1578
|
+
const timeoutId = setTimeout(() => {
|
|
1481
1579
|
if (!listRef.current) return;
|
|
1482
|
-
const
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1580
|
+
const updateDimensions = () => {
|
|
1581
|
+
if (!listRef.current) return;
|
|
1582
|
+
const newListWidth = getWidth(listRef.current);
|
|
1583
|
+
const firstSlide = listRef.current.querySelector('[data-index="0"]');
|
|
1584
|
+
const newSlideHeight = firstSlide ? getHeight(firstSlide) : null;
|
|
1585
|
+
const newListHeight = newSlideHeight ? newSlideHeight * responsiveSlidesToShow : null;
|
|
1586
|
+
dispatch({
|
|
1587
|
+
type: "INIT",
|
|
1588
|
+
payload: {
|
|
1589
|
+
listWidth: newListWidth,
|
|
1590
|
+
listHeight: newListHeight,
|
|
1591
|
+
slideHeight: newSlideHeight,
|
|
1592
|
+
slideCount
|
|
1593
|
+
}
|
|
1594
|
+
});
|
|
1595
|
+
};
|
|
1596
|
+
updateDimensions();
|
|
1597
|
+
if (!resizeObserverRef.current && listRef.current) {
|
|
1598
|
+
resizeObserverRef.current = new ResizeObserver(updateDimensions);
|
|
1599
|
+
resizeObserverRef.current.observe(listRef.current);
|
|
1600
|
+
}
|
|
1601
|
+
if (!initialized) {
|
|
1602
|
+
onInit?.();
|
|
1603
|
+
}
|
|
1604
|
+
}, 0);
|
|
1500
1605
|
return () => {
|
|
1606
|
+
clearTimeout(timeoutId);
|
|
1501
1607
|
resizeObserverRef.current?.disconnect();
|
|
1608
|
+
resizeObserverRef.current = null;
|
|
1502
1609
|
};
|
|
1503
|
-
}, [slideCount, onInit]);
|
|
1504
|
-
const autoplayIterator = useCallback3(() => {
|
|
1505
|
-
if (autoplaying !== "playing") return;
|
|
1506
|
-
const nextSlideIndex = currentSlide + slidesToScroll;
|
|
1507
|
-
goToSlide(nextSlideIndex);
|
|
1508
|
-
}, [autoplaying, currentSlide, slidesToScroll]);
|
|
1610
|
+
}, [slideCount, initialized, onInit, responsiveSlidesToShow]);
|
|
1509
1611
|
useEffect(() => {
|
|
1510
|
-
if (!
|
|
1511
|
-
if (
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1612
|
+
if (!initialized || !canUseDOM()) return;
|
|
1613
|
+
if (currentSlide >= slideCount) {
|
|
1614
|
+
const newSlide = Math.max(0, slideCount - responsiveSlidesToShow);
|
|
1615
|
+
if (newSlide !== currentSlide) {
|
|
1616
|
+
dispatch({
|
|
1617
|
+
type: "GO_TO_SLIDE",
|
|
1618
|
+
payload: { slide: newSlide, animated: false }
|
|
1619
|
+
});
|
|
1517
1620
|
}
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1621
|
+
}
|
|
1622
|
+
onReInit?.();
|
|
1623
|
+
}, [responsiveSlidesToShow, responsiveSlidesToScroll, responsiveInfinite, responsiveCenterMode, initialized, slideCount, currentSlide, onReInit]);
|
|
1520
1624
|
useEffect(() => {
|
|
1521
1625
|
if (animating) {
|
|
1522
1626
|
animationEndTimeoutRef.current = setTimeout(() => {
|
|
@@ -1534,21 +1638,21 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1534
1638
|
(slideIndex, dontAnimate = false) => {
|
|
1535
1639
|
if (waitForAnimate && animating) return;
|
|
1536
1640
|
let targetIndex = slideIndex;
|
|
1537
|
-
if (
|
|
1641
|
+
if (responsiveInfinite) {
|
|
1538
1642
|
if (targetIndex < 0) {
|
|
1539
1643
|
targetIndex = slideCount + targetIndex;
|
|
1540
1644
|
} else if (targetIndex >= slideCount) {
|
|
1541
1645
|
targetIndex = targetIndex - slideCount;
|
|
1542
1646
|
}
|
|
1543
1647
|
} else {
|
|
1544
|
-
targetIndex = clamp(targetIndex, 0, slideCount -
|
|
1648
|
+
targetIndex = clamp(targetIndex, 0, slideCount - responsiveSlidesToShow);
|
|
1545
1649
|
}
|
|
1546
1650
|
beforeChange?.(currentSlide, targetIndex);
|
|
1547
1651
|
if (lazyLoad) {
|
|
1548
1652
|
const slidesToLoad = getOnDemandLazySlides({
|
|
1549
1653
|
currentSlide: targetIndex,
|
|
1550
|
-
centerMode,
|
|
1551
|
-
slidesToShow,
|
|
1654
|
+
centerMode: responsiveCenterMode,
|
|
1655
|
+
slidesToShow: responsiveSlidesToShow,
|
|
1552
1656
|
centerPadding,
|
|
1553
1657
|
lazyLoadedList
|
|
1554
1658
|
});
|
|
@@ -1567,23 +1671,23 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1567
1671
|
[
|
|
1568
1672
|
waitForAnimate,
|
|
1569
1673
|
animating,
|
|
1570
|
-
|
|
1674
|
+
responsiveInfinite,
|
|
1571
1675
|
slideCount,
|
|
1572
|
-
|
|
1676
|
+
responsiveSlidesToShow,
|
|
1573
1677
|
beforeChange,
|
|
1574
1678
|
currentSlide,
|
|
1575
1679
|
lazyLoad,
|
|
1576
|
-
|
|
1680
|
+
responsiveCenterMode,
|
|
1577
1681
|
centerPadding,
|
|
1578
1682
|
lazyLoadedList
|
|
1579
1683
|
]
|
|
1580
1684
|
);
|
|
1581
1685
|
const next = useCallback3(() => {
|
|
1582
|
-
goToSlide(currentSlide +
|
|
1583
|
-
}, [currentSlide,
|
|
1686
|
+
goToSlide(currentSlide + responsiveSlidesToScroll);
|
|
1687
|
+
}, [currentSlide, responsiveSlidesToScroll, goToSlide]);
|
|
1584
1688
|
const prev = useCallback3(() => {
|
|
1585
|
-
goToSlide(currentSlide -
|
|
1586
|
-
}, [currentSlide,
|
|
1689
|
+
goToSlide(currentSlide - responsiveSlidesToScroll);
|
|
1690
|
+
}, [currentSlide, responsiveSlidesToScroll, goToSlide]);
|
|
1587
1691
|
const goTo = useCallback3(
|
|
1588
1692
|
(index, dontAnimate = false) => {
|
|
1589
1693
|
goToSlide(index, dontAnimate);
|
|
@@ -1596,6 +1700,29 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1596
1700
|
const play = useCallback3(() => {
|
|
1597
1701
|
dispatch({ type: "SET_AUTOPLAY", payload: "playing" });
|
|
1598
1702
|
}, []);
|
|
1703
|
+
const autoplayTick = useCallback3(() => {
|
|
1704
|
+
const nextSlideIndex = currentSlide + responsiveSlidesToScroll;
|
|
1705
|
+
goToSlide(nextSlideIndex);
|
|
1706
|
+
}, [currentSlide, responsiveSlidesToScroll, goToSlide]);
|
|
1707
|
+
useEffect(() => {
|
|
1708
|
+
if (!autoplay || !initialized) return;
|
|
1709
|
+
if (autoplaying === "playing") {
|
|
1710
|
+
if (autoplayTimerRef.current) {
|
|
1711
|
+
clearInterval(autoplayTimerRef.current);
|
|
1712
|
+
}
|
|
1713
|
+
autoplayTimerRef.current = setInterval(autoplayTick, autoplaySpeed + 50);
|
|
1714
|
+
} else {
|
|
1715
|
+
if (autoplayTimerRef.current) {
|
|
1716
|
+
clearInterval(autoplayTimerRef.current);
|
|
1717
|
+
autoplayTimerRef.current = null;
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
return () => {
|
|
1721
|
+
if (autoplayTimerRef.current) {
|
|
1722
|
+
clearInterval(autoplayTimerRef.current);
|
|
1723
|
+
}
|
|
1724
|
+
};
|
|
1725
|
+
}, [autoplay, autoplaying, initialized, autoplayTick, autoplaySpeed]);
|
|
1599
1726
|
useImperativeHandle(
|
|
1600
1727
|
ref,
|
|
1601
1728
|
() => ({
|
|
@@ -1645,16 +1772,16 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1645
1772
|
swiped,
|
|
1646
1773
|
swiping,
|
|
1647
1774
|
slideCount,
|
|
1648
|
-
slidesToScroll,
|
|
1649
|
-
infinite,
|
|
1775
|
+
slidesToScroll: responsiveSlidesToScroll,
|
|
1776
|
+
infinite: responsiveInfinite,
|
|
1650
1777
|
touchObject,
|
|
1651
1778
|
swipeEvent,
|
|
1652
1779
|
listHeight: listHeight || 0,
|
|
1653
1780
|
listWidth: listWidth || 0,
|
|
1654
1781
|
slideWidth: calculatedSlideWidth,
|
|
1655
1782
|
slideHeight: slideHeight || 0,
|
|
1656
|
-
centerMode,
|
|
1657
|
-
slidesToShow,
|
|
1783
|
+
centerMode: responsiveCenterMode,
|
|
1784
|
+
slidesToShow: responsiveSlidesToShow,
|
|
1658
1785
|
fade,
|
|
1659
1786
|
disabled,
|
|
1660
1787
|
variableWidth,
|
|
@@ -1681,16 +1808,16 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1681
1808
|
swiped,
|
|
1682
1809
|
swiping,
|
|
1683
1810
|
slideCount,
|
|
1684
|
-
|
|
1685
|
-
|
|
1811
|
+
responsiveSlidesToScroll,
|
|
1812
|
+
responsiveInfinite,
|
|
1686
1813
|
touchObject,
|
|
1687
1814
|
swipeEvent,
|
|
1688
1815
|
listHeight,
|
|
1689
1816
|
listWidth,
|
|
1690
1817
|
calculatedSlideWidth,
|
|
1691
1818
|
slideHeight,
|
|
1692
|
-
|
|
1693
|
-
|
|
1819
|
+
responsiveCenterMode,
|
|
1820
|
+
responsiveSlidesToShow,
|
|
1694
1821
|
fade,
|
|
1695
1822
|
disabled,
|
|
1696
1823
|
variableWidth,
|
|
@@ -1712,13 +1839,13 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1712
1839
|
onSwipe,
|
|
1713
1840
|
targetSlide,
|
|
1714
1841
|
currentSlide,
|
|
1715
|
-
infinite,
|
|
1842
|
+
infinite: responsiveInfinite,
|
|
1716
1843
|
slideCount,
|
|
1717
|
-
slidesToScroll,
|
|
1718
|
-
slidesToShow,
|
|
1844
|
+
slidesToScroll: responsiveSlidesToScroll,
|
|
1845
|
+
slidesToShow: responsiveSlidesToShow,
|
|
1719
1846
|
slideWidth: calculatedSlideWidth,
|
|
1720
1847
|
slideHeight: slideHeight || 0,
|
|
1721
|
-
centerMode,
|
|
1848
|
+
centerMode: responsiveCenterMode,
|
|
1722
1849
|
fade,
|
|
1723
1850
|
disabled,
|
|
1724
1851
|
variableWidth,
|
|
@@ -1759,13 +1886,13 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1759
1886
|
onSwipe,
|
|
1760
1887
|
targetSlide,
|
|
1761
1888
|
currentSlide,
|
|
1762
|
-
|
|
1889
|
+
responsiveInfinite,
|
|
1763
1890
|
slideCount,
|
|
1764
|
-
|
|
1765
|
-
|
|
1891
|
+
responsiveSlidesToScroll,
|
|
1892
|
+
responsiveSlidesToShow,
|
|
1766
1893
|
calculatedSlideWidth,
|
|
1767
1894
|
slideHeight,
|
|
1768
|
-
|
|
1895
|
+
responsiveCenterMode,
|
|
1769
1896
|
fade,
|
|
1770
1897
|
disabled,
|
|
1771
1898
|
variableWidth,
|
|
@@ -1832,23 +1959,33 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1832
1959
|
}),
|
|
1833
1960
|
[vertical]
|
|
1834
1961
|
);
|
|
1835
|
-
const listStyle = useMemo4(
|
|
1836
|
-
|
|
1962
|
+
const listStyle = useMemo4(() => {
|
|
1963
|
+
const style = {
|
|
1837
1964
|
position: "relative",
|
|
1838
1965
|
display: "block",
|
|
1839
1966
|
overflow: "hidden",
|
|
1840
1967
|
margin: 0,
|
|
1841
1968
|
padding: 0
|
|
1842
|
-
}
|
|
1843
|
-
|
|
1844
|
-
|
|
1969
|
+
};
|
|
1970
|
+
if (vertical && listHeight) {
|
|
1971
|
+
style.height = listHeight;
|
|
1972
|
+
}
|
|
1973
|
+
if (responsiveCenterMode) {
|
|
1974
|
+
if (vertical) {
|
|
1975
|
+
style.padding = `${centerPadding} 0px`;
|
|
1976
|
+
} else {
|
|
1977
|
+
style.padding = `0px ${centerPadding}`;
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
return style;
|
|
1981
|
+
}, [responsiveCenterMode, vertical, centerPadding, listHeight]);
|
|
1845
1982
|
if (!initialized || !canUseDOM()) {
|
|
1846
|
-
return /* @__PURE__ */ jsx4("div", { className: `glide-slider ${className}`.trim(), style: sliderStyle, children: /* @__PURE__ */ jsx4("div", { className: "glide-list", style: listStyle, children: /* @__PURE__ */ jsx4("div", { className: "glide-track", style: { display: "flex" }, children: React4.Children.map(children, (child, idx) => /* @__PURE__ */ jsx4(
|
|
1983
|
+
return /* @__PURE__ */ jsx4("div", { className: `glide-slider ${className}`.trim(), style: sliderStyle, children: /* @__PURE__ */ jsx4("div", { ref: listRef, className: "glide-list", style: listStyle, children: /* @__PURE__ */ jsx4("div", { className: "glide-track", style: { display: "flex" }, children: React4.Children.map(children, (child, idx) => /* @__PURE__ */ jsx4(
|
|
1847
1984
|
"div",
|
|
1848
1985
|
{
|
|
1849
1986
|
className: "glide-slide",
|
|
1850
1987
|
style: {
|
|
1851
|
-
width: `${100 /
|
|
1988
|
+
width: `${100 / responsiveSlidesToShow}%`,
|
|
1852
1989
|
flexShrink: 0
|
|
1853
1990
|
},
|
|
1854
1991
|
children: child
|
|
@@ -1866,14 +2003,15 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1866
2003
|
onFocus: handleFocus,
|
|
1867
2004
|
onBlur: handleBlur,
|
|
1868
2005
|
children: [
|
|
1869
|
-
|
|
2006
|
+
responsiveArrows && !disabled && /* @__PURE__ */ jsx4(
|
|
1870
2007
|
PrevArrow,
|
|
1871
2008
|
{
|
|
1872
2009
|
currentSlide,
|
|
1873
2010
|
slideCount,
|
|
1874
|
-
slidesToShow,
|
|
1875
|
-
infinite,
|
|
1876
|
-
centerMode,
|
|
2011
|
+
slidesToShow: responsiveSlidesToShow,
|
|
2012
|
+
infinite: responsiveInfinite,
|
|
2013
|
+
centerMode: responsiveCenterMode,
|
|
2014
|
+
vertical,
|
|
1877
2015
|
onClick: prev,
|
|
1878
2016
|
customArrow: prevArrow
|
|
1879
2017
|
}
|
|
@@ -1903,10 +2041,10 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1903
2041
|
slideCount,
|
|
1904
2042
|
currentSlide,
|
|
1905
2043
|
targetSlide,
|
|
1906
|
-
slidesToShow,
|
|
1907
|
-
slidesToScroll,
|
|
1908
|
-
infinite,
|
|
1909
|
-
centerMode,
|
|
2044
|
+
slidesToShow: responsiveSlidesToShow,
|
|
2045
|
+
slidesToScroll: responsiveSlidesToScroll,
|
|
2046
|
+
infinite: responsiveInfinite,
|
|
2047
|
+
centerMode: responsiveCenterMode,
|
|
1910
2048
|
centerPadding,
|
|
1911
2049
|
fade,
|
|
1912
2050
|
vertical,
|
|
@@ -1925,26 +2063,27 @@ var Glide = forwardRef2(function Glide2(props, ref) {
|
|
|
1925
2063
|
)
|
|
1926
2064
|
}
|
|
1927
2065
|
),
|
|
1928
|
-
|
|
2066
|
+
responsiveArrows && !disabled && /* @__PURE__ */ jsx4(
|
|
1929
2067
|
NextArrow,
|
|
1930
2068
|
{
|
|
1931
2069
|
currentSlide,
|
|
1932
2070
|
slideCount,
|
|
1933
|
-
slidesToShow,
|
|
1934
|
-
infinite,
|
|
1935
|
-
centerMode,
|
|
2071
|
+
slidesToShow: responsiveSlidesToShow,
|
|
2072
|
+
infinite: responsiveInfinite,
|
|
2073
|
+
centerMode: responsiveCenterMode,
|
|
2074
|
+
vertical,
|
|
1936
2075
|
onClick: next,
|
|
1937
2076
|
customArrow: nextArrow
|
|
1938
2077
|
}
|
|
1939
2078
|
),
|
|
1940
|
-
|
|
2079
|
+
responsiveDots && !disabled && /* @__PURE__ */ jsx4(
|
|
1941
2080
|
Dots,
|
|
1942
2081
|
{
|
|
1943
2082
|
slideCount,
|
|
1944
|
-
slidesToScroll,
|
|
1945
|
-
slidesToShow,
|
|
2083
|
+
slidesToScroll: responsiveSlidesToScroll,
|
|
2084
|
+
slidesToShow: responsiveSlidesToShow,
|
|
1946
2085
|
currentSlide,
|
|
1947
|
-
infinite,
|
|
2086
|
+
infinite: responsiveInfinite,
|
|
1948
2087
|
onDotClick: handleDotClick,
|
|
1949
2088
|
customPaging,
|
|
1950
2089
|
appendDots,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glide-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "A modern, minimalistic, lightweight React carousel component built with TypeScript",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -19,12 +19,15 @@
|
|
|
19
19
|
],
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "tsup src/index.tsx --format cjs,esm --dts --clean",
|
|
22
|
+
"postbuild": "cp src/styles/glide.css dist/glide.css && cp src/styles/glide-theme.css dist/glide-theme.css",
|
|
22
23
|
"dev": "tsup src/index.tsx --format cjs,esm --dts --watch",
|
|
23
24
|
"lint": "eslint src --ext .ts,.tsx",
|
|
24
25
|
"typecheck": "tsc --noEmit",
|
|
25
26
|
"test": "jest",
|
|
26
27
|
"test:watch": "jest --watch",
|
|
27
|
-
"prepublishOnly": "npm run build"
|
|
28
|
+
"prepublishOnly": "npm run build",
|
|
29
|
+
"docs:dev": "webpack serve --config webpack.config.docs.js --mode development",
|
|
30
|
+
"docs:build": "webpack --config webpack.config.docs.js --mode production"
|
|
28
31
|
},
|
|
29
32
|
"repository": {
|
|
30
33
|
"type": "git",
|
|
@@ -54,6 +57,10 @@
|
|
|
54
57
|
"react-dom": ">=16.8.0"
|
|
55
58
|
},
|
|
56
59
|
"devDependencies": {
|
|
60
|
+
"@babel/core": "^7.23.0",
|
|
61
|
+
"@babel/preset-env": "^7.23.0",
|
|
62
|
+
"@babel/preset-react": "^7.23.0",
|
|
63
|
+
"@babel/preset-typescript": "^7.23.0",
|
|
57
64
|
"@testing-library/jest-dom": "^6.4.0",
|
|
58
65
|
"@testing-library/react": "^14.2.0",
|
|
59
66
|
"@types/jest": "^29.5.12",
|
|
@@ -61,15 +68,23 @@
|
|
|
61
68
|
"@types/react-dom": "^18.2.18",
|
|
62
69
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
63
70
|
"@typescript-eslint/parser": "^6.21.0",
|
|
71
|
+
"babel-loader": "^9.1.3",
|
|
72
|
+
"css-loader": "^6.10.0",
|
|
64
73
|
"eslint": "^8.56.0",
|
|
65
74
|
"eslint-plugin-react": "^7.33.2",
|
|
66
75
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
76
|
+
"html-webpack-plugin": "^5.6.0",
|
|
67
77
|
"jest": "^29.7.0",
|
|
68
78
|
"jest-environment-jsdom": "^29.7.0",
|
|
69
79
|
"react": "^18.2.0",
|
|
70
80
|
"react-dom": "^18.2.0",
|
|
81
|
+
"react-syntax-highlighter": "^15.5.0",
|
|
82
|
+
"style-loader": "^3.3.4",
|
|
71
83
|
"ts-jest": "^29.1.2",
|
|
72
84
|
"tsup": "^8.0.1",
|
|
73
|
-
"typescript": "^5.3.3"
|
|
85
|
+
"typescript": "^5.3.3",
|
|
86
|
+
"webpack": "^5.90.0",
|
|
87
|
+
"webpack-cli": "^5.1.4",
|
|
88
|
+
"webpack-dev-server": "^4.15.1"
|
|
74
89
|
}
|
|
75
90
|
}
|