swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
40 lines (35 loc) • 1.39 kB
JavaScript
export default function loopFix() {
var swiper = this;
swiper.emit('beforeLoopFix');
var activeIndex = swiper.activeIndex,
slides = swiper.slides,
loopedSlides = swiper.loopedSlides,
allowSlidePrev = swiper.allowSlidePrev,
allowSlideNext = swiper.allowSlideNext,
snapGrid = swiper.snapGrid,
rtl = swiper.rtlTranslate;
var newIndex;
swiper.allowSlidePrev = true;
swiper.allowSlideNext = true;
var snapTranslate = -snapGrid[activeIndex];
var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
if (activeIndex < loopedSlides) {
newIndex = slides.length - loopedSlides * 3 + activeIndex;
newIndex += loopedSlides;
var slideChanged = swiper.slideTo(newIndex, 0, false, true);
if (slideChanged && diff !== 0) {
swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
}
} else if (activeIndex >= slides.length - loopedSlides) {
// Fix For Positive Oversliding
newIndex = -slides.length + activeIndex + loopedSlides;
newIndex += loopedSlides;
var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
if (_slideChanged && diff !== 0) {
swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
}
}
swiper.allowSlidePrev = allowSlidePrev;
swiper.allowSlideNext = allowSlideNext;
swiper.emit('loopFix');
}