swiper-progress.js 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { CLS, maxTranslate, minTranslate, removeClass, updateSlidesOffset } from './swiper-utils';
  2. export function updateProgress(s, translate) {
  3. if (typeof translate === 'undefined') {
  4. translate = s._translate || 0;
  5. }
  6. var translatesDiff = maxTranslate(s) - minTranslate(s);
  7. var wasBeginning = s._isBeginning;
  8. var wasEnd = s._isEnd;
  9. if (translatesDiff === 0) {
  10. s.progress = 0;
  11. s._isBeginning = s._isEnd = true;
  12. }
  13. else {
  14. s.progress = (translate - minTranslate(s)) / (translatesDiff);
  15. s._isBeginning = s.progress <= 0;
  16. s._isEnd = s.progress >= 1;
  17. }
  18. s._zone.run(function () {
  19. if (s._isBeginning && !wasBeginning) {
  20. s.ionSlideReachStart.emit();
  21. }
  22. if (s._isEnd && !wasEnd) {
  23. s.ionSlideReachEnd.emit();
  24. }
  25. if (s.watchSlidesProgress) {
  26. updateSlidesProgress(s, translate);
  27. }
  28. s.ionSlideProgress.emit(s.progress);
  29. });
  30. }
  31. function updateSlidesProgress(s, translate) {
  32. if (typeof translate === 'undefined') {
  33. translate = s._translate || 0;
  34. }
  35. if (s._slides.length === 0)
  36. return;
  37. if (typeof s._slides[0].swiperSlideOffset === 'undefined') {
  38. updateSlidesOffset(s);
  39. }
  40. var offsetCenter = -translate;
  41. if (s._rtl)
  42. offsetCenter = translate;
  43. // Visible Slides
  44. removeClass(s._slides, CLS.slideVisible);
  45. for (var i = 0; i < s._slides.length; i++) {
  46. var slide = s._slides[i];
  47. var slideProgress = (offsetCenter + (s.centeredSlides ? minTranslate(s) : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.spaceBetween);
  48. if (s.watchSlidesVisibility) {
  49. var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
  50. var slideAfter = slideBefore + s._slidesSizesGrid[i];
  51. var isVisible = (slideBefore >= 0 && slideBefore < s._renderedSize) ||
  52. (slideAfter > 0 && slideAfter <= s._renderedSize) ||
  53. (slideBefore <= 0 && slideAfter >= s._renderedSize);
  54. if (isVisible) {
  55. s._slides[i].classList.add(CLS.slideVisible);
  56. }
  57. }
  58. slide.progress = s._rtl ? -slideProgress : slideProgress;
  59. }
  60. }
  61. //# sourceMappingURL=swiper-progress.js.map