会员权益
This commit is contained in:
102
uni_modules/zebra-swiper/libs/update/updateActiveIndex.js
Normal file
102
uni_modules/zebra-swiper/libs/update/updateActiveIndex.js
Normal file
@@ -0,0 +1,102 @@
|
||||
export default function updateActiveIndex(newActiveIndex) {
|
||||
const swiper = this;
|
||||
const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
|
||||
const {
|
||||
slidesGrid,
|
||||
snapGrid,
|
||||
params,
|
||||
activeIndex: previousIndex,
|
||||
realIndex: previousRealIndex,
|
||||
snapIndex: previousSnapIndex
|
||||
} = swiper;
|
||||
let activeIndex = newActiveIndex;
|
||||
let snapIndex;
|
||||
|
||||
if (typeof activeIndex === 'undefined') {
|
||||
for (let 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (snapGrid.indexOf(translate) >= 0) {
|
||||
snapIndex = snapGrid.indexOf(translate);
|
||||
} else {
|
||||
const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
|
||||
snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
|
||||
}
|
||||
|
||||
if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
|
||||
|
||||
|
||||
|
||||
if (swiper.loopedSlides) {
|
||||
swiper.slides.filter((item) => item.index >= swiper.loopedSlides && item.index < swiper.slides.length - swiper
|
||||
.loopedSlides).forEach((item, index) => {
|
||||
item.dataSwiperSlideIndex = item.index - swiper.loopedSlides;
|
||||
})
|
||||
swiper.slides.filter((item) => item.index < swiper.loopedSlides).forEach((item, index) => {
|
||||
if (swiper.slides[swiper.slides.length - swiper.loopedSlides * 3 + index]) {
|
||||
item.dataSwiperSlideIndex = swiper.slides[swiper.slides.length - swiper.loopedSlides * 3 +
|
||||
index]
|
||||
.index;
|
||||
}
|
||||
})
|
||||
swiper.slides.filter((item) => item.index >= swiper.slides.length - swiper
|
||||
.loopedSlides).forEach((item, index) => {
|
||||
item.dataSwiperSlideIndex = swiper.slides[index].index;
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (activeIndex === previousIndex) {
|
||||
if (snapIndex !== previousSnapIndex) {
|
||||
swiper.snapIndex = snapIndex;
|
||||
swiper.emit('snapIndexChange');
|
||||
}
|
||||
|
||||
return;
|
||||
} // Get real index
|
||||
|
||||
let realIndex;
|
||||
if (swiper.virtual && params.virtual.enabled) {
|
||||
realIndex = activeIndex;
|
||||
} else {
|
||||
if (swiper.slides[activeIndex].dataSwiperSlideIndex == undefined || swiper.slides[activeIndex]
|
||||
.dataSwiperSlideIndex == null) {
|
||||
realIndex = activeIndex;
|
||||
} else {
|
||||
realIndex = swiper.slides[activeIndex].dataSwiperSlideIndex;
|
||||
}
|
||||
}
|
||||
Object.assign(swiper, {
|
||||
snapIndex,
|
||||
realIndex,
|
||||
previousIndex,
|
||||
activeIndex
|
||||
});
|
||||
swiper.emit('activeIndexChange');
|
||||
swiper.emit('snapIndexChange');
|
||||
|
||||
if (previousRealIndex !== realIndex) {
|
||||
swiper.emit('realIndexChange');
|
||||
}
|
||||
|
||||
if (swiper.initialized || swiper.params.runCallbacksOnInit) {
|
||||
swiper.emit('slideChange', activeIndex);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user