updateSlidesProgress.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import $ from '../../shared/dom.js';
  2. export default function updateSlidesProgress(translate = this && this.translate || 0) {
  3. const swiper = this;
  4. const params = swiper.params;
  5. const {
  6. slides,
  7. rtlTranslate: rtl,
  8. snapGrid
  9. } = swiper;
  10. if (slides.length === 0) return;
  11. if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
  12. let offsetCenter = -translate;
  13. if (rtl) offsetCenter = translate; // Visible Slides
  14. slides.removeClass(params.slideVisibleClass);
  15. swiper.visibleSlidesIndexes = [];
  16. swiper.visibleSlides = [];
  17. for (let i = 0; i < slides.length; i += 1) {
  18. const slide = slides[i];
  19. let slideOffset = slide.swiperSlideOffset;
  20. if (params.cssMode && params.centeredSlides) {
  21. slideOffset -= slides[0].swiperSlideOffset;
  22. }
  23. const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
  24. const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
  25. const slideBefore = -(offsetCenter - slideOffset);
  26. const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
  27. const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
  28. if (isVisible) {
  29. swiper.visibleSlides.push(slide);
  30. swiper.visibleSlidesIndexes.push(i);
  31. slides.eq(i).addClass(params.slideVisibleClass);
  32. }
  33. slide.progress = rtl ? -slideProgress : slideProgress;
  34. slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
  35. }
  36. swiper.visibleSlides = $(swiper.visibleSlides);
  37. }