/* eslint no-unused-vars: "off" */
|
export default function (speed = this.params.speed, runCallbacks = true, internal) {
|
const swiper = this;
|
const {
|
params, animating, snapGrid, slidesGrid, rtlTranslate,
|
} = swiper;
|
|
if (params.loop) {
|
if (animating) return false;
|
swiper.loopFix();
|
// eslint-disable-next-line
|
swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
|
}
|
const translate = rtlTranslate ? swiper.translate : -swiper.translate;
|
function normalize(val) {
|
if (val < 0) return -Math.floor(Math.abs(val));
|
return Math.floor(val);
|
}
|
const normalizedTranslate = normalize(translate);
|
const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
|
const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));
|
|
const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
|
let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
|
if (typeof prevSnap === 'undefined' && params.cssMode) {
|
snapGrid.forEach((snap) => {
|
if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
|
});
|
}
|
let prevIndex;
|
if (typeof prevSnap !== 'undefined') {
|
prevIndex = slidesGrid.indexOf(prevSnap);
|
if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
|
}
|
return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
|
}
|