朱桂飞
2024-08-01 6959c1d4ee2244691603ab1f471b750ac517725d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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);
    }
}