UNPKG

4.62 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _dom = _interopRequireDefault(require("../../utils/dom"));
7
8var _utils = require("../../utils/utils");
9
10function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
13
14var Parallax = {
15 setTransform: function setTransform(el, progress) {
16 var swiper = this;
17 var rtl = swiper.rtl;
18 var $el = (0, _dom.default)(el);
19 var rtlFactor = rtl ? -1 : 1;
20 var p = $el.attr('data-swiper-parallax') || '0';
21 var x = $el.attr('data-swiper-parallax-x');
22 var y = $el.attr('data-swiper-parallax-y');
23 var scale = $el.attr('data-swiper-parallax-scale');
24 var opacity = $el.attr('data-swiper-parallax-opacity');
25
26 if (x || y) {
27 x = x || '0';
28 y = y || '0';
29 } else if (swiper.isHorizontal()) {
30 x = p;
31 y = '0';
32 } else {
33 y = p;
34 x = '0';
35 }
36
37 if (x.indexOf('%') >= 0) {
38 x = parseInt(x, 10) * progress * rtlFactor + "%";
39 } else {
40 x = x * progress * rtlFactor + "px";
41 }
42
43 if (y.indexOf('%') >= 0) {
44 y = parseInt(y, 10) * progress + "%";
45 } else {
46 y = y * progress + "px";
47 }
48
49 if (typeof opacity !== 'undefined' && opacity !== null) {
50 var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
51 $el[0].style.opacity = currentOpacity;
52 }
53
54 if (typeof scale === 'undefined' || scale === null) {
55 $el.transform("translate3d(" + x + ", " + y + ", 0px)");
56 } else {
57 var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
58 $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
59 }
60 },
61 setTranslate: function setTranslate() {
62 var swiper = this;
63 var $el = swiper.$el,
64 slides = swiper.slides,
65 progress = swiper.progress,
66 snapGrid = swiper.snapGrid;
67 $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
68 swiper.parallax.setTransform(el, progress);
69 });
70 slides.each(function (slideEl, slideIndex) {
71 var slideProgress = slideEl.progress;
72
73 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
74 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
75 }
76
77 slideProgress = Math.min(Math.max(slideProgress, -1), 1);
78 (0, _dom.default)(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
79 swiper.parallax.setTransform(el, slideProgress);
80 });
81 });
82 },
83 setTransition: function setTransition(duration) {
84 if (duration === void 0) {
85 duration = this.params.speed;
86 }
87
88 var swiper = this;
89 var $el = swiper.$el;
90 $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
91 var $parallaxEl = (0, _dom.default)(parallaxEl);
92 var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
93 if (duration === 0) parallaxDuration = 0;
94 $parallaxEl.transition(parallaxDuration);
95 });
96 }
97};
98var _default = {
99 name: 'parallax',
100 params: {
101 parallax: {
102 enabled: false
103 }
104 },
105 create: function create() {
106 var swiper = this;
107 (0, _utils.bindModuleMethods)(swiper, {
108 parallax: _extends({}, Parallax)
109 });
110 },
111 on: {
112 beforeInit: function beforeInit(swiper) {
113 if (!swiper.params.parallax.enabled) return;
114 swiper.params.watchSlidesProgress = true;
115 swiper.originalParams.watchSlidesProgress = true;
116 },
117 init: function init(swiper) {
118 if (!swiper.params.parallax.enabled) return;
119 swiper.parallax.setTranslate();
120 },
121 setTranslate: function setTranslate(swiper) {
122 if (!swiper.params.parallax.enabled) return;
123 swiper.parallax.setTranslate();
124 },
125 setTransition: function setTransition(swiper, duration) {
126 if (!swiper.params.parallax.enabled) return;
127 swiper.parallax.setTransition(duration);
128 }
129 }
130};
131exports.default = _default;
\No newline at end of file