@gem-sdk/swiper 0.0.7
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/LICENSE +20 -0
- package/README.md +11 -0
- package/modules/a11y-element.css +9 -0
- package/modules/a11y-element.min.css +1 -0
- package/modules/a11y.css +9 -0
- package/modules/a11y.less +9 -0
- package/modules/a11y.min.css +1 -0
- package/modules/a11y.min.mjs +2 -0
- package/modules/a11y.min.mjs.map +1 -0
- package/modules/a11y.mjs +377 -0
- package/modules/a11y.scss +9 -0
- package/modules/autoplay-element.css +0 -0
- package/modules/autoplay-element.min.css +0 -0
- package/modules/autoplay.css +0 -0
- package/modules/autoplay.less +0 -0
- package/modules/autoplay.min.css +0 -0
- package/modules/autoplay.min.mjs +2 -0
- package/modules/autoplay.min.mjs.map +1 -0
- package/modules/autoplay.mjs +304 -0
- package/modules/autoplay.scss +0 -0
- package/modules/controller-element.css +0 -0
- package/modules/controller-element.min.css +0 -0
- package/modules/controller.css +0 -0
- package/modules/controller.less +0 -0
- package/modules/controller.min.css +0 -0
- package/modules/controller.min.mjs +2 -0
- package/modules/controller.min.mjs.map +1 -0
- package/modules/controller.mjs +191 -0
- package/modules/controller.scss +0 -0
- package/modules/effect-cards-element.css +9 -0
- package/modules/effect-cards-element.min.css +1 -0
- package/modules/effect-cards.css +9 -0
- package/modules/effect-cards.less +10 -0
- package/modules/effect-cards.min.css +1 -0
- package/modules/effect-cards.min.mjs +2 -0
- package/modules/effect-cards.min.mjs.map +1 -0
- package/modules/effect-cards.mjs +128 -0
- package/modules/effect-cards.scss +10 -0
- package/modules/effect-coverflow-element.css +0 -0
- package/modules/effect-coverflow-element.min.css +0 -0
- package/modules/effect-coverflow.css +0 -0
- package/modules/effect-coverflow.less +2 -0
- package/modules/effect-coverflow.min.css +0 -0
- package/modules/effect-coverflow.min.mjs +2 -0
- package/modules/effect-coverflow.min.mjs.map +1 -0
- package/modules/effect-coverflow.mjs +104 -0
- package/modules/effect-coverflow.scss +2 -0
- package/modules/effect-creative-element.css +6 -0
- package/modules/effect-creative-element.min.css +1 -0
- package/modules/effect-creative.css +6 -0
- package/modules/effect-creative.less +7 -0
- package/modules/effect-creative.min.css +1 -0
- package/modules/effect-creative.min.mjs +2 -0
- package/modules/effect-creative.min.mjs.map +1 -0
- package/modules/effect-creative.mjs +146 -0
- package/modules/effect-creative.scss +7 -0
- package/modules/effect-cube-element.css +53 -0
- package/modules/effect-cube-element.min.css +1 -0
- package/modules/effect-cube.css +62 -0
- package/modules/effect-cube.less +71 -0
- package/modules/effect-cube.min.css +1 -0
- package/modules/effect-cube.min.mjs +2 -0
- package/modules/effect-cube.min.mjs.map +1 -0
- package/modules/effect-cube.mjs +174 -0
- package/modules/effect-cube.scss +71 -0
- package/modules/effect-fade-element.css +16 -0
- package/modules/effect-fade-element.min.css +1 -0
- package/modules/effect-fade.css +16 -0
- package/modules/effect-fade.less +20 -0
- package/modules/effect-fade.min.css +1 -0
- package/modules/effect-fade.min.mjs +2 -0
- package/modules/effect-fade.min.mjs.map +1 -0
- package/modules/effect-fade.mjs +66 -0
- package/modules/effect-fade.scss +20 -0
- package/modules/effect-flip-element.css +17 -0
- package/modules/effect-flip-element.min.css +1 -0
- package/modules/effect-flip.css +26 -0
- package/modules/effect-flip.less +30 -0
- package/modules/effect-flip.min.css +1 -0
- package/modules/effect-flip.min.mjs +2 -0
- package/modules/effect-flip.min.mjs.map +1 -0
- package/modules/effect-flip.mjs +111 -0
- package/modules/effect-flip.scss +30 -0
- package/modules/free-mode-element.css +4 -0
- package/modules/free-mode-element.min.css +1 -0
- package/modules/free-mode.css +4 -0
- package/modules/free-mode.less +4 -0
- package/modules/free-mode.min.css +1 -0
- package/modules/free-mode.min.mjs +2 -0
- package/modules/free-mode.min.mjs.map +1 -0
- package/modules/free-mode.mjs +237 -0
- package/modules/free-mode.scss +4 -0
- package/modules/grid-element.css +7 -0
- package/modules/grid-element.min.css +1 -0
- package/modules/grid.css +7 -0
- package/modules/grid.less +7 -0
- package/modules/grid.min.css +1 -0
- package/modules/grid.min.mjs +2 -0
- package/modules/grid.min.mjs.map +1 -0
- package/modules/grid.mjs +155 -0
- package/modules/grid.scss +7 -0
- package/modules/hash-navigation-element.css +0 -0
- package/modules/hash-navigation-element.min.css +0 -0
- package/modules/hash-navigation.css +0 -0
- package/modules/hash-navigation.less +2 -0
- package/modules/hash-navigation.min.css +0 -0
- package/modules/hash-navigation.min.mjs +2 -0
- package/modules/hash-navigation.min.mjs.map +1 -0
- package/modules/hash-navigation.mjs +93 -0
- package/modules/hash-navigation.scss +0 -0
- package/modules/history-element.css +0 -0
- package/modules/history-element.min.css +0 -0
- package/modules/history.css +0 -0
- package/modules/history.less +0 -0
- package/modules/history.min.css +0 -0
- package/modules/history.min.mjs +2 -0
- package/modules/history.min.mjs.map +1 -0
- package/modules/history.mjs +142 -0
- package/modules/history.scss +0 -0
- package/modules/index.min.mjs +2 -0
- package/modules/index.min.mjs.map +1 -0
- package/modules/index.mjs +23 -0
- package/modules/keyboard-element.css +0 -0
- package/modules/keyboard-element.min.css +0 -0
- package/modules/keyboard.css +0 -0
- package/modules/keyboard.less +0 -0
- package/modules/keyboard.min.css +0 -0
- package/modules/keyboard.min.mjs +2 -0
- package/modules/keyboard.min.mjs.map +1 -0
- package/modules/keyboard.mjs +117 -0
- package/modules/keyboard.scss +0 -0
- package/modules/manipulation-element.css +0 -0
- package/modules/manipulation-element.min.css +0 -0
- package/modules/manipulation.css +0 -0
- package/modules/manipulation.less +0 -0
- package/modules/manipulation.min.css +0 -0
- package/modules/manipulation.min.mjs +2 -0
- package/modules/manipulation.min.mjs.map +1 -0
- package/modules/manipulation.mjs +193 -0
- package/modules/manipulation.scss +0 -0
- package/modules/mousewheel-element.css +0 -0
- package/modules/mousewheel-element.min.css +0 -0
- package/modules/mousewheel.css +0 -0
- package/modules/mousewheel.less +0 -0
- package/modules/mousewheel.min.css +0 -0
- package/modules/mousewheel.min.mjs +2 -0
- package/modules/mousewheel.min.mjs.map +1 -0
- package/modules/mousewheel.mjs +395 -0
- package/modules/mousewheel.scss +0 -0
- package/modules/navigation-element.css +63 -0
- package/modules/navigation-element.min.css +1 -0
- package/modules/navigation.css +86 -0
- package/modules/navigation.less +86 -0
- package/modules/navigation.min.css +1 -0
- package/modules/navigation.min.mjs +2 -0
- package/modules/navigation.min.mjs.map +1 -0
- package/modules/navigation.mjs +200 -0
- package/modules/navigation.scss +87 -0
- package/modules/pagination-element.css +184 -0
- package/modules/pagination-element.min.css +1 -0
- package/modules/pagination.css +184 -0
- package/modules/pagination.less +187 -0
- package/modules/pagination.min.css +1 -0
- package/modules/pagination.min.mjs +2 -0
- package/modules/pagination.min.mjs.map +1 -0
- package/modules/pagination.mjs +467 -0
- package/modules/pagination.scss +188 -0
- package/modules/parallax-element.css +0 -0
- package/modules/parallax-element.min.css +0 -0
- package/modules/parallax.css +0 -0
- package/modules/parallax.less +0 -0
- package/modules/parallax.min.css +0 -0
- package/modules/parallax.min.mjs +2 -0
- package/modules/parallax.min.mjs.map +1 -0
- package/modules/parallax.mjs +124 -0
- package/modules/parallax.scss +0 -0
- package/modules/scrollbar-element.css +58 -0
- package/modules/scrollbar-element.min.css +1 -0
- package/modules/scrollbar.css +58 -0
- package/modules/scrollbar.less +59 -0
- package/modules/scrollbar.min.css +1 -0
- package/modules/scrollbar.min.mjs +2 -0
- package/modules/scrollbar.min.mjs.map +1 -0
- package/modules/scrollbar.mjs +366 -0
- package/modules/scrollbar.scss +61 -0
- package/modules/thumbs-element.css +0 -0
- package/modules/thumbs-element.min.css +0 -0
- package/modules/thumbs.css +0 -0
- package/modules/thumbs.less +5 -0
- package/modules/thumbs.min.css +0 -0
- package/modules/thumbs.min.mjs +2 -0
- package/modules/thumbs.min.mjs.map +1 -0
- package/modules/thumbs.mjs +197 -0
- package/modules/thumbs.scss +5 -0
- package/modules/virtual-element.css +19 -0
- package/modules/virtual-element.min.css +1 -0
- package/modules/virtual.css +19 -0
- package/modules/virtual.less +26 -0
- package/modules/virtual.min.css +1 -0
- package/modules/virtual.min.mjs +2 -0
- package/modules/virtual.min.mjs.map +1 -0
- package/modules/virtual.mjs +349 -0
- package/modules/virtual.scss +26 -0
- package/modules/zoom-element.css +5 -0
- package/modules/zoom-element.min.css +1 -0
- package/modules/zoom.css +21 -0
- package/modules/zoom.less +23 -0
- package/modules/zoom.min.css +1 -0
- package/modules/zoom.min.mjs +2 -0
- package/modules/zoom.min.mjs.map +1 -0
- package/modules/zoom.mjs +701 -0
- package/modules/zoom.scss +21 -0
- package/package.json +213 -0
- package/shared/classes-to-selector.min.mjs +2 -0
- package/shared/classes-to-selector.min.mjs.map +1 -0
- package/shared/classes-to-selector.mjs +9 -0
- package/shared/create-element-if-not-defined.min.mjs +2 -0
- package/shared/create-element-if-not-defined.min.mjs.map +1 -0
- package/shared/create-element-if-not-defined.mjs +21 -0
- package/shared/create-shadow.min.mjs +2 -0
- package/shared/create-shadow.min.mjs.map +1 -0
- package/shared/create-shadow.mjs +14 -0
- package/shared/effect-init.min.mjs +2 -0
- package/shared/effect-init.min.mjs.map +1 -0
- package/shared/effect-init.mjs +58 -0
- package/shared/effect-target.min.mjs +2 -0
- package/shared/effect-target.min.mjs.map +1 -0
- package/shared/effect-target.mjs +12 -0
- package/shared/effect-virtual-transition-end.min.mjs +2 -0
- package/shared/effect-virtual-transition-end.min.mjs.map +1 -0
- package/shared/effect-virtual-transition-end.mjs +48 -0
- package/shared/get-element-params.min.mjs +2 -0
- package/shared/get-element-params.min.mjs.map +1 -0
- package/shared/get-element-params.mjs +113 -0
- package/shared/ssr-window.esm.min.mjs +2 -0
- package/shared/ssr-window.esm.min.mjs.map +1 -0
- package/shared/ssr-window.esm.mjs +146 -0
- package/shared/swiper-core.min.mjs +2 -0
- package/shared/swiper-core.min.mjs.map +1 -0
- package/shared/swiper-core.mjs +3969 -0
- package/shared/update-on-virtual-data.min.mjs +2 -0
- package/shared/update-on-virtual-data.min.mjs.map +1 -0
- package/shared/update-on-virtual-data.mjs +131 -0
- package/shared/update-swiper.min.mjs +2 -0
- package/shared/update-swiper.min.mjs.map +1 -0
- package/shared/update-swiper.mjs +238 -0
- package/shared/utils.min.mjs +2 -0
- package/shared/utils.min.mjs.map +1 -0
- package/shared/utils.mjs +343 -0
- package/swiper-bundle.css +735 -0
- package/swiper-bundle.js +9870 -0
- package/swiper-bundle.min.css +13 -0
- package/swiper-bundle.min.js +14 -0
- package/swiper-bundle.min.js.map +1 -0
- package/swiper-bundle.min.mjs +14 -0
- package/swiper-bundle.min.mjs.map +1 -0
- package/swiper-bundle.mjs +42 -0
- package/swiper-effect-utils.d.ts +28 -0
- package/swiper-effect-utils.min.mjs +14 -0
- package/swiper-effect-utils.min.mjs.map +1 -0
- package/swiper-effect-utils.mjs +17 -0
- package/swiper-element-bundle.js +10477 -0
- package/swiper-element-bundle.min.js +14 -0
- package/swiper-element-bundle.min.js.map +1 -0
- package/swiper-element-bundle.min.mjs +14 -0
- package/swiper-element-bundle.min.mjs.map +1 -0
- package/swiper-element-bundle.mjs +288 -0
- package/swiper-element.d.ts +444 -0
- package/swiper-element.js +5037 -0
- package/swiper-element.min.js +14 -0
- package/swiper-element.min.js.map +1 -0
- package/swiper-element.min.mjs +14 -0
- package/swiper-element.min.mjs.map +1 -0
- package/swiper-element.mjs +287 -0
- package/swiper-react.d.ts +501 -0
- package/swiper-react.mjs +394 -0
- package/swiper-vars.less +1 -0
- package/swiper-vars.scss +1 -0
- package/swiper-vue.d.ts +866 -0
- package/swiper-vue.mjs +838 -0
- package/swiper.css +228 -0
- package/swiper.d.ts +5 -0
- package/swiper.js +4418 -0
- package/swiper.less +251 -0
- package/swiper.min.css +13 -0
- package/swiper.min.js +14 -0
- package/swiper.min.js.map +1 -0
- package/swiper.min.mjs +14 -0
- package/swiper.min.mjs.map +1 -0
- package/swiper.mjs +13 -0
- package/swiper.scss +252 -0
- package/types/index.d.ts +6 -0
- package/types/modules/a11y.d.ts +110 -0
- package/types/modules/autoplay.d.ts +133 -0
- package/types/modules/controller.d.ts +35 -0
- package/types/modules/effect-cards.d.ts +33 -0
- package/types/modules/effect-coverflow.d.ts +45 -0
- package/types/modules/effect-creative.d.ts +86 -0
- package/types/modules/effect-cube.d.ts +30 -0
- package/types/modules/effect-fade.d.ts +12 -0
- package/types/modules/effect-flip.d.ts +18 -0
- package/types/modules/free-mode.d.ts +64 -0
- package/types/modules/grid.d.ts +21 -0
- package/types/modules/hash-navigation.d.ts +38 -0
- package/types/modules/history.d.ts +43 -0
- package/types/modules/index.d.ts +51 -0
- package/types/modules/keyboard.d.ts +46 -0
- package/types/modules/manipulation.d.ts +70 -0
- package/types/modules/mousewheel.d.ts +86 -0
- package/types/modules/navigation.d.ts +105 -0
- package/types/modules/pagination.d.ts +307 -0
- package/types/modules/parallax.d.ts +12 -0
- package/types/modules/public-api.d.ts +23 -0
- package/types/modules/scrollbar.d.ts +140 -0
- package/types/modules/thumbs.d.ts +54 -0
- package/types/modules/virtual.d.ts +135 -0
- package/types/modules/zoom.d.ts +91 -0
- package/types/shared.d.ts +13 -0
- package/types/swiper-class.d.ts +522 -0
- package/types/swiper-events.d.ts +359 -0
- package/types/swiper-options.d.ts +1217 -0
package/swiper-react.mjs
ADDED
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swiper React 0.0.7
|
|
3
|
+
* Gem SDK - Swiper, Customized of swiper
|
|
4
|
+
* https://swiperjs.com
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2014-2025 GemPages
|
|
7
|
+
*
|
|
8
|
+
* Released under the MIT License
|
|
9
|
+
*
|
|
10
|
+
* Released on: October 9, 2025
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';
|
|
14
|
+
import { S as Swiper$1 } from './shared/swiper-core.mjs';
|
|
15
|
+
import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';
|
|
16
|
+
import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';
|
|
17
|
+
|
|
18
|
+
function _extends() {
|
|
19
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
20
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
21
|
+
var source = arguments[i];
|
|
22
|
+
for (var key in source) {
|
|
23
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
24
|
+
target[key] = source[key];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return target;
|
|
29
|
+
};
|
|
30
|
+
return _extends.apply(this, arguments);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isChildSwiperSlide(child) {
|
|
34
|
+
return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');
|
|
35
|
+
}
|
|
36
|
+
function processChildren(c) {
|
|
37
|
+
const slides = [];
|
|
38
|
+
React.Children.toArray(c).forEach(child => {
|
|
39
|
+
if (isChildSwiperSlide(child)) {
|
|
40
|
+
slides.push(child);
|
|
41
|
+
} else if (child.props && child.props.children) {
|
|
42
|
+
processChildren(child.props.children).forEach(slide => slides.push(slide));
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return slides;
|
|
46
|
+
}
|
|
47
|
+
function getChildren(c) {
|
|
48
|
+
const slides = [];
|
|
49
|
+
const slots = {
|
|
50
|
+
'container-start': [],
|
|
51
|
+
'container-end': [],
|
|
52
|
+
'wrapper-start': [],
|
|
53
|
+
'wrapper-end': []
|
|
54
|
+
};
|
|
55
|
+
React.Children.toArray(c).forEach(child => {
|
|
56
|
+
if (isChildSwiperSlide(child)) {
|
|
57
|
+
slides.push(child);
|
|
58
|
+
} else if (child.props && child.props.slot && slots[child.props.slot]) {
|
|
59
|
+
slots[child.props.slot].push(child);
|
|
60
|
+
} else if (child.props && child.props.children) {
|
|
61
|
+
const foundSlides = processChildren(child.props.children);
|
|
62
|
+
if (foundSlides.length > 0) {
|
|
63
|
+
foundSlides.forEach(slide => slides.push(slide));
|
|
64
|
+
} else {
|
|
65
|
+
slots['container-end'].push(child);
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
slots['container-end'].push(child);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
slides,
|
|
73
|
+
slots
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function renderVirtual(swiper, slides, virtualData) {
|
|
78
|
+
if (!virtualData) return null;
|
|
79
|
+
const getSlideIndex = index => {
|
|
80
|
+
let slideIndex = index;
|
|
81
|
+
if (index < 0) {
|
|
82
|
+
slideIndex = slides.length + index;
|
|
83
|
+
} else if (slideIndex >= slides.length) {
|
|
84
|
+
// eslint-disable-next-line
|
|
85
|
+
slideIndex = slideIndex - slides.length;
|
|
86
|
+
}
|
|
87
|
+
return slideIndex;
|
|
88
|
+
};
|
|
89
|
+
const style = swiper.isHorizontal() ? {
|
|
90
|
+
[swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`
|
|
91
|
+
} : {
|
|
92
|
+
top: `${virtualData.offset}px`
|
|
93
|
+
};
|
|
94
|
+
const {
|
|
95
|
+
from,
|
|
96
|
+
to
|
|
97
|
+
} = virtualData;
|
|
98
|
+
const loopFrom = swiper.params.loop ? -slides.length : 0;
|
|
99
|
+
const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;
|
|
100
|
+
const slidesToRender = [];
|
|
101
|
+
for (let i = loopFrom; i < loopTo; i += 1) {
|
|
102
|
+
if (i >= from && i <= to) {
|
|
103
|
+
slidesToRender.push(slides[getSlideIndex(i)]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return slidesToRender.map((child, index) => {
|
|
107
|
+
return /*#__PURE__*/React.cloneElement(child, {
|
|
108
|
+
swiper,
|
|
109
|
+
style,
|
|
110
|
+
key: child.props.virtualIndex || child.key || `slide-${index}`
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function useIsomorphicLayoutEffect(callback, deps) {
|
|
116
|
+
// eslint-disable-next-line
|
|
117
|
+
if (typeof window === 'undefined') return useEffect(callback, deps);
|
|
118
|
+
return useLayoutEffect(callback, deps);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const SwiperSlideContext = /*#__PURE__*/createContext(null);
|
|
122
|
+
const useSwiperSlide = () => {
|
|
123
|
+
return useContext(SwiperSlideContext);
|
|
124
|
+
};
|
|
125
|
+
const SwiperContext = /*#__PURE__*/createContext(null);
|
|
126
|
+
const useSwiper = () => {
|
|
127
|
+
return useContext(SwiperContext);
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {
|
|
131
|
+
let {
|
|
132
|
+
className,
|
|
133
|
+
tag: Tag = 'div',
|
|
134
|
+
wrapperTag: WrapperTag = 'div',
|
|
135
|
+
children,
|
|
136
|
+
onSwiper,
|
|
137
|
+
...rest
|
|
138
|
+
} = _temp === void 0 ? {} : _temp;
|
|
139
|
+
let eventsAssigned = false;
|
|
140
|
+
const [containerClasses, setContainerClasses] = useState('swiper');
|
|
141
|
+
const [virtualData, setVirtualData] = useState(null);
|
|
142
|
+
const [breakpointChanged, setBreakpointChanged] = useState(false);
|
|
143
|
+
const initializedRef = useRef(false);
|
|
144
|
+
const swiperElRef = useRef(null);
|
|
145
|
+
const swiperRef = useRef(null);
|
|
146
|
+
const oldPassedParamsRef = useRef(null);
|
|
147
|
+
const oldSlides = useRef(null);
|
|
148
|
+
const nextElRef = useRef(null);
|
|
149
|
+
const prevElRef = useRef(null);
|
|
150
|
+
const paginationElRef = useRef(null);
|
|
151
|
+
const scrollbarElRef = useRef(null);
|
|
152
|
+
const {
|
|
153
|
+
params: swiperParams,
|
|
154
|
+
passedParams,
|
|
155
|
+
rest: restProps,
|
|
156
|
+
events
|
|
157
|
+
} = getParams(rest);
|
|
158
|
+
const {
|
|
159
|
+
slides,
|
|
160
|
+
slots
|
|
161
|
+
} = getChildren(children);
|
|
162
|
+
const onBeforeBreakpoint = () => {
|
|
163
|
+
setBreakpointChanged(!breakpointChanged);
|
|
164
|
+
};
|
|
165
|
+
Object.assign(swiperParams.on, {
|
|
166
|
+
_containerClasses(swiper, classes) {
|
|
167
|
+
setContainerClasses(classes);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
const initSwiper = () => {
|
|
171
|
+
// init swiper
|
|
172
|
+
Object.assign(swiperParams.on, events);
|
|
173
|
+
eventsAssigned = true;
|
|
174
|
+
const passParams = {
|
|
175
|
+
...swiperParams
|
|
176
|
+
};
|
|
177
|
+
delete passParams.wrapperClass;
|
|
178
|
+
swiperRef.current = new Swiper$1(passParams);
|
|
179
|
+
if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {
|
|
180
|
+
swiperRef.current.virtual.slides = slides;
|
|
181
|
+
const extendWith = {
|
|
182
|
+
cache: false,
|
|
183
|
+
slides,
|
|
184
|
+
renderExternal: setVirtualData,
|
|
185
|
+
renderExternalUpdate: false
|
|
186
|
+
};
|
|
187
|
+
extend(swiperRef.current.params.virtual, extendWith);
|
|
188
|
+
extend(swiperRef.current.originalParams.virtual, extendWith);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
if (!swiperElRef.current) {
|
|
192
|
+
initSwiper();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Listen for breakpoints change
|
|
196
|
+
if (swiperRef.current) {
|
|
197
|
+
swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);
|
|
198
|
+
}
|
|
199
|
+
const attachEvents = () => {
|
|
200
|
+
if (eventsAssigned || !events || !swiperRef.current) return;
|
|
201
|
+
Object.keys(events).forEach(eventName => {
|
|
202
|
+
swiperRef.current.on(eventName, events[eventName]);
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
const detachEvents = () => {
|
|
206
|
+
if (!events || !swiperRef.current) return;
|
|
207
|
+
Object.keys(events).forEach(eventName => {
|
|
208
|
+
swiperRef.current.off(eventName, events[eventName]);
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
useEffect(() => {
|
|
212
|
+
return () => {
|
|
213
|
+
if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);
|
|
214
|
+
};
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
// set initialized flag
|
|
218
|
+
useEffect(() => {
|
|
219
|
+
if (!initializedRef.current && swiperRef.current) {
|
|
220
|
+
swiperRef.current.emitSlidesClasses();
|
|
221
|
+
initializedRef.current = true;
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// mount swiper
|
|
226
|
+
useIsomorphicLayoutEffect(() => {
|
|
227
|
+
if (externalElRef) {
|
|
228
|
+
externalElRef.current = swiperElRef.current;
|
|
229
|
+
}
|
|
230
|
+
if (!swiperElRef.current) return;
|
|
231
|
+
if (swiperRef.current.destroyed) {
|
|
232
|
+
initSwiper();
|
|
233
|
+
}
|
|
234
|
+
mountSwiper({
|
|
235
|
+
el: swiperElRef.current,
|
|
236
|
+
nextEl: nextElRef.current,
|
|
237
|
+
prevEl: prevElRef.current,
|
|
238
|
+
paginationEl: paginationElRef.current,
|
|
239
|
+
scrollbarEl: scrollbarElRef.current,
|
|
240
|
+
swiper: swiperRef.current
|
|
241
|
+
}, swiperParams);
|
|
242
|
+
if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);
|
|
243
|
+
// eslint-disable-next-line
|
|
244
|
+
return () => {
|
|
245
|
+
if (swiperRef.current && !swiperRef.current.destroyed) {
|
|
246
|
+
swiperRef.current.destroy(true, false);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
}, []);
|
|
250
|
+
|
|
251
|
+
// watch for params change
|
|
252
|
+
useIsomorphicLayoutEffect(() => {
|
|
253
|
+
attachEvents();
|
|
254
|
+
const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);
|
|
255
|
+
oldPassedParamsRef.current = passedParams;
|
|
256
|
+
oldSlides.current = slides;
|
|
257
|
+
if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {
|
|
258
|
+
updateSwiper({
|
|
259
|
+
swiper: swiperRef.current,
|
|
260
|
+
slides,
|
|
261
|
+
passedParams,
|
|
262
|
+
changedParams,
|
|
263
|
+
nextEl: nextElRef.current,
|
|
264
|
+
prevEl: prevElRef.current,
|
|
265
|
+
scrollbarEl: scrollbarElRef.current,
|
|
266
|
+
paginationEl: paginationElRef.current
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
return () => {
|
|
270
|
+
detachEvents();
|
|
271
|
+
};
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
// update on virtual update
|
|
275
|
+
useIsomorphicLayoutEffect(() => {
|
|
276
|
+
updateOnVirtualData(swiperRef.current);
|
|
277
|
+
}, [virtualData]);
|
|
278
|
+
|
|
279
|
+
// bypass swiper instance to slides
|
|
280
|
+
function renderSlides() {
|
|
281
|
+
if (swiperParams.virtual) {
|
|
282
|
+
return renderVirtual(swiperRef.current, slides, virtualData);
|
|
283
|
+
}
|
|
284
|
+
return slides.map((child, index) => {
|
|
285
|
+
return /*#__PURE__*/React.cloneElement(child, {
|
|
286
|
+
swiper: swiperRef.current,
|
|
287
|
+
swiperSlideIndex: index
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
return /*#__PURE__*/React.createElement(Tag, _extends({
|
|
292
|
+
ref: swiperElRef,
|
|
293
|
+
className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)
|
|
294
|
+
}, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {
|
|
295
|
+
value: swiperRef.current
|
|
296
|
+
}, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {
|
|
297
|
+
className: wrapperClass(swiperParams.wrapperClass)
|
|
298
|
+
}, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
299
|
+
ref: prevElRef,
|
|
300
|
+
className: "swiper-button-prev"
|
|
301
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
302
|
+
ref: nextElRef,
|
|
303
|
+
className: "swiper-button-next"
|
|
304
|
+
})), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", {
|
|
305
|
+
ref: scrollbarElRef,
|
|
306
|
+
className: "swiper-scrollbar"
|
|
307
|
+
}), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", {
|
|
308
|
+
ref: paginationElRef,
|
|
309
|
+
className: "swiper-pagination"
|
|
310
|
+
}), slots['container-end']));
|
|
311
|
+
});
|
|
312
|
+
Swiper.displayName = 'Swiper';
|
|
313
|
+
|
|
314
|
+
const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {
|
|
315
|
+
let {
|
|
316
|
+
tag: Tag = 'div',
|
|
317
|
+
children,
|
|
318
|
+
className = '',
|
|
319
|
+
swiper,
|
|
320
|
+
zoom,
|
|
321
|
+
lazy,
|
|
322
|
+
virtualIndex,
|
|
323
|
+
swiperSlideIndex,
|
|
324
|
+
...rest
|
|
325
|
+
} = _temp === void 0 ? {} : _temp;
|
|
326
|
+
const slideElRef = useRef(null);
|
|
327
|
+
const [slideClasses, setSlideClasses] = useState('swiper-slide');
|
|
328
|
+
const [lazyLoaded, setLazyLoaded] = useState(false);
|
|
329
|
+
function updateClasses(_s, el, classNames) {
|
|
330
|
+
if (el === slideElRef.current) {
|
|
331
|
+
setSlideClasses(classNames);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
useIsomorphicLayoutEffect(() => {
|
|
335
|
+
if (typeof swiperSlideIndex !== 'undefined') {
|
|
336
|
+
slideElRef.current.swiperSlideIndex = swiperSlideIndex;
|
|
337
|
+
}
|
|
338
|
+
if (externalRef) {
|
|
339
|
+
externalRef.current = slideElRef.current;
|
|
340
|
+
}
|
|
341
|
+
if (!slideElRef.current || !swiper) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
if (swiper.destroyed) {
|
|
345
|
+
if (slideClasses !== 'swiper-slide') {
|
|
346
|
+
setSlideClasses('swiper-slide');
|
|
347
|
+
}
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
swiper.on('_slideClass', updateClasses);
|
|
351
|
+
// eslint-disable-next-line
|
|
352
|
+
return () => {
|
|
353
|
+
if (!swiper) return;
|
|
354
|
+
swiper.off('_slideClass', updateClasses);
|
|
355
|
+
};
|
|
356
|
+
});
|
|
357
|
+
useIsomorphicLayoutEffect(() => {
|
|
358
|
+
if (swiper && slideElRef.current && !swiper.destroyed) {
|
|
359
|
+
setSlideClasses(swiper.getSlideClasses(slideElRef.current));
|
|
360
|
+
}
|
|
361
|
+
}, [swiper]);
|
|
362
|
+
const slideData = {
|
|
363
|
+
isActive: slideClasses.indexOf('swiper-slide-active') >= 0,
|
|
364
|
+
isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,
|
|
365
|
+
isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,
|
|
366
|
+
isNext: slideClasses.indexOf('swiper-slide-next') >= 0
|
|
367
|
+
};
|
|
368
|
+
const renderChildren = () => {
|
|
369
|
+
return typeof children === 'function' ? children(slideData) : children;
|
|
370
|
+
};
|
|
371
|
+
const onLoad = () => {
|
|
372
|
+
setLazyLoaded(true);
|
|
373
|
+
};
|
|
374
|
+
return /*#__PURE__*/React.createElement(Tag, _extends({
|
|
375
|
+
ref: slideElRef,
|
|
376
|
+
className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),
|
|
377
|
+
"data-swiper-slide-index": virtualIndex,
|
|
378
|
+
onLoad: onLoad
|
|
379
|
+
}, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {
|
|
380
|
+
value: slideData
|
|
381
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
382
|
+
className: "swiper-zoom-container",
|
|
383
|
+
"data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined
|
|
384
|
+
}, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", {
|
|
385
|
+
className: "swiper-lazy-preloader"
|
|
386
|
+
}))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {
|
|
387
|
+
value: slideData
|
|
388
|
+
}, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", {
|
|
389
|
+
className: "swiper-lazy-preloader"
|
|
390
|
+
})));
|
|
391
|
+
});
|
|
392
|
+
SwiperSlide.displayName = 'SwiperSlide';
|
|
393
|
+
|
|
394
|
+
export { Swiper, SwiperSlide, useSwiper, useSwiperSlide };
|
package/swiper-vars.less
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@themeColor: #007aff;
|
package/swiper-vars.scss
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
$themeColor: #007aff !default;
|