@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
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { c as createShadow } from '../shared/create-shadow.mjs';
|
|
2
|
+
import { e as effectInit } from '../shared/effect-init.mjs';
|
|
3
|
+
import { e as effectTarget } from '../shared/effect-target.mjs';
|
|
4
|
+
import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';
|
|
5
|
+
import { g as getSlideTransformEl, p as getRotateFix } from '../shared/utils.mjs';
|
|
6
|
+
|
|
7
|
+
function EffectFlip(_ref) {
|
|
8
|
+
let {
|
|
9
|
+
swiper,
|
|
10
|
+
extendParams,
|
|
11
|
+
on
|
|
12
|
+
} = _ref;
|
|
13
|
+
extendParams({
|
|
14
|
+
flipEffect: {
|
|
15
|
+
slideShadows: true,
|
|
16
|
+
limitRotation: true
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const createSlideShadows = (slideEl, progress) => {
|
|
20
|
+
let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
|
|
21
|
+
let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
|
|
22
|
+
if (!shadowBefore) {
|
|
23
|
+
shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');
|
|
24
|
+
}
|
|
25
|
+
if (!shadowAfter) {
|
|
26
|
+
shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
|
|
27
|
+
}
|
|
28
|
+
if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
|
|
29
|
+
if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
|
|
30
|
+
};
|
|
31
|
+
const recreateShadows = () => {
|
|
32
|
+
// Set shadows
|
|
33
|
+
swiper.params.flipEffect;
|
|
34
|
+
swiper.slides.forEach(slideEl => {
|
|
35
|
+
let progress = slideEl.progress;
|
|
36
|
+
if (swiper.params.flipEffect.limitRotation) {
|
|
37
|
+
progress = Math.max(Math.min(slideEl.progress, 1), -1);
|
|
38
|
+
}
|
|
39
|
+
createSlideShadows(slideEl, progress);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const setTranslate = () => {
|
|
43
|
+
const {
|
|
44
|
+
slides,
|
|
45
|
+
rtlTranslate: rtl
|
|
46
|
+
} = swiper;
|
|
47
|
+
const params = swiper.params.flipEffect;
|
|
48
|
+
const rotateFix = getRotateFix(swiper);
|
|
49
|
+
for (let i = 0; i < slides.length; i += 1) {
|
|
50
|
+
const slideEl = slides[i];
|
|
51
|
+
let progress = slideEl.progress;
|
|
52
|
+
if (swiper.params.flipEffect.limitRotation) {
|
|
53
|
+
progress = Math.max(Math.min(slideEl.progress, 1), -1);
|
|
54
|
+
}
|
|
55
|
+
const offset = slideEl.swiperSlideOffset;
|
|
56
|
+
const rotate = -180 * progress;
|
|
57
|
+
let rotateY = rotate;
|
|
58
|
+
let rotateX = 0;
|
|
59
|
+
let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
|
|
60
|
+
let ty = 0;
|
|
61
|
+
if (!swiper.isHorizontal()) {
|
|
62
|
+
ty = tx;
|
|
63
|
+
tx = 0;
|
|
64
|
+
rotateX = -rotateY;
|
|
65
|
+
rotateY = 0;
|
|
66
|
+
} else if (rtl) {
|
|
67
|
+
rotateY = -rotateY;
|
|
68
|
+
}
|
|
69
|
+
slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
|
|
70
|
+
if (params.slideShadows) {
|
|
71
|
+
createSlideShadows(slideEl, progress);
|
|
72
|
+
}
|
|
73
|
+
const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;
|
|
74
|
+
const targetEl = effectTarget(params, slideEl);
|
|
75
|
+
targetEl.style.transform = transform;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const setTransition = duration => {
|
|
79
|
+
const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));
|
|
80
|
+
transformElements.forEach(el => {
|
|
81
|
+
el.style.transitionDuration = `${duration}ms`;
|
|
82
|
+
el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
|
|
83
|
+
shadowEl.style.transitionDuration = `${duration}ms`;
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
effectVirtualTransitionEnd({
|
|
87
|
+
swiper,
|
|
88
|
+
duration,
|
|
89
|
+
transformElements
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
effectInit({
|
|
93
|
+
effect: 'flip',
|
|
94
|
+
swiper,
|
|
95
|
+
on,
|
|
96
|
+
setTranslate,
|
|
97
|
+
setTransition,
|
|
98
|
+
recreateShadows,
|
|
99
|
+
getEffectParams: () => swiper.params.flipEffect,
|
|
100
|
+
perspective: () => true,
|
|
101
|
+
overwriteParams: () => ({
|
|
102
|
+
slidesPerView: 1,
|
|
103
|
+
slidesPerGroup: 1,
|
|
104
|
+
watchSlidesProgress: true,
|
|
105
|
+
spaceBetween: 0,
|
|
106
|
+
virtualTranslate: !swiper.params.cssMode
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export { EffectFlip as default };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.swiper.swiper-flip {
|
|
2
|
+
overflow: visible;
|
|
3
|
+
}
|
|
4
|
+
.swiper-flip {
|
|
5
|
+
.swiper-slide {
|
|
6
|
+
pointer-events: none;
|
|
7
|
+
backface-visibility: hidden;
|
|
8
|
+
z-index: 1;
|
|
9
|
+
.swiper-slide {
|
|
10
|
+
pointer-events: none;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
.swiper-slide-active {
|
|
14
|
+
&,
|
|
15
|
+
& .swiper-slide-active {
|
|
16
|
+
pointer-events: auto;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/* Flip slide shadows start */
|
|
21
|
+
.swiper-flip {
|
|
22
|
+
.swiper-slide-shadow-flip.swiper-slide-shadow-top,
|
|
23
|
+
.swiper-slide-shadow-flip.swiper-slide-shadow-bottom,
|
|
24
|
+
.swiper-slide-shadow-flip.swiper-slide-shadow-left,
|
|
25
|
+
.swiper-slide-shadow-flip.swiper-slide-shadow-right {
|
|
26
|
+
z-index: 0;
|
|
27
|
+
backface-visibility: hidden;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/* Flip slide shadows end */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{f as now,l as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length<l.length?t.slideTo(l.length-1):t.slideTo(t.slides.length-1);else{if(i.freeMode.momentum){if(m.velocities.length>1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)<i.freeMode.minimumVelocity&&(t.velocity=0),(s>150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(c<t.maxTranslate())i.freeMode.momentumBounce?(c+t.maxTranslate()<-f&&(c=t.maxTranslate()-f),d=t.maxTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.maxTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(c>t.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t<l.length;t+=1)if(l[t]>-c){e=t;break}c=Math.abs(l[e]-c)<Math.abs(l[e-1]-c)||"next"===t.swipeDirection?l[e]:l[e-1],c=-c}if(p&&s("transitionEnd",(()=>{t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o<n?i.speed:o<2*n?1.5*i.speed:2.5*i.speed}}else if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode.momentumBounce&&u?(t.updateProgress(d),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default};
|
|
2
|
+
//# sourceMappingURL=free-mode.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { f as now, l as elementTransitionEnd } from '../shared/utils.mjs';
|
|
2
|
+
|
|
3
|
+
function freeMode(_ref) {
|
|
4
|
+
let {
|
|
5
|
+
swiper,
|
|
6
|
+
extendParams,
|
|
7
|
+
emit,
|
|
8
|
+
once
|
|
9
|
+
} = _ref;
|
|
10
|
+
extendParams({
|
|
11
|
+
freeMode: {
|
|
12
|
+
enabled: false,
|
|
13
|
+
momentum: true,
|
|
14
|
+
momentumRatio: 1,
|
|
15
|
+
momentumBounce: true,
|
|
16
|
+
momentumBounceRatio: 1,
|
|
17
|
+
momentumVelocityRatio: 1,
|
|
18
|
+
sticky: false,
|
|
19
|
+
minimumVelocity: 0.02
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
function onTouchStart() {
|
|
23
|
+
if (swiper.params.cssMode) return;
|
|
24
|
+
const translate = swiper.getTranslate();
|
|
25
|
+
swiper.setTranslate(translate);
|
|
26
|
+
swiper.setTransition(0);
|
|
27
|
+
swiper.touchEventsData.velocities.length = 0;
|
|
28
|
+
swiper.freeMode.onTouchEnd({
|
|
29
|
+
currentPos: swiper.rtl ? swiper.translate : -swiper.translate
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function onTouchMove() {
|
|
33
|
+
if (swiper.params.cssMode) return;
|
|
34
|
+
const {
|
|
35
|
+
touchEventsData: data,
|
|
36
|
+
touches
|
|
37
|
+
} = swiper;
|
|
38
|
+
// Velocity
|
|
39
|
+
if (data.velocities.length === 0) {
|
|
40
|
+
data.velocities.push({
|
|
41
|
+
position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
|
|
42
|
+
time: data.touchStartTime
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
data.velocities.push({
|
|
46
|
+
position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
|
|
47
|
+
time: now()
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function onTouchEnd(_ref2) {
|
|
51
|
+
let {
|
|
52
|
+
currentPos
|
|
53
|
+
} = _ref2;
|
|
54
|
+
if (swiper.params.cssMode) return;
|
|
55
|
+
const {
|
|
56
|
+
params,
|
|
57
|
+
wrapperEl,
|
|
58
|
+
rtlTranslate: rtl,
|
|
59
|
+
snapGrid,
|
|
60
|
+
touchEventsData: data
|
|
61
|
+
} = swiper;
|
|
62
|
+
// Time diff
|
|
63
|
+
const touchEndTime = now();
|
|
64
|
+
const timeDiff = touchEndTime - data.touchStartTime;
|
|
65
|
+
if (currentPos < -swiper.minTranslate()) {
|
|
66
|
+
swiper.slideTo(swiper.activeIndex);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (currentPos > -swiper.maxTranslate()) {
|
|
70
|
+
if (swiper.slides.length < snapGrid.length) {
|
|
71
|
+
swiper.slideTo(snapGrid.length - 1);
|
|
72
|
+
} else {
|
|
73
|
+
swiper.slideTo(swiper.slides.length - 1);
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (params.freeMode.momentum) {
|
|
78
|
+
if (data.velocities.length > 1) {
|
|
79
|
+
const lastMoveEvent = data.velocities.pop();
|
|
80
|
+
const velocityEvent = data.velocities.pop();
|
|
81
|
+
const distance = lastMoveEvent.position - velocityEvent.position;
|
|
82
|
+
const time = lastMoveEvent.time - velocityEvent.time;
|
|
83
|
+
swiper.velocity = distance / time;
|
|
84
|
+
swiper.velocity /= 2;
|
|
85
|
+
if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
|
|
86
|
+
swiper.velocity = 0;
|
|
87
|
+
}
|
|
88
|
+
// this implies that the user stopped moving a finger then released.
|
|
89
|
+
// There would be no events with distance zero, so the last event is stale.
|
|
90
|
+
if (time > 150 || now() - lastMoveEvent.time > 300) {
|
|
91
|
+
swiper.velocity = 0;
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
swiper.velocity = 0;
|
|
95
|
+
}
|
|
96
|
+
swiper.velocity *= params.freeMode.momentumVelocityRatio;
|
|
97
|
+
data.velocities.length = 0;
|
|
98
|
+
let momentumDuration = 1000 * params.freeMode.momentumRatio;
|
|
99
|
+
const momentumDistance = swiper.velocity * momentumDuration;
|
|
100
|
+
let newPosition = swiper.translate + momentumDistance;
|
|
101
|
+
if (rtl) newPosition = -newPosition;
|
|
102
|
+
let doBounce = false;
|
|
103
|
+
let afterBouncePosition;
|
|
104
|
+
const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
|
|
105
|
+
let needsLoopFix;
|
|
106
|
+
if (newPosition < swiper.maxTranslate()) {
|
|
107
|
+
if (params.freeMode.momentumBounce) {
|
|
108
|
+
if (newPosition + swiper.maxTranslate() < -bounceAmount) {
|
|
109
|
+
newPosition = swiper.maxTranslate() - bounceAmount;
|
|
110
|
+
}
|
|
111
|
+
afterBouncePosition = swiper.maxTranslate();
|
|
112
|
+
doBounce = true;
|
|
113
|
+
data.allowMomentumBounce = true;
|
|
114
|
+
} else {
|
|
115
|
+
newPosition = swiper.maxTranslate();
|
|
116
|
+
}
|
|
117
|
+
if (params.loop && params.centeredSlides) needsLoopFix = true;
|
|
118
|
+
} else if (newPosition > swiper.minTranslate()) {
|
|
119
|
+
if (params.freeMode.momentumBounce) {
|
|
120
|
+
if (newPosition - swiper.minTranslate() > bounceAmount) {
|
|
121
|
+
newPosition = swiper.minTranslate() + bounceAmount;
|
|
122
|
+
}
|
|
123
|
+
afterBouncePosition = swiper.minTranslate();
|
|
124
|
+
doBounce = true;
|
|
125
|
+
data.allowMomentumBounce = true;
|
|
126
|
+
} else {
|
|
127
|
+
newPosition = swiper.minTranslate();
|
|
128
|
+
}
|
|
129
|
+
if (params.loop && params.centeredSlides) needsLoopFix = true;
|
|
130
|
+
} else if (params.freeMode.sticky) {
|
|
131
|
+
let nextSlide;
|
|
132
|
+
for (let j = 0; j < snapGrid.length; j += 1) {
|
|
133
|
+
if (snapGrid[j] > -newPosition) {
|
|
134
|
+
nextSlide = j;
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
|
|
139
|
+
newPosition = snapGrid[nextSlide];
|
|
140
|
+
} else {
|
|
141
|
+
newPosition = snapGrid[nextSlide - 1];
|
|
142
|
+
}
|
|
143
|
+
newPosition = -newPosition;
|
|
144
|
+
}
|
|
145
|
+
if (needsLoopFix) {
|
|
146
|
+
once('transitionEnd', () => {
|
|
147
|
+
swiper.loopFix();
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// Fix duration
|
|
151
|
+
if (swiper.velocity !== 0) {
|
|
152
|
+
if (rtl) {
|
|
153
|
+
momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
|
|
154
|
+
} else {
|
|
155
|
+
momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
|
|
156
|
+
}
|
|
157
|
+
if (params.freeMode.sticky) {
|
|
158
|
+
// If freeMode.sticky is active and the user ends a swipe with a slow-velocity
|
|
159
|
+
// event, then durations can be 20+ seconds to slide one (or zero!) slides.
|
|
160
|
+
// It's easy to see this when simulating touch with mouse events. To fix this,
|
|
161
|
+
// limit single-slide swipes to the default slide duration. This also has the
|
|
162
|
+
// nice side effect of matching slide speed if the user stopped moving before
|
|
163
|
+
// lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
|
|
164
|
+
// For faster swipes, also apply limits (albeit higher ones).
|
|
165
|
+
const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
|
|
166
|
+
const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
|
|
167
|
+
if (moveDistance < currentSlideSize) {
|
|
168
|
+
momentumDuration = params.speed;
|
|
169
|
+
} else if (moveDistance < 2 * currentSlideSize) {
|
|
170
|
+
momentumDuration = params.speed * 1.5;
|
|
171
|
+
} else {
|
|
172
|
+
momentumDuration = params.speed * 2.5;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
} else if (params.freeMode.sticky) {
|
|
176
|
+
swiper.slideToClosest();
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (params.freeMode.momentumBounce && doBounce) {
|
|
180
|
+
swiper.updateProgress(afterBouncePosition);
|
|
181
|
+
swiper.setTransition(momentumDuration);
|
|
182
|
+
swiper.setTranslate(newPosition);
|
|
183
|
+
swiper.transitionStart(true, swiper.swipeDirection);
|
|
184
|
+
swiper.animating = true;
|
|
185
|
+
elementTransitionEnd(wrapperEl, () => {
|
|
186
|
+
if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
|
|
187
|
+
emit('momentumBounce');
|
|
188
|
+
swiper.setTransition(params.speed);
|
|
189
|
+
setTimeout(() => {
|
|
190
|
+
swiper.setTranslate(afterBouncePosition);
|
|
191
|
+
elementTransitionEnd(wrapperEl, () => {
|
|
192
|
+
if (!swiper || swiper.destroyed) return;
|
|
193
|
+
swiper.transitionEnd();
|
|
194
|
+
});
|
|
195
|
+
}, 0);
|
|
196
|
+
});
|
|
197
|
+
} else if (swiper.velocity) {
|
|
198
|
+
emit('_freeModeNoMomentumRelease');
|
|
199
|
+
swiper.updateProgress(newPosition);
|
|
200
|
+
swiper.setTransition(momentumDuration);
|
|
201
|
+
swiper.setTranslate(newPosition);
|
|
202
|
+
swiper.transitionStart(true, swiper.swipeDirection);
|
|
203
|
+
if (!swiper.animating) {
|
|
204
|
+
swiper.animating = true;
|
|
205
|
+
elementTransitionEnd(wrapperEl, () => {
|
|
206
|
+
if (!swiper || swiper.destroyed) return;
|
|
207
|
+
swiper.transitionEnd();
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
} else {
|
|
211
|
+
swiper.updateProgress(newPosition);
|
|
212
|
+
}
|
|
213
|
+
swiper.updateActiveIndex();
|
|
214
|
+
swiper.updateSlidesClasses();
|
|
215
|
+
} else if (params.freeMode.sticky) {
|
|
216
|
+
swiper.slideToClosest();
|
|
217
|
+
return;
|
|
218
|
+
} else if (params.freeMode) {
|
|
219
|
+
emit('_freeModeNoMomentumRelease');
|
|
220
|
+
}
|
|
221
|
+
if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
|
|
222
|
+
emit('_freeModeStaticRelease');
|
|
223
|
+
swiper.updateProgress();
|
|
224
|
+
swiper.updateActiveIndex();
|
|
225
|
+
swiper.updateSlidesClasses();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
Object.assign(swiper, {
|
|
229
|
+
freeMode: {
|
|
230
|
+
onTouchStart,
|
|
231
|
+
onTouchMove,
|
|
232
|
+
onTouchEnd
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export { freeMode as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}
|
package/modules/grid.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i<r.length;i+=1){let a=r[i];t&&(a=Math.floor(a)),r[i]<s.virtualSize+r[0]&&e.push(a)}r.splice(0,r.length),r.push(...e)}}}}export{Grid as default};
|
|
2
|
+
//# sourceMappingURL=grid.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.mjs.mjs","names":["Grid","_ref","slidesNumberEvenToRows","slidesPerRow","numFullColumns","wasMultiRow","swiper","extendParams","on","grid","rows","fill","getSpaceBetween","spaceBetween","params","indexOf","parseFloat","replace","size","el","isMultiRow","classList","remove","containerModifierClass","emitContainerClasses","add","initSlides","slides","slidesPerView","slidesLength","virtual","enabled","length","Math","floor","ceil","max","unsetSlides","forEach","slide","swiperSlideGridSet","style","height","getDirectionLabel","updateSlide","i","slidesPerGroup","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","min","order","updateWrapperSize","slideSize","snapGrid","centeredSlides","roundLengths","virtualSize","cssMode","wrapperEl","newSlidesGrid","slidesGridItem","push","splice"],"sources":["0"],"mappings":"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"}
|
package/modules/grid.mjs
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
function Grid(_ref) {
|
|
2
|
+
let {
|
|
3
|
+
swiper,
|
|
4
|
+
extendParams,
|
|
5
|
+
on
|
|
6
|
+
} = _ref;
|
|
7
|
+
extendParams({
|
|
8
|
+
grid: {
|
|
9
|
+
rows: 1,
|
|
10
|
+
fill: 'column'
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
let slidesNumberEvenToRows;
|
|
14
|
+
let slidesPerRow;
|
|
15
|
+
let numFullColumns;
|
|
16
|
+
let wasMultiRow;
|
|
17
|
+
const getSpaceBetween = () => {
|
|
18
|
+
let spaceBetween = swiper.params.spaceBetween;
|
|
19
|
+
if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
|
|
20
|
+
spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
|
|
21
|
+
} else if (typeof spaceBetween === 'string') {
|
|
22
|
+
spaceBetween = parseFloat(spaceBetween);
|
|
23
|
+
}
|
|
24
|
+
return spaceBetween;
|
|
25
|
+
};
|
|
26
|
+
const initSlides = slides => {
|
|
27
|
+
const {
|
|
28
|
+
slidesPerView
|
|
29
|
+
} = swiper.params;
|
|
30
|
+
const {
|
|
31
|
+
rows,
|
|
32
|
+
fill
|
|
33
|
+
} = swiper.params.grid;
|
|
34
|
+
const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
|
|
35
|
+
numFullColumns = Math.floor(slidesLength / rows);
|
|
36
|
+
if (Math.floor(slidesLength / rows) === slidesLength / rows) {
|
|
37
|
+
slidesNumberEvenToRows = slidesLength;
|
|
38
|
+
} else {
|
|
39
|
+
slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
|
|
40
|
+
}
|
|
41
|
+
if (slidesPerView !== 'auto' && fill === 'row') {
|
|
42
|
+
slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
|
|
43
|
+
}
|
|
44
|
+
slidesPerRow = slidesNumberEvenToRows / rows;
|
|
45
|
+
};
|
|
46
|
+
const unsetSlides = () => {
|
|
47
|
+
if (swiper.slides) {
|
|
48
|
+
swiper.slides.forEach(slide => {
|
|
49
|
+
if (slide.swiperSlideGridSet) {
|
|
50
|
+
slide.style.height = '';
|
|
51
|
+
slide.style[swiper.getDirectionLabel('margin-top')] = '';
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const updateSlide = (i, slide, slides) => {
|
|
57
|
+
const {
|
|
58
|
+
slidesPerGroup
|
|
59
|
+
} = swiper.params;
|
|
60
|
+
const spaceBetween = getSpaceBetween();
|
|
61
|
+
const {
|
|
62
|
+
rows,
|
|
63
|
+
fill
|
|
64
|
+
} = swiper.params.grid;
|
|
65
|
+
const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
|
|
66
|
+
// Set slides order
|
|
67
|
+
let newSlideOrderIndex;
|
|
68
|
+
let column;
|
|
69
|
+
let row;
|
|
70
|
+
if (fill === 'row' && slidesPerGroup > 1) {
|
|
71
|
+
const groupIndex = Math.floor(i / (slidesPerGroup * rows));
|
|
72
|
+
const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
|
|
73
|
+
const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
|
|
74
|
+
row = Math.floor(slideIndexInGroup / columnsInGroup);
|
|
75
|
+
column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
|
|
76
|
+
newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
|
|
77
|
+
slide.style.order = newSlideOrderIndex;
|
|
78
|
+
} else if (fill === 'column') {
|
|
79
|
+
column = Math.floor(i / rows);
|
|
80
|
+
row = i - column * rows;
|
|
81
|
+
if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
|
|
82
|
+
row += 1;
|
|
83
|
+
if (row >= rows) {
|
|
84
|
+
row = 0;
|
|
85
|
+
column += 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
89
|
+
row = Math.floor(i / slidesPerRow);
|
|
90
|
+
column = i - row * slidesPerRow;
|
|
91
|
+
}
|
|
92
|
+
slide.row = row;
|
|
93
|
+
slide.column = column;
|
|
94
|
+
slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;
|
|
95
|
+
slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';
|
|
96
|
+
slide.swiperSlideGridSet = true;
|
|
97
|
+
};
|
|
98
|
+
const updateWrapperSize = (slideSize, snapGrid) => {
|
|
99
|
+
const {
|
|
100
|
+
centeredSlides,
|
|
101
|
+
roundLengths
|
|
102
|
+
} = swiper.params;
|
|
103
|
+
const spaceBetween = getSpaceBetween();
|
|
104
|
+
const {
|
|
105
|
+
rows
|
|
106
|
+
} = swiper.params.grid;
|
|
107
|
+
swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
|
|
108
|
+
swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
|
|
109
|
+
if (!swiper.params.cssMode) {
|
|
110
|
+
swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
|
|
111
|
+
}
|
|
112
|
+
if (centeredSlides) {
|
|
113
|
+
const newSlidesGrid = [];
|
|
114
|
+
for (let i = 0; i < snapGrid.length; i += 1) {
|
|
115
|
+
let slidesGridItem = snapGrid[i];
|
|
116
|
+
if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
|
|
117
|
+
if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
|
|
118
|
+
}
|
|
119
|
+
snapGrid.splice(0, snapGrid.length);
|
|
120
|
+
snapGrid.push(...newSlidesGrid);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const onInit = () => {
|
|
124
|
+
wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;
|
|
125
|
+
};
|
|
126
|
+
const onUpdate = () => {
|
|
127
|
+
const {
|
|
128
|
+
params,
|
|
129
|
+
el
|
|
130
|
+
} = swiper;
|
|
131
|
+
const isMultiRow = params.grid && params.grid.rows > 1;
|
|
132
|
+
if (wasMultiRow && !isMultiRow) {
|
|
133
|
+
el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
|
|
134
|
+
numFullColumns = 1;
|
|
135
|
+
swiper.emitContainerClasses();
|
|
136
|
+
} else if (!wasMultiRow && isMultiRow) {
|
|
137
|
+
el.classList.add(`${params.containerModifierClass}grid`);
|
|
138
|
+
if (params.grid.fill === 'column') {
|
|
139
|
+
el.classList.add(`${params.containerModifierClass}grid-column`);
|
|
140
|
+
}
|
|
141
|
+
swiper.emitContainerClasses();
|
|
142
|
+
}
|
|
143
|
+
wasMultiRow = isMultiRow;
|
|
144
|
+
};
|
|
145
|
+
on('init', onInit);
|
|
146
|
+
on('update', onUpdate);
|
|
147
|
+
swiper.grid = {
|
|
148
|
+
initSlides,
|
|
149
|
+
unsetSlides,
|
|
150
|
+
updateSlide,
|
|
151
|
+
updateWrapperSize
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { Grid as default };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|