/* 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); }