infinity-forge
Version:
40 lines • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = slideToClosest;
/* eslint no-unused-vars: "off" */
function slideToClosest(speed, runCallbacks, internal, threshold) {
if (runCallbacks === void 0) { runCallbacks = true; }
if (threshold === void 0) { threshold = 0.5; }
var swiper = this;
if (swiper.destroyed)
return;
if (typeof speed === 'undefined') {
speed = swiper.params.speed;
}
var index = swiper.activeIndex;
var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
if (translate >= swiper.snapGrid[snapIndex]) {
// The current translate is on or after the current snap index, so the choice
// is between the current index and the one after it.
var currentSnap = swiper.snapGrid[snapIndex];
var nextSnap = swiper.snapGrid[snapIndex + 1];
if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
index += swiper.params.slidesPerGroup;
}
}
else {
// The current translate is before the current snap index, so the choice
// is between the current index and the one before it.
var prevSnap = swiper.snapGrid[snapIndex - 1];
var currentSnap = swiper.snapGrid[snapIndex];
if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
index -= swiper.params.slidesPerGroup;
}
}
index = Math.max(index, 0);
index = Math.min(index, swiper.slidesGrid.length - 1);
return swiper.slideTo(index, speed, runCallbacks, internal);
}
//# sourceMappingURL=slideToClosest.js.map