infinity-forge
Version:
124 lines • 4.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getActiveIndexByTranslate = getActiveIndexByTranslate;
exports.default = updateActiveIndex;
var process_lazy_preloader_1 = require("../../shared/process-lazy-preloader.js");
function getActiveIndexByTranslate(swiper) {
var slidesGrid = swiper.slidesGrid, params = swiper.params;
var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
var activeIndex;
for (var i = 0; i < slidesGrid.length; i += 1) {
if (typeof slidesGrid[i + 1] !== 'undefined') {
if (translate >= slidesGrid[i] &&
translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
activeIndex = i;
}
else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
activeIndex = i + 1;
}
}
else if (translate >= slidesGrid[i]) {
activeIndex = i;
}
}
// Normalize slideIndex
if (params.normalizeSlideIndex) {
if (activeIndex < 0 || typeof activeIndex === 'undefined')
activeIndex = 0;
}
return activeIndex;
}
function updateActiveIndex(newActiveIndex) {
var swiper = this;
var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
var snapGrid = swiper.snapGrid, params = swiper.params, previousIndex = swiper.activeIndex, previousRealIndex = swiper.realIndex, previousSnapIndex = swiper.snapIndex;
var activeIndex = newActiveIndex;
var snapIndex;
var getVirtualRealIndex = function (aIndex) {
var realIndex = aIndex - swiper.virtual.slidesBefore;
if (realIndex < 0) {
realIndex = swiper.virtual.slides.length + realIndex;
}
if (realIndex >= swiper.virtual.slides.length) {
realIndex -= swiper.virtual.slides.length;
}
return realIndex;
};
if (typeof activeIndex === 'undefined') {
activeIndex = getActiveIndexByTranslate(swiper);
}
if (snapGrid.indexOf(translate) >= 0) {
snapIndex = snapGrid.indexOf(translate);
}
else {
var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
}
if (snapIndex >= snapGrid.length)
snapIndex = snapGrid.length - 1;
if (activeIndex === previousIndex && !swiper.params.loop) {
if (snapIndex !== previousSnapIndex) {
swiper.snapIndex = snapIndex;
swiper.emit('snapIndexChange');
}
return;
}
if (activeIndex === previousIndex &&
swiper.params.loop &&
swiper.virtual &&
swiper.params.virtual.enabled) {
swiper.realIndex = getVirtualRealIndex(activeIndex);
return;
}
var gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
var normalizeSlideIndexToColumn = function (index) {
if (!gridEnabled)
return index;
return Math.floor(index / params.grid.rows);
};
// Get real index
var realIndex;
if (swiper.virtual && params.virtual.enabled && params.loop) {
realIndex = getVirtualRealIndex(activeIndex);
}
else if (gridEnabled) {
var firstSlideInColumn = swiper.slides.filter(function (slideEl) { return slideEl.column === activeIndex; })[0];
var activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
if (Number.isNaN(activeSlideIndex)) {
activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
}
realIndex = Math.floor(activeSlideIndex / params.grid.rows);
}
else if (swiper.slides[activeIndex]) {
var slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');
if (slideIndex) {
realIndex = parseInt(slideIndex, 10);
}
else {
realIndex = activeIndex;
}
}
else {
realIndex = activeIndex;
}
Object.assign(swiper, {
previousSnapIndex: previousSnapIndex,
snapIndex: snapIndex,
previousRealIndex: previousRealIndex,
realIndex: realIndex,
previousIndex: previousIndex,
activeIndex: activeIndex,
});
if (swiper.initialized) {
(0, process_lazy_preloader_1.preload)(swiper);
}
swiper.emit('activeIndexChange');
swiper.emit('snapIndexChange');
if (swiper.initialized || swiper.params.runCallbacksOnInit) {
if (previousRealIndex !== realIndex) {
swiper.emit('realIndexChange');
}
swiper.emit('slideChange');
}
}
//# sourceMappingURL=updateActiveIndex.js.map