46 lines
1.7 KiB
JavaScript
46 lines
1.7 KiB
JavaScript
export default function updateSlidesProgress(translate = this && this.translate || 0) {
|
|
const swiper = this;
|
|
const params = swiper.params;
|
|
const {
|
|
slides,
|
|
rtlTranslate: rtl,
|
|
snapGrid
|
|
} = swiper;
|
|
if (slides.length === 0) return;
|
|
if (typeof slides[0].swiperSlideOffset === 'undefined' || typeof slides[slides.length - 1].swiperSlideOffset ===
|
|
'undefined') swiper
|
|
.updateSlidesOffset();
|
|
let offsetCenter = -translate;
|
|
if (rtl) offsetCenter = translate; // Visible Slides
|
|
|
|
swiper.visibleSlidesIndexes = [];
|
|
swiper.visibleSlides = [];
|
|
|
|
// slides.forEach((item)=>)
|
|
|
|
for (let i = 0; i < slides.length; i += 1) {
|
|
const slide = slides[i];
|
|
let slideOffset = slide.swiperSlideOffset;
|
|
if (params.cssMode && params.centeredSlides) {
|
|
slideOffset -= slides[0].swiperSlideOffset;
|
|
}
|
|
|
|
const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (
|
|
slide.swiperSlideSize + params.spaceBetween);
|
|
const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() :
|
|
0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
|
|
const slideBefore = -(offsetCenter - slideOffset);
|
|
const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
|
|
const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper
|
|
.size || slideBefore <= 0 && slideAfter >= swiper.size;
|
|
if (isVisible) {
|
|
swiper.visibleSlides.push(slide);
|
|
swiper.visibleSlidesIndexes.push(i);
|
|
slides[i].addClass(params.slideVisibleClass);
|
|
}
|
|
|
|
slide.progress = rtl ? -slideProgress : slideProgress;
|
|
slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
|
|
}
|
|
}
|