123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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);
- }
- }
|