UNPKG

1.74 kBJavaScriptView Raw
1/* eslint no-unused-vars: "off" */
2export default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
3 const swiper = this;
4 const {
5 params,
6 animating,
7 snapGrid,
8 slidesGrid,
9 rtlTranslate,
10 enabled
11 } = swiper;
12 if (!enabled) return swiper;
13
14 if (params.loop) {
15 if (animating && params.loopPreventsSlide) return false;
16 swiper.loopFix(); // eslint-disable-next-line
17
18 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
19 }
20
21 const translate = rtlTranslate ? swiper.translate : -swiper.translate;
22
23 function normalize(val) {
24 if (val < 0) return -Math.floor(Math.abs(val));
25 return Math.floor(val);
26 }
27
28 const normalizedTranslate = normalize(translate);
29 const normalizedSnapGrid = snapGrid.map(val => normalize(val));
30 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
31
32 if (typeof prevSnap === 'undefined' && params.cssMode) {
33 let prevSnapIndex;
34 snapGrid.forEach((snap, snapIndex) => {
35 if (normalizedTranslate >= snap) {
36 // prevSnap = snap;
37 prevSnapIndex = snapIndex;
38 }
39 });
40
41 if (typeof prevSnapIndex !== 'undefined') {
42 prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
43 }
44 }
45
46 let prevIndex = 0;
47
48 if (typeof prevSnap !== 'undefined') {
49 prevIndex = slidesGrid.indexOf(prevSnap);
50 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
51
52 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
53 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
54 prevIndex = Math.max(prevIndex, 0);
55 }
56 }
57
58 return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
59}
\No newline at end of file