Browse code

swiper.js version 6.3.3

Benjamin Roth authored on13/10/2020 19:31:56
Showing340 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+The MIT License (MIT)
2
+
3
+Copyright (c) 2019 Vladimir Kharlampidi
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+this software and associated documentation files (the "Software"), to deal in
7
+the Software without restriction, including without limitation the rights to
8
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+the Software, and to permit persons to whom the Software is furnished to do so,
10
+subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0 21
new file mode 100644
... ...
@@ -0,0 +1,11 @@
1
+Swiper
2
+==========
3
+
4
+Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps.
5
+
6
+Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity.
7
+
8
+# Getting Started
9
+  * [Getting Started Guide](https://swiperjs.com/get-started/)
10
+  * [API](https://swiperjs.com/api/)
11
+  * [Demos](https://swiperjs.com/demos/)
0 12
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+{
2
+  "name": "swiper/bundle",
3
+  "private": true,
4
+  "main": "../swiper-bundle.cjs.js",
5
+  "jsnext:main": "../swiper-bundle.esm.js",
6
+  "module": "../swiper-bundle.esm.js",
7
+  "typings": "../swiper.d.ts",
8
+  "sideEffects": false
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,305 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var A11y = {
15
+  getRandomNumber: function getRandomNumber(size) {
16
+    if (size === void 0) {
17
+      size = 16;
18
+    }
19
+
20
+    var randomChar = function randomChar() {
21
+      return Math.round(16 * Math.random()).toString(16);
22
+    };
23
+
24
+    return 'x'.repeat(size).replace(/x/g, randomChar);
25
+  },
26
+  makeElFocusable: function makeElFocusable($el) {
27
+    $el.attr('tabIndex', '0');
28
+    return $el;
29
+  },
30
+  makeElNotFocusable: function makeElNotFocusable($el) {
31
+    $el.attr('tabIndex', '-1');
32
+    return $el;
33
+  },
34
+  addElRole: function addElRole($el, role) {
35
+    $el.attr('role', role);
36
+    return $el;
37
+  },
38
+  addElRoleDescription: function addElRoleDescription($el, description) {
39
+    $el.attr('aria-role-description', description);
40
+    return $el;
41
+  },
42
+  addElControls: function addElControls($el, controls) {
43
+    $el.attr('aria-controls', controls);
44
+    return $el;
45
+  },
46
+  addElLabel: function addElLabel($el, label) {
47
+    $el.attr('aria-label', label);
48
+    return $el;
49
+  },
50
+  addElId: function addElId($el, id) {
51
+    $el.attr('id', id);
52
+    return $el;
53
+  },
54
+  addElLive: function addElLive($el, live) {
55
+    $el.attr('aria-live', live);
56
+    return $el;
57
+  },
58
+  disableEl: function disableEl($el) {
59
+    $el.attr('aria-disabled', true);
60
+    return $el;
61
+  },
62
+  enableEl: function enableEl($el) {
63
+    $el.attr('aria-disabled', false);
64
+    return $el;
65
+  },
66
+  onEnterKey: function onEnterKey(e) {
67
+    var swiper = this;
68
+    var params = swiper.params.a11y;
69
+    if (e.keyCode !== 13) return;
70
+    var $targetEl = (0, _dom.default)(e.target);
71
+
72
+    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
73
+      if (!(swiper.isEnd && !swiper.params.loop)) {
74
+        swiper.slideNext();
75
+      }
76
+
77
+      if (swiper.isEnd) {
78
+        swiper.a11y.notify(params.lastSlideMessage);
79
+      } else {
80
+        swiper.a11y.notify(params.nextSlideMessage);
81
+      }
82
+    }
83
+
84
+    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
85
+      if (!(swiper.isBeginning && !swiper.params.loop)) {
86
+        swiper.slidePrev();
87
+      }
88
+
89
+      if (swiper.isBeginning) {
90
+        swiper.a11y.notify(params.firstSlideMessage);
91
+      } else {
92
+        swiper.a11y.notify(params.prevSlideMessage);
93
+      }
94
+    }
95
+
96
+    if (swiper.pagination && $targetEl.is("." + swiper.params.pagination.bulletClass)) {
97
+      $targetEl[0].click();
98
+    }
99
+  },
100
+  notify: function notify(message) {
101
+    var swiper = this;
102
+    var notification = swiper.a11y.liveRegion;
103
+    if (notification.length === 0) return;
104
+    notification.html('');
105
+    notification.html(message);
106
+  },
107
+  updateNavigation: function updateNavigation() {
108
+    var swiper = this;
109
+    if (swiper.params.loop || !swiper.navigation) return;
110
+    var _swiper$navigation = swiper.navigation,
111
+        $nextEl = _swiper$navigation.$nextEl,
112
+        $prevEl = _swiper$navigation.$prevEl;
113
+
114
+    if ($prevEl && $prevEl.length > 0) {
115
+      if (swiper.isBeginning) {
116
+        swiper.a11y.disableEl($prevEl);
117
+        swiper.a11y.makeElNotFocusable($prevEl);
118
+      } else {
119
+        swiper.a11y.enableEl($prevEl);
120
+        swiper.a11y.makeElFocusable($prevEl);
121
+      }
122
+    }
123
+
124
+    if ($nextEl && $nextEl.length > 0) {
125
+      if (swiper.isEnd) {
126
+        swiper.a11y.disableEl($nextEl);
127
+        swiper.a11y.makeElNotFocusable($nextEl);
128
+      } else {
129
+        swiper.a11y.enableEl($nextEl);
130
+        swiper.a11y.makeElFocusable($nextEl);
131
+      }
132
+    }
133
+  },
134
+  updatePagination: function updatePagination() {
135
+    var swiper = this;
136
+    var params = swiper.params.a11y;
137
+
138
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
139
+      swiper.pagination.bullets.each(function (bulletEl) {
140
+        var $bulletEl = (0, _dom.default)(bulletEl);
141
+        swiper.a11y.makeElFocusable($bulletEl);
142
+
143
+        if (!swiper.params.pagination.renderBullet) {
144
+          swiper.a11y.addElRole($bulletEl, 'button');
145
+          swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
146
+        }
147
+      });
148
+    }
149
+  },
150
+  init: function init() {
151
+    var swiper = this;
152
+    var params = swiper.params.a11y;
153
+    swiper.$el.append(swiper.a11y.liveRegion); // Container
154
+
155
+    var $containerEl = swiper.$el;
156
+
157
+    if (params.containerRoleDescriptionMessage) {
158
+      swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
159
+    }
160
+
161
+    if (params.containerMessage) {
162
+      swiper.a11y.addElLabel($containerEl, params.containerMessage);
163
+    } // Wrapper
164
+
165
+
166
+    var $wrapperEl = swiper.$wrapperEl;
167
+    var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
168
+    var live;
169
+    swiper.a11y.addElId($wrapperEl, wrapperId);
170
+
171
+    if (swiper.params.autoplay && swiper.params.autoplay.enabled) {
172
+      live = 'off';
173
+    } else {
174
+      live = 'polite';
175
+    }
176
+
177
+    swiper.a11y.addElLive($wrapperEl, live); // Slide
178
+
179
+    if (params.itemRoleDescriptionMessage) {
180
+      swiper.a11y.addElRoleDescription((0, _dom.default)(swiper.slides), params.itemRoleDescriptionMessage);
181
+    }
182
+
183
+    swiper.a11y.addElRole((0, _dom.default)(swiper.slides), 'group');
184
+    swiper.slides.each(function (slideEl) {
185
+      var $slideEl = (0, _dom.default)(slideEl);
186
+      swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + " / " + swiper.slides.length);
187
+    }); // Navigation
188
+
189
+    var $nextEl;
190
+    var $prevEl;
191
+
192
+    if (swiper.navigation && swiper.navigation.$nextEl) {
193
+      $nextEl = swiper.navigation.$nextEl;
194
+    }
195
+
196
+    if (swiper.navigation && swiper.navigation.$prevEl) {
197
+      $prevEl = swiper.navigation.$prevEl;
198
+    }
199
+
200
+    if ($nextEl && $nextEl.length) {
201
+      swiper.a11y.makeElFocusable($nextEl);
202
+
203
+      if ($nextEl[0].tagName !== 'BUTTON') {
204
+        swiper.a11y.addElRole($nextEl, 'button');
205
+        $nextEl.on('keydown', swiper.a11y.onEnterKey);
206
+      }
207
+
208
+      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
209
+      swiper.a11y.addElControls($nextEl, wrapperId);
210
+    }
211
+
212
+    if ($prevEl && $prevEl.length) {
213
+      swiper.a11y.makeElFocusable($prevEl);
214
+
215
+      if ($prevEl[0].tagName !== 'BUTTON') {
216
+        swiper.a11y.addElRole($prevEl, 'button');
217
+        $prevEl.on('keydown', swiper.a11y.onEnterKey);
218
+      }
219
+
220
+      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
221
+      swiper.a11y.addElControls($prevEl, wrapperId);
222
+    } // Pagination
223
+
224
+
225
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
226
+      swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
227
+    }
228
+  },
229
+  destroy: function destroy() {
230
+    var swiper = this;
231
+    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
232
+    var $nextEl;
233
+    var $prevEl;
234
+
235
+    if (swiper.navigation && swiper.navigation.$nextEl) {
236
+      $nextEl = swiper.navigation.$nextEl;
237
+    }
238
+
239
+    if (swiper.navigation && swiper.navigation.$prevEl) {
240
+      $prevEl = swiper.navigation.$prevEl;
241
+    }
242
+
243
+    if ($nextEl) {
244
+      $nextEl.off('keydown', swiper.a11y.onEnterKey);
245
+    }
246
+
247
+    if ($prevEl) {
248
+      $prevEl.off('keydown', swiper.a11y.onEnterKey);
249
+    } // Pagination
250
+
251
+
252
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
253
+      swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
254
+    }
255
+  }
256
+};
257
+var _default = {
258
+  name: 'a11y',
259
+  params: {
260
+    a11y: {
261
+      enabled: true,
262
+      notificationClass: 'swiper-notification',
263
+      prevSlideMessage: 'Previous slide',
264
+      nextSlideMessage: 'Next slide',
265
+      firstSlideMessage: 'This is the first slide',
266
+      lastSlideMessage: 'This is the last slide',
267
+      paginationBulletMessage: 'Go to slide {{index}}',
268
+      containerMessage: null,
269
+      containerRoleDescriptionMessage: null,
270
+      itemRoleDescriptionMessage: null
271
+    }
272
+  },
273
+  create: function create() {
274
+    var swiper = this;
275
+    (0, _utils.bindModuleMethods)(swiper, {
276
+      a11y: _extends(_extends({}, A11y), {}, {
277
+        liveRegion: (0, _dom.default)("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
278
+      })
279
+    });
280
+  },
281
+  on: {
282
+    afterInit: function afterInit(swiper) {
283
+      if (!swiper.params.a11y.enabled) return;
284
+      swiper.a11y.init();
285
+      swiper.a11y.updateNavigation();
286
+    },
287
+    toEdge: function toEdge(swiper) {
288
+      if (!swiper.params.a11y.enabled) return;
289
+      swiper.a11y.updateNavigation();
290
+    },
291
+    fromEdge: function fromEdge(swiper) {
292
+      if (!swiper.params.a11y.enabled) return;
293
+      swiper.a11y.updateNavigation();
294
+    },
295
+    paginationUpdate: function paginationUpdate(swiper) {
296
+      if (!swiper.params.a11y.enabled) return;
297
+      swiper.a11y.updatePagination();
298
+    },
299
+    destroy: function destroy(swiper) {
300
+      if (!swiper.params.a11y.enabled) return;
301
+      swiper.a11y.destroy();
302
+    }
303
+  }
304
+};
305
+exports.default = _default;
0 306
\ No newline at end of file
1 307
new file mode 100644
... ...
@@ -0,0 +1,187 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _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); }
11
+
12
+var Autoplay = {
13
+  run: function run() {
14
+    var swiper = this;
15
+    var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
16
+    var delay = swiper.params.autoplay.delay;
17
+
18
+    if ($activeSlideEl.attr('data-swiper-autoplay')) {
19
+      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
20
+    }
21
+
22
+    clearTimeout(swiper.autoplay.timeout);
23
+    swiper.autoplay.timeout = (0, _utils.nextTick)(function () {
24
+      var autoplayResult;
25
+
26
+      if (swiper.params.autoplay.reverseDirection) {
27
+        if (swiper.params.loop) {
28
+          swiper.loopFix();
29
+          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
30
+          swiper.emit('autoplay');
31
+        } else if (!swiper.isBeginning) {
32
+          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
33
+          swiper.emit('autoplay');
34
+        } else if (!swiper.params.autoplay.stopOnLastSlide) {
35
+          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
36
+          swiper.emit('autoplay');
37
+        } else {
38
+          swiper.autoplay.stop();
39
+        }
40
+      } else if (swiper.params.loop) {
41
+        swiper.loopFix();
42
+        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
43
+        swiper.emit('autoplay');
44
+      } else if (!swiper.isEnd) {
45
+        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
46
+        swiper.emit('autoplay');
47
+      } else if (!swiper.params.autoplay.stopOnLastSlide) {
48
+        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
49
+        swiper.emit('autoplay');
50
+      } else {
51
+        swiper.autoplay.stop();
52
+      }
53
+
54
+      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {
55
+        swiper.autoplay.run();
56
+      }
57
+    }, delay);
58
+  },
59
+  start: function start() {
60
+    var swiper = this;
61
+    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
62
+    if (swiper.autoplay.running) return false;
63
+    swiper.autoplay.running = true;
64
+    swiper.emit('autoplayStart');
65
+    swiper.autoplay.run();
66
+    return true;
67
+  },
68
+  stop: function stop() {
69
+    var swiper = this;
70
+    if (!swiper.autoplay.running) return false;
71
+    if (typeof swiper.autoplay.timeout === 'undefined') return false;
72
+
73
+    if (swiper.autoplay.timeout) {
74
+      clearTimeout(swiper.autoplay.timeout);
75
+      swiper.autoplay.timeout = undefined;
76
+    }
77
+
78
+    swiper.autoplay.running = false;
79
+    swiper.emit('autoplayStop');
80
+    return true;
81
+  },
82
+  pause: function pause(speed) {
83
+    var swiper = this;
84
+    if (!swiper.autoplay.running) return;
85
+    if (swiper.autoplay.paused) return;
86
+    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
87
+    swiper.autoplay.paused = true;
88
+
89
+    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
90
+      swiper.autoplay.paused = false;
91
+      swiper.autoplay.run();
92
+    } else {
93
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
94
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
95
+    }
96
+  },
97
+  onVisibilityChange: function onVisibilityChange() {
98
+    var swiper = this;
99
+    var document = (0, _ssrWindow.getDocument)();
100
+
101
+    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
102
+      swiper.autoplay.pause();
103
+    }
104
+
105
+    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
106
+      swiper.autoplay.run();
107
+      swiper.autoplay.paused = false;
108
+    }
109
+  },
110
+  onTransitionEnd: function onTransitionEnd(e) {
111
+    var swiper = this;
112
+    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
113
+    if (e.target !== swiper.$wrapperEl[0]) return;
114
+    swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
115
+    swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
116
+    swiper.autoplay.paused = false;
117
+
118
+    if (!swiper.autoplay.running) {
119
+      swiper.autoplay.stop();
120
+    } else {
121
+      swiper.autoplay.run();
122
+    }
123
+  }
124
+};
125
+var _default = {
126
+  name: 'autoplay',
127
+  params: {
128
+    autoplay: {
129
+      enabled: false,
130
+      delay: 3000,
131
+      waitForTransition: true,
132
+      disableOnInteraction: true,
133
+      stopOnLastSlide: false,
134
+      reverseDirection: false
135
+    }
136
+  },
137
+  create: function create() {
138
+    var swiper = this;
139
+    (0, _utils.bindModuleMethods)(swiper, {
140
+      autoplay: _extends(_extends({}, Autoplay), {}, {
141
+        running: false,
142
+        paused: false
143
+      })
144
+    });
145
+  },
146
+  on: {
147
+    init: function init(swiper) {
148
+      if (swiper.params.autoplay.enabled) {
149
+        swiper.autoplay.start();
150
+        var document = (0, _ssrWindow.getDocument)();
151
+        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
152
+      }
153
+    },
154
+    beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
155
+      if (swiper.autoplay.running) {
156
+        if (internal || !swiper.params.autoplay.disableOnInteraction) {
157
+          swiper.autoplay.pause(speed);
158
+        } else {
159
+          swiper.autoplay.stop();
160
+        }
161
+      }
162
+    },
163
+    sliderFirstMove: function sliderFirstMove(swiper) {
164
+      if (swiper.autoplay.running) {
165
+        if (swiper.params.autoplay.disableOnInteraction) {
166
+          swiper.autoplay.stop();
167
+        } else {
168
+          swiper.autoplay.pause();
169
+        }
170
+      }
171
+    },
172
+    touchEnd: function touchEnd(swiper) {
173
+      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
174
+        swiper.autoplay.run();
175
+      }
176
+    },
177
+    destroy: function destroy(swiper) {
178
+      if (swiper.autoplay.running) {
179
+        swiper.autoplay.stop();
180
+      }
181
+
182
+      var document = (0, _ssrWindow.getDocument)();
183
+      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
184
+    }
185
+  }
186
+};
187
+exports.default = _default;
0 188
\ No newline at end of file
1 189
new file mode 100644
... ...
@@ -0,0 +1,203 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _utils = require("../../utils/utils");
7
+
8
+function _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); }
9
+
10
+var Controller = {
11
+  LinearSpline: function LinearSpline(x, y) {
12
+    var binarySearch = function search() {
13
+      var maxIndex;
14
+      var minIndex;
15
+      var guess;
16
+      return function (array, val) {
17
+        minIndex = -1;
18
+        maxIndex = array.length;
19
+
20
+        while (maxIndex - minIndex > 1) {
21
+          guess = maxIndex + minIndex >> 1;
22
+
23
+          if (array[guess] <= val) {
24
+            minIndex = guess;
25
+          } else {
26
+            maxIndex = guess;
27
+          }
28
+        }
29
+
30
+        return maxIndex;
31
+      };
32
+    }();
33
+
34
+    this.x = x;
35
+    this.y = y;
36
+    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
37
+    // (x1,y1) is the known point before given value,
38
+    // (x3,y3) is the known point after given value.
39
+
40
+    var i1;
41
+    var i3;
42
+
43
+    this.interpolate = function interpolate(x2) {
44
+      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
45
+
46
+      i3 = binarySearch(this.x, x2);
47
+      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
48
+      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
49
+
50
+      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
51
+    };
52
+
53
+    return this;
54
+  },
55
+  // xxx: for now i will just save one spline function to to
56
+  getInterpolateFunction: function getInterpolateFunction(c) {
57
+    var swiper = this;
58
+
59
+    if (!swiper.controller.spline) {
60
+      swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
61
+    }
62
+  },
63
+  setTranslate: function setTranslate(_setTranslate, byController) {
64
+    var swiper = this;
65
+    var controlled = swiper.controller.control;
66
+    var multiplier;
67
+    var controlledTranslate;
68
+    var Swiper = swiper.constructor;
69
+
70
+    function setControlledTranslate(c) {
71
+      // this will create an Interpolate function based on the snapGrids
72
+      // x is the Grid of the scrolled scroller and y will be the controlled scroller
73
+      // it makes sense to create this only once and recall it for the interpolation
74
+      // the function does a lot of value caching for performance
75
+      var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
76
+
77
+      if (swiper.params.controller.by === 'slide') {
78
+        swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
79
+        // but it did not work out
80
+
81
+        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
82
+      }
83
+
84
+      if (!controlledTranslate || swiper.params.controller.by === 'container') {
85
+        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
86
+        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
87
+      }
88
+
89
+      if (swiper.params.controller.inverse) {
90
+        controlledTranslate = c.maxTranslate() - controlledTranslate;
91
+      }
92
+
93
+      c.updateProgress(controlledTranslate);
94
+      c.setTranslate(controlledTranslate, swiper);
95
+      c.updateActiveIndex();
96
+      c.updateSlidesClasses();
97
+    }
98
+
99
+    if (Array.isArray(controlled)) {
100
+      for (var i = 0; i < controlled.length; i += 1) {
101
+        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
102
+          setControlledTranslate(controlled[i]);
103
+        }
104
+      }
105
+    } else if (controlled instanceof Swiper && byController !== controlled) {
106
+      setControlledTranslate(controlled);
107
+    }
108
+  },
109
+  setTransition: function setTransition(duration, byController) {
110
+    var swiper = this;
111
+    var Swiper = swiper.constructor;
112
+    var controlled = swiper.controller.control;
113
+    var i;
114
+
115
+    function setControlledTransition(c) {
116
+      c.setTransition(duration, swiper);
117
+
118
+      if (duration !== 0) {
119
+        c.transitionStart();
120
+
121
+        if (c.params.autoHeight) {
122
+          (0, _utils.nextTick)(function () {
123
+            c.updateAutoHeight();
124
+          });
125
+        }
126
+
127
+        c.$wrapperEl.transitionEnd(function () {
128
+          if (!controlled) return;
129
+
130
+          if (c.params.loop && swiper.params.controller.by === 'slide') {
131
+            c.loopFix();
132
+          }
133
+
134
+          c.transitionEnd();
135
+        });
136
+      }
137
+    }
138
+
139
+    if (Array.isArray(controlled)) {
140
+      for (i = 0; i < controlled.length; i += 1) {
141
+        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
142
+          setControlledTransition(controlled[i]);
143
+        }
144
+      }
145
+    } else if (controlled instanceof Swiper && byController !== controlled) {
146
+      setControlledTransition(controlled);
147
+    }
148
+  }
149
+};
150
+var _default = {
151
+  name: 'controller',
152
+  params: {
153
+    controller: {
154
+      control: undefined,
155
+      inverse: false,
156
+      by: 'slide' // or 'container'
157
+
158
+    }
159
+  },
160
+  create: function create() {
161
+    var swiper = this;
162
+    (0, _utils.bindModuleMethods)(swiper, {
163
+      controller: _extends({
164
+        control: swiper.params.controller.control
165
+      }, Controller)
166
+    });
167
+  },
168
+  on: {
169
+    update: function update(swiper) {
170
+      if (!swiper.controller.control) return;
171
+
172
+      if (swiper.controller.spline) {
173
+        swiper.controller.spline = undefined;
174
+        delete swiper.controller.spline;
175
+      }
176
+    },
177
+    resize: function resize(swiper) {
178
+      if (!swiper.controller.control) return;
179
+
180
+      if (swiper.controller.spline) {
181
+        swiper.controller.spline = undefined;
182
+        delete swiper.controller.spline;
183
+      }
184
+    },
185
+    observerUpdate: function observerUpdate(swiper) {
186
+      if (!swiper.controller.control) return;
187
+
188
+      if (swiper.controller.spline) {
189
+        swiper.controller.spline = undefined;
190
+        delete swiper.controller.spline;
191
+      }
192
+    },
193
+    setTranslate: function setTranslate(swiper, translate, byController) {
194
+      if (!swiper.controller.control) return;
195
+      swiper.controller.setTranslate(translate, byController);
196
+    },
197
+    setTransition: function setTransition(swiper, duration, byController) {
198
+      if (!swiper.controller.control) return;
199
+      swiper.controller.setTransition(duration, byController);
200
+    }
201
+  }
202
+};
203
+exports.default = _default;
0 204
\ No newline at end of file
1 205
new file mode 100644
... ...
@@ -0,0 +1,43 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = getBreakpoints;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+function getBreakpoints(breakpoints) {
9
+  var window = (0, _ssrWindow.getWindow)(); // Get breakpoint for window width
10
+
11
+  if (!breakpoints) return undefined;
12
+  var breakpoint = false;
13
+  var points = Object.keys(breakpoints).map(function (point) {
14
+    if (typeof point === 'string' && point.indexOf('@') === 0) {
15
+      var minRatio = parseFloat(point.substr(1));
16
+      var value = window.innerHeight * minRatio;
17
+      return {
18
+        value: value,
19
+        point: point
20
+      };
21
+    }
22
+
23
+    return {
24
+      value: point,
25
+      point: point
26
+    };
27
+  });
28
+  points.sort(function (a, b) {
29
+    return parseInt(a.value, 10) - parseInt(b.value, 10);
30
+  });
31
+
32
+  for (var i = 0; i < points.length; i += 1) {
33
+    var _points$i = points[i],
34
+        point = _points$i.point,
35
+        value = _points$i.value;
36
+
37
+    if (value <= window.innerWidth) {
38
+      breakpoint = point;
39
+    }
40
+  }
41
+
42
+  return breakpoint || 'max';
43
+}
0 44
\ No newline at end of file
1 45
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _setBreakpoint = _interopRequireDefault(require("./setBreakpoint"));
7
+
8
+var _getBreakpoint = _interopRequireDefault(require("./getBreakpoint"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+var _default = {
13
+  setBreakpoint: _setBreakpoint.default,
14
+  getBreakpoint: _getBreakpoint.default
15
+};
16
+exports.default = _default;
0 17
\ No newline at end of file
1 18
new file mode 100644
... ...
@@ -0,0 +1,81 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = setBreakpoint;
5
+
6
+var _utils = require("../../../utils/utils");
7
+
8
+function setBreakpoint() {
9
+  var swiper = this;
10
+  var activeIndex = swiper.activeIndex,
11
+      initialized = swiper.initialized,
12
+      _swiper$loopedSlides = swiper.loopedSlides,
13
+      loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
14
+      params = swiper.params,
15
+      $el = swiper.$el;
16
+  var breakpoints = params.breakpoints;
17
+  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
18
+
19
+  var breakpoint = swiper.getBreakpoint(breakpoints);
20
+
21
+  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
22
+    var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
23
+
24
+    if (breakpointOnlyParams) {
25
+      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
26
+        var paramValue = breakpointOnlyParams[param];
27
+        if (typeof paramValue === 'undefined') return;
28
+
29
+        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
30
+          breakpointOnlyParams[param] = 'auto';
31
+        } else if (param === 'slidesPerView') {
32
+          breakpointOnlyParams[param] = parseFloat(paramValue);
33
+        } else {
34
+          breakpointOnlyParams[param] = parseInt(paramValue, 10);
35
+        }
36
+      });
37
+    }
38
+
39
+    var breakpointParams = breakpointOnlyParams || swiper.originalParams;
40
+    var wasMultiRow = params.slidesPerColumn > 1;
41
+    var isMultiRow = breakpointParams.slidesPerColumn > 1;
42
+
43
+    if (wasMultiRow && !isMultiRow) {
44
+      $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
45
+      swiper.emitContainerClasses();
46
+    } else if (!wasMultiRow && isMultiRow) {
47
+      $el.addClass(params.containerModifierClass + "multirow");
48
+
49
+      if (breakpointParams.slidesPerColumnFill === 'column') {
50
+        $el.addClass(params.containerModifierClass + "multirow-column");
51
+      }
52
+
53
+      swiper.emitContainerClasses();
54
+    }
55
+
56
+    var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
57
+    var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
58
+
59
+    if (directionChanged && initialized) {
60
+      swiper.changeDirection();
61
+    }
62
+
63
+    (0, _utils.extend)(swiper.params, breakpointParams);
64
+    (0, _utils.extend)(swiper, {
65
+      allowTouchMove: swiper.params.allowTouchMove,
66
+      allowSlideNext: swiper.params.allowSlideNext,
67
+      allowSlidePrev: swiper.params.allowSlidePrev
68
+    });
69
+    swiper.currentBreakpoint = breakpoint;
70
+    swiper.emit('_beforeBreakpoint', breakpointParams);
71
+
72
+    if (needsReLoop && initialized) {
73
+      swiper.loopDestroy();
74
+      swiper.loopCreate();
75
+      swiper.updateSlides();
76
+      swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
77
+    }
78
+
79
+    swiper.emit('breakpoint', breakpointParams);
80
+  }
81
+}
0 82
\ No newline at end of file
1 83
new file mode 100644
... ...
@@ -0,0 +1,32 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+function checkOverflow() {
7
+  var swiper = this;
8
+  var params = swiper.params;
9
+  var wasLocked = swiper.isLocked;
10
+  var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
11
+
12
+  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
13
+    swiper.isLocked = lastSlidePosition <= swiper.size;
14
+  } else {
15
+    swiper.isLocked = swiper.snapGrid.length === 1;
16
+  }
17
+
18
+  swiper.allowSlideNext = !swiper.isLocked;
19
+  swiper.allowSlidePrev = !swiper.isLocked; // events
20
+
21
+  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
22
+
23
+  if (wasLocked && wasLocked !== swiper.isLocked) {
24
+    swiper.isEnd = false;
25
+    if (swiper.navigation) swiper.navigation.update();
26
+  }
27
+}
28
+
29
+var _default = {
30
+  checkOverflow: checkOverflow
31
+};
32
+exports.default = _default;
0 33
\ No newline at end of file
1 34
new file mode 100644
... ...
@@ -0,0 +1,54 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = addClasses;
5
+
6
+function addClasses() {
7
+  var swiper = this;
8
+  var classNames = swiper.classNames,
9
+      params = swiper.params,
10
+      rtl = swiper.rtl,
11
+      $el = swiper.$el,
12
+      device = swiper.device;
13
+  var suffixes = [];
14
+  suffixes.push('initialized');
15
+  suffixes.push(params.direction);
16
+
17
+  if (params.freeMode) {
18
+    suffixes.push('free-mode');
19
+  }
20
+
21
+  if (params.autoHeight) {
22
+    suffixes.push('autoheight');
23
+  }
24
+
25
+  if (rtl) {
26
+    suffixes.push('rtl');
27
+  }
28
+
29
+  if (params.slidesPerColumn > 1) {
30
+    suffixes.push('multirow');
31
+
32
+    if (params.slidesPerColumnFill === 'column') {
33
+      suffixes.push('multirow-column');
34
+    }
35
+  }
36
+
37
+  if (device.android) {
38
+    suffixes.push('android');
39
+  }
40
+
41
+  if (device.ios) {
42
+    suffixes.push('ios');
43
+  }
44
+
45
+  if (params.cssMode) {
46
+    suffixes.push('css-mode');
47
+  }
48
+
49
+  suffixes.forEach(function (suffix) {
50
+    classNames.push(params.containerModifierClass + suffix);
51
+  });
52
+  $el.addClass(classNames.join(' '));
53
+  swiper.emitContainerClasses();
54
+}
0 55
\ No newline at end of file
1 56
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _addClasses = _interopRequireDefault(require("./addClasses"));
7
+
8
+var _removeClasses = _interopRequireDefault(require("./removeClasses"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+var _default = {
13
+  addClasses: _addClasses.default,
14
+  removeClasses: _removeClasses.default
15
+};
16
+exports.default = _default;
0 17
\ No newline at end of file
1 18
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = removeClasses;
5
+
6
+function removeClasses() {
7
+  var swiper = this;
8
+  var $el = swiper.$el,
9
+      classNames = swiper.classNames;
10
+  $el.removeClass(classNames.join(' '));
11
+  swiper.emitContainerClasses();
12
+}
0 13
\ No newline at end of file
1 14
new file mode 100644
... ...
@@ -0,0 +1,589 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+var _getSupport = require("../../utils/get-support");
11
+
12
+var _getDevice = require("../../utils/get-device");
13
+
14
+var _getBrowser = require("../../utils/get-browser");
15
+
16
+var _resize = _interopRequireDefault(require("../../modules/resize/resize"));
17
+
18
+var _observer = _interopRequireDefault(require("../../modules/observer/observer"));
19
+
20
+var _modular = _interopRequireDefault(require("./modular"));
21
+
22
+var _eventsEmitter = _interopRequireDefault(require("./events-emitter"));
23
+
24
+var _index = _interopRequireDefault(require("./update/index"));
25
+
26
+var _index2 = _interopRequireDefault(require("./translate/index"));
27
+
28
+var _index3 = _interopRequireDefault(require("./transition/index"));
29
+
30
+var _index4 = _interopRequireDefault(require("./slide/index"));
31
+
32
+var _index5 = _interopRequireDefault(require("./loop/index"));
33
+
34
+var _index6 = _interopRequireDefault(require("./grab-cursor/index"));
35
+
36
+var _index7 = _interopRequireDefault(require("./manipulation/index"));
37
+
38
+var _index8 = _interopRequireDefault(require("./events/index"));
39
+
40
+var _index9 = _interopRequireDefault(require("./breakpoints/index"));
41
+
42
+var _index10 = _interopRequireDefault(require("./classes/index"));
43
+
44
+var _index11 = _interopRequireDefault(require("./images/index"));
45
+
46
+var _index12 = _interopRequireDefault(require("./check-overflow/index"));
47
+
48
+var _defaults = _interopRequireDefault(require("./defaults"));
49
+
50
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
51
+
52
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
53
+
54
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
55
+
56
+var prototypes = {
57
+  modular: _modular.default,
58
+  eventsEmitter: _eventsEmitter.default,
59
+  update: _index.default,
60
+  translate: _index2.default,
61
+  transition: _index3.default,
62
+  slide: _index4.default,
63
+  loop: _index5.default,
64
+  grabCursor: _index6.default,
65
+  manipulation: _index7.default,
66
+  events: _index8.default,
67
+  breakpoints: _index9.default,
68
+  checkOverflow: _index12.default,
69
+  classes: _index10.default,
70
+  images: _index11.default
71
+};
72
+var extendedDefaults = {};
73
+
74
+var Swiper = /*#__PURE__*/function () {
75
+  function Swiper() {
76
+    var el;
77
+    var params;
78
+
79
+    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
80
+      args[_key] = arguments[_key];
81
+    }
82
+
83
+    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
84
+      params = args[0];
85
+    } else {
86
+      el = args[0];
87
+      params = args[1];
88
+    }
89
+
90
+    if (!params) params = {};
91
+    params = (0, _utils.extend)({}, params);
92
+    if (el && !params.el) params.el = el; // Swiper Instance
93
+
94
+    var swiper = this;
95
+    swiper.support = (0, _getSupport.getSupport)();
96
+    swiper.device = (0, _getDevice.getDevice)({
97
+      userAgent: params.userAgent
98
+    });
99
+    swiper.browser = (0, _getBrowser.getBrowser)();
100
+    swiper.eventsListeners = {};
101
+    swiper.eventsAnyListeners = [];
102
+
103
+    if (typeof swiper.modules === 'undefined') {
104
+      swiper.modules = {};
105
+    }
106
+
107
+    Object.keys(swiper.modules).forEach(function (moduleName) {
108
+      var module = swiper.modules[moduleName];
109
+
110
+      if (module.params) {
111
+        var moduleParamName = Object.keys(module.params)[0];
112
+        var moduleParams = module.params[moduleParamName];
113
+        if (typeof moduleParams !== 'object' || moduleParams === null) return;
114
+        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
115
+
116
+        if (params[moduleParamName] === true) {
117
+          params[moduleParamName] = {
118
+            enabled: true
119
+          };
120
+        }
121
+
122
+        if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
123
+          params[moduleParamName].enabled = true;
124
+        }
125
+
126
+        if (!params[moduleParamName]) params[moduleParamName] = {
127
+          enabled: false
128
+        };
129
+      }
130
+    }); // Extend defaults with modules params
131
+
132
+    var swiperParams = (0, _utils.extend)({}, _defaults.default);
133
+    swiper.useParams(swiperParams); // Extend defaults with passed params
134
+
135
+    swiper.params = (0, _utils.extend)({}, swiperParams, extendedDefaults, params);
136
+    swiper.originalParams = (0, _utils.extend)({}, swiper.params);
137
+    swiper.passedParams = (0, _utils.extend)({}, params); // add event listeners
138
+
139
+    if (swiper.params && swiper.params.on) {
140
+      Object.keys(swiper.params.on).forEach(function (eventName) {
141
+        swiper.on(eventName, swiper.params.on[eventName]);
142
+      });
143
+    }
144
+
145
+    if (swiper.params && swiper.params.onAny) {
146
+      swiper.onAny(swiper.params.onAny);
147
+    } // Save Dom lib
148
+
149
+
150
+    swiper.$ = _dom.default; // Find el
151
+
152
+    var $el = (0, _dom.default)(swiper.params.el);
153
+    el = $el[0];
154
+
155
+    if (!el) {
156
+      return undefined;
157
+    }
158
+
159
+    if ($el.length > 1) {
160
+      var swipers = [];
161
+      $el.each(function (containerEl) {
162
+        var newParams = (0, _utils.extend)({}, params, {
163
+          el: containerEl
164
+        });
165
+        swipers.push(new Swiper(newParams));
166
+      });
167
+      return swipers;
168
+    }
169
+
170
+    el.swiper = swiper; // Find Wrapper
171
+
172
+    var $wrapperEl;
173
+
174
+    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
175
+      $wrapperEl = (0, _dom.default)(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
176
+
177
+      $wrapperEl.children = function (options) {
178
+        return $el.children(options);
179
+      };
180
+    } else {
181
+      $wrapperEl = $el.children("." + swiper.params.wrapperClass);
182
+    } // Extend Swiper
183
+
184
+
185
+    (0, _utils.extend)(swiper, {
186
+      $el: $el,
187
+      el: el,
188
+      $wrapperEl: $wrapperEl,
189
+      wrapperEl: $wrapperEl[0],
190
+      // Classes
191
+      classNames: [],
192
+      // Slides
193
+      slides: (0, _dom.default)(),
194
+      slidesGrid: [],
195
+      snapGrid: [],
196
+      slidesSizesGrid: [],
197
+      // isDirection
198
+      isHorizontal: function isHorizontal() {
199
+        return swiper.params.direction === 'horizontal';
200
+      },
201
+      isVertical: function isVertical() {
202
+        return swiper.params.direction === 'vertical';
203
+      },
204
+      // RTL
205
+      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
206
+      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
207
+      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
208
+      // Indexes
209
+      activeIndex: 0,
210
+      realIndex: 0,
211
+      //
212
+      isBeginning: true,
213
+      isEnd: false,
214
+      // Props
215
+      translate: 0,
216
+      previousTranslate: 0,
217
+      progress: 0,
218
+      velocity: 0,
219
+      animating: false,
220
+      // Locks
221
+      allowSlideNext: swiper.params.allowSlideNext,
222
+      allowSlidePrev: swiper.params.allowSlidePrev,
223
+      // Touch Events
224
+      touchEvents: function touchEvents() {
225
+        var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
226
+        var desktop = ['mousedown', 'mousemove', 'mouseup'];
227
+
228
+        if (swiper.support.pointerEvents) {
229
+          desktop = ['pointerdown', 'pointermove', 'pointerup'];
230
+        }
231
+
232
+        swiper.touchEventsTouch = {
233
+          start: touch[0],
234
+          move: touch[1],
235
+          end: touch[2],
236
+          cancel: touch[3]
237
+        };
238
+        swiper.touchEventsDesktop = {
239
+          start: desktop[0],
240
+          move: desktop[1],
241
+          end: desktop[2]
242
+        };
243
+        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
244
+      }(),
245
+      touchEventsData: {
246
+        isTouched: undefined,
247
+        isMoved: undefined,
248
+        allowTouchCallbacks: undefined,
249
+        touchStartTime: undefined,
250
+        isScrolling: undefined,
251
+        currentTranslate: undefined,
252
+        startTranslate: undefined,
253
+        allowThresholdMove: undefined,
254
+        // Form elements to match
255
+        formElements: 'input, select, option, textarea, button, video, label',
256
+        // Last click time
257
+        lastClickTime: (0, _utils.now)(),
258
+        clickTimeout: undefined,
259
+        // Velocities
260
+        velocities: [],
261
+        allowMomentumBounce: undefined,
262
+        isTouchEvent: undefined,
263
+        startMoving: undefined
264
+      },
265
+      // Clicks
266
+      allowClick: true,
267
+      // Touches
268
+      allowTouchMove: swiper.params.allowTouchMove,
269
+      touches: {
270
+        startX: 0,
271
+        startY: 0,
272
+        currentX: 0,
273
+        currentY: 0,
274
+        diff: 0
275
+      },
276
+      // Images
277
+      imagesToLoad: [],
278
+      imagesLoaded: 0
279
+    }); // Install Modules
280
+
281
+    swiper.useModules();
282
+    swiper.emit('_swiper'); // Init
283
+
284
+    if (swiper.params.init) {
285
+      swiper.init();
286
+    } // Return app instance
287
+
288
+
289
+    return swiper;
290
+  }
291
+
292
+  var _proto = Swiper.prototype;
293
+
294
+  _proto.emitContainerClasses = function emitContainerClasses() {
295
+    var swiper = this;
296
+    if (!swiper.params._emitClasses || !swiper.el) return;
297
+    var classes = swiper.el.className.split(' ').filter(function (className) {
298
+      return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
299
+    });
300
+    swiper.emit('_containerClasses', classes.join(' '));
301
+  };
302
+
303
+  _proto.getSlideClasses = function getSlideClasses(slideEl) {
304
+    var swiper = this;
305
+    return slideEl.className.split(' ').filter(function (className) {
306
+      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
307
+    }).join(' ');
308
+  };
309
+
310
+  _proto.emitSlidesClasses = function emitSlidesClasses() {
311
+    var swiper = this;
312
+    if (!swiper.params._emitClasses || !swiper.el) return;
313
+    swiper.slides.each(function (slideEl) {
314
+      var classNames = swiper.getSlideClasses(slideEl);
315
+      swiper.emit('_slideClass', slideEl, classNames);
316
+    });
317
+  };
318
+
319
+  _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
320
+    var swiper = this;
321
+    var params = swiper.params,
322
+        slides = swiper.slides,
323
+        slidesGrid = swiper.slidesGrid,
324
+        swiperSize = swiper.size,
325
+        activeIndex = swiper.activeIndex;
326
+    var spv = 1;
327
+
328
+    if (params.centeredSlides) {
329
+      var slideSize = slides[activeIndex].swiperSlideSize;
330
+      var breakLoop;
331
+
332
+      for (var i = activeIndex + 1; i < slides.length; i += 1) {
333
+        if (slides[i] && !breakLoop) {
334
+          slideSize += slides[i].swiperSlideSize;
335
+          spv += 1;
336
+          if (slideSize > swiperSize) breakLoop = true;
337
+        }
338
+      }
339
+
340
+      for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
341
+        if (slides[_i] && !breakLoop) {
342
+          slideSize += slides[_i].swiperSlideSize;
343
+          spv += 1;
344
+          if (slideSize > swiperSize) breakLoop = true;
345
+        }
346
+      }
347
+    } else {
348
+      for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
349
+        if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
350
+          spv += 1;
351
+        }
352
+      }
353
+    }
354
+
355
+    return spv;
356
+  };
357
+
358
+  _proto.update = function update() {
359
+    var swiper = this;
360
+    if (!swiper || swiper.destroyed) return;
361
+    var snapGrid = swiper.snapGrid,
362
+        params = swiper.params; // Breakpoints
363
+
364
+    if (params.breakpoints) {
365
+      swiper.setBreakpoint();
366
+    }
367
+
368
+    swiper.updateSize();
369
+    swiper.updateSlides();
370
+    swiper.updateProgress();
371
+    swiper.updateSlidesClasses();
372
+
373
+    function setTranslate() {
374
+      var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
375
+      var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
376
+      swiper.setTranslate(newTranslate);
377
+      swiper.updateActiveIndex();
378
+      swiper.updateSlidesClasses();
379
+    }
380
+
381
+    var translated;
382
+
383
+    if (swiper.params.freeMode) {
384
+      setTranslate();
385
+
386
+      if (swiper.params.autoHeight) {
387
+        swiper.updateAutoHeight();
388
+      }
389
+    } else {
390
+      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
391
+        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
392
+      } else {
393
+        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
394
+      }
395
+
396
+      if (!translated) {
397
+        setTranslate();
398
+      }
399
+    }
400
+
401
+    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
402
+      swiper.checkOverflow();
403
+    }
404
+
405
+    swiper.emit('update');
406
+  };
407
+
408
+  _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
409
+    if (needUpdate === void 0) {
410
+      needUpdate = true;
411
+    }
412
+
413
+    var swiper = this;
414
+    var currentDirection = swiper.params.direction;
415
+
416
+    if (!newDirection) {
417
+      // eslint-disable-next-line
418
+      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
419
+    }
420
+
421
+    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
422
+      return swiper;
423
+    }
424
+
425
+    swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
426
+    swiper.emitContainerClasses();
427
+    swiper.params.direction = newDirection;
428
+    swiper.slides.each(function (slideEl) {
429
+      if (newDirection === 'vertical') {
430
+        slideEl.style.width = '';
431
+      } else {
432
+        slideEl.style.height = '';
433
+      }
434
+    });
435
+    swiper.emit('changeDirection');
436
+    if (needUpdate) swiper.update();
437
+    return swiper;
438
+  };
439
+
440
+  _proto.init = function init() {
441
+    var swiper = this;
442
+    if (swiper.initialized) return;
443
+    swiper.emit('beforeInit'); // Set breakpoint
444
+
445
+    if (swiper.params.breakpoints) {
446
+      swiper.setBreakpoint();
447
+    } // Add Classes
448
+
449
+
450
+    swiper.addClasses(); // Create loop
451
+
452
+    if (swiper.params.loop) {
453
+      swiper.loopCreate();
454
+    } // Update size
455
+
456
+
457
+    swiper.updateSize(); // Update slides
458
+
459
+    swiper.updateSlides();
460
+
461
+    if (swiper.params.watchOverflow) {
462
+      swiper.checkOverflow();
463
+    } // Set Grab Cursor
464
+
465
+
466
+    if (swiper.params.grabCursor) {
467
+      swiper.setGrabCursor();
468
+    }
469
+
470
+    if (swiper.params.preloadImages) {
471
+      swiper.preloadImages();
472
+    } // Slide To Initial Slide
473
+
474
+
475
+    if (swiper.params.loop) {
476
+      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
477
+    } else {
478
+      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
479
+    } // Attach events
480
+
481
+
482
+    swiper.attachEvents(); // Init Flag
483
+
484
+    swiper.initialized = true; // Emit
485
+
486
+    swiper.emit('init');
487
+    swiper.emit('afterInit');
488
+  };
489
+
490
+  _proto.destroy = function destroy(deleteInstance, cleanStyles) {
491
+    if (deleteInstance === void 0) {
492
+      deleteInstance = true;
493
+    }
494
+
495
+    if (cleanStyles === void 0) {
496
+      cleanStyles = true;
497
+    }
498
+
499
+    var swiper = this;
500
+    var params = swiper.params,
501
+        $el = swiper.$el,
502
+        $wrapperEl = swiper.$wrapperEl,
503
+        slides = swiper.slides;
504
+
505
+    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
506
+      return null;
507
+    }
508
+
509
+    swiper.emit('beforeDestroy'); // Init Flag
510
+
511
+    swiper.initialized = false; // Detach events
512
+
513
+    swiper.detachEvents(); // Destroy loop
514
+
515
+    if (params.loop) {
516
+      swiper.loopDestroy();
517
+    } // Cleanup styles
518
+
519
+
520
+    if (cleanStyles) {
521
+      swiper.removeClasses();
522
+      $el.removeAttr('style');
523
+      $wrapperEl.removeAttr('style');
524
+
525
+      if (slides && slides.length) {
526
+        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
527
+      }
528
+    }
529
+
530
+    swiper.emit('destroy'); // Detach emitter events
531
+
532
+    Object.keys(swiper.eventsListeners).forEach(function (eventName) {
533
+      swiper.off(eventName);
534
+    });
535
+
536
+    if (deleteInstance !== false) {
537
+      swiper.$el[0].swiper = null;
538
+      (0, _utils.deleteProps)(swiper);
539
+    }
540
+
541
+    swiper.destroyed = true;
542
+    return null;
543
+  };
544
+
545
+  Swiper.extendDefaults = function extendDefaults(newDefaults) {
546
+    (0, _utils.extend)(extendedDefaults, newDefaults);
547
+  };
548
+
549
+  Swiper.installModule = function installModule(module) {
550
+    if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
551
+    var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + (0, _utils.now)();
552
+    Swiper.prototype.modules[name] = module;
553
+  };
554
+
555
+  Swiper.use = function use(module) {
556
+    if (Array.isArray(module)) {
557
+      module.forEach(function (m) {
558
+        return Swiper.installModule(m);
559
+      });
560
+      return Swiper;
561
+    }
562
+
563
+    Swiper.installModule(module);
564
+    return Swiper;
565
+  };
566
+
567
+  _createClass(Swiper, null, [{
568
+    key: "extendedDefaults",
569
+    get: function get() {
570
+      return extendedDefaults;
571
+    }
572
+  }, {
573
+    key: "defaults",
574
+    get: function get() {
575
+      return _defaults.default;
576
+    }
577
+  }]);
578
+
579
+  return Swiper;
580
+}();
581
+
582
+Object.keys(prototypes).forEach(function (prototypeGroup) {
583
+  Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
584
+    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
585
+  });
586
+});
587
+Swiper.use([_resize.default, _observer.default]);
588
+var _default = Swiper;
589
+exports.default = _default;
0 590
\ No newline at end of file
1 591
new file mode 100644
... ...
@@ -0,0 +1,131 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+var _default = {
6
+  init: true,
7
+  direction: 'horizontal',
8
+  touchEventsTarget: 'container',
9
+  initialSlide: 0,
10
+  speed: 300,
11
+  cssMode: false,
12
+  updateOnWindowResize: true,
13
+  nested: false,
14
+  // Overrides
15
+  width: null,
16
+  height: null,
17
+  //
18
+  preventInteractionOnTransition: false,
19
+  // ssr
20
+  userAgent: null,
21
+  url: null,
22
+  // To support iOS's swipe-to-go-back gesture (when being used in-app).
23
+  edgeSwipeDetection: false,
24
+  edgeSwipeThreshold: 20,
25
+  // Free mode
26
+  freeMode: false,
27
+  freeModeMomentum: true,
28
+  freeModeMomentumRatio: 1,
29
+  freeModeMomentumBounce: true,
30
+  freeModeMomentumBounceRatio: 1,
31
+  freeModeMomentumVelocityRatio: 1,
32
+  freeModeSticky: false,
33
+  freeModeMinimumVelocity: 0.02,
34
+  // Autoheight
35
+  autoHeight: false,
36
+  // Set wrapper width
37
+  setWrapperSize: false,
38
+  // Virtual Translate
39
+  virtualTranslate: false,
40
+  // Effects
41
+  effect: 'slide',
42
+  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
43
+  // Breakpoints
44
+  breakpoints: undefined,
45
+  // Slides grid
46
+  spaceBetween: 0,
47
+  slidesPerView: 1,
48
+  slidesPerColumn: 1,
49
+  slidesPerColumnFill: 'column',
50
+  slidesPerGroup: 1,
51
+  slidesPerGroupSkip: 0,
52
+  centeredSlides: false,
53
+  centeredSlidesBounds: false,
54
+  slidesOffsetBefore: 0,
55
+  // in px
56
+  slidesOffsetAfter: 0,
57
+  // in px
58
+  normalizeSlideIndex: true,
59
+  centerInsufficientSlides: false,
60
+  // Disable swiper and hide navigation when container not overflow
61
+  watchOverflow: false,
62
+  // Round length
63
+  roundLengths: false,
64
+  // Touches
65
+  touchRatio: 1,
66
+  touchAngle: 45,
67
+  simulateTouch: true,
68
+  shortSwipes: true,
69
+  longSwipes: true,
70
+  longSwipesRatio: 0.5,
71
+  longSwipesMs: 300,
72
+  followFinger: true,
73
+  allowTouchMove: true,
74
+  threshold: 0,
75
+  touchMoveStopPropagation: false,
76
+  touchStartPreventDefault: true,
77
+  touchStartForcePreventDefault: false,
78
+  touchReleaseOnEdges: false,
79
+  // Unique Navigation Elements
80
+  uniqueNavElements: true,
81
+  // Resistance
82
+  resistance: true,
83
+  resistanceRatio: 0.85,
84
+  // Progress
85
+  watchSlidesProgress: false,
86
+  watchSlidesVisibility: false,
87
+  // Cursor
88
+  grabCursor: false,
89
+  // Clicks
90
+  preventClicks: true,
91
+  preventClicksPropagation: true,
92
+  slideToClickedSlide: false,
93
+  // Images
94
+  preloadImages: true,
95
+  updateOnImagesReady: true,
96
+  // loop
97
+  loop: false,
98
+  loopAdditionalSlides: 0,
99
+  loopedSlides: null,
100
+  loopFillGroupWithBlank: false,
101
+  loopPreventsSlide: true,
102
+  // Swiping/no swiping
103
+  allowSlidePrev: true,
104
+  allowSlideNext: true,
105
+  swipeHandler: null,
106
+  // '.swipe-handler',
107
+  noSwiping: true,
108
+  noSwipingClass: 'swiper-no-swiping',
109
+  noSwipingSelector: null,
110
+  // Passive Listeners
111
+  passiveListeners: true,
112
+  // NS
113
+  containerModifierClass: 'swiper-container-',
114
+  // NEW
115
+  slideClass: 'swiper-slide',
116
+  slideBlankClass: 'swiper-slide-invisible-blank',
117
+  slideActiveClass: 'swiper-slide-active',
118
+  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
119
+  slideVisibleClass: 'swiper-slide-visible',
120
+  slideDuplicateClass: 'swiper-slide-duplicate',
121
+  slideNextClass: 'swiper-slide-next',
122
+  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
123
+  slidePrevClass: 'swiper-slide-prev',
124
+  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
125
+  wrapperClass: 'swiper-wrapper',
126
+  // Callbacks
127
+  runCallbacksOnInit: true,
128
+  // Internals
129
+  _emitClasses: false
130
+};
131
+exports.default = _default;
0 132
\ No newline at end of file
1 133
new file mode 100644
... ...
@@ -0,0 +1,120 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+/* eslint-disable no-underscore-dangle */
7
+var _default = {
8
+  on: function on(events, handler, priority) {
9
+    var self = this;
10
+    if (typeof handler !== 'function') return self;
11
+    var method = priority ? 'unshift' : 'push';
12
+    events.split(' ').forEach(function (event) {
13
+      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
14
+      self.eventsListeners[event][method](handler);
15
+    });
16
+    return self;
17
+  },
18
+  once: function once(events, handler, priority) {
19
+    var self = this;
20
+    if (typeof handler !== 'function') return self;
21
+
22
+    function onceHandler() {
23
+      self.off(events, onceHandler);
24
+
25
+      if (onceHandler.__emitterProxy) {
26
+        delete onceHandler.__emitterProxy;
27
+      }
28
+
29
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+        args[_key] = arguments[_key];
31
+      }
32
+
33
+      handler.apply(self, args);
34
+    }
35
+
36
+    onceHandler.__emitterProxy = handler;
37
+    return self.on(events, onceHandler, priority);
38
+  },
39
+  onAny: function onAny(handler, priority) {
40
+    var self = this;
41
+    if (typeof handler !== 'function') return self;
42
+    var method = priority ? 'unshift' : 'push';
43
+
44
+    if (self.eventsAnyListeners.indexOf(handler) < 0) {
45
+      self.eventsAnyListeners[method](handler);
46
+    }
47
+
48
+    return self;
49
+  },
50
+  offAny: function offAny(handler) {
51
+    var self = this;
52
+    if (!self.eventsAnyListeners) return self;
53
+    var index = self.eventsAnyListeners.indexOf(handler);
54
+
55
+    if (index >= 0) {
56
+      self.eventsAnyListeners.splice(index, 1);
57
+    }
58
+
59
+    return self;
60
+  },
61
+  off: function off(events, handler) {
62
+    var self = this;
63
+    if (!self.eventsListeners) return self;
64
+    events.split(' ').forEach(function (event) {
65
+      if (typeof handler === 'undefined') {
66
+        self.eventsListeners[event] = [];
67
+      } else if (self.eventsListeners[event]) {
68
+        self.eventsListeners[event].forEach(function (eventHandler, index) {
69
+          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
70
+            self.eventsListeners[event].splice(index, 1);
71
+          }
72
+        });
73
+      }
74
+    });
75
+    return self;
76
+  },
77
+  emit: function emit() {
78
+    var self = this;
79
+    if (!self.eventsListeners) return self;
80
+    var events;
81
+    var data;
82
+    var context;
83
+
84
+    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
85
+      args[_key2] = arguments[_key2];
86
+    }
87
+
88
+    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
89
+      events = args[0];
90
+      data = args.slice(1, args.length);
91
+      context = self;
92
+    } else {
93
+      events = args[0].events;
94
+      data = args[0].data;
95
+      context = args[0].context || self;
96
+    }
97
+
98
+    data.unshift(context);
99
+    var eventsArray = Array.isArray(events) ? events : events.split(' ');
100
+    eventsArray.forEach(function (event) {
101
+      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
102
+        self.eventsAnyListeners.forEach(function (eventHandler) {
103
+          eventHandler.apply(context, [event].concat(data));
104
+        });
105
+      }
106
+
107
+      if (self.eventsListeners && self.eventsListeners[event]) {
108
+        var handlers = [];
109
+        self.eventsListeners[event].forEach(function (eventHandler) {
110
+          handlers.push(eventHandler);
111
+        });
112
+        handlers.forEach(function (eventHandler) {
113
+          eventHandler.apply(context, data);
114
+        });
115
+      }
116
+    });
117
+    return self;
118
+  }
119
+};
120
+exports.default = _default;
0 121
\ No newline at end of file
1 122
new file mode 100644
... ...
@@ -0,0 +1,151 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _onTouchStart = _interopRequireDefault(require("./onTouchStart"));
9
+
10
+var _onTouchMove = _interopRequireDefault(require("./onTouchMove"));
11
+
12
+var _onTouchEnd = _interopRequireDefault(require("./onTouchEnd"));
13
+
14
+var _onResize = _interopRequireDefault(require("./onResize"));
15
+
16
+var _onClick = _interopRequireDefault(require("./onClick"));
17
+
18
+var _onScroll = _interopRequireDefault(require("./onScroll"));
19
+
20
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+var dummyEventAttached = false;
23
+
24
+function dummyEventListener() {}
25
+
26
+function attachEvents() {
27
+  var swiper = this;
28
+  var document = (0, _ssrWindow.getDocument)();
29
+  var params = swiper.params,
30
+      touchEvents = swiper.touchEvents,
31
+      el = swiper.el,
32
+      wrapperEl = swiper.wrapperEl,
33
+      device = swiper.device,
34
+      support = swiper.support;
35
+  swiper.onTouchStart = _onTouchStart.default.bind(swiper);
36
+  swiper.onTouchMove = _onTouchMove.default.bind(swiper);
37
+  swiper.onTouchEnd = _onTouchEnd.default.bind(swiper);
38
+
39
+  if (params.cssMode) {
40
+    swiper.onScroll = _onScroll.default.bind(swiper);
41
+  }
42
+
43
+  swiper.onClick = _onClick.default.bind(swiper);
44
+  var capture = !!params.nested; // Touch Events
45
+
46
+  if (!support.touch && support.pointerEvents) {
47
+    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
48
+    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
49
+    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
50
+  } else {
51
+    if (support.touch) {
52
+      var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
53
+        passive: true,
54
+        capture: false
55
+      } : false;
56
+      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
57
+      el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
58
+        passive: false,
59
+        capture: capture
60
+      } : capture);
61
+      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
62
+
63
+      if (touchEvents.cancel) {
64
+        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
65
+      }
66
+
67
+      if (!dummyEventAttached) {
68
+        document.addEventListener('touchstart', dummyEventListener);
69
+        dummyEventAttached = true;
70
+      }
71
+    }
72
+
73
+    if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
74
+      el.addEventListener('mousedown', swiper.onTouchStart, false);
75
+      document.addEventListener('mousemove', swiper.onTouchMove, capture);
76
+      document.addEventListener('mouseup', swiper.onTouchEnd, false);
77
+    }
78
+  } // Prevent Links Clicks
79
+
80
+
81
+  if (params.preventClicks || params.preventClicksPropagation) {
82
+    el.addEventListener('click', swiper.onClick, true);
83
+  }
84
+
85
+  if (params.cssMode) {
86
+    wrapperEl.addEventListener('scroll', swiper.onScroll);
87
+  } // Resize handler
88
+
89
+
90
+  if (params.updateOnWindowResize) {
91
+    swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize.default, true);
92
+  } else {
93
+    swiper.on('observerUpdate', _onResize.default, true);
94
+  }
95
+}
96
+
97
+function detachEvents() {
98
+  var swiper = this;
99
+  var document = (0, _ssrWindow.getDocument)();
100
+  var params = swiper.params,
101
+      touchEvents = swiper.touchEvents,
102
+      el = swiper.el,
103
+      wrapperEl = swiper.wrapperEl,
104
+      device = swiper.device,
105
+      support = swiper.support;
106
+  var capture = !!params.nested; // Touch Events
107
+
108
+  if (!support.touch && support.pointerEvents) {
109
+    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
110
+    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
111
+    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
112
+  } else {
113
+    if (support.touch) {
114
+      var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
115
+        passive: true,
116
+        capture: false
117
+      } : false;
118
+      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
119
+      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
120
+      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
121
+
122
+      if (touchEvents.cancel) {
123
+        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
124
+      }
125
+    }
126
+
127
+    if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
128
+      el.removeEventListener('mousedown', swiper.onTouchStart, false);
129
+      document.removeEventListener('mousemove', swiper.onTouchMove, capture);
130
+      document.removeEventListener('mouseup', swiper.onTouchEnd, false);
131
+    }
132
+  } // Prevent Links Clicks
133
+
134
+
135
+  if (params.preventClicks || params.preventClicksPropagation) {
136
+    el.removeEventListener('click', swiper.onClick, true);
137
+  }
138
+
139
+  if (params.cssMode) {
140
+    wrapperEl.removeEventListener('scroll', swiper.onScroll);
141
+  } // Resize handler
142
+
143
+
144
+  swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize.default);
145
+}
146
+
147
+var _default = {
148
+  attachEvents: attachEvents,
149
+  detachEvents: detachEvents
150
+};
151
+exports.default = _default;
0 152
\ No newline at end of file
1 153
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = onClick;
5
+
6
+function onClick(e) {
7
+  var swiper = this;
8
+
9
+  if (!swiper.allowClick) {
10
+    if (swiper.params.preventClicks) e.preventDefault();
11
+
12
+    if (swiper.params.preventClicksPropagation && swiper.animating) {
13
+      e.stopPropagation();
14
+      e.stopImmediatePropagation();
15
+    }
16
+  }
17
+}
0 18
\ No newline at end of file
1 19
new file mode 100644
... ...
@@ -0,0 +1,44 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = onResize;
5
+
6
+function onResize() {
7
+  var swiper = this;
8
+  var params = swiper.params,
9
+      el = swiper.el;
10
+  if (el && el.offsetWidth === 0) return; // Breakpoints
11
+
12
+  if (params.breakpoints) {
13
+    swiper.setBreakpoint();
14
+  } // Save locks
15
+
16
+
17
+  var allowSlideNext = swiper.allowSlideNext,
18
+      allowSlidePrev = swiper.allowSlidePrev,
19
+      snapGrid = swiper.snapGrid; // Disable locks on resize
20
+
21
+  swiper.allowSlideNext = true;
22
+  swiper.allowSlidePrev = true;
23
+  swiper.updateSize();
24
+  swiper.updateSlides();
25
+  swiper.updateSlidesClasses();
26
+
27
+  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
28
+    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
29
+  } else {
30
+    swiper.slideTo(swiper.activeIndex, 0, false, true);
31
+  }
32
+
33
+  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
34
+    swiper.autoplay.run();
35
+  } // Return locks after resize
36
+
37
+
38
+  swiper.allowSlidePrev = allowSlidePrev;
39
+  swiper.allowSlideNext = allowSlideNext;
40
+
41
+  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
42
+    swiper.checkOverflow();
43
+  }
44
+}
0 45
\ No newline at end of file
1 46
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = onScroll;
5
+
6
+function onScroll() {
7
+  var swiper = this;
8
+  var wrapperEl = swiper.wrapperEl,
9
+      rtlTranslate = swiper.rtlTranslate;
10
+  swiper.previousTranslate = swiper.translate;
11
+
12
+  if (swiper.isHorizontal()) {
13
+    if (rtlTranslate) {
14
+      swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
15
+    } else {
16
+      swiper.translate = -wrapperEl.scrollLeft;
17
+    }
18
+  } else {
19
+    swiper.translate = -wrapperEl.scrollTop;
20
+  } // eslint-disable-next-line
21
+
22
+
23
+  if (swiper.translate === -0) swiper.translate = 0;
24
+  swiper.updateActiveIndex();
25
+  swiper.updateSlidesClasses();
26
+  var newProgress;
27
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
28
+
29
+  if (translatesDiff === 0) {
30
+    newProgress = 0;
31
+  } else {
32
+    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
33
+  }
34
+
35
+  if (newProgress !== swiper.progress) {
36
+    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
37
+  }
38
+
39
+  swiper.emit('setTranslate', swiper.translate, false);
40
+}
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,325 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = onTouchEnd;
5
+
6
+var _utils = require("../../../utils/utils");
7
+
8
+function onTouchEnd(event) {
9
+  var swiper = this;
10
+  var data = swiper.touchEventsData;
11
+  var params = swiper.params,
12
+      touches = swiper.touches,
13
+      rtl = swiper.rtlTranslate,
14
+      $wrapperEl = swiper.$wrapperEl,
15
+      slidesGrid = swiper.slidesGrid,
16
+      snapGrid = swiper.snapGrid;
17
+  var e = event;
18
+  if (e.originalEvent) e = e.originalEvent;
19
+
20
+  if (data.allowTouchCallbacks) {
21
+    swiper.emit('touchEnd', e);
22
+  }
23
+
24
+  data.allowTouchCallbacks = false;
25
+
26
+  if (!data.isTouched) {
27
+    if (data.isMoved && params.grabCursor) {
28
+      swiper.setGrabCursor(false);
29
+    }
30
+
31
+    data.isMoved = false;
32
+    data.startMoving = false;
33
+    return;
34
+  } // Return Grab Cursor
35
+
36
+
37
+  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
38
+    swiper.setGrabCursor(false);
39
+  } // Time diff
40
+
41
+
42
+  var touchEndTime = (0, _utils.now)();
43
+  var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
44
+
45
+  if (swiper.allowClick) {
46
+    swiper.updateClickedSlide(e);
47
+    swiper.emit('tap click', e);
48
+
49
+    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
50
+      swiper.emit('doubleTap doubleClick', e);
51
+    }
52
+  }
53
+
54
+  data.lastClickTime = (0, _utils.now)();
55
+  (0, _utils.nextTick)(function () {
56
+    if (!swiper.destroyed) swiper.allowClick = true;
57
+  });
58
+
59
+  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
60
+    data.isTouched = false;
61
+    data.isMoved = false;
62
+    data.startMoving = false;
63
+    return;
64
+  }
65
+
66
+  data.isTouched = false;
67
+  data.isMoved = false;
68
+  data.startMoving = false;
69
+  var currentPos;
70
+
71
+  if (params.followFinger) {
72
+    currentPos = rtl ? swiper.translate : -swiper.translate;
73
+  } else {
74
+    currentPos = -data.currentTranslate;
75
+  }
76
+
77
+  if (params.cssMode) {
78
+    return;
79
+  }
80
+
81
+  if (params.freeMode) {
82
+    if (currentPos < -swiper.minTranslate()) {
83
+      swiper.slideTo(swiper.activeIndex);
84
+      return;
85
+    }
86
+
87
+    if (currentPos > -swiper.maxTranslate()) {
88
+      if (swiper.slides.length < snapGrid.length) {
89
+        swiper.slideTo(snapGrid.length - 1);
90
+      } else {
91
+        swiper.slideTo(swiper.slides.length - 1);
92
+      }
93
+
94
+      return;
95
+    }
96
+
97
+    if (params.freeModeMomentum) {
98
+      if (data.velocities.length > 1) {
99
+        var lastMoveEvent = data.velocities.pop();
100
+        var velocityEvent = data.velocities.pop();
101
+        var distance = lastMoveEvent.position - velocityEvent.position;
102
+        var time = lastMoveEvent.time - velocityEvent.time;
103
+        swiper.velocity = distance / time;
104
+        swiper.velocity /= 2;
105
+
106
+        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
107
+          swiper.velocity = 0;
108
+        } // this implies that the user stopped moving a finger then released.
109
+        // There would be no events with distance zero, so the last event is stale.
110
+
111
+
112
+        if (time > 150 || (0, _utils.now)() - lastMoveEvent.time > 300) {
113
+          swiper.velocity = 0;
114
+        }
115
+      } else {
116
+        swiper.velocity = 0;
117
+      }
118
+
119
+      swiper.velocity *= params.freeModeMomentumVelocityRatio;
120
+      data.velocities.length = 0;
121
+      var momentumDuration = 1000 * params.freeModeMomentumRatio;
122
+      var momentumDistance = swiper.velocity * momentumDuration;
123
+      var newPosition = swiper.translate + momentumDistance;
124
+      if (rtl) newPosition = -newPosition;
125
+      var doBounce = false;
126
+      var afterBouncePosition;
127
+      var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
128
+      var needsLoopFix;
129
+
130
+      if (newPosition < swiper.maxTranslate()) {
131
+        if (params.freeModeMomentumBounce) {
132
+          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
133
+            newPosition = swiper.maxTranslate() - bounceAmount;
134
+          }
135
+
136
+          afterBouncePosition = swiper.maxTranslate();
137
+          doBounce = true;
138
+          data.allowMomentumBounce = true;
139
+        } else {
140
+          newPosition = swiper.maxTranslate();
141
+        }
142
+
143
+        if (params.loop && params.centeredSlides) needsLoopFix = true;
144
+      } else if (newPosition > swiper.minTranslate()) {
145
+        if (params.freeModeMomentumBounce) {
146
+          if (newPosition - swiper.minTranslate() > bounceAmount) {
147
+            newPosition = swiper.minTranslate() + bounceAmount;
148
+          }
149
+
150
+          afterBouncePosition = swiper.minTranslate();
151
+          doBounce = true;
152
+          data.allowMomentumBounce = true;
153
+        } else {
154
+          newPosition = swiper.minTranslate();
155
+        }
156
+
157
+        if (params.loop && params.centeredSlides) needsLoopFix = true;
158
+      } else if (params.freeModeSticky) {
159
+        var nextSlide;
160
+
161
+        for (var j = 0; j < snapGrid.length; j += 1) {
162
+          if (snapGrid[j] > -newPosition) {
163
+            nextSlide = j;
164
+            break;
165
+          }
166
+        }
167
+
168
+        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
169
+          newPosition = snapGrid[nextSlide];
170
+        } else {
171
+          newPosition = snapGrid[nextSlide - 1];
172
+        }
173
+
174
+        newPosition = -newPosition;
175
+      }
176
+
177
+      if (needsLoopFix) {
178
+        swiper.once('transitionEnd', function () {
179
+          swiper.loopFix();
180
+        });
181
+      } // Fix duration
182
+
183
+
184
+      if (swiper.velocity !== 0) {
185
+        if (rtl) {
186
+          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
187
+        } else {
188
+          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
189
+        }
190
+
191
+        if (params.freeModeSticky) {
192
+          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
193
+          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
194
+          // It's easy to see this when simulating touch with mouse events. To fix this,
195
+          // limit single-slide swipes to the default slide duration. This also has the
196
+          // nice side effect of matching slide speed if the user stopped moving before
197
+          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
198
+          // For faster swipes, also apply limits (albeit higher ones).
199
+          var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
200
+          var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
201
+
202
+          if (moveDistance < currentSlideSize) {
203
+            momentumDuration = params.speed;
204
+          } else if (moveDistance < 2 * currentSlideSize) {
205
+            momentumDuration = params.speed * 1.5;
206
+          } else {
207
+            momentumDuration = params.speed * 2.5;
208
+          }
209
+        }
210
+      } else if (params.freeModeSticky) {
211
+        swiper.slideToClosest();
212
+        return;
213
+      }
214
+
215
+      if (params.freeModeMomentumBounce && doBounce) {
216
+        swiper.updateProgress(afterBouncePosition);
217
+        swiper.setTransition(momentumDuration);
218
+        swiper.setTranslate(newPosition);
219
+        swiper.transitionStart(true, swiper.swipeDirection);
220
+        swiper.animating = true;
221
+        $wrapperEl.transitionEnd(function () {
222
+          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
223
+          swiper.emit('momentumBounce');
224
+          swiper.setTransition(params.speed);
225
+          setTimeout(function () {
226
+            swiper.setTranslate(afterBouncePosition);
227
+            $wrapperEl.transitionEnd(function () {
228
+              if (!swiper || swiper.destroyed) return;
229
+              swiper.transitionEnd();
230
+            });
231
+          }, 0);
232
+        });
233
+      } else if (swiper.velocity) {
234
+        swiper.updateProgress(newPosition);
235
+        swiper.setTransition(momentumDuration);
236
+        swiper.setTranslate(newPosition);
237
+        swiper.transitionStart(true, swiper.swipeDirection);
238
+
239
+        if (!swiper.animating) {
240
+          swiper.animating = true;
241
+          $wrapperEl.transitionEnd(function () {
242
+            if (!swiper || swiper.destroyed) return;
243
+            swiper.transitionEnd();
244
+          });
245
+        }
246
+      } else {
247
+        swiper.updateProgress(newPosition);
248
+      }
249
+
250
+      swiper.updateActiveIndex();
251
+      swiper.updateSlidesClasses();
252
+    } else if (params.freeModeSticky) {
253
+      swiper.slideToClosest();
254
+      return;
255
+    }
256
+
257
+    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
258
+      swiper.updateProgress();
259
+      swiper.updateActiveIndex();
260
+      swiper.updateSlidesClasses();
261
+    }
262
+
263
+    return;
264
+  } // Find current slide
265
+
266
+
267
+  var stopIndex = 0;
268
+  var groupSize = swiper.slidesSizesGrid[0];
269
+
270
+  for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
271
+    var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
272
+
273
+    if (typeof slidesGrid[i + _increment] !== 'undefined') {
274
+      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
275
+        stopIndex = i;
276
+        groupSize = slidesGrid[i + _increment] - slidesGrid[i];
277
+      }
278
+    } else if (currentPos >= slidesGrid[i]) {
279
+      stopIndex = i;
280
+      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
281
+    }
282
+  } // Find current slide size
283
+
284
+
285
+  var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
286
+  var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
287
+
288
+  if (timeDiff > params.longSwipesMs) {
289
+    // Long touches
290
+    if (!params.longSwipes) {
291
+      swiper.slideTo(swiper.activeIndex);
292
+      return;
293
+    }
294
+
295
+    if (swiper.swipeDirection === 'next') {
296
+      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
297
+    }
298
+
299
+    if (swiper.swipeDirection === 'prev') {
300
+      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
301
+    }
302
+  } else {
303
+    // Short swipes
304
+    if (!params.shortSwipes) {
305
+      swiper.slideTo(swiper.activeIndex);
306
+      return;
307
+    }
308
+
309
+    var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
310
+
311
+    if (!isNavButtonTarget) {
312
+      if (swiper.swipeDirection === 'next') {
313
+        swiper.slideTo(stopIndex + increment);
314
+      }
315
+
316
+      if (swiper.swipeDirection === 'prev') {
317
+        swiper.slideTo(stopIndex);
318
+      }
319
+    } else if (e.target === swiper.navigation.nextEl) {
320
+      swiper.slideTo(stopIndex + increment);
321
+    } else {
322
+      swiper.slideTo(stopIndex);
323
+    }
324
+  }
325
+}
0 326
\ No newline at end of file
1 327
new file mode 100644
... ...
@@ -0,0 +1,235 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = onTouchMove;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
9
+
10
+var _utils = require("../../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function onTouchMove(event) {
15
+  var document = (0, _ssrWindow.getDocument)();
16
+  var swiper = this;
17
+  var data = swiper.touchEventsData;
18
+  var params = swiper.params,
19
+      touches = swiper.touches,
20
+      rtl = swiper.rtlTranslate;
21
+  var e = event;
22
+  if (e.originalEvent) e = e.originalEvent;
23
+
24
+  if (!data.isTouched) {
25
+    if (data.startMoving && data.isScrolling) {
26
+      swiper.emit('touchMoveOpposite', e);
27
+    }
28
+
29
+    return;
30
+  }
31
+
32
+  if (data.isTouchEvent && e.type !== 'touchmove') return;
33
+  var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
34
+  var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
35
+  var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
36
+
37
+  if (e.preventedByNestedSwiper) {
38
+    touches.startX = pageX;
39
+    touches.startY = pageY;
40
+    return;
41
+  }
42
+
43
+  if (!swiper.allowTouchMove) {
44
+    // isMoved = true;
45
+    swiper.allowClick = false;
46
+
47
+    if (data.isTouched) {
48
+      (0, _utils.extend)(touches, {
49
+        startX: pageX,
50
+        startY: pageY,
51
+        currentX: pageX,
52
+        currentY: pageY
53
+      });
54
+      data.touchStartTime = (0, _utils.now)();
55
+    }
56
+
57
+    return;
58
+  }
59
+
60
+  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
61
+    if (swiper.isVertical()) {
62
+      // Vertical
63
+      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
64
+        data.isTouched = false;
65
+        data.isMoved = false;
66
+        return;
67
+      }
68
+    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
69
+      return;
70
+    }
71
+  }
72
+
73
+  if (data.isTouchEvent && document.activeElement) {
74
+    if (e.target === document.activeElement && (0, _dom.default)(e.target).is(data.formElements)) {
75
+      data.isMoved = true;
76
+      swiper.allowClick = false;
77
+      return;
78
+    }
79
+  }
80
+
81
+  if (data.allowTouchCallbacks) {
82
+    swiper.emit('touchMove', e);
83
+  }
84
+
85
+  if (e.targetTouches && e.targetTouches.length > 1) return;
86
+  touches.currentX = pageX;
87
+  touches.currentY = pageY;
88
+  var diffX = touches.currentX - touches.startX;
89
+  var diffY = touches.currentY - touches.startY;
90
+  if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
91
+
92
+  if (typeof data.isScrolling === 'undefined') {
93
+    var touchAngle;
94
+
95
+    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
96
+      data.isScrolling = false;
97
+    } else {
98
+      // eslint-disable-next-line
99
+      if (diffX * diffX + diffY * diffY >= 25) {
100
+        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
101
+        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
102
+      }
103
+    }
104
+  }
105
+
106
+  if (data.isScrolling) {
107
+    swiper.emit('touchMoveOpposite', e);
108
+  }
109
+
110
+  if (typeof data.startMoving === 'undefined') {
111
+    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
112
+      data.startMoving = true;
113
+    }
114
+  }
115
+
116
+  if (data.isScrolling) {
117
+    data.isTouched = false;
118
+    return;
119
+  }
120
+
121
+  if (!data.startMoving) {
122
+    return;
123
+  }
124
+
125
+  swiper.allowClick = false;
126
+
127
+  if (!params.cssMode && e.cancelable) {
128
+    e.preventDefault();
129
+  }
130
+
131
+  if (params.touchMoveStopPropagation && !params.nested) {
132
+    e.stopPropagation();
133
+  }
134
+
135
+  if (!data.isMoved) {
136
+    if (params.loop) {
137
+      swiper.loopFix();
138
+    }
139
+
140
+    data.startTranslate = swiper.getTranslate();
141
+    swiper.setTransition(0);
142
+
143
+    if (swiper.animating) {
144
+      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
145
+    }
146
+
147
+    data.allowMomentumBounce = false; // Grab Cursor
148
+
149
+    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
150
+      swiper.setGrabCursor(true);
151
+    }
152
+
153
+    swiper.emit('sliderFirstMove', e);
154
+  }
155
+
156
+  swiper.emit('sliderMove', e);
157
+  data.isMoved = true;
158
+  var diff = swiper.isHorizontal() ? diffX : diffY;
159
+  touches.diff = diff;
160
+  diff *= params.touchRatio;
161
+  if (rtl) diff = -diff;
162
+  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
163
+  data.currentTranslate = diff + data.startTranslate;
164
+  var disableParentSwiper = true;
165
+  var resistanceRatio = params.resistanceRatio;
166
+
167
+  if (params.touchReleaseOnEdges) {
168
+    resistanceRatio = 0;
169
+  }
170
+
171
+  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
172
+    disableParentSwiper = false;
173
+    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
174
+  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
175
+    disableParentSwiper = false;
176
+    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
177
+  }
178
+
179
+  if (disableParentSwiper) {
180
+    e.preventedByNestedSwiper = true;
181
+  } // Directions locks
182
+
183
+
184
+  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
185
+    data.currentTranslate = data.startTranslate;
186
+  }
187
+
188
+  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
189
+    data.currentTranslate = data.startTranslate;
190
+  } // Threshold
191
+
192
+
193
+  if (params.threshold > 0) {
194
+    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
195
+      if (!data.allowThresholdMove) {
196
+        data.allowThresholdMove = true;
197
+        touches.startX = touches.currentX;
198
+        touches.startY = touches.currentY;
199
+        data.currentTranslate = data.startTranslate;
200
+        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
201
+        return;
202
+      }
203
+    } else {
204
+      data.currentTranslate = data.startTranslate;
205
+      return;
206
+    }
207
+  }
208
+
209
+  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
210
+
211
+  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
212
+    swiper.updateActiveIndex();
213
+    swiper.updateSlidesClasses();
214
+  }
215
+
216
+  if (params.freeMode) {
217
+    // Velocity
218
+    if (data.velocities.length === 0) {
219
+      data.velocities.push({
220
+        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
221
+        time: data.touchStartTime
222
+      });
223
+    }
224
+
225
+    data.velocities.push({
226
+      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
227
+      time: (0, _utils.now)()
228
+    });
229
+  } // Update progress
230
+
231
+
232
+  swiper.updateProgress(data.currentTranslate); // Update translate
233
+
234
+  swiper.setTranslate(data.currentTranslate);
235
+}
0 236
\ No newline at end of file
1 237
new file mode 100644
... ...
@@ -0,0 +1,91 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = onTouchStart;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
9
+
10
+var _utils = require("../../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function onTouchStart(event) {
15
+  var swiper = this;
16
+  var document = (0, _ssrWindow.getDocument)();
17
+  var window = (0, _ssrWindow.getWindow)();
18
+  var data = swiper.touchEventsData;
19
+  var params = swiper.params,
20
+      touches = swiper.touches;
21
+
22
+  if (swiper.animating && params.preventInteractionOnTransition) {
23
+    return;
24
+  }
25
+
26
+  var e = event;
27
+  if (e.originalEvent) e = e.originalEvent;
28
+  var $targetEl = (0, _dom.default)(e.target);
29
+
30
+  if (params.touchEventsTarget === 'wrapper') {
31
+    if (!$targetEl.closest(swiper.wrapperEl).length) return;
32
+  }
33
+
34
+  data.isTouchEvent = e.type === 'touchstart';
35
+  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
36
+  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
37
+  if (data.isTouched && data.isMoved) return;
38
+
39
+  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
40
+    swiper.allowClick = true;
41
+    return;
42
+  }
43
+
44
+  if (params.swipeHandler) {
45
+    if (!$targetEl.closest(params.swipeHandler)[0]) return;
46
+  }
47
+
48
+  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
49
+  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
50
+  var startX = touches.currentX;
51
+  var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
52
+
53
+  var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
54
+  var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
55
+
56
+  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)) {
57
+    return;
58
+  }
59
+
60
+  (0, _utils.extend)(data, {
61
+    isTouched: true,
62
+    isMoved: false,
63
+    allowTouchCallbacks: true,
64
+    isScrolling: undefined,
65
+    startMoving: undefined
66
+  });
67
+  touches.startX = startX;
68
+  touches.startY = startY;
69
+  data.touchStartTime = (0, _utils.now)();
70
+  swiper.allowClick = true;
71
+  swiper.updateSize();
72
+  swiper.swipeDirection = undefined;
73
+  if (params.threshold > 0) data.allowThresholdMove = false;
74
+
75
+  if (e.type !== 'touchstart') {
76
+    var preventDefault = true;
77
+    if ($targetEl.is(data.formElements)) preventDefault = false;
78
+
79
+    if (document.activeElement && (0, _dom.default)(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
80
+      document.activeElement.blur();
81
+    }
82
+
83
+    var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
84
+
85
+    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
86
+      e.preventDefault();
87
+    }
88
+  }
89
+
90
+  swiper.emit('touchStart', e);
91
+}
0 92
\ No newline at end of file
1 93
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _setGrabCursor = _interopRequireDefault(require("./setGrabCursor"));
7
+
8
+var _unsetGrabCursor = _interopRequireDefault(require("./unsetGrabCursor"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+var _default = {
13
+  setGrabCursor: _setGrabCursor.default,
14
+  unsetGrabCursor: _unsetGrabCursor.default
15
+};
16
+exports.default = _default;
0 17
\ No newline at end of file
1 18
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = setGrabCursor;
5
+
6
+function setGrabCursor(moving) {
7
+  var swiper = this;
8
+  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
9
+  var el = swiper.el;
10
+  el.style.cursor = 'move';
11
+  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
12
+  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
13
+  el.style.cursor = moving ? 'grabbing' : 'grab';
14
+}
0 15
\ No newline at end of file
1 16
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = unsetGrabCursor;
5
+
6
+function unsetGrabCursor() {
7
+  var swiper = this;
8
+
9
+  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
10
+    return;
11
+  }
12
+
13
+  swiper.el.style.cursor = '';
14
+}
0 15
\ No newline at end of file
1 16
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _loadImage = _interopRequireDefault(require("./loadImage"));
7
+
8
+var _preloadImages = _interopRequireDefault(require("./preloadImages"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+var _default = {
13
+  loadImage: _loadImage.default,
14
+  preloadImages: _preloadImages.default
15
+};
16
+exports.default = _default;
0 17
\ No newline at end of file
1 18
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = loadImage;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
13
+  var window = (0, _ssrWindow.getWindow)();
14
+  var image;
15
+
16
+  function onReady() {
17
+    if (callback) callback();
18
+  }
19
+
20
+  var isPicture = (0, _dom.default)(imageEl).parent('picture')[0];
21
+
22
+  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
23
+    if (src) {
24
+      image = new window.Image();
25
+      image.onload = onReady;
26
+      image.onerror = onReady;
27
+
28
+      if (sizes) {
29
+        image.sizes = sizes;
30
+      }
31
+
32
+      if (srcset) {
33
+        image.srcset = srcset;
34
+      }
35
+
36
+      if (src) {
37
+        image.src = src;
38
+      }
39
+    } else {
40
+      onReady();
41
+    }
42
+  } else {
43
+    // image already loaded...
44
+    onReady();
45
+  }
46
+}
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = preloadImages;
5
+
6
+function preloadImages() {
7
+  var swiper = this;
8
+  swiper.imagesToLoad = swiper.$el.find('img');
9
+
10
+  function onReady() {
11
+    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
12
+    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
13
+
14
+    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
15
+      if (swiper.params.updateOnImagesReady) swiper.update();
16
+      swiper.emit('imagesReady');
17
+    }
18
+  }
19
+
20
+  for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
21
+    var imageEl = swiper.imagesToLoad[i];
22
+    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
23
+  }
24
+}
0 25
\ No newline at end of file
1 26
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _loopCreate = _interopRequireDefault(require("./loopCreate"));
7
+
8
+var _loopFix = _interopRequireDefault(require("./loopFix"));
9
+
10
+var _loopDestroy = _interopRequireDefault(require("./loopDestroy"));
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+var _default = {
15
+  loopCreate: _loopCreate.default,
16
+  loopFix: _loopFix.default,
17
+  loopDestroy: _loopDestroy.default
18
+};
19
+exports.default = _default;
0 20
\ No newline at end of file
1 21
new file mode 100644
... ...
@@ -0,0 +1,65 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = loopCreate;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function loopCreate() {
13
+  var swiper = this;
14
+  var document = (0, _ssrWindow.getDocument)();
15
+  var params = swiper.params,
16
+      $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
17
+
18
+  $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
19
+  var slides = $wrapperEl.children("." + params.slideClass);
20
+
21
+  if (params.loopFillGroupWithBlank) {
22
+    var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
23
+
24
+    if (blankSlidesNum !== params.slidesPerGroup) {
25
+      for (var i = 0; i < blankSlidesNum; i += 1) {
26
+        var blankNode = (0, _dom.default)(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
27
+        $wrapperEl.append(blankNode);
28
+      }
29
+
30
+      slides = $wrapperEl.children("." + params.slideClass);
31
+    }
32
+  }
33
+
34
+  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
35
+  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
36
+  swiper.loopedSlides += params.loopAdditionalSlides;
37
+
38
+  if (swiper.loopedSlides > slides.length) {
39
+    swiper.loopedSlides = slides.length;
40
+  }
41
+
42
+  var prependSlides = [];
43
+  var appendSlides = [];
44
+  slides.each(function (el, index) {
45
+    var slide = (0, _dom.default)(el);
46
+
47
+    if (index < swiper.loopedSlides) {
48
+      appendSlides.push(el);
49
+    }
50
+
51
+    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
52
+      prependSlides.push(el);
53
+    }
54
+
55
+    slide.attr('data-swiper-slide-index', index);
56
+  });
57
+
58
+  for (var _i = 0; _i < appendSlides.length; _i += 1) {
59
+    $wrapperEl.append((0, _dom.default)(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
60
+  }
61
+
62
+  for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
63
+    $wrapperEl.prepend((0, _dom.default)(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
64
+  }
65
+}
0 66
\ No newline at end of file
1 67
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = loopDestroy;
5
+
6
+function loopDestroy() {
7
+  var swiper = this;
8
+  var $wrapperEl = swiper.$wrapperEl,
9
+      params = swiper.params,
10
+      slides = swiper.slides;
11
+  $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
12
+  slides.removeAttr('data-swiper-slide-index');
13
+}
0 14
\ No newline at end of file
1 15
new file mode 100644
... ...
@@ -0,0 +1,45 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = loopFix;
5
+
6
+function loopFix() {
7
+  var swiper = this;
8
+  swiper.emit('beforeLoopFix');
9
+  var activeIndex = swiper.activeIndex,
10
+      slides = swiper.slides,
11
+      loopedSlides = swiper.loopedSlides,
12
+      allowSlidePrev = swiper.allowSlidePrev,
13
+      allowSlideNext = swiper.allowSlideNext,
14
+      snapGrid = swiper.snapGrid,
15
+      rtl = swiper.rtlTranslate;
16
+  var newIndex;
17
+  swiper.allowSlidePrev = true;
18
+  swiper.allowSlideNext = true;
19
+  var snapTranslate = -snapGrid[activeIndex];
20
+  var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
21
+
22
+  if (activeIndex < loopedSlides) {
23
+    newIndex = slides.length - loopedSlides * 3 + activeIndex;
24
+    newIndex += loopedSlides;
25
+    var slideChanged = swiper.slideTo(newIndex, 0, false, true);
26
+
27
+    if (slideChanged && diff !== 0) {
28
+      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
29
+    }
30
+  } else if (activeIndex >= slides.length - loopedSlides) {
31
+    // Fix For Positive Oversliding
32
+    newIndex = -slides.length + activeIndex + loopedSlides;
33
+    newIndex += loopedSlides;
34
+
35
+    var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
36
+
37
+    if (_slideChanged && diff !== 0) {
38
+      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
39
+    }
40
+  }
41
+
42
+  swiper.allowSlidePrev = allowSlidePrev;
43
+  swiper.allowSlideNext = allowSlideNext;
44
+  swiper.emit('loopFix');
45
+}
0 46
\ No newline at end of file
1 47
new file mode 100644
... ...
@@ -0,0 +1,67 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = addSlide;
5
+
6
+function addSlide(index, slides) {
7
+  var swiper = this;
8
+  var $wrapperEl = swiper.$wrapperEl,
9
+      params = swiper.params,
10
+      activeIndex = swiper.activeIndex;
11
+  var activeIndexBuffer = activeIndex;
12
+
13
+  if (params.loop) {
14
+    activeIndexBuffer -= swiper.loopedSlides;
15
+    swiper.loopDestroy();
16
+    swiper.slides = $wrapperEl.children("." + params.slideClass);
17
+  }
18
+
19
+  var baseLength = swiper.slides.length;
20
+
21
+  if (index <= 0) {
22
+    swiper.prependSlide(slides);
23
+    return;
24
+  }
25
+
26
+  if (index >= baseLength) {
27
+    swiper.appendSlide(slides);
28
+    return;
29
+  }
30
+
31
+  var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
32
+  var slidesBuffer = [];
33
+
34
+  for (var i = baseLength - 1; i >= index; i -= 1) {
35
+    var currentSlide = swiper.slides.eq(i);
36
+    currentSlide.remove();
37
+    slidesBuffer.unshift(currentSlide);
38
+  }
39
+
40
+  if (typeof slides === 'object' && 'length' in slides) {
41
+    for (var _i = 0; _i < slides.length; _i += 1) {
42
+      if (slides[_i]) $wrapperEl.append(slides[_i]);
43
+    }
44
+
45
+    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
46
+  } else {
47
+    $wrapperEl.append(slides);
48
+  }
49
+
50
+  for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
51
+    $wrapperEl.append(slidesBuffer[_i2]);
52
+  }
53
+
54
+  if (params.loop) {
55
+    swiper.loopCreate();
56
+  }
57
+
58
+  if (!(params.observer && swiper.support.observer)) {
59
+    swiper.update();
60
+  }
61
+
62
+  if (params.loop) {
63
+    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
64
+  } else {
65
+    swiper.slideTo(newActiveIndex, 0, false);
66
+  }
67
+}
0 68
\ No newline at end of file
1 69
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = appendSlide;
5
+
6
+function appendSlide(slides) {
7
+  var swiper = this;
8
+  var $wrapperEl = swiper.$wrapperEl,
9
+      params = swiper.params;
10
+
11
+  if (params.loop) {
12
+    swiper.loopDestroy();
13
+  }
14
+
15
+  if (typeof slides === 'object' && 'length' in slides) {
16
+    for (var i = 0; i < slides.length; i += 1) {
17
+      if (slides[i]) $wrapperEl.append(slides[i]);
18
+    }
19
+  } else {
20
+    $wrapperEl.append(slides);
21
+  }
22
+
23
+  if (params.loop) {
24
+    swiper.loopCreate();
25
+  }
26
+
27
+  if (!(params.observer && swiper.support.observer)) {
28
+    swiper.update();
29
+  }
30
+}
0 31
\ No newline at end of file
1 32
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _appendSlide = _interopRequireDefault(require("./appendSlide"));
7
+
8
+var _prependSlide = _interopRequireDefault(require("./prependSlide"));
9
+
10
+var _addSlide = _interopRequireDefault(require("./addSlide"));
11
+
12
+var _removeSlide = _interopRequireDefault(require("./removeSlide"));
13
+
14
+var _removeAllSlides = _interopRequireDefault(require("./removeAllSlides"));
15
+
16
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+var _default = {
19
+  appendSlide: _appendSlide.default,
20
+  prependSlide: _prependSlide.default,
21
+  addSlide: _addSlide.default,
22
+  removeSlide: _removeSlide.default,
23
+  removeAllSlides: _removeAllSlides.default
24
+};
25
+exports.default = _default;
0 26
\ No newline at end of file
1 27
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = prependSlide;
5
+
6
+function prependSlide(slides) {
7
+  var swiper = this;
8
+  var params = swiper.params,
9
+      $wrapperEl = swiper.$wrapperEl,
10
+      activeIndex = swiper.activeIndex;
11
+
12
+  if (params.loop) {
13
+    swiper.loopDestroy();
14
+  }
15
+
16
+  var newActiveIndex = activeIndex + 1;
17
+
18
+  if (typeof slides === 'object' && 'length' in slides) {
19
+    for (var i = 0; i < slides.length; i += 1) {
20
+      if (slides[i]) $wrapperEl.prepend(slides[i]);
21
+    }
22
+
23
+    newActiveIndex = activeIndex + slides.length;
24
+  } else {
25
+    $wrapperEl.prepend(slides);
26
+  }
27
+
28
+  if (params.loop) {
29
+    swiper.loopCreate();
30
+  }
31
+
32
+  if (!(params.observer && swiper.support.observer)) {
33
+    swiper.update();
34
+  }
35
+
36
+  swiper.slideTo(newActiveIndex, 0, false);
37
+}
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = removeAllSlides;
5
+
6
+function removeAllSlides() {
7
+  var swiper = this;
8
+  var slidesIndexes = [];
9
+
10
+  for (var i = 0; i < swiper.slides.length; i += 1) {
11
+    slidesIndexes.push(i);
12
+  }
13
+
14
+  swiper.removeSlide(slidesIndexes);
15
+}
0 16
\ No newline at end of file
1 17
new file mode 100644
... ...
@@ -0,0 +1,50 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = removeSlide;
5
+
6
+function removeSlide(slidesIndexes) {
7
+  var swiper = this;
8
+  var params = swiper.params,
9
+      $wrapperEl = swiper.$wrapperEl,
10
+      activeIndex = swiper.activeIndex;
11
+  var activeIndexBuffer = activeIndex;
12
+
13
+  if (params.loop) {
14
+    activeIndexBuffer -= swiper.loopedSlides;
15
+    swiper.loopDestroy();
16
+    swiper.slides = $wrapperEl.children("." + params.slideClass);
17
+  }
18
+
19
+  var newActiveIndex = activeIndexBuffer;
20
+  var indexToRemove;
21
+
22
+  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
23
+    for (var i = 0; i < slidesIndexes.length; i += 1) {
24
+      indexToRemove = slidesIndexes[i];
25
+      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
26
+      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
27
+    }
28
+
29
+    newActiveIndex = Math.max(newActiveIndex, 0);
30
+  } else {
31
+    indexToRemove = slidesIndexes;
32
+    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
33
+    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
34
+    newActiveIndex = Math.max(newActiveIndex, 0);
35
+  }
36
+
37
+  if (params.loop) {
38
+    swiper.loopCreate();
39
+  }
40
+
41
+  if (!(params.observer && swiper.support.observer)) {
42
+    swiper.update();
43
+  }
44
+
45
+  if (params.loop) {
46
+    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
47
+  } else {
48
+    swiper.slideTo(newActiveIndex, 0, false);
49
+  }
50
+}
0 51
\ No newline at end of file
1 52
new file mode 100644
... ...
@@ -0,0 +1,44 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _utils = require("../../utils/utils");
7
+
8
+var _default = {
9
+  useParams: function useParams(instanceParams) {
10
+    var instance = this;
11
+    if (!instance.modules) return;
12
+    Object.keys(instance.modules).forEach(function (moduleName) {
13
+      var module = instance.modules[moduleName]; // Extend params
14
+
15
+      if (module.params) {
16
+        (0, _utils.extend)(instanceParams, module.params);
17
+      }
18
+    });
19
+  },
20
+  useModules: function useModules(modulesParams) {
21
+    if (modulesParams === void 0) {
22
+      modulesParams = {};
23
+    }
24
+
25
+    var instance = this;
26
+    if (!instance.modules) return;
27
+    Object.keys(instance.modules).forEach(function (moduleName) {
28
+      var module = instance.modules[moduleName];
29
+      var moduleParams = modulesParams[moduleName] || {}; // Add event listeners
30
+
31
+      if (module.on && instance.on) {
32
+        Object.keys(module.on).forEach(function (moduleEventName) {
33
+          instance.on(moduleEventName, module.on[moduleEventName]);
34
+        });
35
+      } // Module create callback
36
+
37
+
38
+      if (module.create) {
39
+        module.create.bind(instance)(moduleParams);
40
+      }
41
+    });
42
+  }
43
+};
44
+exports.default = _default;
0 45
\ No newline at end of file
1 46
new file mode 100644
... ...
@@ -0,0 +1,31 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _slideTo = _interopRequireDefault(require("./slideTo"));
7
+
8
+var _slideToLoop = _interopRequireDefault(require("./slideToLoop"));
9
+
10
+var _slideNext = _interopRequireDefault(require("./slideNext"));
11
+
12
+var _slidePrev = _interopRequireDefault(require("./slidePrev"));
13
+
14
+var _slideReset = _interopRequireDefault(require("./slideReset"));
15
+
16
+var _slideToClosest = _interopRequireDefault(require("./slideToClosest"));
17
+
18
+var _slideToClickedSlide = _interopRequireDefault(require("./slideToClickedSlide"));
19
+
20
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+var _default = {
23
+  slideTo: _slideTo.default,
24
+  slideToLoop: _slideToLoop.default,
25
+  slideNext: _slideNext.default,
26
+  slidePrev: _slidePrev.default,
27
+  slideReset: _slideReset.default,
28
+  slideToClosest: _slideToClosest.default,
29
+  slideToClickedSlide: _slideToClickedSlide.default
30
+};
31
+exports.default = _default;
0 32
\ No newline at end of file
1 33
new file mode 100644
... ...
@@ -0,0 +1,29 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slideNext;
5
+
6
+/* eslint no-unused-vars: "off" */
7
+function slideNext(speed, runCallbacks, internal) {
8
+  if (speed === void 0) {
9
+    speed = this.params.speed;
10
+  }
11
+
12
+  if (runCallbacks === void 0) {
13
+    runCallbacks = true;
14
+  }
15
+
16
+  var swiper = this;
17
+  var params = swiper.params,
18
+      animating = swiper.animating;
19
+  var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
20
+
21
+  if (params.loop) {
22
+    if (animating && params.loopPreventsSlide) return false;
23
+    swiper.loopFix(); // eslint-disable-next-line
24
+
25
+    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
26
+  }
27
+
28
+  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
29
+}
0 30
\ No newline at end of file
1 31
new file mode 100644
... ...
@@ -0,0 +1,58 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slidePrev;
5
+
6
+/* eslint no-unused-vars: "off" */
7
+function slidePrev(speed, runCallbacks, internal) {
8
+  if (speed === void 0) {
9
+    speed = this.params.speed;
10
+  }
11
+
12
+  if (runCallbacks === void 0) {
13
+    runCallbacks = true;
14
+  }
15
+
16
+  var swiper = this;
17
+  var params = swiper.params,
18
+      animating = swiper.animating,
19
+      snapGrid = swiper.snapGrid,
20
+      slidesGrid = swiper.slidesGrid,
21
+      rtlTranslate = swiper.rtlTranslate;
22
+
23
+  if (params.loop) {
24
+    if (animating && params.loopPreventsSlide) return false;
25
+    swiper.loopFix(); // eslint-disable-next-line
26
+
27
+    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
28
+  }
29
+
30
+  var translate = rtlTranslate ? swiper.translate : -swiper.translate;
31
+
32
+  function normalize(val) {
33
+    if (val < 0) return -Math.floor(Math.abs(val));
34
+    return Math.floor(val);
35
+  }
36
+
37
+  var normalizedTranslate = normalize(translate);
38
+  var normalizedSnapGrid = snapGrid.map(function (val) {
39
+    return normalize(val);
40
+  });
41
+  var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
42
+  var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
43
+
44
+  if (typeof prevSnap === 'undefined' && params.cssMode) {
45
+    snapGrid.forEach(function (snap) {
46
+      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
47
+    });
48
+  }
49
+
50
+  var prevIndex;
51
+
52
+  if (typeof prevSnap !== 'undefined') {
53
+    prevIndex = slidesGrid.indexOf(prevSnap);
54
+    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
55
+  }
56
+
57
+  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
58
+}
0 59
\ No newline at end of file
1 60
new file mode 100644
... ...
@@ -0,0 +1,18 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slideReset;
5
+
6
+/* eslint no-unused-vars: "off" */
7
+function slideReset(speed, runCallbacks, internal) {
8
+  if (speed === void 0) {
9
+    speed = this.params.speed;
10
+  }
11
+
12
+  if (runCallbacks === void 0) {
13
+    runCallbacks = true;
14
+  }
15
+
16
+  var swiper = this;
17
+  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
18
+}
0 19
\ No newline at end of file
1 20
new file mode 100644
... ...
@@ -0,0 +1,150 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slideTo;
5
+
6
+function slideTo(index, speed, runCallbacks, internal) {
7
+  if (index === void 0) {
8
+    index = 0;
9
+  }
10
+
11
+  if (speed === void 0) {
12
+    speed = this.params.speed;
13
+  }
14
+
15
+  if (runCallbacks === void 0) {
16
+    runCallbacks = true;
17
+  }
18
+
19
+  var swiper = this;
20
+  var slideIndex = index;
21
+  if (slideIndex < 0) slideIndex = 0;
22
+  var params = swiper.params,
23
+      snapGrid = swiper.snapGrid,
24
+      slidesGrid = swiper.slidesGrid,
25
+      previousIndex = swiper.previousIndex,
26
+      activeIndex = swiper.activeIndex,
27
+      rtl = swiper.rtlTranslate,
28
+      wrapperEl = swiper.wrapperEl;
29
+
30
+  if (swiper.animating && params.preventInteractionOnTransition) {
31
+    return false;
32
+  }
33
+
34
+  var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
35
+  var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
36
+  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
37
+
38
+  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
39
+    swiper.emit('beforeSlideChangeStart');
40
+  }
41
+
42
+  var translate = -snapGrid[snapIndex]; // Update progress
43
+
44
+  swiper.updateProgress(translate); // Normalize slideIndex
45
+
46
+  if (params.normalizeSlideIndex) {
47
+    for (var i = 0; i < slidesGrid.length; i += 1) {
48
+      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
49
+        slideIndex = i;
50
+      }
51
+    }
52
+  } // Directions locks
53
+
54
+
55
+  if (swiper.initialized && slideIndex !== activeIndex) {
56
+    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
57
+      return false;
58
+    }
59
+
60
+    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
61
+      if ((activeIndex || 0) !== slideIndex) return false;
62
+    }
63
+  }
64
+
65
+  var direction;
66
+  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
67
+
68
+  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
69
+    swiper.updateActiveIndex(slideIndex); // Update Height
70
+
71
+    if (params.autoHeight) {
72
+      swiper.updateAutoHeight();
73
+    }
74
+
75
+    swiper.updateSlidesClasses();
76
+
77
+    if (params.effect !== 'slide') {
78
+      swiper.setTranslate(translate);
79
+    }
80
+
81
+    if (direction !== 'reset') {
82
+      swiper.transitionStart(runCallbacks, direction);
83
+      swiper.transitionEnd(runCallbacks, direction);
84
+    }
85
+
86
+    return false;
87
+  }
88
+
89
+  if (params.cssMode) {
90
+    var isH = swiper.isHorizontal();
91
+    var t = -translate;
92
+
93
+    if (rtl) {
94
+      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
95
+    }
96
+
97
+    if (speed === 0) {
98
+      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
99
+    } else {
100
+      // eslint-disable-next-line
101
+      if (wrapperEl.scrollTo) {
102
+        var _wrapperEl$scrollTo;
103
+
104
+        wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
105
+      } else {
106
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
107
+      }
108
+    }
109
+
110
+    return true;
111
+  }
112
+
113
+  if (speed === 0) {
114
+    swiper.setTransition(0);
115
+    swiper.setTranslate(translate);
116
+    swiper.updateActiveIndex(slideIndex);
117
+    swiper.updateSlidesClasses();
118
+    swiper.emit('beforeTransitionStart', speed, internal);
119
+    swiper.transitionStart(runCallbacks, direction);
120
+    swiper.transitionEnd(runCallbacks, direction);
121
+  } else {
122
+    swiper.setTransition(speed);
123
+    swiper.setTranslate(translate);
124
+    swiper.updateActiveIndex(slideIndex);
125
+    swiper.updateSlidesClasses();
126
+    swiper.emit('beforeTransitionStart', speed, internal);
127
+    swiper.transitionStart(runCallbacks, direction);
128
+
129
+    if (!swiper.animating) {
130
+      swiper.animating = true;
131
+
132
+      if (!swiper.onSlideToWrapperTransitionEnd) {
133
+        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
134
+          if (!swiper || swiper.destroyed) return;
135
+          if (e.target !== this) return;
136
+          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
137
+          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
138
+          swiper.onSlideToWrapperTransitionEnd = null;
139
+          delete swiper.onSlideToWrapperTransitionEnd;
140
+          swiper.transitionEnd(runCallbacks, direction);
141
+        };
142
+      }
143
+
144
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
145
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
146
+    }
147
+  }
148
+
149
+  return true;
150
+}
0 151
\ No newline at end of file
1 152
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slideToClickedSlide;
5
+
6
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
7
+
8
+var _utils = require("../../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function slideToClickedSlide() {
13
+  var swiper = this;
14
+  var params = swiper.params,
15
+      $wrapperEl = swiper.$wrapperEl;
16
+  var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
17
+  var slideToIndex = swiper.clickedIndex;
18
+  var realIndex;
19
+
20
+  if (params.loop) {
21
+    if (swiper.animating) return;
22
+    realIndex = parseInt((0, _dom.default)(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
23
+
24
+    if (params.centeredSlides) {
25
+      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
26
+        swiper.loopFix();
27
+        slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
28
+        (0, _utils.nextTick)(function () {
29
+          swiper.slideTo(slideToIndex);
30
+        });
31
+      } else {
32
+        swiper.slideTo(slideToIndex);
33
+      }
34
+    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
35
+      swiper.loopFix();
36
+      slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
37
+      (0, _utils.nextTick)(function () {
38
+        swiper.slideTo(slideToIndex);
39
+      });
40
+    } else {
41
+      swiper.slideTo(slideToIndex);
42
+    }
43
+  } else {
44
+    swiper.slideTo(slideToIndex);
45
+  }
46
+}
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,49 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slideToClosest;
5
+
6
+/* eslint no-unused-vars: "off" */
7
+function slideToClosest(speed, runCallbacks, internal, threshold) {
8
+  if (speed === void 0) {
9
+    speed = this.params.speed;
10
+  }
11
+
12
+  if (runCallbacks === void 0) {
13
+    runCallbacks = true;
14
+  }
15
+
16
+  if (threshold === void 0) {
17
+    threshold = 0.5;
18
+  }
19
+
20
+  var swiper = this;
21
+  var index = swiper.activeIndex;
22
+  var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
23
+  var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
24
+  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
25
+
26
+  if (translate >= swiper.snapGrid[snapIndex]) {
27
+    // The current translate is on or after the current snap index, so the choice
28
+    // is between the current index and the one after it.
29
+    var currentSnap = swiper.snapGrid[snapIndex];
30
+    var nextSnap = swiper.snapGrid[snapIndex + 1];
31
+
32
+    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
33
+      index += swiper.params.slidesPerGroup;
34
+    }
35
+  } else {
36
+    // The current translate is before the current snap index, so the choice
37
+    // is between the current index and the one before it.
38
+    var prevSnap = swiper.snapGrid[snapIndex - 1];
39
+    var _currentSnap = swiper.snapGrid[snapIndex];
40
+
41
+    if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
42
+      index -= swiper.params.slidesPerGroup;
43
+    }
44
+  }
45
+
46
+  index = Math.max(index, 0);
47
+  index = Math.min(index, swiper.slidesGrid.length - 1);
48
+  return swiper.slideTo(index, speed, runCallbacks, internal);
49
+}
0 50
\ No newline at end of file
1 51
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = slideToLoop;
5
+
6
+function slideToLoop(index, speed, runCallbacks, internal) {
7
+  if (index === void 0) {
8
+    index = 0;
9
+  }
10
+
11
+  if (speed === void 0) {
12
+    speed = this.params.speed;
13
+  }
14
+
15
+  if (runCallbacks === void 0) {
16
+    runCallbacks = true;
17
+  }
18
+
19
+  var swiper = this;
20
+  var newIndex = index;
21
+
22
+  if (swiper.params.loop) {
23
+    newIndex += swiper.loopedSlides;
24
+  }
25
+
26
+  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
27
+}
0 28
\ No newline at end of file
1 29
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _setTransition = _interopRequireDefault(require("./setTransition"));
7
+
8
+var _transitionStart = _interopRequireDefault(require("./transitionStart"));
9
+
10
+var _transitionEnd = _interopRequireDefault(require("./transitionEnd"));
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+var _default = {
15
+  setTransition: _setTransition.default,
16
+  transitionStart: _transitionStart.default,
17
+  transitionEnd: _transitionEnd.default
18
+};
19
+exports.default = _default;
0 20
\ No newline at end of file
1 21
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = setTransition;
5
+
6
+function setTransition(duration, byController) {
7
+  var swiper = this;
8
+
9
+  if (!swiper.params.cssMode) {
10
+    swiper.$wrapperEl.transition(duration);
11
+  }
12
+
13
+  swiper.emit('setTransition', duration, byController);
14
+}
0 15
\ No newline at end of file
1 16
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = transitionEnd;
5
+
6
+function transitionEnd(runCallbacks, direction) {
7
+  if (runCallbacks === void 0) {
8
+    runCallbacks = true;
9
+  }
10
+
11
+  var swiper = this;
12
+  var activeIndex = swiper.activeIndex,
13
+      previousIndex = swiper.previousIndex,
14
+      params = swiper.params;
15
+  swiper.animating = false;
16
+  if (params.cssMode) return;
17
+  swiper.setTransition(0);
18
+  var dir = direction;
19
+
20
+  if (!dir) {
21
+    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
22
+  }
23
+
24
+  swiper.emit('transitionEnd');
25
+
26
+  if (runCallbacks && activeIndex !== previousIndex) {
27
+    if (dir === 'reset') {
28
+      swiper.emit('slideResetTransitionEnd');
29
+      return;
30
+    }
31
+
32
+    swiper.emit('slideChangeTransitionEnd');
33
+
34
+    if (dir === 'next') {
35
+      swiper.emit('slideNextTransitionEnd');
36
+    } else {
37
+      swiper.emit('slidePrevTransitionEnd');
38
+    }
39
+  }
40
+}
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,43 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = transitionStart;
5
+
6
+function transitionStart(runCallbacks, direction) {
7
+  if (runCallbacks === void 0) {
8
+    runCallbacks = true;
9
+  }
10
+
11
+  var swiper = this;
12
+  var activeIndex = swiper.activeIndex,
13
+      params = swiper.params,
14
+      previousIndex = swiper.previousIndex;
15
+  if (params.cssMode) return;
16
+
17
+  if (params.autoHeight) {
18
+    swiper.updateAutoHeight();
19
+  }
20
+
21
+  var dir = direction;
22
+
23
+  if (!dir) {
24
+    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
25
+  }
26
+
27
+  swiper.emit('transitionStart');
28
+
29
+  if (runCallbacks && activeIndex !== previousIndex) {
30
+    if (dir === 'reset') {
31
+      swiper.emit('slideResetTransitionStart');
32
+      return;
33
+    }
34
+
35
+    swiper.emit('slideChangeTransitionStart');
36
+
37
+    if (dir === 'next') {
38
+      swiper.emit('slideNextTransitionStart');
39
+    } else {
40
+      swiper.emit('slidePrevTransitionStart');
41
+    }
42
+  }
43
+}
0 44
\ No newline at end of file
1 45
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = getSwiperTranslate;
5
+
6
+var _utils = require("../../../utils/utils");
7
+
8
+function getSwiperTranslate(axis) {
9
+  if (axis === void 0) {
10
+    axis = this.isHorizontal() ? 'x' : 'y';
11
+  }
12
+
13
+  var swiper = this;
14
+  var params = swiper.params,
15
+      rtl = swiper.rtlTranslate,
16
+      translate = swiper.translate,
17
+      $wrapperEl = swiper.$wrapperEl;
18
+
19
+  if (params.virtualTranslate) {
20
+    return rtl ? -translate : translate;
21
+  }
22
+
23
+  if (params.cssMode) {
24
+    return translate;
25
+  }
26
+
27
+  var currentTranslate = (0, _utils.getTranslate)($wrapperEl[0], axis);
28
+  if (rtl) currentTranslate = -currentTranslate;
29
+  return currentTranslate || 0;
30
+}
0 31
\ No newline at end of file
1 32
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _getTranslate = _interopRequireDefault(require("./getTranslate"));
7
+
8
+var _setTranslate = _interopRequireDefault(require("./setTranslate"));
9
+
10
+var _minTranslate = _interopRequireDefault(require("./minTranslate"));
11
+
12
+var _maxTranslate = _interopRequireDefault(require("./maxTranslate"));
13
+
14
+var _translateTo = _interopRequireDefault(require("./translateTo"));
15
+
16
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+var _default = {
19
+  getTranslate: _getTranslate.default,
20
+  setTranslate: _setTranslate.default,
21
+  minTranslate: _minTranslate.default,
22
+  maxTranslate: _maxTranslate.default,
23
+  translateTo: _translateTo.default
24
+};
25
+exports.default = _default;
0 26
\ No newline at end of file
1 27
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = maxTranslate;
5
+
6
+function maxTranslate() {
7
+  return -this.snapGrid[this.snapGrid.length - 1];
8
+}
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = minTranslate;
5
+
6
+function minTranslate() {
7
+  return -this.snapGrid[0];
8
+}
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,51 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = setTranslate;
5
+
6
+function setTranslate(translate, byController) {
7
+  var swiper = this;
8
+  var rtl = swiper.rtlTranslate,
9
+      params = swiper.params,
10
+      $wrapperEl = swiper.$wrapperEl,
11
+      wrapperEl = swiper.wrapperEl,
12
+      progress = swiper.progress;
13
+  var x = 0;
14
+  var y = 0;
15
+  var z = 0;
16
+
17
+  if (swiper.isHorizontal()) {
18
+    x = rtl ? -translate : translate;
19
+  } else {
20
+    y = translate;
21
+  }
22
+
23
+  if (params.roundLengths) {
24
+    x = Math.floor(x);
25
+    y = Math.floor(y);
26
+  }
27
+
28
+  if (params.cssMode) {
29
+    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
30
+  } else if (!params.virtualTranslate) {
31
+    $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
32
+  }
33
+
34
+  swiper.previousTranslate = swiper.translate;
35
+  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
36
+
37
+  var newProgress;
38
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
39
+
40
+  if (translatesDiff === 0) {
41
+    newProgress = 0;
42
+  } else {
43
+    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
44
+  }
45
+
46
+  if (newProgress !== progress) {
47
+    swiper.updateProgress(translate);
48
+  }
49
+
50
+  swiper.emit('setTranslate', swiper.translate, byController);
51
+}
0 52
\ No newline at end of file
1 53
new file mode 100644
... ...
@@ -0,0 +1,98 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = translateTo;
5
+
6
+function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
7
+  if (translate === void 0) {
8
+    translate = 0;
9
+  }
10
+
11
+  if (speed === void 0) {
12
+    speed = this.params.speed;
13
+  }
14
+
15
+  if (runCallbacks === void 0) {
16
+    runCallbacks = true;
17
+  }
18
+
19
+  if (translateBounds === void 0) {
20
+    translateBounds = true;
21
+  }
22
+
23
+  var swiper = this;
24
+  var params = swiper.params,
25
+      wrapperEl = swiper.wrapperEl;
26
+
27
+  if (swiper.animating && params.preventInteractionOnTransition) {
28
+    return false;
29
+  }
30
+
31
+  var minTranslate = swiper.minTranslate();
32
+  var maxTranslate = swiper.maxTranslate();
33
+  var newTranslate;
34
+  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
35
+
36
+  swiper.updateProgress(newTranslate);
37
+
38
+  if (params.cssMode) {
39
+    var isH = swiper.isHorizontal();
40
+
41
+    if (speed === 0) {
42
+      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
43
+    } else {
44
+      // eslint-disable-next-line
45
+      if (wrapperEl.scrollTo) {
46
+        var _wrapperEl$scrollTo;
47
+
48
+        wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
49
+      } else {
50
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
51
+      }
52
+    }
53
+
54
+    return true;
55
+  }
56
+
57
+  if (speed === 0) {
58
+    swiper.setTransition(0);
59
+    swiper.setTranslate(newTranslate);
60
+
61
+    if (runCallbacks) {
62
+      swiper.emit('beforeTransitionStart', speed, internal);
63
+      swiper.emit('transitionEnd');
64
+    }
65
+  } else {
66
+    swiper.setTransition(speed);
67
+    swiper.setTranslate(newTranslate);
68
+
69
+    if (runCallbacks) {
70
+      swiper.emit('beforeTransitionStart', speed, internal);
71
+      swiper.emit('transitionStart');
72
+    }
73
+
74
+    if (!swiper.animating) {
75
+      swiper.animating = true;
76
+
77
+      if (!swiper.onTranslateToWrapperTransitionEnd) {
78
+        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
79
+          if (!swiper || swiper.destroyed) return;
80
+          if (e.target !== this) return;
81
+          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
82
+          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
83
+          swiper.onTranslateToWrapperTransitionEnd = null;
84
+          delete swiper.onTranslateToWrapperTransitionEnd;
85
+
86
+          if (runCallbacks) {
87
+            swiper.emit('transitionEnd');
88
+          }
89
+        };
90
+      }
91
+
92
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
93
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
94
+    }
95
+  }
96
+
97
+  return true;
98
+}
0 99
\ No newline at end of file
1 100
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _updateSize = _interopRequireDefault(require("./updateSize"));
7
+
8
+var _updateSlides = _interopRequireDefault(require("./updateSlides"));
9
+
10
+var _updateAutoHeight = _interopRequireDefault(require("./updateAutoHeight"));
11
+
12
+var _updateSlidesOffset = _interopRequireDefault(require("./updateSlidesOffset"));
13
+
14
+var _updateSlidesProgress = _interopRequireDefault(require("./updateSlidesProgress"));
15
+
16
+var _updateProgress = _interopRequireDefault(require("./updateProgress"));
17
+
18
+var _updateSlidesClasses = _interopRequireDefault(require("./updateSlidesClasses"));
19
+
20
+var _updateActiveIndex = _interopRequireDefault(require("./updateActiveIndex"));
21
+
22
+var _updateClickedSlide = _interopRequireDefault(require("./updateClickedSlide"));
23
+
24
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+var _default = {
27
+  updateSize: _updateSize.default,
28
+  updateSlides: _updateSlides.default,
29
+  updateAutoHeight: _updateAutoHeight.default,
30
+  updateSlidesOffset: _updateSlidesOffset.default,
31
+  updateSlidesProgress: _updateSlidesProgress.default,
32
+  updateProgress: _updateProgress.default,
33
+  updateSlidesClasses: _updateSlidesClasses.default,
34
+  updateActiveIndex: _updateActiveIndex.default,
35
+  updateClickedSlide: _updateClickedSlide.default
36
+};
37
+exports.default = _default;
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,75 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateActiveIndex;
5
+
6
+var _utils = require("../../../utils/utils");
7
+
8
+function updateActiveIndex(newActiveIndex) {
9
+  var swiper = this;
10
+  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
11
+  var slidesGrid = swiper.slidesGrid,
12
+      snapGrid = swiper.snapGrid,
13
+      params = swiper.params,
14
+      previousIndex = swiper.activeIndex,
15
+      previousRealIndex = swiper.realIndex,
16
+      previousSnapIndex = swiper.snapIndex;
17
+  var activeIndex = newActiveIndex;
18
+  var snapIndex;
19
+
20
+  if (typeof activeIndex === 'undefined') {
21
+    for (var i = 0; i < slidesGrid.length; i += 1) {
22
+      if (typeof slidesGrid[i + 1] !== 'undefined') {
23
+        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
24
+          activeIndex = i;
25
+        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
26
+          activeIndex = i + 1;
27
+        }
28
+      } else if (translate >= slidesGrid[i]) {
29
+        activeIndex = i;
30
+      }
31
+    } // Normalize slideIndex
32
+
33
+
34
+    if (params.normalizeSlideIndex) {
35
+      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
36
+    }
37
+  }
38
+
39
+  if (snapGrid.indexOf(translate) >= 0) {
40
+    snapIndex = snapGrid.indexOf(translate);
41
+  } else {
42
+    var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
43
+    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
44
+  }
45
+
46
+  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
47
+
48
+  if (activeIndex === previousIndex) {
49
+    if (snapIndex !== previousSnapIndex) {
50
+      swiper.snapIndex = snapIndex;
51
+      swiper.emit('snapIndexChange');
52
+    }
53
+
54
+    return;
55
+  } // Get real index
56
+
57
+
58
+  var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
59
+  (0, _utils.extend)(swiper, {
60
+    snapIndex: snapIndex,
61
+    realIndex: realIndex,
62
+    previousIndex: previousIndex,
63
+    activeIndex: activeIndex
64
+  });
65
+  swiper.emit('activeIndexChange');
66
+  swiper.emit('snapIndexChange');
67
+
68
+  if (previousRealIndex !== realIndex) {
69
+    swiper.emit('realIndexChange');
70
+  }
71
+
72
+  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
73
+    swiper.emit('slideChange');
74
+  }
75
+}
0 76
\ No newline at end of file
1 77
new file mode 100644
... ...
@@ -0,0 +1,45 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateAutoHeight;
5
+
6
+function updateAutoHeight(speed) {
7
+  var swiper = this;
8
+  var activeSlides = [];
9
+  var newHeight = 0;
10
+  var i;
11
+
12
+  if (typeof speed === 'number') {
13
+    swiper.setTransition(speed);
14
+  } else if (speed === true) {
15
+    swiper.setTransition(swiper.params.speed);
16
+  } // Find slides currently in view
17
+
18
+
19
+  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
20
+    if (swiper.params.centeredSlides) {
21
+      swiper.visibleSlides.each(function (slide) {
22
+        activeSlides.push(slide);
23
+      });
24
+    } else {
25
+      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
26
+        var index = swiper.activeIndex + i;
27
+        if (index > swiper.slides.length) break;
28
+        activeSlides.push(swiper.slides.eq(index)[0]);
29
+      }
30
+    }
31
+  } else {
32
+    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
33
+  } // Find new height from highest slide in view
34
+
35
+
36
+  for (i = 0; i < activeSlides.length; i += 1) {
37
+    if (typeof activeSlides[i] !== 'undefined') {
38
+      var height = activeSlides[i].offsetHeight;
39
+      newHeight = height > newHeight ? height : newHeight;
40
+    }
41
+  } // Update Height
42
+
43
+
44
+  if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
45
+}
0 46
\ No newline at end of file
1 47
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateClickedSlide;
5
+
6
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
7
+
8
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+
10
+function updateClickedSlide(e) {
11
+  var swiper = this;
12
+  var params = swiper.params;
13
+  var slide = (0, _dom.default)(e.target).closest("." + params.slideClass)[0];
14
+  var slideFound = false;
15
+
16
+  if (slide) {
17
+    for (var i = 0; i < swiper.slides.length; i += 1) {
18
+      if (swiper.slides[i] === slide) slideFound = true;
19
+    }
20
+  }
21
+
22
+  if (slide && slideFound) {
23
+    swiper.clickedSlide = slide;
24
+
25
+    if (swiper.virtual && swiper.params.virtual.enabled) {
26
+      swiper.clickedIndex = parseInt((0, _dom.default)(slide).attr('data-swiper-slide-index'), 10);
27
+    } else {
28
+      swiper.clickedIndex = (0, _dom.default)(slide).index();
29
+    }
30
+  } else {
31
+    swiper.clickedSlide = undefined;
32
+    swiper.clickedIndex = undefined;
33
+    return;
34
+  }
35
+
36
+  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
37
+    swiper.slideToClickedSlide();
38
+  }
39
+}
0 40
\ No newline at end of file
1 41
new file mode 100644
... ...
@@ -0,0 +1,55 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateProgress;
5
+
6
+var _utils = require("../../../utils/utils");
7
+
8
+function updateProgress(translate) {
9
+  var swiper = this;
10
+
11
+  if (typeof translate === 'undefined') {
12
+    var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
13
+
14
+    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
15
+  }
16
+
17
+  var params = swiper.params;
18
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
19
+  var progress = swiper.progress,
20
+      isBeginning = swiper.isBeginning,
21
+      isEnd = swiper.isEnd;
22
+  var wasBeginning = isBeginning;
23
+  var wasEnd = isEnd;
24
+
25
+  if (translatesDiff === 0) {
26
+    progress = 0;
27
+    isBeginning = true;
28
+    isEnd = true;
29
+  } else {
30
+    progress = (translate - swiper.minTranslate()) / translatesDiff;
31
+    isBeginning = progress <= 0;
32
+    isEnd = progress >= 1;
33
+  }
34
+
35
+  (0, _utils.extend)(swiper, {
36
+    progress: progress,
37
+    isBeginning: isBeginning,
38
+    isEnd: isEnd
39
+  });
40
+  if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
41
+
42
+  if (isBeginning && !wasBeginning) {
43
+    swiper.emit('reachBeginning toEdge');
44
+  }
45
+
46
+  if (isEnd && !wasEnd) {
47
+    swiper.emit('reachEnd toEdge');
48
+  }
49
+
50
+  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
51
+    swiper.emit('fromEdge');
52
+  }
53
+
54
+  swiper.emit('progress', progress);
55
+}
0 56
\ No newline at end of file
1 57
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateSize;
5
+
6
+var _utils = require("../../../utils/utils");
7
+
8
+function updateSize() {
9
+  var swiper = this;
10
+  var width;
11
+  var height;
12
+  var $el = swiper.$el;
13
+
14
+  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
15
+    width = swiper.params.width;
16
+  } else {
17
+    width = $el[0].clientWidth;
18
+  }
19
+
20
+  if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {
21
+    height = swiper.params.height;
22
+  } else {
23
+    height = $el[0].clientHeight;
24
+  }
25
+
26
+  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
27
+    return;
28
+  } // Subtract paddings
29
+
30
+
31
+  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
32
+  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
33
+  if (Number.isNaN(width)) width = 0;
34
+  if (Number.isNaN(height)) height = 0;
35
+  (0, _utils.extend)(swiper, {
36
+    width: width,
37
+    height: height,
38
+    size: swiper.isHorizontal() ? width : height
39
+  });
40
+}
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,367 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateSlides;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _utils = require("../../../utils/utils");
9
+
10
+function updateSlides() {
11
+  var swiper = this;
12
+  var window = (0, _ssrWindow.getWindow)();
13
+  var params = swiper.params;
14
+  var $wrapperEl = swiper.$wrapperEl,
15
+      swiperSize = swiper.size,
16
+      rtl = swiper.rtlTranslate,
17
+      wrongRTL = swiper.wrongRTL;
18
+  var isVirtual = swiper.virtual && params.virtual.enabled;
19
+  var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
20
+  var slides = $wrapperEl.children("." + swiper.params.slideClass);
21
+  var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
22
+  var snapGrid = [];
23
+  var slidesGrid = [];
24
+  var slidesSizesGrid = [];
25
+
26
+  function slidesForMargin(slideEl, slideIndex) {
27
+    if (!params.cssMode) return true;
28
+
29
+    if (slideIndex === slides.length - 1) {
30
+      return false;
31
+    }
32
+
33
+    return true;
34
+  }
35
+
36
+  var offsetBefore = params.slidesOffsetBefore;
37
+
38
+  if (typeof offsetBefore === 'function') {
39
+    offsetBefore = params.slidesOffsetBefore.call(swiper);
40
+  }
41
+
42
+  var offsetAfter = params.slidesOffsetAfter;
43
+
44
+  if (typeof offsetAfter === 'function') {
45
+    offsetAfter = params.slidesOffsetAfter.call(swiper);
46
+  }
47
+
48
+  var previousSnapGridLength = swiper.snapGrid.length;
49
+  var previousSlidesGridLength = swiper.snapGrid.length;
50
+  var spaceBetween = params.spaceBetween;
51
+  var slidePosition = -offsetBefore;
52
+  var prevSlideSize = 0;
53
+  var index = 0;
54
+
55
+  if (typeof swiperSize === 'undefined') {
56
+    return;
57
+  }
58
+
59
+  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
60
+    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
61
+  }
62
+
63
+  swiper.virtualSize = -spaceBetween; // reset margins
64
+
65
+  if (rtl) slides.css({
66
+    marginLeft: '',
67
+    marginTop: ''
68
+  });else slides.css({
69
+    marginRight: '',
70
+    marginBottom: ''
71
+  });
72
+  var slidesNumberEvenToRows;
73
+
74
+  if (params.slidesPerColumn > 1) {
75
+    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
76
+      slidesNumberEvenToRows = slidesLength;
77
+    } else {
78
+      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
79
+    }
80
+
81
+    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
82
+      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
83
+    }
84
+  } // Calc slides
85
+
86
+
87
+  var slideSize;
88
+  var slidesPerColumn = params.slidesPerColumn;
89
+  var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
90
+  var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
91
+
92
+  for (var i = 0; i < slidesLength; i += 1) {
93
+    slideSize = 0;
94
+    var slide = slides.eq(i);
95
+
96
+    if (params.slidesPerColumn > 1) {
97
+      // Set slides order
98
+      var newSlideOrderIndex = void 0;
99
+      var column = void 0;
100
+      var row = void 0;
101
+
102
+      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
103
+        var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
104
+        var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
105
+        var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
106
+        row = Math.floor(slideIndexInGroup / columnsInGroup);
107
+        column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
108
+        newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
109
+        slide.css({
110
+          '-webkit-box-ordinal-group': newSlideOrderIndex,
111
+          '-moz-box-ordinal-group': newSlideOrderIndex,
112
+          '-ms-flex-order': newSlideOrderIndex,
113
+          '-webkit-order': newSlideOrderIndex,
114
+          order: newSlideOrderIndex
115
+        });
116
+      } else if (params.slidesPerColumnFill === 'column') {
117
+        column = Math.floor(i / slidesPerColumn);
118
+        row = i - column * slidesPerColumn;
119
+
120
+        if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
121
+          row += 1;
122
+
123
+          if (row >= slidesPerColumn) {
124
+            row = 0;
125
+            column += 1;
126
+          }
127
+        }
128
+      } else {
129
+        row = Math.floor(i / slidesPerRow);
130
+        column = i - row * slidesPerRow;
131
+      }
132
+
133
+      slide.css("margin-" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
134
+    }
135
+
136
+    if (slide.css('display') === 'none') continue; // eslint-disable-line
137
+
138
+    if (params.slidesPerView === 'auto') {
139
+      var slideStyles = window.getComputedStyle(slide[0], null);
140
+      var currentTransform = slide[0].style.transform;
141
+      var currentWebKitTransform = slide[0].style.webkitTransform;
142
+
143
+      if (currentTransform) {
144
+        slide[0].style.transform = 'none';
145
+      }
146
+
147
+      if (currentWebKitTransform) {
148
+        slide[0].style.webkitTransform = 'none';
149
+      }
150
+
151
+      if (params.roundLengths) {
152
+        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
153
+      } else {
154
+        // eslint-disable-next-line
155
+        if (swiper.isHorizontal()) {
156
+          var width = parseFloat(slideStyles.getPropertyValue('width') || 0);
157
+          var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);
158
+          var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);
159
+          var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);
160
+          var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);
161
+          var boxSizing = slideStyles.getPropertyValue('box-sizing');
162
+
163
+          if (boxSizing && boxSizing === 'border-box') {
164
+            slideSize = width + marginLeft + marginRight;
165
+          } else {
166
+            var _slide$ = slide[0],
167
+                clientWidth = _slide$.clientWidth,
168
+                offsetWidth = _slide$.offsetWidth;
169
+            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
170
+          }
171
+        } else {
172
+          var height = parseFloat(slideStyles.getPropertyValue('height') || 0);
173
+          var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);
174
+          var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);
175
+          var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);
176
+          var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);
177
+
178
+          var _boxSizing = slideStyles.getPropertyValue('box-sizing');
179
+
180
+          if (_boxSizing && _boxSizing === 'border-box') {
181
+            slideSize = height + marginTop + marginBottom;
182
+          } else {
183
+            var _slide$2 = slide[0],
184
+                clientHeight = _slide$2.clientHeight,
185
+                offsetHeight = _slide$2.offsetHeight;
186
+            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom + (offsetHeight - clientHeight);
187
+          }
188
+        }
189
+      }
190
+
191
+      if (currentTransform) {
192
+        slide[0].style.transform = currentTransform;
193
+      }
194
+
195
+      if (currentWebKitTransform) {
196
+        slide[0].style.webkitTransform = currentWebKitTransform;
197
+      }
198
+
199
+      if (params.roundLengths) slideSize = Math.floor(slideSize);
200
+    } else {
201
+      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
202
+      if (params.roundLengths) slideSize = Math.floor(slideSize);
203
+
204
+      if (slides[i]) {
205
+        if (swiper.isHorizontal()) {
206
+          slides[i].style.width = slideSize + "px";
207
+        } else {
208
+          slides[i].style.height = slideSize + "px";
209
+        }
210
+      }
211
+    }
212
+
213
+    if (slides[i]) {
214
+      slides[i].swiperSlideSize = slideSize;
215
+    }
216
+
217
+    slidesSizesGrid.push(slideSize);
218
+
219
+    if (params.centeredSlides) {
220
+      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
221
+      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
222
+      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
223
+      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
224
+      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
225
+      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
226
+      slidesGrid.push(slidePosition);
227
+    } else {
228
+      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
229
+      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
230
+      slidesGrid.push(slidePosition);
231
+      slidePosition = slidePosition + slideSize + spaceBetween;
232
+    }
233
+
234
+    swiper.virtualSize += slideSize + spaceBetween;
235
+    prevSlideSize = slideSize;
236
+    index += 1;
237
+  }
238
+
239
+  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
240
+  var newSlidesGrid;
241
+
242
+  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
243
+    $wrapperEl.css({
244
+      width: swiper.virtualSize + params.spaceBetween + "px"
245
+    });
246
+  }
247
+
248
+  if (params.setWrapperSize) {
249
+    if (swiper.isHorizontal()) $wrapperEl.css({
250
+      width: swiper.virtualSize + params.spaceBetween + "px"
251
+    });else $wrapperEl.css({
252
+      height: swiper.virtualSize + params.spaceBetween + "px"
253
+    });
254
+  }
255
+
256
+  if (params.slidesPerColumn > 1) {
257
+    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
258
+    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
259
+    if (swiper.isHorizontal()) $wrapperEl.css({
260
+      width: swiper.virtualSize + params.spaceBetween + "px"
261
+    });else $wrapperEl.css({
262
+      height: swiper.virtualSize + params.spaceBetween + "px"
263
+    });
264
+
265
+    if (params.centeredSlides) {
266
+      newSlidesGrid = [];
267
+
268
+      for (var _i = 0; _i < snapGrid.length; _i += 1) {
269
+        var slidesGridItem = snapGrid[_i];
270
+        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
271
+        if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
272
+      }
273
+
274
+      snapGrid = newSlidesGrid;
275
+    }
276
+  } // Remove last grid elements depending on width
277
+
278
+
279
+  if (!params.centeredSlides) {
280
+    newSlidesGrid = [];
281
+
282
+    for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
283
+      var _slidesGridItem = snapGrid[_i2];
284
+      if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
285
+
286
+      if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
287
+        newSlidesGrid.push(_slidesGridItem);
288
+      }
289
+    }
290
+
291
+    snapGrid = newSlidesGrid;
292
+
293
+    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
294
+      snapGrid.push(swiper.virtualSize - swiperSize);
295
+    }
296
+  }
297
+
298
+  if (snapGrid.length === 0) snapGrid = [0];
299
+
300
+  if (params.spaceBetween !== 0) {
301
+    if (swiper.isHorizontal()) {
302
+      if (rtl) slides.filter(slidesForMargin).css({
303
+        marginLeft: spaceBetween + "px"
304
+      });else slides.filter(slidesForMargin).css({
305
+        marginRight: spaceBetween + "px"
306
+      });
307
+    } else slides.filter(slidesForMargin).css({
308
+      marginBottom: spaceBetween + "px"
309
+    });
310
+  }
311
+
312
+  if (params.centeredSlides && params.centeredSlidesBounds) {
313
+    var allSlidesSize = 0;
314
+    slidesSizesGrid.forEach(function (slideSizeValue) {
315
+      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
316
+    });
317
+    allSlidesSize -= params.spaceBetween;
318
+    var maxSnap = allSlidesSize - swiperSize;
319
+    snapGrid = snapGrid.map(function (snap) {
320
+      if (snap < 0) return -offsetBefore;
321
+      if (snap > maxSnap) return maxSnap + offsetAfter;
322
+      return snap;
323
+    });
324
+  }
325
+
326
+  if (params.centerInsufficientSlides) {
327
+    var _allSlidesSize = 0;
328
+    slidesSizesGrid.forEach(function (slideSizeValue) {
329
+      _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
330
+    });
331
+    _allSlidesSize -= params.spaceBetween;
332
+
333
+    if (_allSlidesSize < swiperSize) {
334
+      var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
335
+      snapGrid.forEach(function (snap, snapIndex) {
336
+        snapGrid[snapIndex] = snap - allSlidesOffset;
337
+      });
338
+      slidesGrid.forEach(function (snap, snapIndex) {
339
+        slidesGrid[snapIndex] = snap + allSlidesOffset;
340
+      });
341
+    }
342
+  }
343
+
344
+  (0, _utils.extend)(swiper, {
345
+    slides: slides,
346
+    snapGrid: snapGrid,
347
+    slidesGrid: slidesGrid,
348
+    slidesSizesGrid: slidesSizesGrid
349
+  });
350
+
351
+  if (slidesLength !== previousSlidesLength) {
352
+    swiper.emit('slidesLengthChange');
353
+  }
354
+
355
+  if (snapGrid.length !== previousSnapGridLength) {
356
+    if (swiper.params.watchOverflow) swiper.checkOverflow();
357
+    swiper.emit('snapGridLengthChange');
358
+  }
359
+
360
+  if (slidesGrid.length !== previousSlidesGridLength) {
361
+    swiper.emit('slidesGridLengthChange');
362
+  }
363
+
364
+  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
365
+    swiper.updateSlidesOffset();
366
+  }
367
+}
0 368
\ No newline at end of file
1 369
new file mode 100644
... ...
@@ -0,0 +1,67 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateSlidesClasses;
5
+
6
+function updateSlidesClasses() {
7
+  var swiper = this;
8
+  var slides = swiper.slides,
9
+      params = swiper.params,
10
+      $wrapperEl = swiper.$wrapperEl,
11
+      activeIndex = swiper.activeIndex,
12
+      realIndex = swiper.realIndex;
13
+  var isVirtual = swiper.virtual && params.virtual.enabled;
14
+  slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
15
+  var activeSlide;
16
+
17
+  if (isVirtual) {
18
+    activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
19
+  } else {
20
+    activeSlide = slides.eq(activeIndex);
21
+  } // Active classes
22
+
23
+
24
+  activeSlide.addClass(params.slideActiveClass);
25
+
26
+  if (params.loop) {
27
+    // Duplicate to all looped slides
28
+    if (activeSlide.hasClass(params.slideDuplicateClass)) {
29
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
30
+    } else {
31
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
32
+    }
33
+  } // Next Slide
34
+
35
+
36
+  var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
37
+
38
+  if (params.loop && nextSlide.length === 0) {
39
+    nextSlide = slides.eq(0);
40
+    nextSlide.addClass(params.slideNextClass);
41
+  } // Prev Slide
42
+
43
+
44
+  var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
45
+
46
+  if (params.loop && prevSlide.length === 0) {
47
+    prevSlide = slides.eq(-1);
48
+    prevSlide.addClass(params.slidePrevClass);
49
+  }
50
+
51
+  if (params.loop) {
52
+    // Duplicate to all looped slides
53
+    if (nextSlide.hasClass(params.slideDuplicateClass)) {
54
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
55
+    } else {
56
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
57
+    }
58
+
59
+    if (prevSlide.hasClass(params.slideDuplicateClass)) {
60
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
61
+    } else {
62
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
63
+    }
64
+  }
65
+
66
+  swiper.emitSlidesClasses();
67
+}
0 68
\ No newline at end of file
1 69
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateSlidesOffset;
5
+
6
+function updateSlidesOffset() {
7
+  var swiper = this;
8
+  var slides = swiper.slides;
9
+
10
+  for (var i = 0; i < slides.length; i += 1) {
11
+    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
12
+  }
13
+}
0 14
\ No newline at end of file
1 15
new file mode 100644
... ...
@@ -0,0 +1,48 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = updateSlidesProgress;
5
+
6
+var _dom = _interopRequireDefault(require("../../../utils/dom"));
7
+
8
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+
10
+function updateSlidesProgress(translate) {
11
+  if (translate === void 0) {
12
+    translate = this && this.translate || 0;
13
+  }
14
+
15
+  var swiper = this;
16
+  var params = swiper.params;
17
+  var slides = swiper.slides,
18
+      rtl = swiper.rtlTranslate;
19
+  if (slides.length === 0) return;
20
+  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
21
+  var offsetCenter = -translate;
22
+  if (rtl) offsetCenter = translate; // Visible Slides
23
+
24
+  slides.removeClass(params.slideVisibleClass);
25
+  swiper.visibleSlidesIndexes = [];
26
+  swiper.visibleSlides = [];
27
+
28
+  for (var i = 0; i < slides.length; i += 1) {
29
+    var slide = slides[i];
30
+    var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
31
+
32
+    if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
33
+      var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
34
+      var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
35
+      var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
36
+
37
+      if (isVisible) {
38
+        swiper.visibleSlides.push(slide);
39
+        swiper.visibleSlidesIndexes.push(i);
40
+        slides.eq(i).addClass(params.slideVisibleClass);
41
+      }
42
+    }
43
+
44
+    slide.progress = rtl ? -slideProgress : slideProgress;
45
+  }
46
+
47
+  swiper.visibleSlides = (0, _dom.default)(swiper.visibleSlides);
48
+}
0 49
\ No newline at end of file
1 50
new file mode 100644
... ...
@@ -0,0 +1,118 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Coverflow = {
15
+  setTranslate: function setTranslate() {
16
+    var swiper = this;
17
+    var swiperWidth = swiper.width,
18
+        swiperHeight = swiper.height,
19
+        slides = swiper.slides,
20
+        slidesSizesGrid = swiper.slidesSizesGrid;
21
+    var params = swiper.params.coverflowEffect;
22
+    var isHorizontal = swiper.isHorizontal();
23
+    var transform = swiper.translate;
24
+    var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
25
+    var rotate = isHorizontal ? params.rotate : -params.rotate;
26
+    var translate = params.depth; // Each slide offset from center
27
+
28
+    for (var i = 0, length = slides.length; i < length; i += 1) {
29
+      var $slideEl = slides.eq(i);
30
+      var slideSize = slidesSizesGrid[i];
31
+      var slideOffset = $slideEl[0].swiperSlideOffset;
32
+      var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
33
+      var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
34
+      var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
35
+
36
+      var translateZ = -translate * Math.abs(offsetMultiplier);
37
+      var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
38
+
39
+      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
40
+        stretch = parseFloat(params.stretch) / 100 * slideSize;
41
+      }
42
+
43
+      var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
44
+      var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
45
+      var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
46
+
47
+      if (Math.abs(translateX) < 0.001) translateX = 0;
48
+      if (Math.abs(translateY) < 0.001) translateY = 0;
49
+      if (Math.abs(translateZ) < 0.001) translateZ = 0;
50
+      if (Math.abs(rotateY) < 0.001) rotateY = 0;
51
+      if (Math.abs(rotateX) < 0.001) rotateX = 0;
52
+      if (Math.abs(scale) < 0.001) scale = 0;
53
+      var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
54
+      $slideEl.transform(slideTransform);
55
+      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
56
+
57
+      if (params.slideShadows) {
58
+        // Set shadows
59
+        var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
60
+        var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
61
+
62
+        if ($shadowBeforeEl.length === 0) {
63
+          $shadowBeforeEl = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
64
+          $slideEl.append($shadowBeforeEl);
65
+        }
66
+
67
+        if ($shadowAfterEl.length === 0) {
68
+          $shadowAfterEl = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
69
+          $slideEl.append($shadowAfterEl);
70
+        }
71
+
72
+        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
73
+        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
74
+      }
75
+    }
76
+  },
77
+  setTransition: function setTransition(duration) {
78
+    var swiper = this;
79
+    swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
80
+  }
81
+};
82
+var _default = {
83
+  name: 'effect-coverflow',
84
+  params: {
85
+    coverflowEffect: {
86
+      rotate: 50,
87
+      stretch: 0,
88
+      depth: 100,
89
+      scale: 1,
90
+      modifier: 1,
91
+      slideShadows: true
92
+    }
93
+  },
94
+  create: function create() {
95
+    var swiper = this;
96
+    (0, _utils.bindModuleMethods)(swiper, {
97
+      coverflowEffect: _extends({}, Coverflow)
98
+    });
99
+  },
100
+  on: {
101
+    beforeInit: function beforeInit(swiper) {
102
+      if (swiper.params.effect !== 'coverflow') return;
103
+      swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
104
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
105
+      swiper.params.watchSlidesProgress = true;
106
+      swiper.originalParams.watchSlidesProgress = true;
107
+    },
108
+    setTranslate: function setTranslate(swiper) {
109
+      if (swiper.params.effect !== 'coverflow') return;
110
+      swiper.coverflowEffect.setTranslate();
111
+    },
112
+    setTransition: function setTransition(swiper, duration) {
113
+      if (swiper.params.effect !== 'coverflow') return;
114
+      swiper.coverflowEffect.setTransition(duration);
115
+    }
116
+  }
117
+};
118
+exports.default = _default;
0 119
\ No newline at end of file
1 120
new file mode 100644
... ...
@@ -0,0 +1,204 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Cube = {
15
+  setTranslate: function setTranslate() {
16
+    var swiper = this;
17
+    var $el = swiper.$el,
18
+        $wrapperEl = swiper.$wrapperEl,
19
+        slides = swiper.slides,
20
+        swiperWidth = swiper.width,
21
+        swiperHeight = swiper.height,
22
+        rtl = swiper.rtlTranslate,
23
+        swiperSize = swiper.size,
24
+        browser = swiper.browser;
25
+    var params = swiper.params.cubeEffect;
26
+    var isHorizontal = swiper.isHorizontal();
27
+    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
28
+    var wrapperRotate = 0;
29
+    var $cubeShadowEl;
30
+
31
+    if (params.shadow) {
32
+      if (isHorizontal) {
33
+        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
34
+
35
+        if ($cubeShadowEl.length === 0) {
36
+          $cubeShadowEl = (0, _dom.default)('<div class="swiper-cube-shadow"></div>');
37
+          $wrapperEl.append($cubeShadowEl);
38
+        }
39
+
40
+        $cubeShadowEl.css({
41
+          height: swiperWidth + "px"
42
+        });
43
+      } else {
44
+        $cubeShadowEl = $el.find('.swiper-cube-shadow');
45
+
46
+        if ($cubeShadowEl.length === 0) {
47
+          $cubeShadowEl = (0, _dom.default)('<div class="swiper-cube-shadow"></div>');
48
+          $el.append($cubeShadowEl);
49
+        }
50
+      }
51
+    }
52
+
53
+    for (var i = 0; i < slides.length; i += 1) {
54
+      var $slideEl = slides.eq(i);
55
+      var slideIndex = i;
56
+
57
+      if (isVirtual) {
58
+        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
59
+      }
60
+
61
+      var slideAngle = slideIndex * 90;
62
+      var round = Math.floor(slideAngle / 360);
63
+
64
+      if (rtl) {
65
+        slideAngle = -slideAngle;
66
+        round = Math.floor(-slideAngle / 360);
67
+      }
68
+
69
+      var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
70
+      var tx = 0;
71
+      var ty = 0;
72
+      var tz = 0;
73
+
74
+      if (slideIndex % 4 === 0) {
75
+        tx = -round * 4 * swiperSize;
76
+        tz = 0;
77
+      } else if ((slideIndex - 1) % 4 === 0) {
78
+        tx = 0;
79
+        tz = -round * 4 * swiperSize;
80
+      } else if ((slideIndex - 2) % 4 === 0) {
81
+        tx = swiperSize + round * 4 * swiperSize;
82
+        tz = swiperSize;
83
+      } else if ((slideIndex - 3) % 4 === 0) {
84
+        tx = -swiperSize;
85
+        tz = 3 * swiperSize + swiperSize * 4 * round;
86
+      }
87
+
88
+      if (rtl) {
89
+        tx = -tx;
90
+      }
91
+
92
+      if (!isHorizontal) {
93
+        ty = tx;
94
+        tx = 0;
95
+      }
96
+
97
+      var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
98
+
99
+      if (progress <= 1 && progress > -1) {
100
+        wrapperRotate = slideIndex * 90 + progress * 90;
101
+        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
102
+      }
103
+
104
+      $slideEl.transform(transform);
105
+
106
+      if (params.slideShadows) {
107
+        // Set shadows
108
+        var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
109
+        var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
110
+
111
+        if (shadowBefore.length === 0) {
112
+          shadowBefore = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
113
+          $slideEl.append(shadowBefore);
114
+        }
115
+
116
+        if (shadowAfter.length === 0) {
117
+          shadowAfter = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
118
+          $slideEl.append(shadowAfter);
119
+        }
120
+
121
+        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
122
+        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
123
+      }
124
+    }
125
+
126
+    $wrapperEl.css({
127
+      '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
128
+      '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
129
+      '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
130
+      'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
131
+    });
132
+
133
+    if (params.shadow) {
134
+      if (isHorizontal) {
135
+        $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
136
+      } else {
137
+        var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
138
+        var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
139
+        var scale1 = params.shadowScale;
140
+        var scale2 = params.shadowScale / multiplier;
141
+        var offset = params.shadowOffset;
142
+        $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
143
+      }
144
+    }
145
+
146
+    var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
147
+    $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
148
+  },
149
+  setTransition: function setTransition(duration) {
150
+    var swiper = this;
151
+    var $el = swiper.$el,
152
+        slides = swiper.slides;
153
+    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
154
+
155
+    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
156
+      $el.find('.swiper-cube-shadow').transition(duration);
157
+    }
158
+  }
159
+};
160
+var _default = {
161
+  name: 'effect-cube',
162
+  params: {
163
+    cubeEffect: {
164
+      slideShadows: true,
165
+      shadow: true,
166
+      shadowOffset: 20,
167
+      shadowScale: 0.94
168
+    }
169
+  },
170
+  create: function create() {
171
+    var swiper = this;
172
+    (0, _utils.bindModuleMethods)(swiper, {
173
+      cubeEffect: _extends({}, Cube)
174
+    });
175
+  },
176
+  on: {
177
+    beforeInit: function beforeInit(swiper) {
178
+      if (swiper.params.effect !== 'cube') return;
179
+      swiper.classNames.push(swiper.params.containerModifierClass + "cube");
180
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
181
+      var overwriteParams = {
182
+        slidesPerView: 1,
183
+        slidesPerColumn: 1,
184
+        slidesPerGroup: 1,
185
+        watchSlidesProgress: true,
186
+        resistanceRatio: 0,
187
+        spaceBetween: 0,
188
+        centeredSlides: false,
189
+        virtualTranslate: true
190
+      };
191
+      (0, _utils.extend)(swiper.params, overwriteParams);
192
+      (0, _utils.extend)(swiper.originalParams, overwriteParams);
193
+    },
194
+    setTranslate: function setTranslate(swiper) {
195
+      if (swiper.params.effect !== 'cube') return;
196
+      swiper.cubeEffect.setTranslate();
197
+    },
198
+    setTransition: function setTransition(swiper, duration) {
199
+      if (swiper.params.effect !== 'cube') return;
200
+      swiper.cubeEffect.setTransition(duration);
201
+    }
202
+  }
203
+};
204
+exports.default = _default;
0 205
\ No newline at end of file
1 206
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _utils = require("../../utils/utils");
7
+
8
+function _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); }
9
+
10
+var Fade = {
11
+  setTranslate: function setTranslate() {
12
+    var swiper = this;
13
+    var slides = swiper.slides;
14
+
15
+    for (var i = 0; i < slides.length; i += 1) {
16
+      var $slideEl = swiper.slides.eq(i);
17
+      var offset = $slideEl[0].swiperSlideOffset;
18
+      var tx = -offset;
19
+      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
20
+      var ty = 0;
21
+
22
+      if (!swiper.isHorizontal()) {
23
+        ty = tx;
24
+        tx = 0;
25
+      }
26
+
27
+      var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
28
+      $slideEl.css({
29
+        opacity: slideOpacity
30
+      }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
31
+    }
32
+  },
33
+  setTransition: function setTransition(duration) {
34
+    var swiper = this;
35
+    var slides = swiper.slides,
36
+        $wrapperEl = swiper.$wrapperEl;
37
+    slides.transition(duration);
38
+
39
+    if (swiper.params.virtualTranslate && duration !== 0) {
40
+      var eventTriggered = false;
41
+      slides.transitionEnd(function () {
42
+        if (eventTriggered) return;
43
+        if (!swiper || swiper.destroyed) return;
44
+        eventTriggered = true;
45
+        swiper.animating = false;
46
+        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
47
+
48
+        for (var i = 0; i < triggerEvents.length; i += 1) {
49
+          $wrapperEl.trigger(triggerEvents[i]);
50
+        }
51
+      });
52
+    }
53
+  }
54
+};
55
+var _default = {
56
+  name: 'effect-fade',
57
+  params: {
58
+    fadeEffect: {
59
+      crossFade: false
60
+    }
61
+  },
62
+  create: function create() {
63
+    var swiper = this;
64
+    (0, _utils.bindModuleMethods)(swiper, {
65
+      fadeEffect: _extends({}, Fade)
66
+    });
67
+  },
68
+  on: {
69
+    beforeInit: function beforeInit(swiper) {
70
+      if (swiper.params.effect !== 'fade') return;
71
+      swiper.classNames.push(swiper.params.containerModifierClass + "fade");
72
+      var overwriteParams = {
73
+        slidesPerView: 1,
74
+        slidesPerColumn: 1,
75
+        slidesPerGroup: 1,
76
+        watchSlidesProgress: true,
77
+        spaceBetween: 0,
78
+        virtualTranslate: true
79
+      };
80
+      (0, _utils.extend)(swiper.params, overwriteParams);
81
+      (0, _utils.extend)(swiper.originalParams, overwriteParams);
82
+    },
83
+    setTranslate: function setTranslate(swiper) {
84
+      if (swiper.params.effect !== 'fade') return;
85
+      swiper.fadeEffect.setTranslate();
86
+    },
87
+    setTransition: function setTransition(swiper, duration) {
88
+      if (swiper.params.effect !== 'fade') return;
89
+      swiper.fadeEffect.setTransition(duration);
90
+    }
91
+  }
92
+};
93
+exports.default = _default;
0 94
\ No newline at end of file
1 95
new file mode 100644
... ...
@@ -0,0 +1,133 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Flip = {
15
+  setTranslate: function setTranslate() {
16
+    var swiper = this;
17
+    var slides = swiper.slides,
18
+        rtl = swiper.rtlTranslate;
19
+
20
+    for (var i = 0; i < slides.length; i += 1) {
21
+      var $slideEl = slides.eq(i);
22
+      var progress = $slideEl[0].progress;
23
+
24
+      if (swiper.params.flipEffect.limitRotation) {
25
+        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
26
+      }
27
+
28
+      var offset = $slideEl[0].swiperSlideOffset;
29
+      var rotate = -180 * progress;
30
+      var rotateY = rotate;
31
+      var rotateX = 0;
32
+      var tx = -offset;
33
+      var ty = 0;
34
+
35
+      if (!swiper.isHorizontal()) {
36
+        ty = tx;
37
+        tx = 0;
38
+        rotateX = -rotateY;
39
+        rotateY = 0;
40
+      } else if (rtl) {
41
+        rotateY = -rotateY;
42
+      }
43
+
44
+      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
45
+
46
+      if (swiper.params.flipEffect.slideShadows) {
47
+        // Set shadows
48
+        var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
49
+        var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
50
+
51
+        if (shadowBefore.length === 0) {
52
+          shadowBefore = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
53
+          $slideEl.append(shadowBefore);
54
+        }
55
+
56
+        if (shadowAfter.length === 0) {
57
+          shadowAfter = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
58
+          $slideEl.append(shadowAfter);
59
+        }
60
+
61
+        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
62
+        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
63
+      }
64
+
65
+      $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
66
+    }
67
+  },
68
+  setTransition: function setTransition(duration) {
69
+    var swiper = this;
70
+    var slides = swiper.slides,
71
+        activeIndex = swiper.activeIndex,
72
+        $wrapperEl = swiper.$wrapperEl;
73
+    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
74
+
75
+    if (swiper.params.virtualTranslate && duration !== 0) {
76
+      var eventTriggered = false; // eslint-disable-next-line
77
+
78
+      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
79
+        if (eventTriggered) return;
80
+        if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
81
+
82
+        eventTriggered = true;
83
+        swiper.animating = false;
84
+        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
85
+
86
+        for (var i = 0; i < triggerEvents.length; i += 1) {
87
+          $wrapperEl.trigger(triggerEvents[i]);
88
+        }
89
+      });
90
+    }
91
+  }
92
+};
93
+var _default = {
94
+  name: 'effect-flip',
95
+  params: {
96
+    flipEffect: {
97
+      slideShadows: true,
98
+      limitRotation: true
99
+    }
100
+  },
101
+  create: function create() {
102
+    var swiper = this;
103
+    (0, _utils.bindModuleMethods)(swiper, {
104
+      flipEffect: _extends({}, Flip)
105
+    });
106
+  },
107
+  on: {
108
+    beforeInit: function beforeInit(swiper) {
109
+      if (swiper.params.effect !== 'flip') return;
110
+      swiper.classNames.push(swiper.params.containerModifierClass + "flip");
111
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
112
+      var overwriteParams = {
113
+        slidesPerView: 1,
114
+        slidesPerColumn: 1,
115
+        slidesPerGroup: 1,
116
+        watchSlidesProgress: true,
117
+        spaceBetween: 0,
118
+        virtualTranslate: true
119
+      };
120
+      (0, _utils.extend)(swiper.params, overwriteParams);
121
+      (0, _utils.extend)(swiper.originalParams, overwriteParams);
122
+    },
123
+    setTranslate: function setTranslate(swiper) {
124
+      if (swiper.params.effect !== 'flip') return;
125
+      swiper.flipEffect.setTranslate();
126
+    },
127
+    setTransition: function setTransition(swiper, duration) {
128
+      if (swiper.params.effect !== 'flip') return;
129
+      swiper.flipEffect.setTransition(duration);
130
+    }
131
+  }
132
+};
133
+exports.default = _default;
0 134
\ No newline at end of file
1 135
new file mode 100644
... ...
@@ -0,0 +1,121 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../utils/dom"));
9
+
10
+var _utils = require("../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function _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); }
15
+
16
+var HashNavigation = {
17
+  onHashCange: function onHashCange() {
18
+    var swiper = this;
19
+    var document = (0, _ssrWindow.getDocument)();
20
+    swiper.emit('hashChange');
21
+    var newHash = document.location.hash.replace('#', '');
22
+    var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
23
+
24
+    if (newHash !== activeSlideHash) {
25
+      var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
26
+      if (typeof newIndex === 'undefined') return;
27
+      swiper.slideTo(newIndex);
28
+    }
29
+  },
30
+  setHash: function setHash() {
31
+    var swiper = this;
32
+    var window = (0, _ssrWindow.getWindow)();
33
+    var document = (0, _ssrWindow.getDocument)();
34
+    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
35
+
36
+    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
37
+      window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
38
+      swiper.emit('hashSet');
39
+    } else {
40
+      var slide = swiper.slides.eq(swiper.activeIndex);
41
+      var hash = slide.attr('data-hash') || slide.attr('data-history');
42
+      document.location.hash = hash || '';
43
+      swiper.emit('hashSet');
44
+    }
45
+  },
46
+  init: function init() {
47
+    var swiper = this;
48
+    var document = (0, _ssrWindow.getDocument)();
49
+    var window = (0, _ssrWindow.getWindow)();
50
+    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
51
+    swiper.hashNavigation.initialized = true;
52
+    var hash = document.location.hash.replace('#', '');
53
+
54
+    if (hash) {
55
+      var speed = 0;
56
+
57
+      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
58
+        var slide = swiper.slides.eq(i);
59
+        var slideHash = slide.attr('data-hash') || slide.attr('data-history');
60
+
61
+        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
62
+          var index = slide.index();
63
+          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
64
+        }
65
+      }
66
+    }
67
+
68
+    if (swiper.params.hashNavigation.watchState) {
69
+      (0, _dom.default)(window).on('hashchange', swiper.hashNavigation.onHashCange);
70
+    }
71
+  },
72
+  destroy: function destroy() {
73
+    var swiper = this;
74
+    var window = (0, _ssrWindow.getWindow)();
75
+
76
+    if (swiper.params.hashNavigation.watchState) {
77
+      (0, _dom.default)(window).off('hashchange', swiper.hashNavigation.onHashCange);
78
+    }
79
+  }
80
+};
81
+var _default = {
82
+  name: 'hash-navigation',
83
+  params: {
84
+    hashNavigation: {
85
+      enabled: false,
86
+      replaceState: false,
87
+      watchState: false
88
+    }
89
+  },
90
+  create: function create() {
91
+    var swiper = this;
92
+    (0, _utils.bindModuleMethods)(swiper, {
93
+      hashNavigation: _extends({
94
+        initialized: false
95
+      }, HashNavigation)
96
+    });
97
+  },
98
+  on: {
99
+    init: function init(swiper) {
100
+      if (swiper.params.hashNavigation.enabled) {
101
+        swiper.hashNavigation.init();
102
+      }
103
+    },
104
+    destroy: function destroy(swiper) {
105
+      if (swiper.params.hashNavigation.enabled) {
106
+        swiper.hashNavigation.destroy();
107
+      }
108
+    },
109
+    transitionEnd: function transitionEnd(swiper) {
110
+      if (swiper.hashNavigation.initialized) {
111
+        swiper.hashNavigation.setHash();
112
+      }
113
+    },
114
+    slideChange: function slideChange(swiper) {
115
+      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
116
+        swiper.hashNavigation.setHash();
117
+      }
118
+    }
119
+  }
120
+};
121
+exports.default = _default;
0 122
\ No newline at end of file
1 123
new file mode 100644
... ...
@@ -0,0 +1,162 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _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); }
11
+
12
+var History = {
13
+  init: function init() {
14
+    var swiper = this;
15
+    var window = (0, _ssrWindow.getWindow)();
16
+    if (!swiper.params.history) return;
17
+
18
+    if (!window.history || !window.history.pushState) {
19
+      swiper.params.history.enabled = false;
20
+      swiper.params.hashNavigation.enabled = true;
21
+      return;
22
+    }
23
+
24
+    var history = swiper.history;
25
+    history.initialized = true;
26
+    history.paths = History.getPathValues(swiper.params.url);
27
+    if (!history.paths.key && !history.paths.value) return;
28
+    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
29
+
30
+    if (!swiper.params.history.replaceState) {
31
+      window.addEventListener('popstate', swiper.history.setHistoryPopState);
32
+    }
33
+  },
34
+  destroy: function destroy() {
35
+    var swiper = this;
36
+    var window = (0, _ssrWindow.getWindow)();
37
+
38
+    if (!swiper.params.history.replaceState) {
39
+      window.removeEventListener('popstate', swiper.history.setHistoryPopState);
40
+    }
41
+  },
42
+  setHistoryPopState: function setHistoryPopState() {
43
+    var swiper = this;
44
+    swiper.history.paths = History.getPathValues(swiper.params.url);
45
+    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
46
+  },
47
+  getPathValues: function getPathValues(urlOverride) {
48
+    var window = (0, _ssrWindow.getWindow)();
49
+    var location;
50
+
51
+    if (urlOverride) {
52
+      location = new URL(urlOverride);
53
+    } else {
54
+      location = window.location;
55
+    }
56
+
57
+    var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
58
+      return part !== '';
59
+    });
60
+    var total = pathArray.length;
61
+    var key = pathArray[total - 2];
62
+    var value = pathArray[total - 1];
63
+    return {
64
+      key: key,
65
+      value: value
66
+    };
67
+  },
68
+  setHistory: function setHistory(key, index) {
69
+    var swiper = this;
70
+    var window = (0, _ssrWindow.getWindow)();
71
+    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
72
+    var location;
73
+
74
+    if (swiper.params.url) {
75
+      location = new URL(swiper.params.url);
76
+    } else {
77
+      location = window.location;
78
+    }
79
+
80
+    var slide = swiper.slides.eq(index);
81
+    var value = History.slugify(slide.attr('data-history'));
82
+
83
+    if (!location.pathname.includes(key)) {
84
+      value = key + "/" + value;
85
+    }
86
+
87
+    var currentState = window.history.state;
88
+
89
+    if (currentState && currentState.value === value) {
90
+      return;
91
+    }
92
+
93
+    if (swiper.params.history.replaceState) {
94
+      window.history.replaceState({
95
+        value: value
96
+      }, null, value);
97
+    } else {
98
+      window.history.pushState({
99
+        value: value
100
+      }, null, value);
101
+    }
102
+  },
103
+  slugify: function slugify(text) {
104
+    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
105
+  },
106
+  scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
107
+    var swiper = this;
108
+
109
+    if (value) {
110
+      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
111
+        var slide = swiper.slides.eq(i);
112
+        var slideHistory = History.slugify(slide.attr('data-history'));
113
+
114
+        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
115
+          var index = slide.index();
116
+          swiper.slideTo(index, speed, runCallbacks);
117
+        }
118
+      }
119
+    } else {
120
+      swiper.slideTo(0, speed, runCallbacks);
121
+    }
122
+  }
123
+};
124
+var _default = {
125
+  name: 'history',
126
+  params: {
127
+    history: {
128
+      enabled: false,
129
+      replaceState: false,
130
+      key: 'slides'
131
+    }
132
+  },
133
+  create: function create() {
134
+    var swiper = this;
135
+    (0, _utils.bindModuleMethods)(swiper, {
136
+      history: _extends({}, History)
137
+    });
138
+  },
139
+  on: {
140
+    init: function init(swiper) {
141
+      if (swiper.params.history.enabled) {
142
+        swiper.history.init();
143
+      }
144
+    },
145
+    destroy: function destroy(swiper) {
146
+      if (swiper.params.history.enabled) {
147
+        swiper.history.destroy();
148
+      }
149
+    },
150
+    transitionEnd: function transitionEnd(swiper) {
151
+      if (swiper.history.initialized) {
152
+        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
153
+      }
154
+    },
155
+    slideChange: function slideChange(swiper) {
156
+      if (swiper.history.initialized && swiper.params.cssMode) {
157
+        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
158
+      }
159
+    }
160
+  }
161
+};
162
+exports.default = _default;
0 163
\ No newline at end of file
1 164
new file mode 100644
... ...
@@ -0,0 +1,138 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../utils/dom"));
9
+
10
+var _utils = require("../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function _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); }
15
+
16
+var Keyboard = {
17
+  handle: function handle(event) {
18
+    var swiper = this;
19
+    var window = (0, _ssrWindow.getWindow)();
20
+    var document = (0, _ssrWindow.getDocument)();
21
+    var rtl = swiper.rtlTranslate;
22
+    var e = event;
23
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
24
+
25
+    var kc = e.keyCode || e.charCode;
26
+    var pageUpDown = swiper.params.keyboard.pageUpDown;
27
+    var isPageUp = pageUpDown && kc === 33;
28
+    var isPageDown = pageUpDown && kc === 34;
29
+    var isArrowLeft = kc === 37;
30
+    var isArrowRight = kc === 39;
31
+    var isArrowUp = kc === 38;
32
+    var isArrowDown = kc === 40; // Directions locks
33
+
34
+    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
35
+      return false;
36
+    }
37
+
38
+    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
39
+      return false;
40
+    }
41
+
42
+    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
43
+      return undefined;
44
+    }
45
+
46
+    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
47
+      return undefined;
48
+    }
49
+
50
+    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
51
+      var inView = false; // Check that swiper should be inside of visible area of window
52
+
53
+      if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
54
+        return undefined;
55
+      }
56
+
57
+      var windowWidth = window.innerWidth;
58
+      var windowHeight = window.innerHeight;
59
+      var swiperOffset = swiper.$el.offset();
60
+      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
61
+      var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
62
+
63
+      for (var i = 0; i < swiperCoord.length; i += 1) {
64
+        var point = swiperCoord[i];
65
+
66
+        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
67
+          inView = true;
68
+        }
69
+      }
70
+
71
+      if (!inView) return undefined;
72
+    }
73
+
74
+    if (swiper.isHorizontal()) {
75
+      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
76
+        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
77
+      }
78
+
79
+      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
80
+      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
81
+    } else {
82
+      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
83
+        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
84
+      }
85
+
86
+      if (isPageDown || isArrowDown) swiper.slideNext();
87
+      if (isPageUp || isArrowUp) swiper.slidePrev();
88
+    }
89
+
90
+    swiper.emit('keyPress', kc);
91
+    return undefined;
92
+  },
93
+  enable: function enable() {
94
+    var swiper = this;
95
+    var document = (0, _ssrWindow.getDocument)();
96
+    if (swiper.keyboard.enabled) return;
97
+    (0, _dom.default)(document).on('keydown', swiper.keyboard.handle);
98
+    swiper.keyboard.enabled = true;
99
+  },
100
+  disable: function disable() {
101
+    var swiper = this;
102
+    var document = (0, _ssrWindow.getDocument)();
103
+    if (!swiper.keyboard.enabled) return;
104
+    (0, _dom.default)(document).off('keydown', swiper.keyboard.handle);
105
+    swiper.keyboard.enabled = false;
106
+  }
107
+};
108
+var _default = {
109
+  name: 'keyboard',
110
+  params: {
111
+    keyboard: {
112
+      enabled: false,
113
+      onlyInViewport: true,
114
+      pageUpDown: true
115
+    }
116
+  },
117
+  create: function create() {
118
+    var swiper = this;
119
+    (0, _utils.bindModuleMethods)(swiper, {
120
+      keyboard: _extends({
121
+        enabled: false
122
+      }, Keyboard)
123
+    });
124
+  },
125
+  on: {
126
+    init: function init(swiper) {
127
+      if (swiper.params.keyboard.enabled) {
128
+        swiper.keyboard.enable();
129
+      }
130
+    },
131
+    destroy: function destroy(swiper) {
132
+      if (swiper.keyboard.enabled) {
133
+        swiper.keyboard.disable();
134
+      }
135
+    }
136
+  }
137
+};
138
+exports.default = _default;
0 139
\ No newline at end of file
1 140
new file mode 100644
... ...
@@ -0,0 +1,237 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Lazy = {
15
+  loadInSlide: function loadInSlide(index, loadInDuplicate) {
16
+    if (loadInDuplicate === void 0) {
17
+      loadInDuplicate = true;
18
+    }
19
+
20
+    var swiper = this;
21
+    var params = swiper.params.lazy;
22
+    if (typeof index === 'undefined') return;
23
+    if (swiper.slides.length === 0) return;
24
+    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
25
+    var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
26
+    var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
27
+
28
+    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
29
+      $images.push($slideEl[0]);
30
+    }
31
+
32
+    if ($images.length === 0) return;
33
+    $images.each(function (imageEl) {
34
+      var $imageEl = (0, _dom.default)(imageEl);
35
+      $imageEl.addClass(params.loadingClass);
36
+      var background = $imageEl.attr('data-background');
37
+      var src = $imageEl.attr('data-src');
38
+      var srcset = $imageEl.attr('data-srcset');
39
+      var sizes = $imageEl.attr('data-sizes');
40
+      var $pictureEl = $imageEl.parent('picture');
41
+      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
42
+        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
43
+
44
+        if (background) {
45
+          $imageEl.css('background-image', "url(\"" + background + "\")");
46
+          $imageEl.removeAttr('data-background');
47
+        } else {
48
+          if (srcset) {
49
+            $imageEl.attr('srcset', srcset);
50
+            $imageEl.removeAttr('data-srcset');
51
+          }
52
+
53
+          if (sizes) {
54
+            $imageEl.attr('sizes', sizes);
55
+            $imageEl.removeAttr('data-sizes');
56
+          }
57
+
58
+          if ($pictureEl.length) {
59
+            $pictureEl.children('source').each(function (sourceEl) {
60
+              var $source = (0, _dom.default)(sourceEl);
61
+
62
+              if ($source.attr('data-srcset')) {
63
+                $source.attr('srcset', $source.attr('data-srcset'));
64
+                $source.removeAttr('data-srcset');
65
+              }
66
+            });
67
+          }
68
+
69
+          if (src) {
70
+            $imageEl.attr('src', src);
71
+            $imageEl.removeAttr('data-src');
72
+          }
73
+        }
74
+
75
+        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
76
+        $slideEl.find("." + params.preloaderClass).remove();
77
+
78
+        if (swiper.params.loop && loadInDuplicate) {
79
+          var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
80
+
81
+          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
82
+            var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
83
+            swiper.lazy.loadInSlide(originalSlide.index(), false);
84
+          } else {
85
+            var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
86
+            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
87
+          }
88
+        }
89
+
90
+        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
91
+
92
+        if (swiper.params.autoHeight) {
93
+          swiper.updateAutoHeight();
94
+        }
95
+      });
96
+      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
97
+    });
98
+  },
99
+  load: function load() {
100
+    var swiper = this;
101
+    var $wrapperEl = swiper.$wrapperEl,
102
+        swiperParams = swiper.params,
103
+        slides = swiper.slides,
104
+        activeIndex = swiper.activeIndex;
105
+    var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
106
+    var params = swiperParams.lazy;
107
+    var slidesPerView = swiperParams.slidesPerView;
108
+
109
+    if (slidesPerView === 'auto') {
110
+      slidesPerView = 0;
111
+    }
112
+
113
+    function slideExist(index) {
114
+      if (isVirtual) {
115
+        if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
116
+          return true;
117
+        }
118
+      } else if (slides[index]) return true;
119
+
120
+      return false;
121
+    }
122
+
123
+    function slideIndex(slideEl) {
124
+      if (isVirtual) {
125
+        return (0, _dom.default)(slideEl).attr('data-swiper-slide-index');
126
+      }
127
+
128
+      return (0, _dom.default)(slideEl).index();
129
+    }
130
+
131
+    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
132
+
133
+    if (swiper.params.watchSlidesVisibility) {
134
+      $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
135
+        var index = isVirtual ? (0, _dom.default)(slideEl).attr('data-swiper-slide-index') : (0, _dom.default)(slideEl).index();
136
+        swiper.lazy.loadInSlide(index);
137
+      });
138
+    } else if (slidesPerView > 1) {
139
+      for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
140
+        if (slideExist(i)) swiper.lazy.loadInSlide(i);
141
+      }
142
+    } else {
143
+      swiper.lazy.loadInSlide(activeIndex);
144
+    }
145
+
146
+    if (params.loadPrevNext) {
147
+      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
148
+        var amount = params.loadPrevNextAmount;
149
+        var spv = slidesPerView;
150
+        var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
151
+        var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
152
+
153
+        for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
154
+          if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
155
+        } // Prev Slides
156
+
157
+
158
+        for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
159
+          if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
160
+        }
161
+      } else {
162
+        var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
163
+        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
164
+        var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
165
+        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
166
+      }
167
+    }
168
+  }
169
+};
170
+var _default = {
171
+  name: 'lazy',
172
+  params: {
173
+    lazy: {
174
+      enabled: false,
175
+      loadPrevNext: false,
176
+      loadPrevNextAmount: 1,
177
+      loadOnTransitionStart: false,
178
+      elementClass: 'swiper-lazy',
179
+      loadingClass: 'swiper-lazy-loading',
180
+      loadedClass: 'swiper-lazy-loaded',
181
+      preloaderClass: 'swiper-lazy-preloader'
182
+    }
183
+  },
184
+  create: function create() {
185
+    var swiper = this;
186
+    (0, _utils.bindModuleMethods)(swiper, {
187
+      lazy: _extends({
188
+        initialImageLoaded: false
189
+      }, Lazy)
190
+    });
191
+  },
192
+  on: {
193
+    beforeInit: function beforeInit(swiper) {
194
+      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
195
+        swiper.params.preloadImages = false;
196
+      }
197
+    },
198
+    init: function init(swiper) {
199
+      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
200
+        swiper.lazy.load();
201
+      }
202
+    },
203
+    scroll: function scroll(swiper) {
204
+      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
205
+        swiper.lazy.load();
206
+      }
207
+    },
208
+    resize: function resize(swiper) {
209
+      if (swiper.params.lazy.enabled) {
210
+        swiper.lazy.load();
211
+      }
212
+    },
213
+    scrollbarDragMove: function scrollbarDragMove(swiper) {
214
+      if (swiper.params.lazy.enabled) {
215
+        swiper.lazy.load();
216
+      }
217
+    },
218
+    transitionStart: function transitionStart(swiper) {
219
+      if (swiper.params.lazy.enabled) {
220
+        if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
221
+          swiper.lazy.load();
222
+        }
223
+      }
224
+    },
225
+    transitionEnd: function transitionEnd(swiper) {
226
+      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
227
+        swiper.lazy.load();
228
+      }
229
+    },
230
+    slideChange: function slideChange(swiper) {
231
+      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
232
+        swiper.lazy.load();
233
+      }
234
+    }
235
+  }
236
+};
237
+exports.default = _default;
0 238
\ No newline at end of file
1 239
new file mode 100644
... ...
@@ -0,0 +1,469 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../utils/dom"));
9
+
10
+var _utils = require("../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function isEventSupported() {
15
+  var document = (0, _ssrWindow.getDocument)();
16
+  var eventName = 'onwheel';
17
+  var isSupported = (eventName in document);
18
+
19
+  if (!isSupported) {
20
+    var element = document.createElement('div');
21
+    element.setAttribute(eventName, 'return;');
22
+    isSupported = typeof element[eventName] === 'function';
23
+  }
24
+
25
+  if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
26
+  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
27
+  document.implementation.hasFeature('', '') !== true) {
28
+    // This is the only way to test support for the `wheel` event in IE9+.
29
+    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
30
+  }
31
+
32
+  return isSupported;
33
+}
34
+
35
+var Mousewheel = {
36
+  lastScrollTime: (0, _utils.now)(),
37
+  lastEventBeforeSnap: undefined,
38
+  recentWheelEvents: [],
39
+  event: function event() {
40
+    var window = (0, _ssrWindow.getWindow)();
41
+    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
42
+    return isEventSupported() ? 'wheel' : 'mousewheel';
43
+  },
44
+  normalize: function normalize(e) {
45
+    // Reasonable defaults
46
+    var PIXEL_STEP = 10;
47
+    var LINE_HEIGHT = 40;
48
+    var PAGE_HEIGHT = 800;
49
+    var sX = 0;
50
+    var sY = 0; // spinX, spinY
51
+
52
+    var pX = 0;
53
+    var pY = 0; // pixelX, pixelY
54
+    // Legacy
55
+
56
+    if ('detail' in e) {
57
+      sY = e.detail;
58
+    }
59
+
60
+    if ('wheelDelta' in e) {
61
+      sY = -e.wheelDelta / 120;
62
+    }
63
+
64
+    if ('wheelDeltaY' in e) {
65
+      sY = -e.wheelDeltaY / 120;
66
+    }
67
+
68
+    if ('wheelDeltaX' in e) {
69
+      sX = -e.wheelDeltaX / 120;
70
+    } // side scrolling on FF with DOMMouseScroll
71
+
72
+
73
+    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
74
+      sX = sY;
75
+      sY = 0;
76
+    }
77
+
78
+    pX = sX * PIXEL_STEP;
79
+    pY = sY * PIXEL_STEP;
80
+
81
+    if ('deltaY' in e) {
82
+      pY = e.deltaY;
83
+    }
84
+
85
+    if ('deltaX' in e) {
86
+      pX = e.deltaX;
87
+    }
88
+
89
+    if (e.shiftKey && !pX) {
90
+      // if user scrolls with shift he wants horizontal scroll
91
+      pX = pY;
92
+      pY = 0;
93
+    }
94
+
95
+    if ((pX || pY) && e.deltaMode) {
96
+      if (e.deltaMode === 1) {
97
+        // delta in LINE units
98
+        pX *= LINE_HEIGHT;
99
+        pY *= LINE_HEIGHT;
100
+      } else {
101
+        // delta in PAGE units
102
+        pX *= PAGE_HEIGHT;
103
+        pY *= PAGE_HEIGHT;
104
+      }
105
+    } // Fall-back if spin cannot be determined
106
+
107
+
108
+    if (pX && !sX) {
109
+      sX = pX < 1 ? -1 : 1;
110
+    }
111
+
112
+    if (pY && !sY) {
113
+      sY = pY < 1 ? -1 : 1;
114
+    }
115
+
116
+    return {
117
+      spinX: sX,
118
+      spinY: sY,
119
+      pixelX: pX,
120
+      pixelY: pY
121
+    };
122
+  },
123
+  handleMouseEnter: function handleMouseEnter() {
124
+    var swiper = this;
125
+    swiper.mouseEntered = true;
126
+  },
127
+  handleMouseLeave: function handleMouseLeave() {
128
+    var swiper = this;
129
+    swiper.mouseEntered = false;
130
+  },
131
+  handle: function handle(event) {
132
+    var e = event;
133
+    var swiper = this;
134
+    var params = swiper.params.mousewheel;
135
+
136
+    if (swiper.params.cssMode) {
137
+      e.preventDefault();
138
+    }
139
+
140
+    var target = swiper.$el;
141
+
142
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
143
+      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
144
+    }
145
+
146
+    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
147
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
148
+
149
+    var delta = 0;
150
+    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
151
+    var data = Mousewheel.normalize(e);
152
+
153
+    if (params.forceToAxis) {
154
+      if (swiper.isHorizontal()) {
155
+        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
156
+      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
157
+    } else {
158
+      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
159
+    }
160
+
161
+    if (delta === 0) return true;
162
+    if (params.invert) delta = -delta;
163
+
164
+    if (!swiper.params.freeMode) {
165
+      // Register the new event in a variable which stores the relevant data
166
+      var newEvent = {
167
+        time: (0, _utils.now)(),
168
+        delta: Math.abs(delta),
169
+        direction: Math.sign(delta),
170
+        raw: event
171
+      }; // Keep the most recent events
172
+
173
+      var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
174
+
175
+      if (recentWheelEvents.length >= 2) {
176
+        recentWheelEvents.shift(); // only store the last N events
177
+      }
178
+
179
+      var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
180
+      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
181
+      //   If direction has changed or
182
+      //   if the scroll is quicker than the previous one:
183
+      //     Animate the slider.
184
+      // Else (this is the first time the wheel is moved):
185
+      //     Animate the slider.
186
+
187
+      if (prevEvent) {
188
+        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
189
+          swiper.mousewheel.animateSlider(newEvent);
190
+        }
191
+      } else {
192
+        swiper.mousewheel.animateSlider(newEvent);
193
+      } // If it's time to release the scroll:
194
+      //   Return now so you don't hit the preventDefault.
195
+
196
+
197
+      if (swiper.mousewheel.releaseScroll(newEvent)) {
198
+        return true;
199
+      }
200
+    } else {
201
+      // Freemode or scrollContainer:
202
+      // If we recently snapped after a momentum scroll, then ignore wheel events
203
+      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
204
+      // or if it's a new scroll (larger delta or inverse sign as last event before
205
+      // an end-of-momentum snap).
206
+      var _newEvent = {
207
+        time: (0, _utils.now)(),
208
+        delta: Math.abs(delta),
209
+        direction: Math.sign(delta)
210
+      };
211
+      var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
212
+      var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
213
+
214
+      if (!ignoreWheelEvents) {
215
+        swiper.mousewheel.lastEventBeforeSnap = undefined;
216
+
217
+        if (swiper.params.loop) {
218
+          swiper.loopFix();
219
+        }
220
+
221
+        var position = swiper.getTranslate() + delta * params.sensitivity;
222
+        var wasBeginning = swiper.isBeginning;
223
+        var wasEnd = swiper.isEnd;
224
+        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
225
+        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
226
+        swiper.setTransition(0);
227
+        swiper.setTranslate(position);
228
+        swiper.updateProgress();
229
+        swiper.updateActiveIndex();
230
+        swiper.updateSlidesClasses();
231
+
232
+        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
233
+          swiper.updateSlidesClasses();
234
+        }
235
+
236
+        if (swiper.params.freeModeSticky) {
237
+          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
238
+          // the end of a momentum scroll by storing recent (N=15?) wheel events.
239
+          // 1. do all N events have decreasing or same (absolute value) delta?
240
+          // 2. did all N events arrive in the last M (M=500?) msecs?
241
+          // 3. does the earliest event have an (absolute value) delta that's
242
+          //    at least P (P=1?) larger than the most recent event's delta?
243
+          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
244
+          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
245
+          // Snap immediately and ignore remaining wheel events in this scroll.
246
+          // See comment above for "remaining wheel events in this scroll" determination.
247
+          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
248
+          clearTimeout(swiper.mousewheel.timeout);
249
+          swiper.mousewheel.timeout = undefined;
250
+          var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
251
+
252
+          if (_recentWheelEvents.length >= 15) {
253
+            _recentWheelEvents.shift(); // only store the last N events
254
+
255
+          }
256
+
257
+          var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
258
+
259
+          var firstEvent = _recentWheelEvents[0];
260
+
261
+          _recentWheelEvents.push(_newEvent);
262
+
263
+          if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
264
+            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
265
+            _recentWheelEvents.splice(0);
266
+          } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
267
+            // We're at the end of the deceleration of a momentum scroll, so there's no need
268
+            // to wait for more events. Snap ASAP on the next tick.
269
+            // Also, because there's some remaining momentum we'll bias the snap in the
270
+            // direction of the ongoing scroll because it's better UX for the scroll to snap
271
+            // in the same direction as the scroll instead of reversing to snap.  Therefore,
272
+            // if it's already scrolled more than 20% in the current direction, keep going.
273
+            var snapToThreshold = delta > 0 ? 0.8 : 0.2;
274
+            swiper.mousewheel.lastEventBeforeSnap = _newEvent;
275
+
276
+            _recentWheelEvents.splice(0);
277
+
278
+            swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {
279
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
280
+            }, 0); // no delay; move on next tick
281
+          }
282
+
283
+          if (!swiper.mousewheel.timeout) {
284
+            // if we get here, then we haven't detected the end of a momentum scroll, so
285
+            // we'll consider a scroll "complete" when there haven't been any wheel events
286
+            // for 500ms.
287
+            swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {
288
+              var snapToThreshold = 0.5;
289
+              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
290
+
291
+              _recentWheelEvents.splice(0);
292
+
293
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
294
+            }, 500);
295
+          }
296
+        } // Emit event
297
+
298
+
299
+        if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
300
+
301
+        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
302
+
303
+        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
304
+      }
305
+    }
306
+
307
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
308
+    return false;
309
+  },
310
+  animateSlider: function animateSlider(newEvent) {
311
+    var swiper = this;
312
+    var window = (0, _ssrWindow.getWindow)();
313
+
314
+    if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
315
+      // Prevent if delta of wheel scroll delta is below configured threshold
316
+      return false;
317
+    }
318
+
319
+    if (this.params.mousewheel.thresholdTime && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
320
+      // Prevent if time between scrolls is below configured threshold
321
+      return false;
322
+    } // If the movement is NOT big enough and
323
+    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
324
+    //   Don't go any further (avoid insignificant scroll movement).
325
+
326
+
327
+    if (newEvent.delta >= 6 && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < 60) {
328
+      // Return false as a default
329
+      return true;
330
+    } // If user is scrolling towards the end:
331
+    //   If the slider hasn't hit the latest slide or
332
+    //   if the slider is a loop and
333
+    //   if the slider isn't moving right now:
334
+    //     Go to next slide and
335
+    //     emit a scroll event.
336
+    // Else (the user is scrolling towards the beginning) and
337
+    // if the slider hasn't hit the first slide or
338
+    // if the slider is a loop and
339
+    // if the slider isn't moving right now:
340
+    //   Go to prev slide and
341
+    //   emit a scroll event.
342
+
343
+
344
+    if (newEvent.direction < 0) {
345
+      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
346
+        swiper.slideNext();
347
+        swiper.emit('scroll', newEvent.raw);
348
+      }
349
+    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
350
+      swiper.slidePrev();
351
+      swiper.emit('scroll', newEvent.raw);
352
+    } // If you got here is because an animation has been triggered so store the current time
353
+
354
+
355
+    swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
356
+
357
+    return false;
358
+  },
359
+  releaseScroll: function releaseScroll(newEvent) {
360
+    var swiper = this;
361
+    var params = swiper.params.mousewheel;
362
+
363
+    if (newEvent.direction < 0) {
364
+      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
365
+        // Return true to animate scroll on edges
366
+        return true;
367
+      }
368
+    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
369
+      // Return true to animate scroll on edges
370
+      return true;
371
+    }
372
+
373
+    return false;
374
+  },
375
+  enable: function enable() {
376
+    var swiper = this;
377
+    var event = Mousewheel.event();
378
+
379
+    if (swiper.params.cssMode) {
380
+      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
381
+      return true;
382
+    }
383
+
384
+    if (!event) return false;
385
+    if (swiper.mousewheel.enabled) return false;
386
+    var target = swiper.$el;
387
+
388
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
389
+      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
390
+    }
391
+
392
+    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
393
+    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
394
+    target.on(event, swiper.mousewheel.handle);
395
+    swiper.mousewheel.enabled = true;
396
+    return true;
397
+  },
398
+  disable: function disable() {
399
+    var swiper = this;
400
+    var event = Mousewheel.event();
401
+
402
+    if (swiper.params.cssMode) {
403
+      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
404
+      return true;
405
+    }
406
+
407
+    if (!event) return false;
408
+    if (!swiper.mousewheel.enabled) return false;
409
+    var target = swiper.$el;
410
+
411
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
412
+      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
413
+    }
414
+
415
+    target.off(event, swiper.mousewheel.handle);
416
+    swiper.mousewheel.enabled = false;
417
+    return true;
418
+  }
419
+};
420
+var _default = {
421
+  name: 'mousewheel',
422
+  params: {
423
+    mousewheel: {
424
+      enabled: false,
425
+      releaseOnEdges: false,
426
+      invert: false,
427
+      forceToAxis: false,
428
+      sensitivity: 1,
429
+      eventsTarget: 'container',
430
+      thresholdDelta: null,
431
+      thresholdTime: null
432
+    }
433
+  },
434
+  create: function create() {
435
+    var swiper = this;
436
+    (0, _utils.bindModuleMethods)(swiper, {
437
+      mousewheel: {
438
+        enabled: false,
439
+        lastScrollTime: (0, _utils.now)(),
440
+        lastEventBeforeSnap: undefined,
441
+        recentWheelEvents: [],
442
+        enable: Mousewheel.enable,
443
+        disable: Mousewheel.disable,
444
+        handle: Mousewheel.handle,
445
+        handleMouseEnter: Mousewheel.handleMouseEnter,
446
+        handleMouseLeave: Mousewheel.handleMouseLeave,
447
+        animateSlider: Mousewheel.animateSlider,
448
+        releaseScroll: Mousewheel.releaseScroll
449
+      }
450
+    });
451
+  },
452
+  on: {
453
+    init: function init(swiper) {
454
+      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
455
+        swiper.mousewheel.disable();
456
+      }
457
+
458
+      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
459
+    },
460
+    destroy: function destroy(swiper) {
461
+      if (swiper.params.cssMode) {
462
+        swiper.mousewheel.enable();
463
+      }
464
+
465
+      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
466
+    }
467
+  }
468
+};
469
+exports.default = _default;
0 470
\ No newline at end of file
1 471
new file mode 100644
... ...
@@ -0,0 +1,174 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Navigation = {
15
+  update: function update() {
16
+    // Update Navigation Buttons
17
+    var swiper = this;
18
+    var params = swiper.params.navigation;
19
+    if (swiper.params.loop) return;
20
+    var _swiper$navigation = swiper.navigation,
21
+        $nextEl = _swiper$navigation.$nextEl,
22
+        $prevEl = _swiper$navigation.$prevEl;
23
+
24
+    if ($prevEl && $prevEl.length > 0) {
25
+      if (swiper.isBeginning) {
26
+        $prevEl.addClass(params.disabledClass);
27
+      } else {
28
+        $prevEl.removeClass(params.disabledClass);
29
+      }
30
+
31
+      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
32
+    }
33
+
34
+    if ($nextEl && $nextEl.length > 0) {
35
+      if (swiper.isEnd) {
36
+        $nextEl.addClass(params.disabledClass);
37
+      } else {
38
+        $nextEl.removeClass(params.disabledClass);
39
+      }
40
+
41
+      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
42
+    }
43
+  },
44
+  onPrevClick: function onPrevClick(e) {
45
+    var swiper = this;
46
+    e.preventDefault();
47
+    if (swiper.isBeginning && !swiper.params.loop) return;
48
+    swiper.slidePrev();
49
+  },
50
+  onNextClick: function onNextClick(e) {
51
+    var swiper = this;
52
+    e.preventDefault();
53
+    if (swiper.isEnd && !swiper.params.loop) return;
54
+    swiper.slideNext();
55
+  },
56
+  init: function init() {
57
+    var swiper = this;
58
+    var params = swiper.params.navigation;
59
+    if (!(params.nextEl || params.prevEl)) return;
60
+    var $nextEl;
61
+    var $prevEl;
62
+
63
+    if (params.nextEl) {
64
+      $nextEl = (0, _dom.default)(params.nextEl);
65
+
66
+      if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
67
+        $nextEl = swiper.$el.find(params.nextEl);
68
+      }
69
+    }
70
+
71
+    if (params.prevEl) {
72
+      $prevEl = (0, _dom.default)(params.prevEl);
73
+
74
+      if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
75
+        $prevEl = swiper.$el.find(params.prevEl);
76
+      }
77
+    }
78
+
79
+    if ($nextEl && $nextEl.length > 0) {
80
+      $nextEl.on('click', swiper.navigation.onNextClick);
81
+    }
82
+
83
+    if ($prevEl && $prevEl.length > 0) {
84
+      $prevEl.on('click', swiper.navigation.onPrevClick);
85
+    }
86
+
87
+    (0, _utils.extend)(swiper.navigation, {
88
+      $nextEl: $nextEl,
89
+      nextEl: $nextEl && $nextEl[0],
90
+      $prevEl: $prevEl,
91
+      prevEl: $prevEl && $prevEl[0]
92
+    });
93
+  },
94
+  destroy: function destroy() {
95
+    var swiper = this;
96
+    var _swiper$navigation2 = swiper.navigation,
97
+        $nextEl = _swiper$navigation2.$nextEl,
98
+        $prevEl = _swiper$navigation2.$prevEl;
99
+
100
+    if ($nextEl && $nextEl.length) {
101
+      $nextEl.off('click', swiper.navigation.onNextClick);
102
+      $nextEl.removeClass(swiper.params.navigation.disabledClass);
103
+    }
104
+
105
+    if ($prevEl && $prevEl.length) {
106
+      $prevEl.off('click', swiper.navigation.onPrevClick);
107
+      $prevEl.removeClass(swiper.params.navigation.disabledClass);
108
+    }
109
+  }
110
+};
111
+var _default = {
112
+  name: 'navigation',
113
+  params: {
114
+    navigation: {
115
+      nextEl: null,
116
+      prevEl: null,
117
+      hideOnClick: false,
118
+      disabledClass: 'swiper-button-disabled',
119
+      hiddenClass: 'swiper-button-hidden',
120
+      lockClass: 'swiper-button-lock'
121
+    }
122
+  },
123
+  create: function create() {
124
+    var swiper = this;
125
+    (0, _utils.bindModuleMethods)(swiper, {
126
+      navigation: _extends({}, Navigation)
127
+    });
128
+  },
129
+  on: {
130
+    init: function init(swiper) {
131
+      swiper.navigation.init();
132
+      swiper.navigation.update();
133
+    },
134
+    toEdge: function toEdge(swiper) {
135
+      swiper.navigation.update();
136
+    },
137
+    fromEdge: function fromEdge(swiper) {
138
+      swiper.navigation.update();
139
+    },
140
+    destroy: function destroy(swiper) {
141
+      swiper.navigation.destroy();
142
+    },
143
+    click: function click(swiper, e) {
144
+      var _swiper$navigation3 = swiper.navigation,
145
+          $nextEl = _swiper$navigation3.$nextEl,
146
+          $prevEl = _swiper$navigation3.$prevEl;
147
+
148
+      if (swiper.params.navigation.hideOnClick && !(0, _dom.default)(e.target).is($prevEl) && !(0, _dom.default)(e.target).is($nextEl)) {
149
+        var isHidden;
150
+
151
+        if ($nextEl) {
152
+          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
153
+        } else if ($prevEl) {
154
+          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
155
+        }
156
+
157
+        if (isHidden === true) {
158
+          swiper.emit('navigationShow');
159
+        } else {
160
+          swiper.emit('navigationHide');
161
+        }
162
+
163
+        if ($nextEl) {
164
+          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
165
+        }
166
+
167
+        if ($prevEl) {
168
+          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
169
+        }
170
+      }
171
+    }
172
+  }
173
+};
174
+exports.default = _default;
0 175
\ No newline at end of file
1 176
new file mode 100644
... ...
@@ -0,0 +1,367 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Pagination = {
15
+  update: function update() {
16
+    // Render || Update Pagination bullets/items
17
+    var swiper = this;
18
+    var rtl = swiper.rtl;
19
+    var params = swiper.params.pagination;
20
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
21
+    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
22
+    var $el = swiper.pagination.$el; // Current/Total
23
+
24
+    var current;
25
+    var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
26
+
27
+    if (swiper.params.loop) {
28
+      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
29
+
30
+      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
31
+        current -= slidesLength - swiper.loopedSlides * 2;
32
+      }
33
+
34
+      if (current > total - 1) current -= total;
35
+      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
36
+    } else if (typeof swiper.snapIndex !== 'undefined') {
37
+      current = swiper.snapIndex;
38
+    } else {
39
+      current = swiper.activeIndex || 0;
40
+    } // Types
41
+
42
+
43
+    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
44
+      var bullets = swiper.pagination.bullets;
45
+      var firstIndex;
46
+      var lastIndex;
47
+      var midIndex;
48
+
49
+      if (params.dynamicBullets) {
50
+        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
51
+        $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
52
+
53
+        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
54
+          swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
55
+
56
+          if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
57
+            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
58
+          } else if (swiper.pagination.dynamicBulletIndex < 0) {
59
+            swiper.pagination.dynamicBulletIndex = 0;
60
+          }
61
+        }
62
+
63
+        firstIndex = current - swiper.pagination.dynamicBulletIndex;
64
+        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
65
+        midIndex = (lastIndex + firstIndex) / 2;
66
+      }
67
+
68
+      bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
69
+
70
+      if ($el.length > 1) {
71
+        bullets.each(function (bullet) {
72
+          var $bullet = (0, _dom.default)(bullet);
73
+          var bulletIndex = $bullet.index();
74
+
75
+          if (bulletIndex === current) {
76
+            $bullet.addClass(params.bulletActiveClass);
77
+          }
78
+
79
+          if (params.dynamicBullets) {
80
+            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
81
+              $bullet.addClass(params.bulletActiveClass + "-main");
82
+            }
83
+
84
+            if (bulletIndex === firstIndex) {
85
+              $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
86
+            }
87
+
88
+            if (bulletIndex === lastIndex) {
89
+              $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
90
+            }
91
+          }
92
+        });
93
+      } else {
94
+        var $bullet = bullets.eq(current);
95
+        var bulletIndex = $bullet.index();
96
+        $bullet.addClass(params.bulletActiveClass);
97
+
98
+        if (params.dynamicBullets) {
99
+          var $firstDisplayedBullet = bullets.eq(firstIndex);
100
+          var $lastDisplayedBullet = bullets.eq(lastIndex);
101
+
102
+          for (var i = firstIndex; i <= lastIndex; i += 1) {
103
+            bullets.eq(i).addClass(params.bulletActiveClass + "-main");
104
+          }
105
+
106
+          if (swiper.params.loop) {
107
+            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
108
+              for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
109
+                bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
110
+              }
111
+
112
+              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
113
+            } else {
114
+              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
115
+              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
116
+            }
117
+          } else {
118
+            $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
119
+            $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
120
+          }
121
+        }
122
+      }
123
+
124
+      if (params.dynamicBullets) {
125
+        var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
126
+        var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
127
+        var offsetProp = rtl ? 'right' : 'left';
128
+        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
129
+      }
130
+    }
131
+
132
+    if (params.type === 'fraction') {
133
+      $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
134
+      $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
135
+    }
136
+
137
+    if (params.type === 'progressbar') {
138
+      var progressbarDirection;
139
+
140
+      if (params.progressbarOpposite) {
141
+        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
142
+      } else {
143
+        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
144
+      }
145
+
146
+      var scale = (current + 1) / total;
147
+      var scaleX = 1;
148
+      var scaleY = 1;
149
+
150
+      if (progressbarDirection === 'horizontal') {
151
+        scaleX = scale;
152
+      } else {
153
+        scaleY = scale;
154
+      }
155
+
156
+      $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
157
+    }
158
+
159
+    if (params.type === 'custom' && params.renderCustom) {
160
+      $el.html(params.renderCustom(swiper, current + 1, total));
161
+      swiper.emit('paginationRender', $el[0]);
162
+    } else {
163
+      swiper.emit('paginationUpdate', $el[0]);
164
+    }
165
+
166
+    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
167
+  },
168
+  render: function render() {
169
+    // Render Container
170
+    var swiper = this;
171
+    var params = swiper.params.pagination;
172
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
173
+    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
174
+    var $el = swiper.pagination.$el;
175
+    var paginationHTML = '';
176
+
177
+    if (params.type === 'bullets') {
178
+      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
179
+
180
+      for (var i = 0; i < numberOfBullets; i += 1) {
181
+        if (params.renderBullet) {
182
+          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
183
+        } else {
184
+          paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
185
+        }
186
+      }
187
+
188
+      $el.html(paginationHTML);
189
+      swiper.pagination.bullets = $el.find("." + params.bulletClass);
190
+    }
191
+
192
+    if (params.type === 'fraction') {
193
+      if (params.renderFraction) {
194
+        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
195
+      } else {
196
+        paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
197
+      }
198
+
199
+      $el.html(paginationHTML);
200
+    }
201
+
202
+    if (params.type === 'progressbar') {
203
+      if (params.renderProgressbar) {
204
+        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
205
+      } else {
206
+        paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
207
+      }
208
+
209
+      $el.html(paginationHTML);
210
+    }
211
+
212
+    if (params.type !== 'custom') {
213
+      swiper.emit('paginationRender', swiper.pagination.$el[0]);
214
+    }
215
+  },
216
+  init: function init() {
217
+    var swiper = this;
218
+    var params = swiper.params.pagination;
219
+    if (!params.el) return;
220
+    var $el = (0, _dom.default)(params.el);
221
+    if ($el.length === 0) return;
222
+
223
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
224
+      $el = swiper.$el.find(params.el);
225
+    }
226
+
227
+    if (params.type === 'bullets' && params.clickable) {
228
+      $el.addClass(params.clickableClass);
229
+    }
230
+
231
+    $el.addClass(params.modifierClass + params.type);
232
+
233
+    if (params.type === 'bullets' && params.dynamicBullets) {
234
+      $el.addClass("" + params.modifierClass + params.type + "-dynamic");
235
+      swiper.pagination.dynamicBulletIndex = 0;
236
+
237
+      if (params.dynamicMainBullets < 1) {
238
+        params.dynamicMainBullets = 1;
239
+      }
240
+    }
241
+
242
+    if (params.type === 'progressbar' && params.progressbarOpposite) {
243
+      $el.addClass(params.progressbarOppositeClass);
244
+    }
245
+
246
+    if (params.clickable) {
247
+      $el.on('click', "." + params.bulletClass, function onClick(e) {
248
+        e.preventDefault();
249
+        var index = (0, _dom.default)(this).index() * swiper.params.slidesPerGroup;
250
+        if (swiper.params.loop) index += swiper.loopedSlides;
251
+        swiper.slideTo(index);
252
+      });
253
+    }
254
+
255
+    (0, _utils.extend)(swiper.pagination, {
256
+      $el: $el,
257
+      el: $el[0]
258
+    });
259
+  },
260
+  destroy: function destroy() {
261
+    var swiper = this;
262
+    var params = swiper.params.pagination;
263
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
264
+    var $el = swiper.pagination.$el;
265
+    $el.removeClass(params.hiddenClass);
266
+    $el.removeClass(params.modifierClass + params.type);
267
+    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
268
+
269
+    if (params.clickable) {
270
+      $el.off('click', "." + params.bulletClass);
271
+    }
272
+  }
273
+};
274
+var _default = {
275
+  name: 'pagination',
276
+  params: {
277
+    pagination: {
278
+      el: null,
279
+      bulletElement: 'span',
280
+      clickable: false,
281
+      hideOnClick: false,
282
+      renderBullet: null,
283
+      renderProgressbar: null,
284
+      renderFraction: null,
285
+      renderCustom: null,
286
+      progressbarOpposite: false,
287
+      type: 'bullets',
288
+      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
289
+      dynamicBullets: false,
290
+      dynamicMainBullets: 1,
291
+      formatFractionCurrent: function formatFractionCurrent(number) {
292
+        return number;
293
+      },
294
+      formatFractionTotal: function formatFractionTotal(number) {
295
+        return number;
296
+      },
297
+      bulletClass: 'swiper-pagination-bullet',
298
+      bulletActiveClass: 'swiper-pagination-bullet-active',
299
+      modifierClass: 'swiper-pagination-',
300
+      // NEW
301
+      currentClass: 'swiper-pagination-current',
302
+      totalClass: 'swiper-pagination-total',
303
+      hiddenClass: 'swiper-pagination-hidden',
304
+      progressbarFillClass: 'swiper-pagination-progressbar-fill',
305
+      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
306
+      clickableClass: 'swiper-pagination-clickable',
307
+      // NEW
308
+      lockClass: 'swiper-pagination-lock'
309
+    }
310
+  },
311
+  create: function create() {
312
+    var swiper = this;
313
+    (0, _utils.bindModuleMethods)(swiper, {
314
+      pagination: _extends({
315
+        dynamicBulletIndex: 0
316
+      }, Pagination)
317
+    });
318
+  },
319
+  on: {
320
+    init: function init(swiper) {
321
+      swiper.pagination.init();
322
+      swiper.pagination.render();
323
+      swiper.pagination.update();
324
+    },
325
+    activeIndexChange: function activeIndexChange(swiper) {
326
+      if (swiper.params.loop) {
327
+        swiper.pagination.update();
328
+      } else if (typeof swiper.snapIndex === 'undefined') {
329
+        swiper.pagination.update();
330
+      }
331
+    },
332
+    snapIndexChange: function snapIndexChange(swiper) {
333
+      if (!swiper.params.loop) {
334
+        swiper.pagination.update();
335
+      }
336
+    },
337
+    slidesLengthChange: function slidesLengthChange(swiper) {
338
+      if (swiper.params.loop) {
339
+        swiper.pagination.render();
340
+        swiper.pagination.update();
341
+      }
342
+    },
343
+    snapGridLengthChange: function snapGridLengthChange(swiper) {
344
+      if (!swiper.params.loop) {
345
+        swiper.pagination.render();
346
+        swiper.pagination.update();
347
+      }
348
+    },
349
+    destroy: function destroy(swiper) {
350
+      swiper.pagination.destroy();
351
+    },
352
+    click: function click(swiper, e) {
353
+      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !(0, _dom.default)(e.target).hasClass(swiper.params.pagination.bulletClass)) {
354
+        var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
355
+
356
+        if (isHidden === true) {
357
+          swiper.emit('paginationShow');
358
+        } else {
359
+          swiper.emit('paginationHide');
360
+        }
361
+
362
+        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
363
+      }
364
+    }
365
+  }
366
+};
367
+exports.default = _default;
0 368
\ No newline at end of file
1 369
new file mode 100644
... ...
@@ -0,0 +1,131 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var 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
+};
98
+var _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
+};
131
+exports.default = _default;
0 132
\ No newline at end of file
1 133
new file mode 100644
... ...
@@ -0,0 +1,356 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../utils/dom"));
9
+
10
+var _utils = require("../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function _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); }
15
+
16
+var Scrollbar = {
17
+  setTranslate: function setTranslate() {
18
+    var swiper = this;
19
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
20
+    var scrollbar = swiper.scrollbar,
21
+        rtl = swiper.rtlTranslate,
22
+        progress = swiper.progress;
23
+    var dragSize = scrollbar.dragSize,
24
+        trackSize = scrollbar.trackSize,
25
+        $dragEl = scrollbar.$dragEl,
26
+        $el = scrollbar.$el;
27
+    var params = swiper.params.scrollbar;
28
+    var newSize = dragSize;
29
+    var newPos = (trackSize - dragSize) * progress;
30
+
31
+    if (rtl) {
32
+      newPos = -newPos;
33
+
34
+      if (newPos > 0) {
35
+        newSize = dragSize - newPos;
36
+        newPos = 0;
37
+      } else if (-newPos + dragSize > trackSize) {
38
+        newSize = trackSize + newPos;
39
+      }
40
+    } else if (newPos < 0) {
41
+      newSize = dragSize + newPos;
42
+      newPos = 0;
43
+    } else if (newPos + dragSize > trackSize) {
44
+      newSize = trackSize - newPos;
45
+    }
46
+
47
+    if (swiper.isHorizontal()) {
48
+      $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
49
+      $dragEl[0].style.width = newSize + "px";
50
+    } else {
51
+      $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
52
+      $dragEl[0].style.height = newSize + "px";
53
+    }
54
+
55
+    if (params.hide) {
56
+      clearTimeout(swiper.scrollbar.timeout);
57
+      $el[0].style.opacity = 1;
58
+      swiper.scrollbar.timeout = setTimeout(function () {
59
+        $el[0].style.opacity = 0;
60
+        $el.transition(400);
61
+      }, 1000);
62
+    }
63
+  },
64
+  setTransition: function setTransition(duration) {
65
+    var swiper = this;
66
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
67
+    swiper.scrollbar.$dragEl.transition(duration);
68
+  },
69
+  updateSize: function updateSize() {
70
+    var swiper = this;
71
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
72
+    var scrollbar = swiper.scrollbar;
73
+    var $dragEl = scrollbar.$dragEl,
74
+        $el = scrollbar.$el;
75
+    $dragEl[0].style.width = '';
76
+    $dragEl[0].style.height = '';
77
+    var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
78
+    var divider = swiper.size / swiper.virtualSize;
79
+    var moveDivider = divider * (trackSize / swiper.size);
80
+    var dragSize;
81
+
82
+    if (swiper.params.scrollbar.dragSize === 'auto') {
83
+      dragSize = trackSize * divider;
84
+    } else {
85
+      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
86
+    }
87
+
88
+    if (swiper.isHorizontal()) {
89
+      $dragEl[0].style.width = dragSize + "px";
90
+    } else {
91
+      $dragEl[0].style.height = dragSize + "px";
92
+    }
93
+
94
+    if (divider >= 1) {
95
+      $el[0].style.display = 'none';
96
+    } else {
97
+      $el[0].style.display = '';
98
+    }
99
+
100
+    if (swiper.params.scrollbar.hide) {
101
+      $el[0].style.opacity = 0;
102
+    }
103
+
104
+    (0, _utils.extend)(scrollbar, {
105
+      trackSize: trackSize,
106
+      divider: divider,
107
+      moveDivider: moveDivider,
108
+      dragSize: dragSize
109
+    });
110
+    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
111
+  },
112
+  getPointerPosition: function getPointerPosition(e) {
113
+    var swiper = this;
114
+
115
+    if (swiper.isHorizontal()) {
116
+      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
117
+    }
118
+
119
+    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
120
+  },
121
+  setDragPosition: function setDragPosition(e) {
122
+    var swiper = this;
123
+    var scrollbar = swiper.scrollbar,
124
+        rtl = swiper.rtlTranslate;
125
+    var $el = scrollbar.$el,
126
+        dragSize = scrollbar.dragSize,
127
+        trackSize = scrollbar.trackSize,
128
+        dragStartPos = scrollbar.dragStartPos;
129
+    var positionRatio;
130
+    positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
131
+    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
132
+
133
+    if (rtl) {
134
+      positionRatio = 1 - positionRatio;
135
+    }
136
+
137
+    var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
138
+    swiper.updateProgress(position);
139
+    swiper.setTranslate(position);
140
+    swiper.updateActiveIndex();
141
+    swiper.updateSlidesClasses();
142
+  },
143
+  onDragStart: function onDragStart(e) {
144
+    var swiper = this;
145
+    var params = swiper.params.scrollbar;
146
+    var scrollbar = swiper.scrollbar,
147
+        $wrapperEl = swiper.$wrapperEl;
148
+    var $el = scrollbar.$el,
149
+        $dragEl = scrollbar.$dragEl;
150
+    swiper.scrollbar.isTouched = true;
151
+    swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
152
+    e.preventDefault();
153
+    e.stopPropagation();
154
+    $wrapperEl.transition(100);
155
+    $dragEl.transition(100);
156
+    scrollbar.setDragPosition(e);
157
+    clearTimeout(swiper.scrollbar.dragTimeout);
158
+    $el.transition(0);
159
+
160
+    if (params.hide) {
161
+      $el.css('opacity', 1);
162
+    }
163
+
164
+    if (swiper.params.cssMode) {
165
+      swiper.$wrapperEl.css('scroll-snap-type', 'none');
166
+    }
167
+
168
+    swiper.emit('scrollbarDragStart', e);
169
+  },
170
+  onDragMove: function onDragMove(e) {
171
+    var swiper = this;
172
+    var scrollbar = swiper.scrollbar,
173
+        $wrapperEl = swiper.$wrapperEl;
174
+    var $el = scrollbar.$el,
175
+        $dragEl = scrollbar.$dragEl;
176
+    if (!swiper.scrollbar.isTouched) return;
177
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
178
+    scrollbar.setDragPosition(e);
179
+    $wrapperEl.transition(0);
180
+    $el.transition(0);
181
+    $dragEl.transition(0);
182
+    swiper.emit('scrollbarDragMove', e);
183
+  },
184
+  onDragEnd: function onDragEnd(e) {
185
+    var swiper = this;
186
+    var params = swiper.params.scrollbar;
187
+    var scrollbar = swiper.scrollbar,
188
+        $wrapperEl = swiper.$wrapperEl;
189
+    var $el = scrollbar.$el;
190
+    if (!swiper.scrollbar.isTouched) return;
191
+    swiper.scrollbar.isTouched = false;
192
+
193
+    if (swiper.params.cssMode) {
194
+      swiper.$wrapperEl.css('scroll-snap-type', '');
195
+      $wrapperEl.transition('');
196
+    }
197
+
198
+    if (params.hide) {
199
+      clearTimeout(swiper.scrollbar.dragTimeout);
200
+      swiper.scrollbar.dragTimeout = (0, _utils.nextTick)(function () {
201
+        $el.css('opacity', 0);
202
+        $el.transition(400);
203
+      }, 1000);
204
+    }
205
+
206
+    swiper.emit('scrollbarDragEnd', e);
207
+
208
+    if (params.snapOnRelease) {
209
+      swiper.slideToClosest();
210
+    }
211
+  },
212
+  enableDraggable: function enableDraggable() {
213
+    var swiper = this;
214
+    if (!swiper.params.scrollbar.el) return;
215
+    var document = (0, _ssrWindow.getDocument)();
216
+    var scrollbar = swiper.scrollbar,
217
+        touchEventsTouch = swiper.touchEventsTouch,
218
+        touchEventsDesktop = swiper.touchEventsDesktop,
219
+        params = swiper.params,
220
+        support = swiper.support;
221
+    var $el = scrollbar.$el;
222
+    var target = $el[0];
223
+    var activeListener = support.passiveListener && params.passiveListeners ? {
224
+      passive: false,
225
+      capture: false
226
+    } : false;
227
+    var passiveListener = support.passiveListener && params.passiveListeners ? {
228
+      passive: true,
229
+      capture: false
230
+    } : false;
231
+
232
+    if (!support.touch) {
233
+      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
234
+      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
235
+      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
236
+    } else {
237
+      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
238
+      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
239
+      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
240
+    }
241
+  },
242
+  disableDraggable: function disableDraggable() {
243
+    var swiper = this;
244
+    if (!swiper.params.scrollbar.el) return;
245
+    var document = (0, _ssrWindow.getDocument)();
246
+    var scrollbar = swiper.scrollbar,
247
+        touchEventsTouch = swiper.touchEventsTouch,
248
+        touchEventsDesktop = swiper.touchEventsDesktop,
249
+        params = swiper.params,
250
+        support = swiper.support;
251
+    var $el = scrollbar.$el;
252
+    var target = $el[0];
253
+    var activeListener = support.passiveListener && params.passiveListeners ? {
254
+      passive: false,
255
+      capture: false
256
+    } : false;
257
+    var passiveListener = support.passiveListener && params.passiveListeners ? {
258
+      passive: true,
259
+      capture: false
260
+    } : false;
261
+
262
+    if (!support.touch) {
263
+      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
264
+      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
265
+      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
266
+    } else {
267
+      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
268
+      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
269
+      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
270
+    }
271
+  },
272
+  init: function init() {
273
+    var swiper = this;
274
+    if (!swiper.params.scrollbar.el) return;
275
+    var scrollbar = swiper.scrollbar,
276
+        $swiperEl = swiper.$el;
277
+    var params = swiper.params.scrollbar;
278
+    var $el = (0, _dom.default)(params.el);
279
+
280
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
281
+      $el = $swiperEl.find(params.el);
282
+    }
283
+
284
+    var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
285
+
286
+    if ($dragEl.length === 0) {
287
+      $dragEl = (0, _dom.default)("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
288
+      $el.append($dragEl);
289
+    }
290
+
291
+    (0, _utils.extend)(scrollbar, {
292
+      $el: $el,
293
+      el: $el[0],
294
+      $dragEl: $dragEl,
295
+      dragEl: $dragEl[0]
296
+    });
297
+
298
+    if (params.draggable) {
299
+      scrollbar.enableDraggable();
300
+    }
301
+  },
302
+  destroy: function destroy() {
303
+    var swiper = this;
304
+    swiper.scrollbar.disableDraggable();
305
+  }
306
+};
307
+var _default = {
308
+  name: 'scrollbar',
309
+  params: {
310
+    scrollbar: {
311
+      el: null,
312
+      dragSize: 'auto',
313
+      hide: false,
314
+      draggable: false,
315
+      snapOnRelease: true,
316
+      lockClass: 'swiper-scrollbar-lock',
317
+      dragClass: 'swiper-scrollbar-drag'
318
+    }
319
+  },
320
+  create: function create() {
321
+    var swiper = this;
322
+    (0, _utils.bindModuleMethods)(swiper, {
323
+      scrollbar: _extends({
324
+        isTouched: false,
325
+        timeout: null,
326
+        dragTimeout: null
327
+      }, Scrollbar)
328
+    });
329
+  },
330
+  on: {
331
+    init: function init(swiper) {
332
+      swiper.scrollbar.init();
333
+      swiper.scrollbar.updateSize();
334
+      swiper.scrollbar.setTranslate();
335
+    },
336
+    update: function update(swiper) {
337
+      swiper.scrollbar.updateSize();
338
+    },
339
+    resize: function resize(swiper) {
340
+      swiper.scrollbar.updateSize();
341
+    },
342
+    observerUpdate: function observerUpdate(swiper) {
343
+      swiper.scrollbar.updateSize();
344
+    },
345
+    setTranslate: function setTranslate(swiper) {
346
+      swiper.scrollbar.setTranslate();
347
+    },
348
+    setTransition: function setTransition(swiper, duration) {
349
+      swiper.scrollbar.setTransition(duration);
350
+    },
351
+    destroy: function destroy(swiper) {
352
+      swiper.scrollbar.destroy();
353
+    }
354
+  }
355
+};
356
+exports.default = _default;
0 357
\ No newline at end of file
1 358
new file mode 100644
... ...
@@ -0,0 +1,212 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _utils = require("../../utils/utils");
7
+
8
+var _dom = _interopRequireDefault(require("../../utils/dom"));
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Thumbs = {
15
+  init: function init() {
16
+    var swiper = this;
17
+    var thumbsParams = swiper.params.thumbs;
18
+    if (swiper.thumbs.initialized) return false;
19
+    swiper.thumbs.initialized = true;
20
+    var SwiperClass = swiper.constructor;
21
+
22
+    if (thumbsParams.swiper instanceof SwiperClass) {
23
+      swiper.thumbs.swiper = thumbsParams.swiper;
24
+      (0, _utils.extend)(swiper.thumbs.swiper.originalParams, {
25
+        watchSlidesProgress: true,
26
+        slideToClickedSlide: false
27
+      });
28
+      (0, _utils.extend)(swiper.thumbs.swiper.params, {
29
+        watchSlidesProgress: true,
30
+        slideToClickedSlide: false
31
+      });
32
+    } else if ((0, _utils.isObject)(thumbsParams.swiper)) {
33
+      swiper.thumbs.swiper = new SwiperClass((0, _utils.extend)({}, thumbsParams.swiper, {
34
+        watchSlidesVisibility: true,
35
+        watchSlidesProgress: true,
36
+        slideToClickedSlide: false
37
+      }));
38
+      swiper.thumbs.swiperCreated = true;
39
+    }
40
+
41
+    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
42
+    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
43
+    return true;
44
+  },
45
+  onThumbClick: function onThumbClick() {
46
+    var swiper = this;
47
+    var thumbsSwiper = swiper.thumbs.swiper;
48
+    if (!thumbsSwiper) return;
49
+    var clickedIndex = thumbsSwiper.clickedIndex;
50
+    var clickedSlide = thumbsSwiper.clickedSlide;
51
+    if (clickedSlide && (0, _dom.default)(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
52
+    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
53
+    var slideToIndex;
54
+
55
+    if (thumbsSwiper.params.loop) {
56
+      slideToIndex = parseInt((0, _dom.default)(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
57
+    } else {
58
+      slideToIndex = clickedIndex;
59
+    }
60
+
61
+    if (swiper.params.loop) {
62
+      var currentIndex = swiper.activeIndex;
63
+
64
+      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
65
+        swiper.loopFix(); // eslint-disable-next-line
66
+
67
+        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
68
+        currentIndex = swiper.activeIndex;
69
+      }
70
+
71
+      var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
72
+      var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
73
+      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
74
+    }
75
+
76
+    swiper.slideTo(slideToIndex);
77
+  },
78
+  update: function update(initial) {
79
+    var swiper = this;
80
+    var thumbsSwiper = swiper.thumbs.swiper;
81
+    if (!thumbsSwiper) return;
82
+    var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
83
+    var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
84
+    var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
85
+
86
+    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
87
+      var currentThumbsIndex = thumbsSwiper.activeIndex;
88
+      var newThumbsIndex;
89
+      var direction;
90
+
91
+      if (thumbsSwiper.params.loop) {
92
+        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
93
+          thumbsSwiper.loopFix(); // eslint-disable-next-line
94
+
95
+          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
96
+          currentThumbsIndex = thumbsSwiper.activeIndex;
97
+        } // Find actual thumbs index to slide to
98
+
99
+
100
+        var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
101
+        var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
102
+        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
103
+        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
104
+      } else {
105
+        newThumbsIndex = swiper.realIndex;
106
+        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
107
+      }
108
+
109
+      if (useOffset) {
110
+        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
111
+      }
112
+
113
+      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
114
+        if (thumbsSwiper.params.centeredSlides) {
115
+          if (newThumbsIndex > currentThumbsIndex) {
116
+            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
117
+          } else {
118
+            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
119
+          }
120
+        } else if (newThumbsIndex > currentThumbsIndex) {
121
+          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
122
+        }
123
+
124
+        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
125
+      }
126
+    } // Activate thumbs
127
+
128
+
129
+    var thumbsToActivate = 1;
130
+    var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
131
+
132
+    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
133
+      thumbsToActivate = swiper.params.slidesPerView;
134
+    }
135
+
136
+    if (!swiper.params.thumbs.multipleActiveThumbs) {
137
+      thumbsToActivate = 1;
138
+    }
139
+
140
+    thumbsToActivate = Math.floor(thumbsToActivate);
141
+    thumbsSwiper.slides.removeClass(thumbActiveClass);
142
+
143
+    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
144
+      for (var i = 0; i < thumbsToActivate; i += 1) {
145
+        thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
146
+      }
147
+    } else {
148
+      for (var _i = 0; _i < thumbsToActivate; _i += 1) {
149
+        thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
150
+      }
151
+    }
152
+  }
153
+};
154
+var _default = {
155
+  name: 'thumbs',
156
+  params: {
157
+    thumbs: {
158
+      swiper: null,
159
+      multipleActiveThumbs: true,
160
+      autoScrollOffset: 0,
161
+      slideThumbActiveClass: 'swiper-slide-thumb-active',
162
+      thumbsContainerClass: 'swiper-container-thumbs'
163
+    }
164
+  },
165
+  create: function create() {
166
+    var swiper = this;
167
+    (0, _utils.bindModuleMethods)(swiper, {
168
+      thumbs: _extends({
169
+        swiper: null,
170
+        initialized: false
171
+      }, Thumbs)
172
+    });
173
+  },
174
+  on: {
175
+    beforeInit: function beforeInit(swiper) {
176
+      var thumbs = swiper.params.thumbs;
177
+      if (!thumbs || !thumbs.swiper) return;
178
+      swiper.thumbs.init();
179
+      swiper.thumbs.update(true);
180
+    },
181
+    slideChange: function slideChange(swiper) {
182
+      if (!swiper.thumbs.swiper) return;
183
+      swiper.thumbs.update();
184
+    },
185
+    update: function update(swiper) {
186
+      if (!swiper.thumbs.swiper) return;
187
+      swiper.thumbs.update();
188
+    },
189
+    resize: function resize(swiper) {
190
+      if (!swiper.thumbs.swiper) return;
191
+      swiper.thumbs.update();
192
+    },
193
+    observerUpdate: function observerUpdate(swiper) {
194
+      if (!swiper.thumbs.swiper) return;
195
+      swiper.thumbs.update();
196
+    },
197
+    setTransition: function setTransition(swiper, duration) {
198
+      var thumbsSwiper = swiper.thumbs.swiper;
199
+      if (!thumbsSwiper) return;
200
+      thumbsSwiper.setTransition(duration);
201
+    },
202
+    beforeDestroy: function beforeDestroy(swiper) {
203
+      var thumbsSwiper = swiper.thumbs.swiper;
204
+      if (!thumbsSwiper) return;
205
+
206
+      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
207
+        thumbsSwiper.destroy();
208
+      }
209
+    }
210
+  }
211
+};
212
+exports.default = _default;
0 213
\ No newline at end of file
1 214
new file mode 100644
... ...
@@ -0,0 +1,280 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Virtual = {
15
+  update: function update(force) {
16
+    var swiper = this;
17
+    var _swiper$params = swiper.params,
18
+        slidesPerView = _swiper$params.slidesPerView,
19
+        slidesPerGroup = _swiper$params.slidesPerGroup,
20
+        centeredSlides = _swiper$params.centeredSlides;
21
+    var _swiper$params$virtua = swiper.params.virtual,
22
+        addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
23
+        addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
24
+    var _swiper$virtual = swiper.virtual,
25
+        previousFrom = _swiper$virtual.from,
26
+        previousTo = _swiper$virtual.to,
27
+        slides = _swiper$virtual.slides,
28
+        previousSlidesGrid = _swiper$virtual.slidesGrid,
29
+        renderSlide = _swiper$virtual.renderSlide,
30
+        previousOffset = _swiper$virtual.offset;
31
+    swiper.updateActiveIndex();
32
+    var activeIndex = swiper.activeIndex || 0;
33
+    var offsetProp;
34
+    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
35
+    var slidesAfter;
36
+    var slidesBefore;
37
+
38
+    if (centeredSlides) {
39
+      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
40
+      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
41
+    } else {
42
+      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
43
+      slidesBefore = slidesPerGroup + addSlidesBefore;
44
+    }
45
+
46
+    var from = Math.max((activeIndex || 0) - slidesBefore, 0);
47
+    var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
48
+    var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
49
+    (0, _utils.extend)(swiper.virtual, {
50
+      from: from,
51
+      to: to,
52
+      offset: offset,
53
+      slidesGrid: swiper.slidesGrid
54
+    });
55
+
56
+    function onRendered() {
57
+      swiper.updateSlides();
58
+      swiper.updateProgress();
59
+      swiper.updateSlidesClasses();
60
+
61
+      if (swiper.lazy && swiper.params.lazy.enabled) {
62
+        swiper.lazy.load();
63
+      }
64
+    }
65
+
66
+    if (previousFrom === from && previousTo === to && !force) {
67
+      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
68
+        swiper.slides.css(offsetProp, offset + "px");
69
+      }
70
+
71
+      swiper.updateProgress();
72
+      return;
73
+    }
74
+
75
+    if (swiper.params.virtual.renderExternal) {
76
+      swiper.params.virtual.renderExternal.call(swiper, {
77
+        offset: offset,
78
+        from: from,
79
+        to: to,
80
+        slides: function getSlides() {
81
+          var slidesToRender = [];
82
+
83
+          for (var i = from; i <= to; i += 1) {
84
+            slidesToRender.push(slides[i]);
85
+          }
86
+
87
+          return slidesToRender;
88
+        }()
89
+      });
90
+
91
+      if (swiper.params.virtual.renderExternalUpdate) {
92
+        onRendered();
93
+      }
94
+
95
+      return;
96
+    }
97
+
98
+    var prependIndexes = [];
99
+    var appendIndexes = [];
100
+
101
+    if (force) {
102
+      swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
103
+    } else {
104
+      for (var i = previousFrom; i <= previousTo; i += 1) {
105
+        if (i < from || i > to) {
106
+          swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
107
+        }
108
+      }
109
+    }
110
+
111
+    for (var _i = 0; _i < slides.length; _i += 1) {
112
+      if (_i >= from && _i <= to) {
113
+        if (typeof previousTo === 'undefined' || force) {
114
+          appendIndexes.push(_i);
115
+        } else {
116
+          if (_i > previousTo) appendIndexes.push(_i);
117
+          if (_i < previousFrom) prependIndexes.push(_i);
118
+        }
119
+      }
120
+    }
121
+
122
+    appendIndexes.forEach(function (index) {
123
+      swiper.$wrapperEl.append(renderSlide(slides[index], index));
124
+    });
125
+    prependIndexes.sort(function (a, b) {
126
+      return b - a;
127
+    }).forEach(function (index) {
128
+      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
129
+    });
130
+    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
131
+    onRendered();
132
+  },
133
+  renderSlide: function renderSlide(slide, index) {
134
+    var swiper = this;
135
+    var params = swiper.params.virtual;
136
+
137
+    if (params.cache && swiper.virtual.cache[index]) {
138
+      return swiper.virtual.cache[index];
139
+    }
140
+
141
+    var $slideEl = params.renderSlide ? (0, _dom.default)(params.renderSlide.call(swiper, slide, index)) : (0, _dom.default)("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
142
+    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
143
+    if (params.cache) swiper.virtual.cache[index] = $slideEl;
144
+    return $slideEl;
145
+  },
146
+  appendSlide: function appendSlide(slides) {
147
+    var swiper = this;
148
+
149
+    if (typeof slides === 'object' && 'length' in slides) {
150
+      for (var i = 0; i < slides.length; i += 1) {
151
+        if (slides[i]) swiper.virtual.slides.push(slides[i]);
152
+      }
153
+    } else {
154
+      swiper.virtual.slides.push(slides);
155
+    }
156
+
157
+    swiper.virtual.update(true);
158
+  },
159
+  prependSlide: function prependSlide(slides) {
160
+    var swiper = this;
161
+    var activeIndex = swiper.activeIndex;
162
+    var newActiveIndex = activeIndex + 1;
163
+    var numberOfNewSlides = 1;
164
+
165
+    if (Array.isArray(slides)) {
166
+      for (var i = 0; i < slides.length; i += 1) {
167
+        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
168
+      }
169
+
170
+      newActiveIndex = activeIndex + slides.length;
171
+      numberOfNewSlides = slides.length;
172
+    } else {
173
+      swiper.virtual.slides.unshift(slides);
174
+    }
175
+
176
+    if (swiper.params.virtual.cache) {
177
+      var cache = swiper.virtual.cache;
178
+      var newCache = {};
179
+      Object.keys(cache).forEach(function (cachedIndex) {
180
+        var $cachedEl = cache[cachedIndex];
181
+        var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
182
+
183
+        if (cachedElIndex) {
184
+          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
185
+        }
186
+
187
+        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
188
+      });
189
+      swiper.virtual.cache = newCache;
190
+    }
191
+
192
+    swiper.virtual.update(true);
193
+    swiper.slideTo(newActiveIndex, 0);
194
+  },
195
+  removeSlide: function removeSlide(slidesIndexes) {
196
+    var swiper = this;
197
+    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
198
+    var activeIndex = swiper.activeIndex;
199
+
200
+    if (Array.isArray(slidesIndexes)) {
201
+      for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
202
+        swiper.virtual.slides.splice(slidesIndexes[i], 1);
203
+
204
+        if (swiper.params.virtual.cache) {
205
+          delete swiper.virtual.cache[slidesIndexes[i]];
206
+        }
207
+
208
+        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
209
+        activeIndex = Math.max(activeIndex, 0);
210
+      }
211
+    } else {
212
+      swiper.virtual.slides.splice(slidesIndexes, 1);
213
+
214
+      if (swiper.params.virtual.cache) {
215
+        delete swiper.virtual.cache[slidesIndexes];
216
+      }
217
+
218
+      if (slidesIndexes < activeIndex) activeIndex -= 1;
219
+      activeIndex = Math.max(activeIndex, 0);
220
+    }
221
+
222
+    swiper.virtual.update(true);
223
+    swiper.slideTo(activeIndex, 0);
224
+  },
225
+  removeAllSlides: function removeAllSlides() {
226
+    var swiper = this;
227
+    swiper.virtual.slides = [];
228
+
229
+    if (swiper.params.virtual.cache) {
230
+      swiper.virtual.cache = {};
231
+    }
232
+
233
+    swiper.virtual.update(true);
234
+    swiper.slideTo(0, 0);
235
+  }
236
+};
237
+var _default = {
238
+  name: 'virtual',
239
+  params: {
240
+    virtual: {
241
+      enabled: false,
242
+      slides: [],
243
+      cache: true,
244
+      renderSlide: null,
245
+      renderExternal: null,
246
+      renderExternalUpdate: true,
247
+      addSlidesBefore: 0,
248
+      addSlidesAfter: 0
249
+    }
250
+  },
251
+  create: function create() {
252
+    var swiper = this;
253
+    (0, _utils.bindModuleMethods)(swiper, {
254
+      virtual: _extends(_extends({}, Virtual), {}, {
255
+        slides: swiper.params.virtual.slides,
256
+        cache: {}
257
+      })
258
+    });
259
+  },
260
+  on: {
261
+    beforeInit: function beforeInit(swiper) {
262
+      if (!swiper.params.virtual.enabled) return;
263
+      swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
264
+      var overwriteParams = {
265
+        watchSlidesProgress: true
266
+      };
267
+      (0, _utils.extend)(swiper.params, overwriteParams);
268
+      (0, _utils.extend)(swiper.originalParams, overwriteParams);
269
+
270
+      if (!swiper.params.initialSlide) {
271
+        swiper.virtual.update();
272
+      }
273
+    },
274
+    setTranslate: function setTranslate(swiper) {
275
+      if (!swiper.params.virtual.enabled) return;
276
+      swiper.virtual.update();
277
+    }
278
+  }
279
+};
280
+exports.default = _default;
0 281
\ No newline at end of file
1 282
new file mode 100644
... ...
@@ -0,0 +1,606 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = _interopRequireDefault(require("../../utils/dom"));
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+function _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
+
14
+var Zoom = {
15
+  // Calc Scale From Multi-touches
16
+  getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
17
+    if (e.targetTouches.length < 2) return 1;
18
+    var x1 = e.targetTouches[0].pageX;
19
+    var y1 = e.targetTouches[0].pageY;
20
+    var x2 = e.targetTouches[1].pageX;
21
+    var y2 = e.targetTouches[1].pageY;
22
+    var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
23
+    return distance;
24
+  },
25
+  // Events
26
+  onGestureStart: function onGestureStart(e) {
27
+    var swiper = this;
28
+    var support = swiper.support;
29
+    var params = swiper.params.zoom;
30
+    var zoom = swiper.zoom;
31
+    var gesture = zoom.gesture;
32
+    zoom.fakeGestureTouched = false;
33
+    zoom.fakeGestureMoved = false;
34
+
35
+    if (!support.gestures) {
36
+      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
37
+        return;
38
+      }
39
+
40
+      zoom.fakeGestureTouched = true;
41
+      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
42
+    }
43
+
44
+    if (!gesture.$slideEl || !gesture.$slideEl.length) {
45
+      gesture.$slideEl = (0, _dom.default)(e.target).closest("." + swiper.params.slideClass);
46
+      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
47
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
48
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
49
+      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
50
+
51
+      if (gesture.$imageWrapEl.length === 0) {
52
+        gesture.$imageEl = undefined;
53
+        return;
54
+      }
55
+    }
56
+
57
+    if (gesture.$imageEl) {
58
+      gesture.$imageEl.transition(0);
59
+    }
60
+
61
+    swiper.zoom.isScaling = true;
62
+  },
63
+  onGestureChange: function onGestureChange(e) {
64
+    var swiper = this;
65
+    var support = swiper.support;
66
+    var params = swiper.params.zoom;
67
+    var zoom = swiper.zoom;
68
+    var gesture = zoom.gesture;
69
+
70
+    if (!support.gestures) {
71
+      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
72
+        return;
73
+      }
74
+
75
+      zoom.fakeGestureMoved = true;
76
+      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
77
+    }
78
+
79
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
80
+      if (e.type === 'gesturechange') zoom.onGestureStart(e);
81
+      return;
82
+    }
83
+
84
+    if (support.gestures) {
85
+      zoom.scale = e.scale * zoom.currentScale;
86
+    } else {
87
+      zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
88
+    }
89
+
90
+    if (zoom.scale > gesture.maxRatio) {
91
+      zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
92
+    }
93
+
94
+    if (zoom.scale < params.minRatio) {
95
+      zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
96
+    }
97
+
98
+    gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
99
+  },
100
+  onGestureEnd: function onGestureEnd(e) {
101
+    var swiper = this;
102
+    var device = swiper.device;
103
+    var support = swiper.support;
104
+    var params = swiper.params.zoom;
105
+    var zoom = swiper.zoom;
106
+    var gesture = zoom.gesture;
107
+
108
+    if (!support.gestures) {
109
+      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
110
+        return;
111
+      }
112
+
113
+      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
114
+        return;
115
+      }
116
+
117
+      zoom.fakeGestureTouched = false;
118
+      zoom.fakeGestureMoved = false;
119
+    }
120
+
121
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
122
+    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
123
+    gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
124
+    zoom.currentScale = zoom.scale;
125
+    zoom.isScaling = false;
126
+    if (zoom.scale === 1) gesture.$slideEl = undefined;
127
+  },
128
+  onTouchStart: function onTouchStart(e) {
129
+    var swiper = this;
130
+    var device = swiper.device;
131
+    var zoom = swiper.zoom;
132
+    var gesture = zoom.gesture,
133
+        image = zoom.image;
134
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
135
+    if (image.isTouched) return;
136
+    if (device.android && e.cancelable) e.preventDefault();
137
+    image.isTouched = true;
138
+    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
139
+    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
140
+  },
141
+  onTouchMove: function onTouchMove(e) {
142
+    var swiper = this;
143
+    var zoom = swiper.zoom;
144
+    var gesture = zoom.gesture,
145
+        image = zoom.image,
146
+        velocity = zoom.velocity;
147
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
148
+    swiper.allowClick = false;
149
+    if (!image.isTouched || !gesture.$slideEl) return;
150
+
151
+    if (!image.isMoved) {
152
+      image.width = gesture.$imageEl[0].offsetWidth;
153
+      image.height = gesture.$imageEl[0].offsetHeight;
154
+      image.startX = (0, _utils.getTranslate)(gesture.$imageWrapEl[0], 'x') || 0;
155
+      image.startY = (0, _utils.getTranslate)(gesture.$imageWrapEl[0], 'y') || 0;
156
+      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
157
+      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
158
+      gesture.$imageWrapEl.transition(0);
159
+
160
+      if (swiper.rtl) {
161
+        image.startX = -image.startX;
162
+        image.startY = -image.startY;
163
+      }
164
+    } // Define if we need image drag
165
+
166
+
167
+    var scaledWidth = image.width * zoom.scale;
168
+    var scaledHeight = image.height * zoom.scale;
169
+    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
170
+    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
171
+    image.maxX = -image.minX;
172
+    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
173
+    image.maxY = -image.minY;
174
+    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
175
+    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
176
+
177
+    if (!image.isMoved && !zoom.isScaling) {
178
+      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
179
+        image.isTouched = false;
180
+        return;
181
+      }
182
+
183
+      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
184
+        image.isTouched = false;
185
+        return;
186
+      }
187
+    }
188
+
189
+    if (e.cancelable) {
190
+      e.preventDefault();
191
+    }
192
+
193
+    e.stopPropagation();
194
+    image.isMoved = true;
195
+    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
196
+    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
197
+
198
+    if (image.currentX < image.minX) {
199
+      image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
200
+    }
201
+
202
+    if (image.currentX > image.maxX) {
203
+      image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
204
+    }
205
+
206
+    if (image.currentY < image.minY) {
207
+      image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
208
+    }
209
+
210
+    if (image.currentY > image.maxY) {
211
+      image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
212
+    } // Velocity
213
+
214
+
215
+    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
216
+    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
217
+    if (!velocity.prevTime) velocity.prevTime = Date.now();
218
+    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
219
+    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
220
+    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
221
+    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
222
+    velocity.prevPositionX = image.touchesCurrent.x;
223
+    velocity.prevPositionY = image.touchesCurrent.y;
224
+    velocity.prevTime = Date.now();
225
+    gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
226
+  },
227
+  onTouchEnd: function onTouchEnd() {
228
+    var swiper = this;
229
+    var zoom = swiper.zoom;
230
+    var gesture = zoom.gesture,
231
+        image = zoom.image,
232
+        velocity = zoom.velocity;
233
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
234
+
235
+    if (!image.isTouched || !image.isMoved) {
236
+      image.isTouched = false;
237
+      image.isMoved = false;
238
+      return;
239
+    }
240
+
241
+    image.isTouched = false;
242
+    image.isMoved = false;
243
+    var momentumDurationX = 300;
244
+    var momentumDurationY = 300;
245
+    var momentumDistanceX = velocity.x * momentumDurationX;
246
+    var newPositionX = image.currentX + momentumDistanceX;
247
+    var momentumDistanceY = velocity.y * momentumDurationY;
248
+    var newPositionY = image.currentY + momentumDistanceY; // Fix duration
249
+
250
+    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
251
+    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
252
+    var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
253
+    image.currentX = newPositionX;
254
+    image.currentY = newPositionY; // Define if we need image drag
255
+
256
+    var scaledWidth = image.width * zoom.scale;
257
+    var scaledHeight = image.height * zoom.scale;
258
+    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
259
+    image.maxX = -image.minX;
260
+    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
261
+    image.maxY = -image.minY;
262
+    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
263
+    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
264
+    gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
265
+  },
266
+  onTransitionEnd: function onTransitionEnd() {
267
+    var swiper = this;
268
+    var zoom = swiper.zoom;
269
+    var gesture = zoom.gesture;
270
+
271
+    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
272
+      if (gesture.$imageEl) {
273
+        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
274
+      }
275
+
276
+      if (gesture.$imageWrapEl) {
277
+        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
278
+      }
279
+
280
+      zoom.scale = 1;
281
+      zoom.currentScale = 1;
282
+      gesture.$slideEl = undefined;
283
+      gesture.$imageEl = undefined;
284
+      gesture.$imageWrapEl = undefined;
285
+    }
286
+  },
287
+  // Toggle Zoom
288
+  toggle: function toggle(e) {
289
+    var swiper = this;
290
+    var zoom = swiper.zoom;
291
+
292
+    if (zoom.scale && zoom.scale !== 1) {
293
+      // Zoom Out
294
+      zoom.out();
295
+    } else {
296
+      // Zoom In
297
+      zoom.in(e);
298
+    }
299
+  },
300
+  in: function _in(e) {
301
+    var swiper = this;
302
+    var zoom = swiper.zoom;
303
+    var params = swiper.params.zoom;
304
+    var gesture = zoom.gesture,
305
+        image = zoom.image;
306
+
307
+    if (!gesture.$slideEl) {
308
+      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
309
+        gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
310
+      } else {
311
+        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
312
+      }
313
+
314
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
315
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
316
+    }
317
+
318
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
319
+    gesture.$slideEl.addClass("" + params.zoomedSlideClass);
320
+    var touchX;
321
+    var touchY;
322
+    var offsetX;
323
+    var offsetY;
324
+    var diffX;
325
+    var diffY;
326
+    var translateX;
327
+    var translateY;
328
+    var imageWidth;
329
+    var imageHeight;
330
+    var scaledWidth;
331
+    var scaledHeight;
332
+    var translateMinX;
333
+    var translateMinY;
334
+    var translateMaxX;
335
+    var translateMaxY;
336
+    var slideWidth;
337
+    var slideHeight;
338
+
339
+    if (typeof image.touchesStart.x === 'undefined' && e) {
340
+      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
341
+      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
342
+    } else {
343
+      touchX = image.touchesStart.x;
344
+      touchY = image.touchesStart.y;
345
+    }
346
+
347
+    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
348
+    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
349
+
350
+    if (e) {
351
+      slideWidth = gesture.$slideEl[0].offsetWidth;
352
+      slideHeight = gesture.$slideEl[0].offsetHeight;
353
+      offsetX = gesture.$slideEl.offset().left;
354
+      offsetY = gesture.$slideEl.offset().top;
355
+      diffX = offsetX + slideWidth / 2 - touchX;
356
+      diffY = offsetY + slideHeight / 2 - touchY;
357
+      imageWidth = gesture.$imageEl[0].offsetWidth;
358
+      imageHeight = gesture.$imageEl[0].offsetHeight;
359
+      scaledWidth = imageWidth * zoom.scale;
360
+      scaledHeight = imageHeight * zoom.scale;
361
+      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
362
+      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
363
+      translateMaxX = -translateMinX;
364
+      translateMaxY = -translateMinY;
365
+      translateX = diffX * zoom.scale;
366
+      translateY = diffY * zoom.scale;
367
+
368
+      if (translateX < translateMinX) {
369
+        translateX = translateMinX;
370
+      }
371
+
372
+      if (translateX > translateMaxX) {
373
+        translateX = translateMaxX;
374
+      }
375
+
376
+      if (translateY < translateMinY) {
377
+        translateY = translateMinY;
378
+      }
379
+
380
+      if (translateY > translateMaxY) {
381
+        translateY = translateMaxY;
382
+      }
383
+    } else {
384
+      translateX = 0;
385
+      translateY = 0;
386
+    }
387
+
388
+    gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
389
+    gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
390
+  },
391
+  out: function out() {
392
+    var swiper = this;
393
+    var zoom = swiper.zoom;
394
+    var params = swiper.params.zoom;
395
+    var gesture = zoom.gesture;
396
+
397
+    if (!gesture.$slideEl) {
398
+      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
399
+        gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
400
+      } else {
401
+        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
402
+      }
403
+
404
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
405
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
406
+    }
407
+
408
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
409
+    zoom.scale = 1;
410
+    zoom.currentScale = 1;
411
+    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
412
+    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
413
+    gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
414
+    gesture.$slideEl = undefined;
415
+  },
416
+  toggleGestures: function toggleGestures(method) {
417
+    var swiper = this;
418
+    var zoom = swiper.zoom;
419
+    var selector = zoom.slideSelector,
420
+        passive = zoom.passiveListener;
421
+    swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
422
+    swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
423
+    swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
424
+  },
425
+  enableGestures: function enableGestures() {
426
+    if (this.zoom.gesturesEnabled) return;
427
+    this.zoom.gesturesEnabled = true;
428
+    this.zoom.toggleGestures('on');
429
+  },
430
+  disableGestures: function disableGestures() {
431
+    if (!this.zoom.gesturesEnabled) return;
432
+    this.zoom.gesturesEnabled = false;
433
+    this.zoom.toggleGestures('off');
434
+  },
435
+  // Attach/Detach Events
436
+  enable: function enable() {
437
+    var swiper = this;
438
+    var support = swiper.support;
439
+    var zoom = swiper.zoom;
440
+    if (zoom.enabled) return;
441
+    zoom.enabled = true;
442
+    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
443
+      passive: true,
444
+      capture: false
445
+    } : false;
446
+    var activeListenerWithCapture = support.passiveListener ? {
447
+      passive: false,
448
+      capture: true
449
+    } : true;
450
+    var slideSelector = "." + swiper.params.slideClass;
451
+    swiper.zoom.passiveListener = passiveListener;
452
+    swiper.zoom.slideSelector = slideSelector; // Scale image
453
+
454
+    if (support.gestures) {
455
+      swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
456
+      swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
457
+    } else if (swiper.touchEvents.start === 'touchstart') {
458
+      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
459
+      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
460
+      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
461
+
462
+      if (swiper.touchEvents.cancel) {
463
+        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
464
+      }
465
+    } // Move image
466
+
467
+
468
+    swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
469
+  },
470
+  disable: function disable() {
471
+    var swiper = this;
472
+    var zoom = swiper.zoom;
473
+    if (!zoom.enabled) return;
474
+    var support = swiper.support;
475
+    swiper.zoom.enabled = false;
476
+    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
477
+      passive: true,
478
+      capture: false
479
+    } : false;
480
+    var activeListenerWithCapture = support.passiveListener ? {
481
+      passive: false,
482
+      capture: true
483
+    } : true;
484
+    var slideSelector = "." + swiper.params.slideClass; // Scale image
485
+
486
+    if (support.gestures) {
487
+      swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
488
+      swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
489
+    } else if (swiper.touchEvents.start === 'touchstart') {
490
+      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
491
+      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
492
+      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
493
+
494
+      if (swiper.touchEvents.cancel) {
495
+        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
496
+      }
497
+    } // Move image
498
+
499
+
500
+    swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
501
+  }
502
+};
503
+var _default = {
504
+  name: 'zoom',
505
+  params: {
506
+    zoom: {
507
+      enabled: false,
508
+      maxRatio: 3,
509
+      minRatio: 1,
510
+      toggle: true,
511
+      containerClass: 'swiper-zoom-container',
512
+      zoomedSlideClass: 'swiper-slide-zoomed'
513
+    }
514
+  },
515
+  create: function create() {
516
+    var swiper = this;
517
+    (0, _utils.bindModuleMethods)(swiper, {
518
+      zoom: _extends({
519
+        enabled: false,
520
+        scale: 1,
521
+        currentScale: 1,
522
+        isScaling: false,
523
+        gesture: {
524
+          $slideEl: undefined,
525
+          slideWidth: undefined,
526
+          slideHeight: undefined,
527
+          $imageEl: undefined,
528
+          $imageWrapEl: undefined,
529
+          maxRatio: 3
530
+        },
531
+        image: {
532
+          isTouched: undefined,
533
+          isMoved: undefined,
534
+          currentX: undefined,
535
+          currentY: undefined,
536
+          minX: undefined,
537
+          minY: undefined,
538
+          maxX: undefined,
539
+          maxY: undefined,
540
+          width: undefined,
541
+          height: undefined,
542
+          startX: undefined,
543
+          startY: undefined,
544
+          touchesStart: {},
545
+          touchesCurrent: {}
546
+        },
547
+        velocity: {
548
+          x: undefined,
549
+          y: undefined,
550
+          prevPositionX: undefined,
551
+          prevPositionY: undefined,
552
+          prevTime: undefined
553
+        }
554
+      }, Zoom)
555
+    });
556
+    var scale = 1;
557
+    Object.defineProperty(swiper.zoom, 'scale', {
558
+      get: function get() {
559
+        return scale;
560
+      },
561
+      set: function set(value) {
562
+        if (scale !== value) {
563
+          var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
564
+          var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
565
+          swiper.emit('zoomChange', value, imageEl, slideEl);
566
+        }
567
+
568
+        scale = value;
569
+      }
570
+    });
571
+  },
572
+  on: {
573
+    init: function init(swiper) {
574
+      if (swiper.params.zoom.enabled) {
575
+        swiper.zoom.enable();
576
+      }
577
+    },
578
+    destroy: function destroy(swiper) {
579
+      swiper.zoom.disable();
580
+    },
581
+    touchStart: function touchStart(swiper, e) {
582
+      if (!swiper.zoom.enabled) return;
583
+      swiper.zoom.onTouchStart(e);
584
+    },
585
+    touchEnd: function touchEnd(swiper, e) {
586
+      if (!swiper.zoom.enabled) return;
587
+      swiper.zoom.onTouchEnd(e);
588
+    },
589
+    doubleTap: function doubleTap(swiper, e) {
590
+      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
591
+        swiper.zoom.toggle(e);
592
+      }
593
+    },
594
+    transitionEnd: function transitionEnd(swiper) {
595
+      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
596
+        swiper.zoom.onTransitionEnd();
597
+      }
598
+    },
599
+    slideChange: function slideChange(swiper) {
600
+      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
601
+        swiper.zoom.onTransitionEnd();
602
+      }
603
+    }
604
+  }
605
+};
606
+exports.default = _default;
0 607
\ No newline at end of file
1 608
new file mode 100644
... ...
@@ -0,0 +1,100 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+function _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); }
11
+
12
+var Observer = {
13
+  attach: function attach(target, options) {
14
+    if (options === void 0) {
15
+      options = {};
16
+    }
17
+
18
+    var window = (0, _ssrWindow.getWindow)();
19
+    var swiper = this;
20
+    var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
21
+    var observer = new ObserverFunc(function (mutations) {
22
+      // The observerUpdate event should only be triggered
23
+      // once despite the number of mutations.  Additional
24
+      // triggers are redundant and are very costly
25
+      if (mutations.length === 1) {
26
+        swiper.emit('observerUpdate', mutations[0]);
27
+        return;
28
+      }
29
+
30
+      var observerUpdate = function observerUpdate() {
31
+        swiper.emit('observerUpdate', mutations[0]);
32
+      };
33
+
34
+      if (window.requestAnimationFrame) {
35
+        window.requestAnimationFrame(observerUpdate);
36
+      } else {
37
+        window.setTimeout(observerUpdate, 0);
38
+      }
39
+    });
40
+    observer.observe(target, {
41
+      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
42
+      childList: typeof options.childList === 'undefined' ? true : options.childList,
43
+      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
44
+    });
45
+    swiper.observer.observers.push(observer);
46
+  },
47
+  init: function init() {
48
+    var swiper = this;
49
+    if (!swiper.support.observer || !swiper.params.observer) return;
50
+
51
+    if (swiper.params.observeParents) {
52
+      var containerParents = swiper.$el.parents();
53
+
54
+      for (var i = 0; i < containerParents.length; i += 1) {
55
+        swiper.observer.attach(containerParents[i]);
56
+      }
57
+    } // Observe container
58
+
59
+
60
+    swiper.observer.attach(swiper.$el[0], {
61
+      childList: swiper.params.observeSlideChildren
62
+    }); // Observe wrapper
63
+
64
+    swiper.observer.attach(swiper.$wrapperEl[0], {
65
+      attributes: false
66
+    });
67
+  },
68
+  destroy: function destroy() {
69
+    var swiper = this;
70
+    swiper.observer.observers.forEach(function (observer) {
71
+      observer.disconnect();
72
+    });
73
+    swiper.observer.observers = [];
74
+  }
75
+};
76
+var _default = {
77
+  name: 'observer',
78
+  params: {
79
+    observer: false,
80
+    observeParents: false,
81
+    observeSlideChildren: false
82
+  },
83
+  create: function create() {
84
+    var swiper = this;
85
+    (0, _utils.bindModuleMethods)(swiper, {
86
+      observer: _extends(_extends({}, Observer), {}, {
87
+        observers: []
88
+      })
89
+    });
90
+  },
91
+  on: {
92
+    init: function init(swiper) {
93
+      swiper.observer.init();
94
+    },
95
+    destroy: function destroy(swiper) {
96
+      swiper.observer.destroy();
97
+    }
98
+  }
99
+};
100
+exports.default = _default;
0 101
\ No newline at end of file
1 102
new file mode 100644
... ...
@@ -0,0 +1,43 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _utils = require("../../utils/utils");
9
+
10
+var _default = {
11
+  name: 'resize',
12
+  create: function create() {
13
+    var swiper = this;
14
+    (0, _utils.extend)(swiper, {
15
+      resize: {
16
+        resizeHandler: function resizeHandler() {
17
+          if (!swiper || swiper.destroyed || !swiper.initialized) return;
18
+          swiper.emit('beforeResize');
19
+          swiper.emit('resize');
20
+        },
21
+        orientationChangeHandler: function orientationChangeHandler() {
22
+          if (!swiper || swiper.destroyed || !swiper.initialized) return;
23
+          swiper.emit('orientationchange');
24
+        }
25
+      }
26
+    });
27
+  },
28
+  on: {
29
+    init: function init(swiper) {
30
+      var window = (0, _ssrWindow.getWindow)(); // Emit resize
31
+
32
+      window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange
33
+
34
+      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
35
+    },
36
+    destroy: function destroy(swiper) {
37
+      var window = (0, _ssrWindow.getWindow)();
38
+      window.removeEventListener('resize', swiper.resize.resizeHandler);
39
+      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
40
+    }
41
+  }
42
+};
43
+exports.default = _default;
0 44
\ No newline at end of file
1 45
new file mode 100644
... ...
@@ -0,0 +1,57 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getChangedParams = getChangedParams;
5
+
6
+var _paramsList = require("./params-list");
7
+
8
+var _utils = require("./utils");
9
+
10
+function getChangedParams(swiperParams, oldParams, children, oldChildren) {
11
+  var keys = [];
12
+  if (!oldParams) return keys;
13
+
14
+  var addKey = function addKey(key) {
15
+    if (keys.indexOf(key) < 0) keys.push(key);
16
+  };
17
+
18
+  var oldChildrenKeys = oldChildren.map(function (child) {
19
+    return child.key;
20
+  });
21
+  var childrenKeys = children.map(function (child) {
22
+    return child.key;
23
+  });
24
+  if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');
25
+  if (oldChildren.length !== children.length) addKey('children');
26
+
27
+  var watchParams = _paramsList.paramsList.filter(function (key) {
28
+    return key[0] === '_';
29
+  }).map(function (key) {
30
+    return key.replace(/_/, '');
31
+  });
32
+
33
+  watchParams.forEach(function (key) {
34
+    if (key in swiperParams && key in oldParams) {
35
+      if ((0, _utils.isObject)(swiperParams[key]) && (0, _utils.isObject)(oldParams[key])) {
36
+        var newKeys = Object.keys(swiperParams[key]);
37
+        var oldKeys = Object.keys(oldParams[key]);
38
+
39
+        if (newKeys.length !== oldKeys.length) {
40
+          addKey(key);
41
+        } else {
42
+          newKeys.forEach(function (newKey) {
43
+            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
44
+              addKey(key);
45
+            }
46
+          });
47
+          oldKeys.forEach(function (oldKey) {
48
+            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
49
+          });
50
+        }
51
+      } else if (swiperParams[key] !== oldParams[key]) {
52
+        addKey(key);
53
+      }
54
+    }
55
+  });
56
+  return keys;
57
+}
0 58
\ No newline at end of file
1 59
new file mode 100644
... ...
@@ -0,0 +1,41 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getChildren = getChildren;
5
+
6
+var _react = _interopRequireDefault(require("react"));
7
+
8
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+
10
+function getChildren(children) {
11
+  var slides = [];
12
+  var slots = {
13
+    'container-start': [],
14
+    'container-end': [],
15
+    'wrapper-start': [],
16
+    'wrapper-end': []
17
+  };
18
+
19
+  function processChildren(c) {
20
+    _react.default.Children.toArray(c).forEach(function (child) {
21
+      if (child.type === _react.default.Fragment && child.props.children) {
22
+        processChildren(child.props.children);
23
+        return;
24
+      }
25
+
26
+      if (child.type && child.type.displayName === 'SwiperSlide') {
27
+        slides.push(child);
28
+      } else if (child.props && child.props.slot && slots[child.props.slot]) {
29
+        slots[child.props.slot].push(child);
30
+      } else {
31
+        slots['container-end'].push(child);
32
+      }
33
+    });
34
+  }
35
+
36
+  processChildren(children);
37
+  return {
38
+    slides: slides,
39
+    slots: slots
40
+  };
41
+}
0 42
\ No newline at end of file
1 43
new file mode 100644
... ...
@@ -0,0 +1,55 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getParams = getParams;
5
+
6
+var _core = _interopRequireDefault(require("../../core"));
7
+
8
+var _utils = require("./utils");
9
+
10
+var _paramsList = require("./params-list");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+// eslint-disable-next-line
15
+function getParams(obj) {
16
+  if (obj === void 0) {
17
+    obj = {};
18
+  }
19
+
20
+  var params = {
21
+    on: {}
22
+  };
23
+  var passedParams = {};
24
+  (0, _utils.extend)(params, _core.default.defaults);
25
+  (0, _utils.extend)(params, _core.default.extendedDefaults);
26
+  params._emitClasses = true;
27
+  var rest = {};
28
+
29
+  var allowedParams = _paramsList.paramsList.map(function (key) {
30
+    return key.replace(/_/, '');
31
+  });
32
+
33
+  Object.keys(obj).forEach(function (key) {
34
+    if (allowedParams.indexOf(key) >= 0) {
35
+      if ((0, _utils.isObject)(obj[key])) {
36
+        params[key] = {};
37
+        passedParams[key] = {};
38
+        (0, _utils.extend)(params[key], obj[key]);
39
+        (0, _utils.extend)(passedParams[key], obj[key]);
40
+      } else {
41
+        params[key] = obj[key];
42
+        passedParams[key] = obj[key];
43
+      }
44
+    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
45
+      params.on["" + key[2].toLowerCase() + key.substr(3)] = obj[key];
46
+    } else {
47
+      rest[key] = obj[key];
48
+    }
49
+  });
50
+  return {
51
+    params: params,
52
+    passedParams: passedParams,
53
+    rest: rest
54
+  };
55
+}
0 56
\ No newline at end of file
1 57
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.initSwiper = initSwiper;
5
+
6
+var _core = _interopRequireDefault(require("../../core"));
7
+
8
+var _utils = require("./utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+// eslint-disable-next-line
13
+function initSwiper(_ref, swiperParams) {
14
+  var el = _ref.el,
15
+      nextEl = _ref.nextEl,
16
+      prevEl = _ref.prevEl,
17
+      paginationEl = _ref.paginationEl,
18
+      scrollbarEl = _ref.scrollbarEl;
19
+
20
+  if ((0, _utils.needsNavigation)(swiperParams) && nextEl && prevEl) {
21
+    if (swiperParams.navigation === true) {
22
+      swiperParams.navigation = {};
23
+    }
24
+
25
+    swiperParams.navigation.nextEl = nextEl;
26
+    swiperParams.navigation.prevEl = prevEl;
27
+  }
28
+
29
+  if ((0, _utils.needsPagination)(swiperParams) && paginationEl) {
30
+    if (swiperParams.pagination === true) {
31
+      swiperParams.pagination = {};
32
+    }
33
+
34
+    swiperParams.pagination.el = paginationEl;
35
+  }
36
+
37
+  if ((0, _utils.needsScrollbar)(swiperParams) && scrollbarEl) {
38
+    if (swiperParams.scrollbar === true) {
39
+      swiperParams.scrollbar = {};
40
+    }
41
+
42
+    swiperParams.scrollbar.el = scrollbarEl;
43
+  }
44
+
45
+  return new _core.default(el, swiperParams);
46
+}
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,88 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.calcLoopedSlides = calcLoopedSlides;
5
+exports.renderLoop = renderLoop;
6
+
7
+var _react = _interopRequireDefault(require("react"));
8
+
9
+var _core = _interopRequireDefault(require("../../core"));
10
+
11
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+// eslint-disable-next-line
14
+function calcLoopedSlides(slides, swiperParams) {
15
+  var slidesPerViewParams = swiperParams.slidesPerView;
16
+
17
+  if (swiperParams.breakpoints) {
18
+    var breakpoint = _core.default.prototype.getBreakpoint(swiperParams.breakpoints);
19
+
20
+    var breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;
21
+
22
+    if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {
23
+      slidesPerViewParams = breakpointOnlyParams.slidesPerView;
24
+    }
25
+  }
26
+
27
+  var loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));
28
+  loopedSlides += swiperParams.loopAdditionalSlides;
29
+
30
+  if (loopedSlides > slides.length) {
31
+    loopedSlides = slides.length;
32
+  }
33
+
34
+  return loopedSlides;
35
+}
36
+
37
+function renderLoop(swiper, slides, swiperParams) {
38
+  var modifiedSlides = slides.map(function (child, index) {
39
+    return _react.default.cloneElement(child, {
40
+      swiper: swiper,
41
+      'data-swiper-slide-index': index
42
+    });
43
+  });
44
+
45
+  function duplicateSlide(child, index, position) {
46
+    return _react.default.cloneElement(child, {
47
+      key: child.key + "-duplicate-" + index + "-" + position,
48
+      className: (child.props.className || '') + " " + swiperParams.slideDuplicateClass
49
+    });
50
+  }
51
+
52
+  if (swiperParams.loopFillGroupWithBlank) {
53
+    var blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;
54
+
55
+    if (blankSlidesNum !== swiperParams.slidesPerGroup) {
56
+      for (var i = 0; i < blankSlidesNum; i += 1) {
57
+        var blankSlide = /*#__PURE__*/_react.default.createElement("div", {
58
+          className: swiperParams.slideClass + " " + swiperParams.slideBlankClass
59
+        });
60
+
61
+        modifiedSlides.push(blankSlide);
62
+      }
63
+    }
64
+  }
65
+
66
+  if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {
67
+    swiperParams.loopedSlides = modifiedSlides.length;
68
+  }
69
+
70
+  var loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);
71
+  var prependSlides = [];
72
+  var appendSlides = [];
73
+  modifiedSlides.forEach(function (child, index) {
74
+    if (index < loopedSlides) {
75
+      appendSlides.push(duplicateSlide(child, index, 'prepend'));
76
+    }
77
+
78
+    if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) {
79
+      prependSlides.push(duplicateSlide(child, index, 'append'));
80
+    }
81
+  });
82
+
83
+  if (swiper) {
84
+    swiper.loopedSlides = loopedSlides;
85
+  }
86
+
87
+  return [].concat(prependSlides, modifiedSlides, appendSlides);
88
+}
0 89
\ No newline at end of file
1 90
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.paramsList = void 0;
5
+
6
+/* underscore in name -> watch for changes */
7
+var paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', // modules
8
+'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];
9
+exports.paramsList = paramsList;
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,99 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.SwiperSlide = void 0;
5
+
6
+var _react = _interopRequireWildcard(require("react"));
7
+
8
+var _utils = require("./utils");
9
+
10
+var _useIsomorphicLayoutEffect = require("./use-isomorphic-layout-effect");
11
+
12
+function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
13
+
14
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+function _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); }
17
+
18
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
19
+
20
+var SwiperSlide = (0, _react.forwardRef)(function (_temp, externalRef) {
21
+  var _ref = _temp === void 0 ? {} : _temp,
22
+      _ref$tag = _ref.tag,
23
+      Tag = _ref$tag === void 0 ? 'div' : _ref$tag,
24
+      children = _ref.children,
25
+      _ref$className = _ref.className,
26
+      className = _ref$className === void 0 ? '' : _ref$className,
27
+      swiper = _ref.swiper,
28
+      zoom = _ref.zoom,
29
+      virtualIndex = _ref.virtualIndex,
30
+      rest = _objectWithoutPropertiesLoose(_ref, ["tag", "children", "className", "swiper", "zoom", "virtualIndex"]);
31
+
32
+  var slideElRef = (0, _react.useRef)(null);
33
+
34
+  var _useState = (0, _react.useState)('swiper-slide'),
35
+      slideClasses = _useState[0],
36
+      setSlideClasses = _useState[1];
37
+
38
+  function updateClasses(swiper, el, classNames) {
39
+    if (el === slideElRef.current) {
40
+      setSlideClasses(classNames);
41
+    }
42
+  }
43
+
44
+  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
45
+    if (externalRef) {
46
+      externalRef.current = slideElRef.current;
47
+    }
48
+
49
+    if (!slideElRef.current || !swiper) {
50
+      return;
51
+    }
52
+
53
+    if (swiper.destroyed) {
54
+      if (slideClasses !== 'swiper-slide') {
55
+        setSlideClasses('swiper-slide');
56
+      }
57
+
58
+      return;
59
+    }
60
+
61
+    swiper.on('_slideClass', updateClasses); // eslint-disable-next-line
62
+
63
+    return function () {
64
+      if (!swiper) return;
65
+      swiper.off('_slideClass', updateClasses);
66
+    };
67
+  });
68
+  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
69
+    if (swiper && slideElRef.current) {
70
+      setSlideClasses(swiper.getSlideClasses(slideElRef.current));
71
+    }
72
+  }, [swiper]);
73
+  var slideData;
74
+
75
+  if (typeof children === 'function') {
76
+    slideData = {
77
+      isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,
78
+      isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,
79
+      isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,
80
+      isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,
81
+      isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate next') >= 0
82
+    };
83
+  }
84
+
85
+  var renderChildren = function renderChildren() {
86
+    return typeof children === 'function' ? children(slideData) : children;
87
+  };
88
+
89
+  return /*#__PURE__*/_react.default.createElement(Tag, _extends({
90
+    ref: slideElRef,
91
+    className: (0, _utils.uniqueClasses)("" + slideClasses + (className ? " " + className : '')),
92
+    "data-swiper-slide-index": virtualIndex
93
+  }, rest), zoom ? /*#__PURE__*/_react.default.createElement("div", {
94
+    className: "swiper-zoom-container",
95
+    "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined
96
+  }, renderChildren()) : renderChildren());
97
+});
98
+exports.SwiperSlide = SwiperSlide;
99
+SwiperSlide.displayName = 'SwiperSlide';
0 100
\ No newline at end of file
1 101
new file mode 100644
... ...
@@ -0,0 +1,193 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.Swiper = void 0;
5
+
6
+var _react = _interopRequireWildcard(require("react"));
7
+
8
+var _getParams2 = require("./get-params");
9
+
10
+var _initSwiper = require("./init-swiper");
11
+
12
+var _utils = require("./utils");
13
+
14
+var _loop = require("./loop");
15
+
16
+var _getChangedParams = require("./get-changed-params");
17
+
18
+var _getChildren2 = require("./get-children");
19
+
20
+var _updateSwiper = require("./update-swiper");
21
+
22
+var _virtual = require("./virtual");
23
+
24
+var _useIsomorphicLayoutEffect = require("./use-isomorphic-layout-effect");
25
+
26
+function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
27
+
28
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+function _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); }
31
+
32
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
33
+
34
+var Swiper = (0, _react.forwardRef)(function (_temp, externalElRef) {
35
+  var _ref = _temp === void 0 ? {} : _temp,
36
+      className = _ref.className,
37
+      _ref$tag = _ref.tag,
38
+      Tag = _ref$tag === void 0 ? 'div' : _ref$tag,
39
+      _ref$wrapperTag = _ref.wrapperTag,
40
+      WrapperTag = _ref$wrapperTag === void 0 ? 'div' : _ref$wrapperTag,
41
+      children = _ref.children,
42
+      onSwiper = _ref.onSwiper,
43
+      rest = _objectWithoutPropertiesLoose(_ref, ["className", "tag", "wrapperTag", "children", "onSwiper"]);
44
+
45
+  var _useState = (0, _react.useState)('swiper-container'),
46
+      containerClasses = _useState[0],
47
+      setContainerClasses = _useState[1];
48
+
49
+  var _useState2 = (0, _react.useState)(null),
50
+      virtualData = _useState2[0],
51
+      setVirtualData = _useState2[1];
52
+
53
+  var _useState3 = (0, _react.useState)(false),
54
+      breakpointChanged = _useState3[0],
55
+      setBreakpointChanged = _useState3[1];
56
+
57
+  var initializedRef = (0, _react.useRef)(false);
58
+  var swiperElRef = (0, _react.useRef)(null);
59
+  var swiperRef = (0, _react.useRef)(null);
60
+  var oldPassedParamsRef = (0, _react.useRef)(null);
61
+  var oldSlides = (0, _react.useRef)(null);
62
+  var nextElRef = (0, _react.useRef)(null);
63
+  var prevElRef = (0, _react.useRef)(null);
64
+  var paginationElRef = (0, _react.useRef)(null);
65
+  var scrollbarElRef = (0, _react.useRef)(null);
66
+
67
+  var _getParams = (0, _getParams2.getParams)(rest),
68
+      swiperParams = _getParams.params,
69
+      passedParams = _getParams.passedParams,
70
+      restProps = _getParams.rest;
71
+
72
+  var _getChildren = (0, _getChildren2.getChildren)(children),
73
+      slides = _getChildren.slides,
74
+      slots = _getChildren.slots;
75
+
76
+  var changedParams = (0, _getChangedParams.getChangedParams)(passedParams, oldPassedParamsRef.current, slides, oldSlides.current);
77
+  oldPassedParamsRef.current = passedParams;
78
+  oldSlides.current = slides;
79
+
80
+  var onBeforeBreakpoint = function onBeforeBreakpoint() {
81
+    setBreakpointChanged(!breakpointChanged);
82
+  };
83
+
84
+  Object.assign(swiperParams.on, {
85
+    _containerClasses: function _containerClasses(swiper, classes) {
86
+      setContainerClasses(classes);
87
+    },
88
+    _swiper: function _swiper(swiper) {
89
+      swiper.loopCreate = function () {};
90
+
91
+      swiper.loopDestroy = function () {};
92
+
93
+      if (swiperParams.loop) {
94
+        swiper.loopedSlides = (0, _loop.calcLoopedSlides)(slides, swiperParams);
95
+      }
96
+
97
+      swiperRef.current = swiper;
98
+
99
+      if (swiper.virtual && swiper.params.virtual.enabled) {
100
+        swiper.virtual.slides = slides;
101
+        swiper.params.virtual.cache = false;
102
+        swiper.params.virtual.renderExternal = setVirtualData;
103
+        swiper.params.virtual.renderExternalUpdate = false;
104
+      }
105
+    }
106
+  });
107
+
108
+  if (swiperRef.current) {
109
+    swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);
110
+  }
111
+
112
+  (0, _react.useEffect)(function () {
113
+    return function () {
114
+      if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);
115
+    };
116
+  }); // set initialized flag
117
+
118
+  (0, _react.useEffect)(function () {
119
+    if (!initializedRef.current && swiperRef.current) {
120
+      swiperRef.current.emitSlidesClasses();
121
+      initializedRef.current = true;
122
+    }
123
+  }); // watch for params change
124
+
125
+  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
126
+    if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {
127
+      (0, _updateSwiper.updateSwiper)(swiperRef.current, slides, passedParams, changedParams);
128
+    }
129
+  }); // update on virtual update
130
+
131
+  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
132
+    (0, _virtual.updateOnVirtualData)(swiperRef.current);
133
+  }, [virtualData]); // init swiper
134
+
135
+  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
136
+    if (externalElRef) {
137
+      externalElRef.current = swiperElRef.current;
138
+    }
139
+
140
+    if (!swiperElRef.current) return;
141
+    (0, _initSwiper.initSwiper)({
142
+      el: swiperElRef.current,
143
+      nextEl: nextElRef.current,
144
+      prevEl: prevElRef.current,
145
+      paginationEl: paginationElRef.current,
146
+      scrollbarEl: scrollbarElRef.current
147
+    }, swiperParams);
148
+    if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line
149
+
150
+    return function () {
151
+      if (swiperRef.current && !swiperRef.current.destroyed) {
152
+        swiperRef.current.destroy();
153
+      }
154
+    };
155
+  }, []); // bypass swiper instance to slides
156
+
157
+  function renderSlides() {
158
+    if (swiperParams.virtual) {
159
+      return (0, _virtual.renderVirtual)(swiperRef.current, slides, virtualData);
160
+    }
161
+
162
+    if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {
163
+      return slides.map(function (child) {
164
+        return _react.default.cloneElement(child, {
165
+          swiper: swiperRef.current
166
+        });
167
+      });
168
+    }
169
+
170
+    return (0, _loop.renderLoop)(swiperRef.current, slides, swiperParams);
171
+  }
172
+
173
+  return /*#__PURE__*/_react.default.createElement(Tag, _extends({
174
+    ref: swiperElRef,
175
+    className: (0, _utils.uniqueClasses)("" + containerClasses + (className ? " " + className : ''))
176
+  }, restProps), slots['container-start'], (0, _utils.needsNavigation)(swiperParams) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
177
+    ref: prevElRef,
178
+    className: "swiper-button-prev"
179
+  }), /*#__PURE__*/_react.default.createElement("div", {
180
+    ref: nextElRef,
181
+    className: "swiper-button-next"
182
+  })), (0, _utils.needsScrollbar)(swiperParams) && /*#__PURE__*/_react.default.createElement("div", {
183
+    ref: scrollbarElRef,
184
+    className: "swiper-scrollbar"
185
+  }), (0, _utils.needsPagination)(swiperParams) && /*#__PURE__*/_react.default.createElement("div", {
186
+    ref: paginationElRef,
187
+    className: "swiper-pagination"
188
+  }), /*#__PURE__*/_react.default.createElement(WrapperTag, {
189
+    className: "swiper-wrapper"
190
+  }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), slots['container-end']);
191
+});
192
+exports.Swiper = Swiper;
193
+Swiper.displayName = 'Swiper';
0 194
\ No newline at end of file
1 195
new file mode 100644
... ...
@@ -0,0 +1,96 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.updateSwiper = updateSwiper;
5
+
6
+var _utils = require("./utils");
7
+
8
+function updateSwiper(swiper, slides, passedParams, changedParams) {
9
+  var updateParams = changedParams.filter(function (key) {
10
+    return key !== 'children' && key !== 'direction';
11
+  });
12
+  var currentParams = swiper.params,
13
+      pagination = swiper.pagination,
14
+      navigation = swiper.navigation,
15
+      scrollbar = swiper.scrollbar,
16
+      virtual = swiper.virtual,
17
+      thumbs = swiper.thumbs;
18
+  var needThumbsInit;
19
+  var needControllerInit;
20
+  var needPaginationInit;
21
+  var needScrollbarInit;
22
+  var needNavigationInit;
23
+
24
+  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {
25
+    needThumbsInit = true;
26
+  }
27
+
28
+  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
29
+    needControllerInit = true;
30
+  }
31
+
32
+  if (changedParams.includes('pagination') && passedParams.pagination && passedParams.pagination.el && currentParams.pagination && pagination && !pagination.el) {
33
+    needPaginationInit = true;
34
+  }
35
+
36
+  if (changedParams.includes('scrollbar') && passedParams.scrollbar && passedParams.scrollbar.el && currentParams.scrollbar && scrollbar && !scrollbar.el) {
37
+    needScrollbarInit = true;
38
+  }
39
+
40
+  if (changedParams.includes('navigation') && passedParams.navigation && passedParams.navigation.prevEl && passedParams.navigation.nextEl && currentParams.navigation && navigation && !navigation.prevEl && !navigation.nextEl) {
41
+    needNavigationInit = true;
42
+  }
43
+
44
+  updateParams.forEach(function (key) {
45
+    if ((0, _utils.isObject)(currentParams[key]) && (0, _utils.isObject)(passedParams[key])) {
46
+      (0, _utils.extend)(currentParams[key], passedParams[key]);
47
+    } else {
48
+      currentParams[key] = passedParams[key];
49
+    }
50
+  });
51
+
52
+  if (changedParams.includes('children') && virtual && currentParams.virtual.enabled) {
53
+    virtual.slides = slides;
54
+    virtual.update(true);
55
+  }
56
+
57
+  if (needThumbsInit) {
58
+    var initialized = thumbs.init();
59
+    if (initialized) thumbs.update(true);
60
+  }
61
+
62
+  if (needControllerInit) {
63
+    swiper.controller.control = currentParams.controller.control;
64
+  }
65
+
66
+  if (needPaginationInit) {
67
+    pagination.init();
68
+    pagination.render();
69
+    pagination.update();
70
+  }
71
+
72
+  if (needScrollbarInit) {
73
+    scrollbar.init();
74
+    scrollbar.updateSize();
75
+    scrollbar.setTranslate();
76
+  }
77
+
78
+  if (needNavigationInit) {
79
+    navigation.init();
80
+    navigation.update();
81
+  }
82
+
83
+  if (changedParams.includes('allowSlideNext')) {
84
+    swiper.allowSlideNext = passedParams.allowSlideNext;
85
+  }
86
+
87
+  if (changedParams.includes('allowSlidePrev')) {
88
+    swiper.allowSlidePrev = passedParams.allowSlidePrev;
89
+  }
90
+
91
+  if (changedParams.includes('direction')) {
92
+    swiper.changeDirection(passedParams.direction, false);
93
+  }
94
+
95
+  swiper.update();
96
+}
0 97
\ No newline at end of file
1 98
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
5
+
6
+var _react = require("react");
7
+
8
+function useIsomorphicLayoutEffect(callback, deps) {
9
+  // eslint-disable-next-line
10
+  if (typeof window === 'undefined') return (0, _react.useEffect)(callback, deps);
11
+  return (0, _react.useLayoutEffect)(callback, deps);
12
+}
0 13
\ No newline at end of file
1 14
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.isObject = isObject;
5
+exports.extend = extend;
6
+exports.needsNavigation = needsNavigation;
7
+exports.needsPagination = needsPagination;
8
+exports.needsScrollbar = needsScrollbar;
9
+exports.uniqueClasses = uniqueClasses;
10
+
11
+function isObject(o) {
12
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
13
+}
14
+
15
+function extend(target, src) {
16
+  Object.keys(src).forEach(function (key) {
17
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
18
+      extend(target[key], src[key]);
19
+    } else {
20
+      target[key] = src[key];
21
+    }
22
+  });
23
+}
24
+
25
+function needsNavigation(params) {
26
+  if (params === void 0) {
27
+    params = {};
28
+  }
29
+
30
+  return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';
31
+}
32
+
33
+function needsPagination(params) {
34
+  if (params === void 0) {
35
+    params = {};
36
+  }
37
+
38
+  return params.pagination && typeof params.pagination.el === 'undefined';
39
+}
40
+
41
+function needsScrollbar(params) {
42
+  if (params === void 0) {
43
+    params = {};
44
+  }
45
+
46
+  return params.scrollbar && typeof params.scrollbar.el === 'undefined';
47
+}
48
+
49
+function uniqueClasses(classNames) {
50
+  if (classNames === void 0) {
51
+    classNames = '';
52
+  }
53
+
54
+  var classes = classNames.split(' ').map(function (c) {
55
+    return c.trim();
56
+  }).filter(function (c) {
57
+    return !!c;
58
+  });
59
+  var unique = [];
60
+  classes.forEach(function (c) {
61
+    if (unique.indexOf(c) < 0) unique.push(c);
62
+  });
63
+  return unique.join(' ');
64
+}
0 65
\ No newline at end of file
1 66
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.renderVirtual = renderVirtual;
5
+exports.updateOnVirtualData = updateOnVirtualData;
6
+
7
+var _react = _interopRequireDefault(require("react"));
8
+
9
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+
11
+function updateOnVirtualData(swiper) {
12
+  if (!swiper || swiper.destroyed) return;
13
+  swiper.updateSlides();
14
+  swiper.updateProgress();
15
+  swiper.updateSlidesClasses();
16
+
17
+  if (swiper.lazy && swiper.params.lazy.enabled) {
18
+    swiper.lazy.load();
19
+  }
20
+}
21
+
22
+function renderVirtual(swiper, slides, virtualData) {
23
+  var _ref;
24
+
25
+  if (!virtualData) return null;
26
+  var style = swiper.isHorizontal() ? (_ref = {}, _ref[swiper.rtlTranslate ? 'right' : 'left'] = virtualData.offset + "px", _ref) : {
27
+    top: virtualData.offset + "px"
28
+  };
29
+  return slides.filter(function (child, index) {
30
+    return index >= virtualData.from && index <= virtualData.to;
31
+  }).map(function (child) {
32
+    return _react.default.cloneElement(child, {
33
+      swiper: swiper,
34
+      style: style
35
+    });
36
+  });
37
+}
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,48 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getChangedParams = getChangedParams;
5
+
6
+var _utils = require("./utils");
7
+
8
+var _paramsList = require("./params-list");
9
+
10
+function getChangedParams(swiperParams, oldParams) {
11
+  var keys = [];
12
+  if (!oldParams) return keys;
13
+
14
+  var addKey = function addKey(key) {
15
+    if (keys.indexOf(key) < 0) keys.push(key);
16
+  };
17
+
18
+  var watchParams = _paramsList.paramsList.filter(function (key) {
19
+    return key[0] === '_';
20
+  }).map(function (key) {
21
+    return key.replace(/_/, '');
22
+  });
23
+
24
+  watchParams.forEach(function (key) {
25
+    if (key in swiperParams && key in oldParams) {
26
+      if ((0, _utils.isObject)(swiperParams[key]) && (0, _utils.isObject)(oldParams[key])) {
27
+        var newKeys = Object.keys(swiperParams[key]);
28
+        var oldKeys = Object.keys(oldParams[key]);
29
+
30
+        if (newKeys.length !== oldKeys.length) {
31
+          addKey(key);
32
+        } else {
33
+          newKeys.forEach(function (newKey) {
34
+            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
35
+              addKey(key);
36
+            }
37
+          });
38
+          oldKeys.forEach(function (oldKey) {
39
+            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
40
+          });
41
+        }
42
+      } else if (swiperParams[key] !== oldParams[key]) {
43
+        addKey(key);
44
+      }
45
+    }
46
+  });
47
+  return keys;
48
+}
0 49
\ No newline at end of file
1 50
new file mode 100644
... ...
@@ -0,0 +1,55 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getParams = getParams;
5
+
6
+var _core = _interopRequireDefault(require("../../core"));
7
+
8
+var _utils = require("./utils");
9
+
10
+var _paramsList = require("./params-list");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+// eslint-disable-next-line
15
+function getParams(obj) {
16
+  if (obj === void 0) {
17
+    obj = {};
18
+  }
19
+
20
+  var params = {
21
+    on: {}
22
+  };
23
+  var passedParams = {};
24
+  (0, _utils.extend)(params, _core.default.defaults);
25
+  (0, _utils.extend)(params, _core.default.extendedDefaults);
26
+  params._emitClasses = true;
27
+  var rest = {};
28
+
29
+  var allowedParams = _paramsList.paramsList.map(function (key) {
30
+    return key.replace(/_/, '');
31
+  });
32
+
33
+  Object.keys(obj).forEach(function (key) {
34
+    if (allowedParams.indexOf(key) >= 0) {
35
+      if ((0, _utils.isObject)(obj[key])) {
36
+        params[key] = {};
37
+        passedParams[key] = {};
38
+        (0, _utils.extend)(params[key], obj[key]);
39
+        (0, _utils.extend)(passedParams[key], obj[key]);
40
+      } else {
41
+        params[key] = obj[key];
42
+        passedParams[key] = obj[key];
43
+      }
44
+    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
45
+      params.on["" + key[2].toLowerCase() + key.substr(3)] = obj[key];
46
+    } else {
47
+      rest[key] = obj[key];
48
+    }
49
+  });
50
+  return {
51
+    params: params,
52
+    passedParams: passedParams,
53
+    rest: rest
54
+  };
55
+}
0 56
\ No newline at end of file
1 57
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.initSwiper = initSwiper;
5
+
6
+var _core = _interopRequireDefault(require("../../core"));
7
+
8
+var _utils = require("./utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+// eslint-disable-next-line
13
+function initSwiper(_ref, swiperParams) {
14
+  var el = _ref.el,
15
+      nextEl = _ref.nextEl,
16
+      prevEl = _ref.prevEl,
17
+      paginationEl = _ref.paginationEl,
18
+      scrollbarEl = _ref.scrollbarEl;
19
+
20
+  if ((0, _utils.needsNavigation)(swiperParams) && nextEl && prevEl) {
21
+    if (swiperParams.navigation === true) {
22
+      swiperParams.navigation = {};
23
+    }
24
+
25
+    swiperParams.navigation.nextEl = nextEl;
26
+    swiperParams.navigation.prevEl = prevEl;
27
+  }
28
+
29
+  if ((0, _utils.needsPagination)(swiperParams) && paginationEl) {
30
+    if (swiperParams.pagination === true) {
31
+      swiperParams.pagination = {};
32
+    }
33
+
34
+    swiperParams.pagination.el = paginationEl;
35
+  }
36
+
37
+  if ((0, _utils.needsScrollbar)(swiperParams) && scrollbarEl) {
38
+    if (swiperParams.scrollbar === true) {
39
+      swiperParams.scrollbar = {};
40
+    }
41
+
42
+    swiperParams.scrollbar.el = scrollbarEl;
43
+  }
44
+
45
+  return new _core.default(el, swiperParams);
46
+}
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.paramsList = void 0;
5
+
6
+/* underscore in name -> watch for changes */
7
+var paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', // modules
8
+'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];
9
+exports.paramsList = paramsList;
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,322 @@
1
+/* swiper.svelte generated by Svelte v3.24.1 */
2
+"use strict";
3
+
4
+const { SvelteComponent, assign, attr, binding_callbacks, check_outros, compute_rest_props, create_slot, detach, element, exclude_internal_props, get_spread_update, group_outros, init, insert, safe_not_equal, set_attributes, transition_in, transition_out, update_slot } = require("svelte/internal");
5
+const { onMount, onDestroy, beforeUpdate, afterUpdate, tick } = require("svelte");
6
+const { uniqueClasses } = require("./utils");
7
+const get_default_slot_changes_1 = dirty => ({ data: dirty & /*slideData*/ 32 });
8
+const get_default_slot_context_1 = ctx => ({ data: /*slideData*/ ctx[5] });
9
+const get_default_slot_changes = dirty => ({ data: dirty & /*slideData*/ 32 });
10
+const get_default_slot_context = ctx => ({ data: /*slideData*/ ctx[5] });
11
+
12
+// (90:2) {:else}
13
+function create_else_block(ctx) {
14
+	let current;
15
+	const default_slot_template = /*$$slots*/ ctx[8].default;
16
+	const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[7], get_default_slot_context_1);
17
+
18
+	return {
19
+		c() {
20
+			if (default_slot) default_slot.c();
21
+		},
22
+		m(target, anchor) {
23
+			if (default_slot) {
24
+				default_slot.m(target, anchor);
25
+			}
26
+
27
+			current = true;
28
+		},
29
+		p(ctx, dirty) {
30
+			if (default_slot) {
31
+				if (default_slot.p && dirty & /*$$scope, slideData*/ 160) {
32
+					update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[7], dirty, get_default_slot_changes_1, get_default_slot_context_1);
33
+				}
34
+			}
35
+		},
36
+		i(local) {
37
+			if (current) return;
38
+			transition_in(default_slot, local);
39
+			current = true;
40
+		},
41
+		o(local) {
42
+			transition_out(default_slot, local);
43
+			current = false;
44
+		},
45
+		d(detaching) {
46
+			if (default_slot) default_slot.d(detaching);
47
+		}
48
+	};
49
+}
50
+
51
+// (84:2) {#if zoom}
52
+function create_if_block(ctx) {
53
+	let div;
54
+	let div_data_swiper_zoom_value;
55
+	let current;
56
+	const default_slot_template = /*$$slots*/ ctx[8].default;
57
+	const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[7], get_default_slot_context);
58
+
59
+	return {
60
+		c() {
61
+			div = element("div");
62
+			if (default_slot) default_slot.c();
63
+			attr(div, "class", "swiper-zoom-container");
64
+
65
+			attr(div, "data-swiper-zoom", div_data_swiper_zoom_value = typeof /*zoom*/ ctx[0] === "number"
66
+			? /*zoom*/ ctx[0]
67
+			: undefined);
68
+		},
69
+		m(target, anchor) {
70
+			insert(target, div, anchor);
71
+
72
+			if (default_slot) {
73
+				default_slot.m(div, null);
74
+			}
75
+
76
+			current = true;
77
+		},
78
+		p(ctx, dirty) {
79
+			if (default_slot) {
80
+				if (default_slot.p && dirty & /*$$scope, slideData*/ 160) {
81
+					update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[7], dirty, get_default_slot_changes, get_default_slot_context);
82
+				}
83
+			}
84
+
85
+			if (!current || dirty & /*zoom*/ 1 && div_data_swiper_zoom_value !== (div_data_swiper_zoom_value = typeof /*zoom*/ ctx[0] === "number"
86
+			? /*zoom*/ ctx[0]
87
+			: undefined)) {
88
+				attr(div, "data-swiper-zoom", div_data_swiper_zoom_value);
89
+			}
90
+		},
91
+		i(local) {
92
+			if (current) return;
93
+			transition_in(default_slot, local);
94
+			current = true;
95
+		},
96
+		o(local) {
97
+			transition_out(default_slot, local);
98
+			current = false;
99
+		},
100
+		d(detaching) {
101
+			if (detaching) detach(div);
102
+			if (default_slot) default_slot.d(detaching);
103
+		}
104
+	};
105
+}
106
+
107
+function create_fragment(ctx) {
108
+	let div;
109
+	let current_block_type_index;
110
+	let if_block;
111
+	let div_class_value;
112
+	let current;
113
+	const if_block_creators = [create_if_block, create_else_block];
114
+	const if_blocks = [];
115
+
116
+	function select_block_type(ctx, dirty) {
117
+		if (/*zoom*/ ctx[0]) return 0;
118
+		return 1;
119
+	}
120
+
121
+	current_block_type_index = select_block_type(ctx, -1);
122
+	if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
123
+
124
+	let div_levels = [
125
+		{
126
+			class: div_class_value = uniqueClasses(`${/*slideClasses*/ ctx[4]}${/*className*/ ctx[2] ? ` ${/*className*/ ctx[2]}` : ""}`)
127
+		},
128
+		{
129
+			"data-swiper-slide-index": /*virtualIndex*/ ctx[1]
130
+		},
131
+		/*$$restProps*/ ctx[6]
132
+	];
133
+
134
+	let div_data = {};
135
+
136
+	for (let i = 0; i < div_levels.length; i += 1) {
137
+		div_data = assign(div_data, div_levels[i]);
138
+	}
139
+
140
+	return {
141
+		c() {
142
+			div = element("div");
143
+			if_block.c();
144
+			set_attributes(div, div_data);
145
+		},
146
+		m(target, anchor) {
147
+			insert(target, div, anchor);
148
+			if_blocks[current_block_type_index].m(div, null);
149
+			/*div_binding*/ ctx[9](div);
150
+			current = true;
151
+		},
152
+		p(ctx, [dirty]) {
153
+			let previous_block_index = current_block_type_index;
154
+			current_block_type_index = select_block_type(ctx, dirty);
155
+
156
+			if (current_block_type_index === previous_block_index) {
157
+				if_blocks[current_block_type_index].p(ctx, dirty);
158
+			} else {
159
+				group_outros();
160
+
161
+				transition_out(if_blocks[previous_block_index], 1, 1, () => {
162
+					if_blocks[previous_block_index] = null;
163
+				});
164
+
165
+				check_outros();
166
+				if_block = if_blocks[current_block_type_index];
167
+
168
+				if (!if_block) {
169
+					if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
170
+					if_block.c();
171
+				}
172
+
173
+				transition_in(if_block, 1);
174
+				if_block.m(div, null);
175
+			}
176
+
177
+			set_attributes(div, div_data = get_spread_update(div_levels, [
178
+				(!current || dirty & /*slideClasses, className*/ 20 && div_class_value !== (div_class_value = uniqueClasses(`${/*slideClasses*/ ctx[4]}${/*className*/ ctx[2] ? ` ${/*className*/ ctx[2]}` : ""}`))) && { class: div_class_value },
179
+				(!current || dirty & /*virtualIndex*/ 2) && {
180
+					"data-swiper-slide-index": /*virtualIndex*/ ctx[1]
181
+				},
182
+				dirty & /*$$restProps*/ 64 && /*$$restProps*/ ctx[6]
183
+			]));
184
+		},
185
+		i(local) {
186
+			if (current) return;
187
+			transition_in(if_block);
188
+			current = true;
189
+		},
190
+		o(local) {
191
+			transition_out(if_block);
192
+			current = false;
193
+		},
194
+		d(detaching) {
195
+			if (detaching) detach(div);
196
+			if_blocks[current_block_type_index].d();
197
+			/*div_binding*/ ctx[9](null);
198
+		}
199
+	};
200
+}
201
+
202
+function instance($$self, $$props, $$invalidate) {
203
+	const omit_props_names = ["zoom","virtualIndex","class"];
204
+	let $$restProps = compute_rest_props($$props, omit_props_names);
205
+	let { zoom = undefined } = $$props;
206
+	let { virtualIndex = undefined } = $$props;
207
+	let { class: className = undefined } = $$props;
208
+	let slideEl = null;
209
+	let slideClasses = "swiper-slide";
210
+	let swiper = null;
211
+	let eventAttached = false;
212
+
213
+	const updateClasses = (_, el, classNames) => {
214
+		if (el === slideEl) {
215
+			$$invalidate(4, slideClasses = classNames);
216
+		}
217
+	};
218
+
219
+	const attachEvent = () => {
220
+		if (!swiper || eventAttached) return;
221
+		swiper.on("_slideClass", updateClasses);
222
+		eventAttached = true;
223
+	};
224
+
225
+	const detachEvent = () => {
226
+		if (!swiper) return;
227
+		swiper.off("_slideClass", updateClasses);
228
+		eventAttached = false;
229
+	};
230
+
231
+	onMount(() => {
232
+		if (typeof virtualIndex === "undefined") return;
233
+
234
+		$$invalidate(
235
+			3,
236
+			slideEl.onSwiper = _swiper => {
237
+				swiper = _swiper;
238
+				attachEvent();
239
+			},
240
+			slideEl
241
+		);
242
+
243
+		attachEvent();
244
+	});
245
+
246
+	afterUpdate(() => {
247
+		if (!slideEl || !swiper) return;
248
+
249
+		if (swiper.destroyed) {
250
+			if (slideClasses !== "swiper-slide") {
251
+				$$invalidate(4, slideClasses = "swiper-slide");
252
+			}
253
+
254
+			return;
255
+		}
256
+
257
+		attachEvent();
258
+	});
259
+
260
+	beforeUpdate(() => {
261
+		attachEvent();
262
+	});
263
+
264
+	onDestroy(() => {
265
+		if (!swiper) return;
266
+		detachEvent();
267
+	});
268
+
269
+	let { $$slots = {}, $$scope } = $$props;
270
+
271
+	function div_binding($$value) {
272
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
273
+			slideEl = $$value;
274
+			$$invalidate(3, slideEl);
275
+		});
276
+	}
277
+
278
+	$$self.$$set = $$new_props => {
279
+		$$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
280
+		$$invalidate(6, $$restProps = compute_rest_props($$props, omit_props_names));
281
+		if ("zoom" in $$new_props) $$invalidate(0, zoom = $$new_props.zoom);
282
+		if ("virtualIndex" in $$new_props) $$invalidate(1, virtualIndex = $$new_props.virtualIndex);
283
+		if ("class" in $$new_props) $$invalidate(2, className = $$new_props.class);
284
+		if ("$$scope" in $$new_props) $$invalidate(7, $$scope = $$new_props.$$scope);
285
+	};
286
+
287
+	let slideData;
288
+
289
+	$$self.$$.update = () => {
290
+		if ($$self.$$.dirty & /*slideClasses*/ 16) {
291
+			$: $$invalidate(5, slideData = {
292
+				isActive: slideClasses.indexOf("swiper-slide-active") >= 0 || slideClasses.indexOf("swiper-slide-duplicate-active") >= 0,
293
+				isVisible: slideClasses.indexOf("swiper-slide-visible") >= 0,
294
+				isDuplicate: slideClasses.indexOf("swiper-slide-duplicate") >= 0,
295
+				isPrev: slideClasses.indexOf("swiper-slide-prev") >= 0 || slideClasses.indexOf("swiper-slide-duplicate-prev") >= 0,
296
+				isNext: slideClasses.indexOf("swiper-slide-next") >= 0 || slideClasses.indexOf("swiper-slide-duplicate next") >= 0
297
+			});
298
+		}
299
+	};
300
+
301
+	return [
302
+		zoom,
303
+		virtualIndex,
304
+		className,
305
+		slideEl,
306
+		slideClasses,
307
+		slideData,
308
+		$$restProps,
309
+		$$scope,
310
+		$$slots,
311
+		div_binding
312
+	];
313
+}
314
+
315
+class Swiper extends SvelteComponent {
316
+	constructor(options) {
317
+		super();
318
+		init(this, options, instance, create_fragment, safe_not_equal, { zoom: 0, virtualIndex: 1, class: 2 });
319
+	}
320
+}
321
+
322
+exports.default = Swiper;
0 323
\ No newline at end of file
1 324
new file mode 100644
... ...
@@ -0,0 +1,516 @@
1
+/* swiper.svelte generated by Svelte v3.24.1 */
2
+"use strict";
3
+
4
+const { SvelteComponent, append, assign, attr, binding_callbacks, compute_rest_props, create_slot, detach, element, exclude_internal_props, get_spread_update, init, insert, noop, safe_not_equal, set_attributes, space, transition_in, transition_out, update_slot } = require("svelte/internal");
5
+const { onMount, onDestroy, afterUpdate, createEventDispatcher, tick, beforeUpdate } = require("svelte");
6
+const { getParams } = require("./get-params");
7
+const { initSwiper } = require("./init-swiper");
8
+const { needsScrollbar, needsNavigation, needsPagination, uniqueClasses } = require("./utils");
9
+const { getChangedParams } = require("./get-changed-params");
10
+const { updateSwiper } = require("./update-swiper");
11
+const get_content_end_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
12
+const get_content_end_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
13
+const get_wrapper_end_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
14
+const get_wrapper_end_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
15
+const get_default_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
16
+const get_default_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
17
+const get_wrapper_start_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
18
+const get_wrapper_start_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
19
+const get_content_start_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
20
+const get_content_start_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
21
+
22
+// (142:2) {#if needsNavigation(swiperParams)}
23
+function create_if_block_2(ctx) {
24
+	let div0;
25
+	let t;
26
+	let div1;
27
+
28
+	return {
29
+		c() {
30
+			div0 = element("div");
31
+			t = space();
32
+			div1 = element("div");
33
+			attr(div0, "class", "swiper-button-prev");
34
+			attr(div1, "class", "swiper-button-next");
35
+		},
36
+		m(target, anchor) {
37
+			insert(target, div0, anchor);
38
+			/*div0_binding*/ ctx[13](div0);
39
+			insert(target, t, anchor);
40
+			insert(target, div1, anchor);
41
+			/*div1_binding*/ ctx[14](div1);
42
+		},
43
+		p: noop,
44
+		d(detaching) {
45
+			if (detaching) detach(div0);
46
+			/*div0_binding*/ ctx[13](null);
47
+			if (detaching) detach(t);
48
+			if (detaching) detach(div1);
49
+			/*div1_binding*/ ctx[14](null);
50
+		}
51
+	};
52
+}
53
+
54
+// (146:2) {#if needsScrollbar(swiperParams)}
55
+function create_if_block_1(ctx) {
56
+	let div;
57
+
58
+	return {
59
+		c() {
60
+			div = element("div");
61
+			attr(div, "class", "swiper-scrollbar");
62
+		},
63
+		m(target, anchor) {
64
+			insert(target, div, anchor);
65
+			/*div_binding*/ ctx[15](div);
66
+		},
67
+		p: noop,
68
+		d(detaching) {
69
+			if (detaching) detach(div);
70
+			/*div_binding*/ ctx[15](null);
71
+		}
72
+	};
73
+}
74
+
75
+// (149:2) {#if needsPagination(swiperParams)}
76
+function create_if_block(ctx) {
77
+	let div;
78
+
79
+	return {
80
+		c() {
81
+			div = element("div");
82
+			attr(div, "class", "swiper-pagination");
83
+		},
84
+		m(target, anchor) {
85
+			insert(target, div, anchor);
86
+			/*div_binding_1*/ ctx[16](div);
87
+		},
88
+		p: noop,
89
+		d(detaching) {
90
+			if (detaching) detach(div);
91
+			/*div_binding_1*/ ctx[16](null);
92
+		}
93
+	};
94
+}
95
+
96
+function create_fragment(ctx) {
97
+	let div1;
98
+	let t0;
99
+	let show_if_2 = needsNavigation(/*swiperParams*/ ctx[2]);
100
+	let t1;
101
+	let show_if_1 = needsScrollbar(/*swiperParams*/ ctx[2]);
102
+	let t2;
103
+	let show_if = needsPagination(/*swiperParams*/ ctx[2]);
104
+	let t3;
105
+	let div0;
106
+	let t4;
107
+	let t5;
108
+	let t6;
109
+	let div1_class_value;
110
+	let current;
111
+	const content_start_slot_template = /*$$slots*/ ctx[12]["content-start"];
112
+	const content_start_slot = create_slot(content_start_slot_template, ctx, /*$$scope*/ ctx[11], get_content_start_slot_context);
113
+	let if_block0 = show_if_2 && create_if_block_2(ctx);
114
+	let if_block1 = show_if_1 && create_if_block_1(ctx);
115
+	let if_block2 = show_if && create_if_block(ctx);
116
+	const wrapper_start_slot_template = /*$$slots*/ ctx[12]["wrapper-start"];
117
+	const wrapper_start_slot = create_slot(wrapper_start_slot_template, ctx, /*$$scope*/ ctx[11], get_wrapper_start_slot_context);
118
+	const default_slot_template = /*$$slots*/ ctx[12].default;
119
+	const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[11], get_default_slot_context);
120
+	const wrapper_end_slot_template = /*$$slots*/ ctx[12]["wrapper-end"];
121
+	const wrapper_end_slot = create_slot(wrapper_end_slot_template, ctx, /*$$scope*/ ctx[11], get_wrapper_end_slot_context);
122
+	const content_end_slot_template = /*$$slots*/ ctx[12]["content-end"];
123
+	const content_end_slot = create_slot(content_end_slot_template, ctx, /*$$scope*/ ctx[11], get_content_end_slot_context);
124
+
125
+	let div1_levels = [
126
+		{
127
+			class: div1_class_value = uniqueClasses(`${/*containerClasses*/ ctx[1]}${/*className*/ ctx[0] ? ` ${/*className*/ ctx[0]}` : ""}`)
128
+		},
129
+		/*restProps*/ ctx[3]
130
+	];
131
+
132
+	let div1_data = {};
133
+
134
+	for (let i = 0; i < div1_levels.length; i += 1) {
135
+		div1_data = assign(div1_data, div1_levels[i]);
136
+	}
137
+
138
+	return {
139
+		c() {
140
+			div1 = element("div");
141
+			if (content_start_slot) content_start_slot.c();
142
+			t0 = space();
143
+			if (if_block0) if_block0.c();
144
+			t1 = space();
145
+			if (if_block1) if_block1.c();
146
+			t2 = space();
147
+			if (if_block2) if_block2.c();
148
+			t3 = space();
149
+			div0 = element("div");
150
+			if (wrapper_start_slot) wrapper_start_slot.c();
151
+			t4 = space();
152
+			if (default_slot) default_slot.c();
153
+			t5 = space();
154
+			if (wrapper_end_slot) wrapper_end_slot.c();
155
+			t6 = space();
156
+			if (content_end_slot) content_end_slot.c();
157
+			attr(div0, "class", "swiper-wrapper");
158
+			set_attributes(div1, div1_data);
159
+		},
160
+		m(target, anchor) {
161
+			insert(target, div1, anchor);
162
+
163
+			if (content_start_slot) {
164
+				content_start_slot.m(div1, null);
165
+			}
166
+
167
+			append(div1, t0);
168
+			if (if_block0) if_block0.m(div1, null);
169
+			append(div1, t1);
170
+			if (if_block1) if_block1.m(div1, null);
171
+			append(div1, t2);
172
+			if (if_block2) if_block2.m(div1, null);
173
+			append(div1, t3);
174
+			append(div1, div0);
175
+
176
+			if (wrapper_start_slot) {
177
+				wrapper_start_slot.m(div0, null);
178
+			}
179
+
180
+			append(div0, t4);
181
+
182
+			if (default_slot) {
183
+				default_slot.m(div0, null);
184
+			}
185
+
186
+			append(div0, t5);
187
+
188
+			if (wrapper_end_slot) {
189
+				wrapper_end_slot.m(div0, null);
190
+			}
191
+
192
+			append(div1, t6);
193
+
194
+			if (content_end_slot) {
195
+				content_end_slot.m(div1, null);
196
+			}
197
+
198
+			/*div1_binding_1*/ ctx[17](div1);
199
+			current = true;
200
+		},
201
+		p(ctx, [dirty]) {
202
+			if (content_start_slot) {
203
+				if (content_start_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
204
+					update_slot(content_start_slot, content_start_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_content_start_slot_changes, get_content_start_slot_context);
205
+				}
206
+			}
207
+
208
+			if (dirty & /*swiperParams*/ 4) show_if_2 = needsNavigation(/*swiperParams*/ ctx[2]);
209
+
210
+			if (show_if_2) {
211
+				if (if_block0) {
212
+					if_block0.p(ctx, dirty);
213
+				} else {
214
+					if_block0 = create_if_block_2(ctx);
215
+					if_block0.c();
216
+					if_block0.m(div1, t1);
217
+				}
218
+			} else if (if_block0) {
219
+				if_block0.d(1);
220
+				if_block0 = null;
221
+			}
222
+
223
+			if (dirty & /*swiperParams*/ 4) show_if_1 = needsScrollbar(/*swiperParams*/ ctx[2]);
224
+
225
+			if (show_if_1) {
226
+				if (if_block1) {
227
+					if_block1.p(ctx, dirty);
228
+				} else {
229
+					if_block1 = create_if_block_1(ctx);
230
+					if_block1.c();
231
+					if_block1.m(div1, t2);
232
+				}
233
+			} else if (if_block1) {
234
+				if_block1.d(1);
235
+				if_block1 = null;
236
+			}
237
+
238
+			if (dirty & /*swiperParams*/ 4) show_if = needsPagination(/*swiperParams*/ ctx[2]);
239
+
240
+			if (show_if) {
241
+				if (if_block2) {
242
+					if_block2.p(ctx, dirty);
243
+				} else {
244
+					if_block2 = create_if_block(ctx);
245
+					if_block2.c();
246
+					if_block2.m(div1, t3);
247
+				}
248
+			} else if (if_block2) {
249
+				if_block2.d(1);
250
+				if_block2 = null;
251
+			}
252
+
253
+			if (wrapper_start_slot) {
254
+				if (wrapper_start_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
255
+					update_slot(wrapper_start_slot, wrapper_start_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_wrapper_start_slot_changes, get_wrapper_start_slot_context);
256
+				}
257
+			}
258
+
259
+			if (default_slot) {
260
+				if (default_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
261
+					update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_default_slot_changes, get_default_slot_context);
262
+				}
263
+			}
264
+
265
+			if (wrapper_end_slot) {
266
+				if (wrapper_end_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
267
+					update_slot(wrapper_end_slot, wrapper_end_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_wrapper_end_slot_changes, get_wrapper_end_slot_context);
268
+				}
269
+			}
270
+
271
+			if (content_end_slot) {
272
+				if (content_end_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
273
+					update_slot(content_end_slot, content_end_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_content_end_slot_changes, get_content_end_slot_context);
274
+				}
275
+			}
276
+
277
+			set_attributes(div1, div1_data = get_spread_update(div1_levels, [
278
+				(!current || dirty & /*containerClasses, className*/ 3 && div1_class_value !== (div1_class_value = uniqueClasses(`${/*containerClasses*/ ctx[1]}${/*className*/ ctx[0] ? ` ${/*className*/ ctx[0]}` : ""}`))) && { class: div1_class_value },
279
+				dirty & /*restProps*/ 8 && /*restProps*/ ctx[3]
280
+			]));
281
+		},
282
+		i(local) {
283
+			if (current) return;
284
+			transition_in(content_start_slot, local);
285
+			transition_in(wrapper_start_slot, local);
286
+			transition_in(default_slot, local);
287
+			transition_in(wrapper_end_slot, local);
288
+			transition_in(content_end_slot, local);
289
+			current = true;
290
+		},
291
+		o(local) {
292
+			transition_out(content_start_slot, local);
293
+			transition_out(wrapper_start_slot, local);
294
+			transition_out(default_slot, local);
295
+			transition_out(wrapper_end_slot, local);
296
+			transition_out(content_end_slot, local);
297
+			current = false;
298
+		},
299
+		d(detaching) {
300
+			if (detaching) detach(div1);
301
+			if (content_start_slot) content_start_slot.d(detaching);
302
+			if (if_block0) if_block0.d();
303
+			if (if_block1) if_block1.d();
304
+			if (if_block2) if_block2.d();
305
+			if (wrapper_start_slot) wrapper_start_slot.d(detaching);
306
+			if (default_slot) default_slot.d(detaching);
307
+			if (wrapper_end_slot) wrapper_end_slot.d(detaching);
308
+			if (content_end_slot) content_end_slot.d(detaching);
309
+			/*div1_binding_1*/ ctx[17](null);
310
+		}
311
+	};
312
+}
313
+
314
+function instance($$self, $$props, $$invalidate) {
315
+	const omit_props_names = ["class","swiper"];
316
+	let $$restProps = compute_rest_props($$props, omit_props_names);
317
+	const dispatch = createEventDispatcher();
318
+	let { class: className = undefined } = $$props;
319
+	let containerClasses = "swiper-container";
320
+	let breakpointChanged = false;
321
+	let swiperInstance = null;
322
+	let oldPassedParams = null;
323
+	let paramsData;
324
+	let swiperParams;
325
+	let passedParams;
326
+	let restProps;
327
+	let swiperEl = null;
328
+	let prevEl = null;
329
+	let nextEl = null;
330
+	let scrollbarEl = null;
331
+	let paginationEl = null;
332
+	let virtualData = { slides: [] };
333
+
334
+	function swiper() {
335
+		return swiperInstance;
336
+	}
337
+
338
+	const setVirtualData = data => {
339
+		$$invalidate(9, virtualData = data);
340
+
341
+		tick().then(() => {
342
+			swiperInstance.$wrapperEl.children(".swiper-slide").each(el => {
343
+				if (el.onSwiper) el.onSwiper(swiperInstance);
344
+			});
345
+
346
+			swiperInstance.updateSlides();
347
+			swiperInstance.updateProgress();
348
+			swiperInstance.updateSlidesClasses();
349
+
350
+			if (swiperInstance.lazy && swiperInstance.params.lazy.enabled) {
351
+				swiperInstance.lazy.load();
352
+			}
353
+		});
354
+	};
355
+
356
+	const calcParams = () => {
357
+		paramsData = getParams($$restProps);
358
+		$$invalidate(2, swiperParams = paramsData.params);
359
+		passedParams = paramsData.passedParams;
360
+		$$invalidate(3, restProps = paramsData.rest);
361
+	};
362
+
363
+	calcParams();
364
+	oldPassedParams = passedParams;
365
+
366
+	const onBeforeBreakpoint = () => {
367
+		breakpointChanged = true;
368
+	};
369
+
370
+	swiperParams.onAny = (event, ...args) => {
371
+		dispatch(event, [args]);
372
+	};
373
+
374
+	Object.assign(swiperParams.on, {
375
+		_beforeBreakpoint: onBeforeBreakpoint,
376
+		_containerClasses(_swiper, classes) {
377
+			$$invalidate(1, containerClasses = classes);
378
+		},
379
+		_swiper(_swiper) {
380
+			swiperInstance = _swiper;
381
+
382
+			if (_swiper.virtual && _swiper.params.virtual.enabled) {
383
+				_swiper.params.virtual.cache = false;
384
+				_swiper.params.virtual.renderExternalUpdate = false;
385
+
386
+				_swiper.params.virtual.renderExternal = data => {
387
+					setVirtualData(data);
388
+
389
+					if (swiperParams.virtual && swiperParams.virtual.renderExternal) {
390
+						swiperParams.virtual.renderExternal(data);
391
+					}
392
+				};
393
+			}
394
+
395
+			dispatch("swiper", [_swiper]);
396
+		}
397
+	});
398
+
399
+	onMount(() => {
400
+		if (!swiperEl) return;
401
+
402
+		initSwiper(
403
+			{
404
+				el: swiperEl,
405
+				nextEl,
406
+				prevEl,
407
+				paginationEl,
408
+				scrollbarEl
409
+			},
410
+			swiperParams
411
+		);
412
+
413
+		if (swiperParams.virtual) return;
414
+
415
+		swiperInstance.slides.each(el => {
416
+			if (el.onSwiper) el.onSwiper(swiperInstance);
417
+		});
418
+	});
419
+
420
+	afterUpdate(() => {
421
+		if (!swiperInstance) return;
422
+		calcParams();
423
+		const changedParams = getChangedParams(passedParams, oldPassedParams);
424
+
425
+		if ((changedParams.length || breakpointChanged) && swiperInstance && !swiperInstance.destroyed) {
426
+			updateSwiper(swiperInstance, passedParams, changedParams);
427
+		}
428
+
429
+		breakpointChanged = false;
430
+		oldPassedParams = passedParams;
431
+	});
432
+
433
+	onDestroy(() => {
434
+		if (swiperInstance && !swiperInstance.destroyed) {
435
+			swiperInstance.destroy();
436
+		}
437
+	});
438
+
439
+	let { $$slots = {}, $$scope } = $$props;
440
+
441
+	function div0_binding($$value) {
442
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
443
+			prevEl = $$value;
444
+			$$invalidate(5, prevEl);
445
+		});
446
+	}
447
+
448
+	function div1_binding($$value) {
449
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
450
+			nextEl = $$value;
451
+			$$invalidate(6, nextEl);
452
+		});
453
+	}
454
+
455
+	function div_binding($$value) {
456
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
457
+			scrollbarEl = $$value;
458
+			$$invalidate(7, scrollbarEl);
459
+		});
460
+	}
461
+
462
+	function div_binding_1($$value) {
463
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
464
+			paginationEl = $$value;
465
+			$$invalidate(8, paginationEl);
466
+		});
467
+	}
468
+
469
+	function div1_binding_1($$value) {
470
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
471
+			swiperEl = $$value;
472
+			$$invalidate(4, swiperEl);
473
+		});
474
+	}
475
+
476
+	$$self.$$set = $$new_props => {
477
+		$$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
478
+		$$invalidate(27, $$restProps = compute_rest_props($$props, omit_props_names));
479
+		if ("class" in $$new_props) $$invalidate(0, className = $$new_props.class);
480
+		if ("$$scope" in $$new_props) $$invalidate(11, $$scope = $$new_props.$$scope);
481
+	};
482
+
483
+	return [
484
+		className,
485
+		containerClasses,
486
+		swiperParams,
487
+		restProps,
488
+		swiperEl,
489
+		prevEl,
490
+		nextEl,
491
+		scrollbarEl,
492
+		paginationEl,
493
+		virtualData,
494
+		swiper,
495
+		$$scope,
496
+		$$slots,
497
+		div0_binding,
498
+		div1_binding,
499
+		div_binding,
500
+		div_binding_1,
501
+		div1_binding_1
502
+	];
503
+}
504
+
505
+class Swiper extends SvelteComponent {
506
+	constructor(options) {
507
+		super();
508
+		init(this, options, instance, create_fragment, safe_not_equal, { class: 0, swiper: 10 });
509
+	}
510
+
511
+	get swiper() {
512
+		return this.$$.ctx[10];
513
+	}
514
+}
515
+
516
+exports.default = Swiper;
0 517
\ No newline at end of file
1 518
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.updateSwiper = updateSwiper;
5
+
6
+var _utils = require("./utils");
7
+
8
+function updateSwiper(swiper, passedParams, changedParams) {
9
+  var updateParams = changedParams.filter(function (key) {
10
+    return key !== 'children' && key !== 'direction';
11
+  });
12
+  var currentParams = swiper.params,
13
+      pagination = swiper.pagination,
14
+      navigation = swiper.navigation,
15
+      scrollbar = swiper.scrollbar,
16
+      thumbs = swiper.thumbs;
17
+  var needThumbsInit;
18
+  var needControllerInit;
19
+  var needPaginationInit;
20
+  var needScrollbarInit;
21
+  var needNavigationInit;
22
+
23
+  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {
24
+    needThumbsInit = true;
25
+  }
26
+
27
+  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
28
+    needControllerInit = true;
29
+  }
30
+
31
+  if (changedParams.includes('pagination') && passedParams.pagination && passedParams.pagination.el && currentParams.pagination && pagination && !pagination.el) {
32
+    needPaginationInit = true;
33
+  }
34
+
35
+  if (changedParams.includes('scrollbar') && passedParams.scrollbar && passedParams.scrollbar.el && currentParams.scrollbar && scrollbar && !scrollbar.el) {
36
+    needScrollbarInit = true;
37
+  }
38
+
39
+  if (changedParams.includes('navigation') && passedParams.navigation && passedParams.navigation.prevEl && passedParams.navigation.nextEl && currentParams.navigation && navigation && !navigation.prevEl && !navigation.nextEl) {
40
+    needNavigationInit = true;
41
+  }
42
+
43
+  updateParams.forEach(function (key) {
44
+    if ((0, _utils.isObject)(currentParams[key]) && (0, _utils.isObject)(passedParams[key])) {
45
+      (0, _utils.extend)(currentParams[key], passedParams[key]);
46
+    } else {
47
+      currentParams[key] = passedParams[key];
48
+    }
49
+  });
50
+
51
+  if (needThumbsInit) {
52
+    var initialized = thumbs.init();
53
+
54
+    if (initialized) {
55
+      thumbs.update(true);
56
+    }
57
+  }
58
+
59
+  if (needControllerInit) {
60
+    swiper.controller.control = currentParams.controller.control;
61
+  }
62
+
63
+  if (needPaginationInit) {
64
+    pagination.init();
65
+    pagination.render();
66
+    pagination.update();
67
+  }
68
+
69
+  if (needScrollbarInit) {
70
+    scrollbar.init();
71
+    scrollbar.updateSize();
72
+    scrollbar.setTranslate();
73
+  }
74
+
75
+  if (needNavigationInit) {
76
+    navigation.init();
77
+    navigation.update();
78
+  }
79
+
80
+  if (changedParams.includes('allowSlideNext')) {
81
+    swiper.allowSlideNext = passedParams.allowSlideNext;
82
+  }
83
+
84
+  if (changedParams.includes('allowSlidePrev')) {
85
+    swiper.allowSlidePrev = passedParams.allowSlidePrev;
86
+  }
87
+
88
+  if (changedParams.includes('direction')) {
89
+    swiper.changeDirection(passedParams.direction, false);
90
+  }
91
+
92
+  swiper.update();
93
+}
0 94
\ No newline at end of file
1 95
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.isObject = isObject;
5
+exports.extend = extend;
6
+exports.needsNavigation = needsNavigation;
7
+exports.needsPagination = needsPagination;
8
+exports.needsScrollbar = needsScrollbar;
9
+exports.uniqueClasses = uniqueClasses;
10
+
11
+function isObject(o) {
12
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
13
+}
14
+
15
+function extend(target, src) {
16
+  Object.keys(src).forEach(function (key) {
17
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
18
+      extend(target[key], src[key]);
19
+    } else {
20
+      target[key] = src[key];
21
+    }
22
+  });
23
+}
24
+
25
+function needsNavigation(params) {
26
+  if (params === void 0) {
27
+    params = {};
28
+  }
29
+
30
+  return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';
31
+}
32
+
33
+function needsPagination(params) {
34
+  if (params === void 0) {
35
+    params = {};
36
+  }
37
+
38
+  return params.pagination && typeof params.pagination.el === 'undefined';
39
+}
40
+
41
+function needsScrollbar(params) {
42
+  if (params === void 0) {
43
+    params = {};
44
+  }
45
+
46
+  return params.scrollbar && typeof params.scrollbar.el === 'undefined';
47
+}
48
+
49
+function uniqueClasses(classNames) {
50
+  if (classNames === void 0) {
51
+    classNames = '';
52
+  }
53
+
54
+  var classes = classNames.split(' ').map(function (c) {
55
+    return c.trim();
56
+  }).filter(function (c) {
57
+    return !!c;
58
+  });
59
+  var unique = [];
60
+  classes.forEach(function (c) {
61
+    if (unique.indexOf(c) < 0) unique.push(c);
62
+  });
63
+  return unique.join(' ');
64
+}
0 65
\ No newline at end of file
1 66
new file mode 100644
... ...
@@ -0,0 +1,50 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _dom = require("dom7");
7
+
8
+var Methods = {
9
+  addClass: _dom.addClass,
10
+  removeClass: _dom.removeClass,
11
+  hasClass: _dom.hasClass,
12
+  toggleClass: _dom.toggleClass,
13
+  attr: _dom.attr,
14
+  removeAttr: _dom.removeAttr,
15
+  transform: _dom.transform,
16
+  transition: _dom.transition,
17
+  on: _dom.on,
18
+  off: _dom.off,
19
+  trigger: _dom.trigger,
20
+  transitionEnd: _dom.transitionEnd,
21
+  outerWidth: _dom.outerWidth,
22
+  outerHeight: _dom.outerHeight,
23
+  styles: _dom.styles,
24
+  offset: _dom.offset,
25
+  css: _dom.css,
26
+  each: _dom.each,
27
+  html: _dom.html,
28
+  text: _dom.text,
29
+  is: _dom.is,
30
+  index: _dom.index,
31
+  eq: _dom.eq,
32
+  append: _dom.append,
33
+  prepend: _dom.prepend,
34
+  next: _dom.next,
35
+  nextAll: _dom.nextAll,
36
+  prev: _dom.prev,
37
+  prevAll: _dom.prevAll,
38
+  parent: _dom.parent,
39
+  parents: _dom.parents,
40
+  closest: _dom.closest,
41
+  find: _dom.find,
42
+  children: _dom.children,
43
+  filter: _dom.filter,
44
+  remove: _dom.remove
45
+};
46
+Object.keys(Methods).forEach(function (methodName) {
47
+  _dom.$.fn[methodName] = Methods[methodName];
48
+});
49
+var _default = _dom.$;
50
+exports.default = _default;
0 51
\ No newline at end of file
1 52
new file mode 100644
... ...
@@ -0,0 +1,31 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getBrowser = getBrowser;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var browser;
9
+
10
+function calcBrowser() {
11
+  var window = (0, _ssrWindow.getWindow)();
12
+
13
+  function isSafari() {
14
+    var ua = window.navigator.userAgent.toLowerCase();
15
+    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
16
+  }
17
+
18
+  return {
19
+    isEdge: !!window.navigator.userAgent.match(/Edge/g),
20
+    isSafari: isSafari(),
21
+    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
22
+  };
23
+}
24
+
25
+function getBrowser() {
26
+  if (!browser) {
27
+    browser = calcBrowser();
28
+  }
29
+
30
+  return browser;
31
+}
0 32
\ No newline at end of file
1 33
new file mode 100644
... ...
@@ -0,0 +1,67 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getDevice = getDevice;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _getSupport = require("./get-support");
9
+
10
+var device;
11
+
12
+function calcDevice(_temp) {
13
+  var _ref = _temp === void 0 ? {} : _temp,
14
+      userAgent = _ref.userAgent;
15
+
16
+  var support = (0, _getSupport.getSupport)();
17
+  var window = (0, _ssrWindow.getWindow)();
18
+  var platform = window.navigator.platform;
19
+  var ua = userAgent || window.navigator.userAgent;
20
+  var device = {
21
+    ios: false,
22
+    android: false
23
+  };
24
+  var screenWidth = window.screen.width;
25
+  var screenHeight = window.screen.height;
26
+  var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
27
+
28
+  var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
29
+  var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
30
+  var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
31
+  var windows = platform === 'Win32';
32
+  var macos = platform === 'MacIntel'; // iPadOs 13 fix
33
+
34
+  var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
35
+
36
+  if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
37
+    ipad = ua.match(/(Version)\/([\d.]+)/);
38
+    if (!ipad) ipad = [0, 1, '13_0_0'];
39
+    macos = false;
40
+  } // Android
41
+
42
+
43
+  if (android && !windows) {
44
+    device.os = 'android';
45
+    device.android = true;
46
+  }
47
+
48
+  if (ipad || iphone || ipod) {
49
+    device.os = 'ios';
50
+    device.ios = true;
51
+  } // Export object
52
+
53
+
54
+  return device;
55
+}
56
+
57
+function getDevice(overrides) {
58
+  if (overrides === void 0) {
59
+    overrides = {};
60
+  }
61
+
62
+  if (!device) {
63
+    device = calcDevice(overrides);
64
+  }
65
+
66
+  return device;
67
+}
0 68
\ No newline at end of file
1 69
new file mode 100644
... ...
@@ -0,0 +1,47 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getSupport = getSupport;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var support;
9
+
10
+function calcSupport() {
11
+  var window = (0, _ssrWindow.getWindow)();
12
+  var document = (0, _ssrWindow.getDocument)();
13
+  return {
14
+    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
15
+    pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
16
+    observer: function checkObserver() {
17
+      return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
18
+    }(),
19
+    passiveListener: function checkPassiveListener() {
20
+      var supportsPassive = false;
21
+
22
+      try {
23
+        var opts = Object.defineProperty({}, 'passive', {
24
+          // eslint-disable-next-line
25
+          get: function get() {
26
+            supportsPassive = true;
27
+          }
28
+        });
29
+        window.addEventListener('testPassiveListener', null, opts);
30
+      } catch (e) {// No support
31
+      }
32
+
33
+      return supportsPassive;
34
+    }(),
35
+    gestures: function checkGestures() {
36
+      return 'ongesturestart' in window;
37
+    }()
38
+  };
39
+}
40
+
41
+function getSupport() {
42
+  if (!support) {
43
+    support = calcSupport();
44
+  }
45
+
46
+  return support;
47
+}
0 48
\ No newline at end of file
1 49
new file mode 100644
... ...
@@ -0,0 +1,132 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.deleteProps = deleteProps;
5
+exports.nextTick = nextTick;
6
+exports.now = now;
7
+exports.getTranslate = getTranslate;
8
+exports.isObject = isObject;
9
+exports.extend = extend;
10
+exports.bindModuleMethods = bindModuleMethods;
11
+
12
+var _ssrWindow = require("ssr-window");
13
+
14
+function deleteProps(obj) {
15
+  var object = obj;
16
+  Object.keys(object).forEach(function (key) {
17
+    try {
18
+      object[key] = null;
19
+    } catch (e) {// no getter for object
20
+    }
21
+
22
+    try {
23
+      delete object[key];
24
+    } catch (e) {// something got wrong
25
+    }
26
+  });
27
+}
28
+
29
+function nextTick(callback, delay) {
30
+  if (delay === void 0) {
31
+    delay = 0;
32
+  }
33
+
34
+  return setTimeout(callback, delay);
35
+}
36
+
37
+function now() {
38
+  return Date.now();
39
+}
40
+
41
+function getTranslate(el, axis) {
42
+  if (axis === void 0) {
43
+    axis = 'x';
44
+  }
45
+
46
+  var window = (0, _ssrWindow.getWindow)();
47
+  var matrix;
48
+  var curTransform;
49
+  var transformMatrix;
50
+  var curStyle = window.getComputedStyle(el, null);
51
+
52
+  if (window.WebKitCSSMatrix) {
53
+    curTransform = curStyle.transform || curStyle.webkitTransform;
54
+
55
+    if (curTransform.split(',').length > 6) {
56
+      curTransform = curTransform.split(', ').map(function (a) {
57
+        return a.replace(',', '.');
58
+      }).join(', ');
59
+    } // Some old versions of Webkit choke when 'none' is passed; pass
60
+    // empty string instead in this case
61
+
62
+
63
+    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
64
+  } else {
65
+    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
66
+    matrix = transformMatrix.toString().split(',');
67
+  }
68
+
69
+  if (axis === 'x') {
70
+    // Latest Chrome and webkits Fix
71
+    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
72
+    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
73
+      else curTransform = parseFloat(matrix[4]);
74
+  }
75
+
76
+  if (axis === 'y') {
77
+    // Latest Chrome and webkits Fix
78
+    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
79
+    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
80
+      else curTransform = parseFloat(matrix[5]);
81
+  }
82
+
83
+  return curTransform || 0;
84
+}
85
+
86
+function isObject(o) {
87
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
88
+}
89
+
90
+function extend() {
91
+  var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
92
+
93
+  for (var i = 1; i < arguments.length; i += 1) {
94
+    var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
95
+
96
+    if (nextSource !== undefined && nextSource !== null) {
97
+      var keysArray = Object.keys(Object(nextSource));
98
+
99
+      for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
100
+        var nextKey = keysArray[nextIndex];
101
+        var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
102
+
103
+        if (desc !== undefined && desc.enumerable) {
104
+          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
105
+            extend(to[nextKey], nextSource[nextKey]);
106
+          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
107
+            to[nextKey] = {};
108
+            extend(to[nextKey], nextSource[nextKey]);
109
+          } else {
110
+            to[nextKey] = nextSource[nextKey];
111
+          }
112
+        }
113
+      }
114
+    }
115
+  }
116
+
117
+  return to;
118
+}
119
+
120
+function bindModuleMethods(instance, obj) {
121
+  Object.keys(obj).forEach(function (key) {
122
+    if (isObject(obj[key])) {
123
+      Object.keys(obj[key]).forEach(function (subKey) {
124
+        if (typeof obj[key][subKey] === 'function') {
125
+          obj[key][subKey] = obj[key][subKey].bind(instance);
126
+        }
127
+      });
128
+    }
129
+
130
+    instance[key] = obj[key];
131
+  });
132
+}
0 133
\ No newline at end of file
1 134
new file mode 100644
... ...
@@ -0,0 +1,57 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getChangedParams = getChangedParams;
5
+
6
+var _paramsList = require("./params-list");
7
+
8
+var _utils = require("./utils");
9
+
10
+function getChangedParams(swiperParams, oldParams, children, oldChildren) {
11
+  var keys = [];
12
+  if (!oldParams) return keys;
13
+
14
+  var addKey = function addKey(key) {
15
+    if (keys.indexOf(key) < 0) keys.push(key);
16
+  };
17
+
18
+  var oldChildrenKeys = oldChildren.map(function (child) {
19
+    return child.props && child.props.key;
20
+  });
21
+  var childrenKeys = children.map(function (child) {
22
+    return child.props && child.props.key;
23
+  });
24
+  if (oldChildrenKeys.join('') !== childrenKeys.join('')) keys.push('children');
25
+  if (oldChildren.length !== children.length) keys.push('children');
26
+
27
+  var watchParams = _paramsList.paramsList.filter(function (key) {
28
+    return key[0] === '_';
29
+  }).map(function (key) {
30
+    return key.replace(/_/, '');
31
+  });
32
+
33
+  watchParams.forEach(function (key) {
34
+    if (key in swiperParams && key in oldParams) {
35
+      if ((0, _utils.isObject)(swiperParams[key]) && (0, _utils.isObject)(oldParams[key])) {
36
+        var newKeys = Object.keys(swiperParams[key]);
37
+        var oldKeys = Object.keys(oldParams[key]);
38
+
39
+        if (newKeys.length !== oldKeys.length) {
40
+          addKey(key);
41
+        } else {
42
+          newKeys.forEach(function (newKey) {
43
+            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
44
+              addKey(key);
45
+            }
46
+          });
47
+          oldKeys.forEach(function (oldKey) {
48
+            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
49
+          });
50
+        }
51
+      } else if (swiperParams[key] !== oldParams[key]) {
52
+        addKey(key);
53
+      }
54
+    }
55
+  });
56
+  return keys;
57
+}
0 58
\ No newline at end of file
1 59
new file mode 100644
... ...
@@ -0,0 +1,44 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getChildren = getChildren;
5
+
6
+function getChildren(originalSlots, slidesRef, oldSlidesRef) {
7
+  if (originalSlots === void 0) {
8
+    originalSlots = {};
9
+  }
10
+
11
+  var slides = [];
12
+  var slots = {
13
+    'container-start': [],
14
+    'container-end': [],
15
+    'wrapper-start': [],
16
+    'wrapper-end': []
17
+  };
18
+
19
+  var getSlidesFromElements = function getSlidesFromElements(els, slotName) {
20
+    els.forEach(function (vnode) {
21
+      var isFragment = typeof vnode.type === 'symbol';
22
+      if (slotName === 'default') slotName = 'container-end';
23
+
24
+      if (isFragment && vnode.children) {
25
+        getSlidesFromElements(vnode.children, 'default');
26
+      } else if (vnode.type && vnode.type.name === 'SwiperSlide') {
27
+        slides.push(vnode);
28
+      } else if (slots[slotName]) {
29
+        slots[slotName].push(vnode);
30
+      }
31
+    });
32
+  };
33
+
34
+  Object.keys(originalSlots).forEach(function (slotName) {
35
+    var els = originalSlots[slotName]();
36
+    getSlidesFromElements(els, slotName);
37
+  });
38
+  oldSlidesRef.value = slidesRef.value;
39
+  slidesRef.value = slides;
40
+  return {
41
+    slides: slides,
42
+    slots: slots
43
+  };
44
+}
0 45
\ No newline at end of file
1 46
new file mode 100644
... ...
@@ -0,0 +1,57 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.getParams = getParams;
5
+
6
+var _core = _interopRequireDefault(require("../../core"));
7
+
8
+var _utils = require("./utils");
9
+
10
+var _paramsList = require("./params-list");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+// eslint-disable-next-line
15
+function getParams(obj) {
16
+  if (obj === void 0) {
17
+    obj = {};
18
+  }
19
+
20
+  var params = {
21
+    on: {}
22
+  };
23
+  var passedParams = {};
24
+  (0, _utils.extend)(params, _core.default.defaults);
25
+  (0, _utils.extend)(params, _core.default.extendedDefaults);
26
+  params._emitClasses = true;
27
+  var rest = {};
28
+
29
+  var allowedParams = _paramsList.paramsList.map(function (key) {
30
+    return key.replace(/_/, '');
31
+  });
32
+
33
+  Object.keys(obj).forEach(function (key) {
34
+    if (typeof obj[key] === 'undefined') return;
35
+
36
+    if (allowedParams.indexOf(key) >= 0) {
37
+      if ((0, _utils.isObject)(obj[key])) {
38
+        params[key] = {};
39
+        passedParams[key] = {};
40
+        (0, _utils.extend)(params[key], obj[key]);
41
+        (0, _utils.extend)(passedParams[key], obj[key]);
42
+      } else {
43
+        params[key] = obj[key];
44
+        passedParams[key] = obj[key];
45
+      }
46
+    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
47
+      params.on["" + key[2].toLowerCase() + key.substr(3)] = obj[key];
48
+    } else {
49
+      rest[key] = obj[key];
50
+    }
51
+  });
52
+  return {
53
+    params: params,
54
+    passedParams: passedParams,
55
+    rest: rest
56
+  };
57
+}
0 58
\ No newline at end of file
1 59
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.initSwiper = initSwiper;
5
+
6
+var _core = _interopRequireDefault(require("../../core"));
7
+
8
+var _utils = require("./utils");
9
+
10
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+// eslint-disable-next-line
13
+function initSwiper(_ref, swiperParams) {
14
+  var el = _ref.el,
15
+      nextEl = _ref.nextEl,
16
+      prevEl = _ref.prevEl,
17
+      paginationEl = _ref.paginationEl,
18
+      scrollbarEl = _ref.scrollbarEl;
19
+
20
+  if ((0, _utils.needsNavigation)(swiperParams) && nextEl && prevEl) {
21
+    if (swiperParams.navigation === true) {
22
+      swiperParams.navigation = {};
23
+    }
24
+
25
+    swiperParams.navigation.nextEl = nextEl;
26
+    swiperParams.navigation.prevEl = prevEl;
27
+  }
28
+
29
+  if ((0, _utils.needsPagination)(swiperParams) && paginationEl) {
30
+    if (swiperParams.pagination === true) {
31
+      swiperParams.pagination = {};
32
+    }
33
+
34
+    swiperParams.pagination.el = paginationEl;
35
+  }
36
+
37
+  if ((0, _utils.needsScrollbar)(swiperParams) && scrollbarEl) {
38
+    if (swiperParams.scrollbar === true) {
39
+      swiperParams.scrollbar = {};
40
+    }
41
+
42
+    swiperParams.scrollbar.el = scrollbarEl;
43
+  }
44
+
45
+  return new _core.default(el, swiperParams);
46
+}
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,89 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.calcLoopedSlides = calcLoopedSlides;
5
+exports.renderLoop = renderLoop;
6
+
7
+var _vue = require("vue");
8
+
9
+var _core = _interopRequireDefault(require("../../core"));
10
+
11
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+function _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); }
14
+
15
+function calcLoopedSlides(slides, swiperParams) {
16
+  var slidesPerViewParams = swiperParams.slidesPerView;
17
+
18
+  if (swiperParams.breakpoints) {
19
+    var breakpoint = _core.default.prototype.getBreakpoint(swiperParams.breakpoints);
20
+
21
+    var breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;
22
+
23
+    if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {
24
+      slidesPerViewParams = breakpointOnlyParams.slidesPerView;
25
+    }
26
+  }
27
+
28
+  var loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));
29
+  loopedSlides += swiperParams.loopAdditionalSlides;
30
+
31
+  if (loopedSlides > slides.length) {
32
+    loopedSlides = slides.length;
33
+  }
34
+
35
+  return loopedSlides;
36
+}
37
+
38
+function renderLoop(swiperRef, slides, swiperParams) {
39
+  var modifiedSlides = slides.map(function (child, index) {
40
+    if (!child.props) child.props = {};
41
+    child.props.swiperRef = swiperRef;
42
+    child.props['data-swiper-slide-index'] = index;
43
+    return child;
44
+  });
45
+
46
+  function duplicateSlide(child, index, position) {
47
+    if (!child.props) child.props = {};
48
+    return (0, _vue.h)(child.type, _extends(_extends({}, child.props), {}, {
49
+      key: child.key + "-duplicate-" + index + "-" + position,
50
+      class: (child.props.className || '') + " " + swiperParams.slideDuplicateClass + " " + (child.props.class || '')
51
+    }), child.children);
52
+  }
53
+
54
+  if (swiperParams.loopFillGroupWithBlank) {
55
+    var blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;
56
+
57
+    if (blankSlidesNum !== swiperParams.slidesPerGroup) {
58
+      for (var i = 0; i < blankSlidesNum; i += 1) {
59
+        var blankSlide = (0, _vue.h)('div', {
60
+          class: swiperParams.slideClass + " " + swiperParams.slideBlankClass
61
+        });
62
+        modifiedSlides.push(blankSlide);
63
+      }
64
+    }
65
+  }
66
+
67
+  if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {
68
+    swiperParams.loopedSlides = modifiedSlides.length;
69
+  }
70
+
71
+  var loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);
72
+  var prependSlides = [];
73
+  var appendSlides = [];
74
+  modifiedSlides.forEach(function (child, index) {
75
+    if (index < loopedSlides) {
76
+      appendSlides.push(duplicateSlide(child, index, 'prepend'));
77
+    }
78
+
79
+    if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) {
80
+      prependSlides.push(duplicateSlide(child, index, 'append'));
81
+    }
82
+  });
83
+
84
+  if (swiperRef.value) {
85
+    swiperRef.value.loopedSlides = loopedSlides;
86
+  }
87
+
88
+  return [].concat(prependSlides, modifiedSlides, appendSlides);
89
+}
0 90
\ No newline at end of file
1 91
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.paramsList = void 0;
5
+
6
+/* underscore in name -> watch for changes */
7
+var paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', // modules
8
+'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];
9
+exports.paramsList = paramsList;
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,84 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.SwiperSlide = void 0;
5
+
6
+var _vue = require("vue");
7
+
8
+var _utils = require("./utils");
9
+
10
+var SwiperSlide = {
11
+  name: 'SwiperSlide',
12
+  props: {
13
+    tag: {
14
+      type: String,
15
+      default: 'div'
16
+    },
17
+    swiperRef: Object,
18
+    zoom: {
19
+      type: Boolean,
20
+      default: undefined
21
+    },
22
+    virtualIndex: {
23
+      type: [String, Number],
24
+      default: undefined
25
+    }
26
+  },
27
+  setup: function setup(props, _ref) {
28
+    var slots = _ref.slots;
29
+    var eventAttached = false;
30
+    var swiperRef = props.swiperRef;
31
+    var slideElRef = (0, _vue.ref)(null);
32
+    var slideClasses = (0, _vue.ref)('swiper-slide');
33
+
34
+    function updateClasses(swiper, el, classNames) {
35
+      if (el === slideElRef.value) {
36
+        slideClasses.value = classNames;
37
+      }
38
+    }
39
+
40
+    (0, _vue.onMounted)(function () {
41
+      if (!swiperRef.value) return;
42
+      swiperRef.value.on('_slideClass', updateClasses);
43
+      eventAttached = true;
44
+    });
45
+    (0, _vue.onBeforeUpdate)(function () {
46
+      if (eventAttached || !swiperRef || !swiperRef.value) return;
47
+      swiperRef.value.on('_slideClass', updateClasses);
48
+      eventAttached = true;
49
+    });
50
+    (0, _vue.onUpdated)(function () {
51
+      if (!slideElRef.value || !swiperRef || !swiperRef.value) return;
52
+
53
+      if (swiperRef.value.destroyed) {
54
+        if (slideClasses.value !== 'swiper-slide') {
55
+          slideClasses.value = 'swiper-slide';
56
+        }
57
+      }
58
+    });
59
+    (0, _vue.onBeforeUnmount)(function () {
60
+      if (!swiperRef || !swiperRef.value) return;
61
+      swiperRef.value.off('_slideClass', updateClasses);
62
+    });
63
+    var slideData = (0, _vue.computed)(function () {
64
+      return {
65
+        isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-active') >= 0,
66
+        isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0,
67
+        isDuplicate: slideClasses.value.indexOf('swiper-slide-duplicate') >= 0,
68
+        isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-prev') >= 0,
69
+        isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate next') >= 0
70
+      };
71
+    });
72
+    return function () {
73
+      return (0, _vue.h)(props.tag, {
74
+        class: (0, _utils.uniqueClasses)("" + slideClasses.value),
75
+        ref: slideElRef,
76
+        'data-swiper-slide-index': props.virtualIndex
77
+      }, props.zoom ? (0, _vue.h)('div', {
78
+        class: 'swiper-zoom-container',
79
+        'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined
80
+      }, slots.default && slots.default(slideData.value)) : slots.default && slots.default(slideData.value));
81
+    };
82
+  }
83
+};
84
+exports.SwiperSlide = SwiperSlide;
0 85
\ No newline at end of file
1 86
new file mode 100644
... ...
@@ -0,0 +1,633 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.Swiper = void 0;
5
+
6
+var _vue = require("vue");
7
+
8
+var _getParams3 = require("./get-params");
9
+
10
+var _initSwiper = require("./init-swiper");
11
+
12
+var _utils = require("./utils");
13
+
14
+var _loop = require("./loop");
15
+
16
+var _getChangedParams = require("./get-changed-params");
17
+
18
+var _getChildren2 = require("./get-children");
19
+
20
+var _updateSwiper = require("./update-swiper");
21
+
22
+var _virtual = require("./virtual");
23
+
24
+var Swiper = {
25
+  name: 'Swiper',
26
+  props: {
27
+    tag: {
28
+      type: String,
29
+      default: 'div'
30
+    },
31
+    wrapperTag: {
32
+      type: String,
33
+      default: 'div'
34
+    },
35
+    init: {
36
+      type: Boolean,
37
+      default: undefined
38
+    },
39
+    direction: {
40
+      type: String,
41
+      default: undefined
42
+    },
43
+    touchEventsTarget: {
44
+      type: String,
45
+      default: undefined
46
+    },
47
+    initialSlide: {
48
+      type: Number,
49
+      default: undefined
50
+    },
51
+    speed: {
52
+      type: Number,
53
+      default: undefined
54
+    },
55
+    cssMode: {
56
+      type: Boolean,
57
+      default: undefined
58
+    },
59
+    updateOnWindowResize: {
60
+      type: Boolean,
61
+      default: undefined
62
+    },
63
+    nested: {
64
+      type: Boolean,
65
+      default: undefined
66
+    },
67
+    width: {
68
+      type: Number,
69
+      default: undefined
70
+    },
71
+    height: {
72
+      type: Number,
73
+      default: undefined
74
+    },
75
+    preventInteractionOnTransition: {
76
+      type: Boolean,
77
+      default: undefined
78
+    },
79
+    userAgent: {
80
+      type: String,
81
+      default: undefined
82
+    },
83
+    url: {
84
+      type: String,
85
+      default: undefined
86
+    },
87
+    edgeSwipeDetection: {
88
+      type: Boolean,
89
+      default: undefined
90
+    },
91
+    edgeSwipeThreshold: {
92
+      type: Number,
93
+      default: undefined
94
+    },
95
+    freeMode: {
96
+      type: Boolean,
97
+      default: undefined
98
+    },
99
+    freeModeMomentum: {
100
+      type: Boolean,
101
+      default: undefined
102
+    },
103
+    freeModeMomentumRatio: {
104
+      type: Number,
105
+      default: undefined
106
+    },
107
+    freeModeMomentumBounce: {
108
+      type: Boolean,
109
+      default: undefined
110
+    },
111
+    freeModeMomentumBounceRatio: {
112
+      type: Number,
113
+      default: undefined
114
+    },
115
+    freeModeMomentumVelocityRatio: {
116
+      type: Number,
117
+      default: undefined
118
+    },
119
+    freeModeSticky: {
120
+      type: Boolean,
121
+      default: undefined
122
+    },
123
+    freeModeMinimumVelocity: {
124
+      type: Number,
125
+      default: undefined
126
+    },
127
+    autoHeight: {
128
+      type: Boolean,
129
+      default: undefined
130
+    },
131
+    setWrapperSize: {
132
+      type: Boolean,
133
+      default: undefined
134
+    },
135
+    virtualTranslate: {
136
+      type: Boolean,
137
+      default: undefined
138
+    },
139
+    effect: {
140
+      type: String,
141
+      default: undefined
142
+    },
143
+    breakpoints: {
144
+      type: Object,
145
+      default: undefined
146
+    },
147
+    spaceBetween: {
148
+      type: Number,
149
+      default: undefined
150
+    },
151
+    slidesPerView: {
152
+      type: [Number, String],
153
+      default: undefined
154
+    },
155
+    slidesPerColumn: {
156
+      type: Number,
157
+      default: undefined
158
+    },
159
+    slidesPerColumnFill: {
160
+      type: String,
161
+      default: undefined
162
+    },
163
+    slidesPerGroup: {
164
+      type: Number,
165
+      default: undefined
166
+    },
167
+    slidesPerGroupSkip: {
168
+      type: Number,
169
+      default: undefined
170
+    },
171
+    centeredSlides: {
172
+      type: Boolean,
173
+      default: undefined
174
+    },
175
+    centeredSlidesBounds: {
176
+      type: Boolean,
177
+      default: undefined
178
+    },
179
+    slidesOffsetBefore: {
180
+      type: Number,
181
+      default: undefined
182
+    },
183
+    slidesOffsetAfter: {
184
+      type: Number,
185
+      default: undefined
186
+    },
187
+    normalizeSlideIndex: {
188
+      type: Boolean,
189
+      default: undefined
190
+    },
191
+    centerInsufficientSlides: {
192
+      type: Boolean,
193
+      default: undefined
194
+    },
195
+    watchOverflow: {
196
+      type: Boolean,
197
+      default: undefined
198
+    },
199
+    roundLengths: {
200
+      type: Boolean,
201
+      default: undefined
202
+    },
203
+    touchRatio: {
204
+      type: Number,
205
+      default: undefined
206
+    },
207
+    touchAngle: {
208
+      type: Number,
209
+      default: undefined
210
+    },
211
+    simulateTouch: {
212
+      type: Boolean,
213
+      default: undefined
214
+    },
215
+    shortSwipes: {
216
+      type: Boolean,
217
+      default: undefined
218
+    },
219
+    longSwipes: {
220
+      type: Boolean,
221
+      default: undefined
222
+    },
223
+    longSwipesRatio: {
224
+      type: Number,
225
+      default: undefined
226
+    },
227
+    longSwipesMs: {
228
+      type: Number,
229
+      default: undefined
230
+    },
231
+    followFinger: {
232
+      type: Boolean,
233
+      default: undefined
234
+    },
235
+    allowTouchMove: {
236
+      type: Boolean,
237
+      default: undefined
238
+    },
239
+    threshold: {
240
+      type: Number,
241
+      default: undefined
242
+    },
243
+    touchMoveStopPropagation: {
244
+      type: Boolean,
245
+      default: undefined
246
+    },
247
+    touchStartPreventDefault: {
248
+      type: Boolean,
249
+      default: undefined
250
+    },
251
+    touchStartForcePreventDefault: {
252
+      type: Boolean,
253
+      default: undefined
254
+    },
255
+    touchReleaseOnEdges: {
256
+      type: Boolean,
257
+      default: undefined
258
+    },
259
+    uniqueNavElements: {
260
+      type: Boolean,
261
+      default: undefined
262
+    },
263
+    resistance: {
264
+      type: Boolean,
265
+      default: undefined
266
+    },
267
+    resistanceRatio: {
268
+      type: Number,
269
+      default: undefined
270
+    },
271
+    watchSlidesProgress: {
272
+      type: Boolean,
273
+      default: undefined
274
+    },
275
+    watchSlidesVisibility: {
276
+      type: Boolean,
277
+      default: undefined
278
+    },
279
+    grabCursor: {
280
+      type: Boolean,
281
+      default: undefined
282
+    },
283
+    preventClicks: {
284
+      type: Boolean,
285
+      default: undefined
286
+    },
287
+    preventClicksPropagation: {
288
+      type: Boolean,
289
+      default: undefined
290
+    },
291
+    slideToClickedSlide: {
292
+      type: Boolean,
293
+      default: undefined
294
+    },
295
+    preloadImages: {
296
+      type: Boolean,
297
+      default: undefined
298
+    },
299
+    updateOnImagesReady: {
300
+      type: Boolean,
301
+      default: undefined
302
+    },
303
+    loop: {
304
+      type: Boolean,
305
+      default: undefined
306
+    },
307
+    loopAdditionalSlides: {
308
+      type: Number,
309
+      default: undefined
310
+    },
311
+    loopedSlides: {
312
+      type: Number,
313
+      default: undefined
314
+    },
315
+    loopFillGroupWithBlank: {
316
+      type: Boolean,
317
+      default: undefined
318
+    },
319
+    loopPreventsSlide: {
320
+      type: Boolean,
321
+      default: undefined
322
+    },
323
+    allowSlidePrev: {
324
+      type: Boolean,
325
+      default: undefined
326
+    },
327
+    allowSlideNext: {
328
+      type: Boolean,
329
+      default: undefined
330
+    },
331
+    swipeHandler: {
332
+      type: Boolean,
333
+      default: undefined
334
+    },
335
+    noSwiping: {
336
+      type: Boolean,
337
+      default: undefined
338
+    },
339
+    noSwipingClass: {
340
+      type: String,
341
+      default: undefined
342
+    },
343
+    noSwipingSelector: {
344
+      type: String,
345
+      default: undefined
346
+    },
347
+    passiveListeners: {
348
+      type: Boolean,
349
+      default: undefined
350
+    },
351
+    containerModifierClass: {
352
+      type: String,
353
+      default: undefined
354
+    },
355
+    slideClass: {
356
+      type: String,
357
+      default: undefined
358
+    },
359
+    slideBlankClass: {
360
+      type: String,
361
+      default: undefined
362
+    },
363
+    slideActiveClass: {
364
+      type: String,
365
+      default: undefined
366
+    },
367
+    slideDuplicateActiveClass: {
368
+      type: String,
369
+      default: undefined
370
+    },
371
+    slideVisibleClass: {
372
+      type: String,
373
+      default: undefined
374
+    },
375
+    slideDuplicateClass: {
376
+      type: String,
377
+      default: undefined
378
+    },
379
+    slideNextClass: {
380
+      type: String,
381
+      default: undefined
382
+    },
383
+    slideDuplicateNextClass: {
384
+      type: String,
385
+      default: undefined
386
+    },
387
+    slidePrevClass: {
388
+      type: String,
389
+      default: undefined
390
+    },
391
+    slideDuplicatePrevClass: {
392
+      type: String,
393
+      default: undefined
394
+    },
395
+    wrapperClass: {
396
+      type: String,
397
+      default: undefined
398
+    },
399
+    runCallbacksOnInit: {
400
+      type: Boolean,
401
+      default: undefined
402
+    },
403
+    a11y: {
404
+      type: [Boolean, Object],
405
+      default: undefined
406
+    },
407
+    autoplay: {
408
+      type: [Boolean, Object],
409
+      default: undefined
410
+    },
411
+    controller: {
412
+      type: Object,
413
+      default: undefined
414
+    },
415
+    coverflowEffect: {
416
+      type: Object,
417
+      default: undefined
418
+    },
419
+    cubeEffect: {
420
+      type: Object,
421
+      default: undefined
422
+    },
423
+    fadeEffect: {
424
+      type: Object,
425
+      default: undefined
426
+    },
427
+    flipEffect: {
428
+      type: Object,
429
+      default: undefined
430
+    },
431
+    hashNavigation: {
432
+      type: [Boolean, Object],
433
+      default: undefined
434
+    },
435
+    history: {
436
+      type: [Boolean, Object],
437
+      default: undefined
438
+    },
439
+    keyboard: {
440
+      type: [Boolean, Object],
441
+      default: undefined
442
+    },
443
+    lazy: {
444
+      type: [Boolean, Object],
445
+      default: undefined
446
+    },
447
+    mousewheel: {
448
+      type: [Boolean, Object],
449
+      default: undefined
450
+    },
451
+    navigation: {
452
+      type: [Boolean, Object],
453
+      default: undefined
454
+    },
455
+    pagination: {
456
+      type: [Boolean, Object],
457
+      default: undefined
458
+    },
459
+    parallax: {
460
+      type: [Boolean, Object],
461
+      default: undefined
462
+    },
463
+    scrollbar: {
464
+      type: [Boolean, Object],
465
+      default: undefined
466
+    },
467
+    thumbs: {
468
+      type: Object,
469
+      default: undefined
470
+    },
471
+    virtual: {
472
+      type: [Boolean, Object],
473
+      default: undefined
474
+    },
475
+    zoom: {
476
+      type: [Boolean, Object],
477
+      default: undefined
478
+    }
479
+  },
480
+  emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_swiper', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'doubleTap', 'doubleClick', 'destroy', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress', 'lazyImageLoad', 'lazyImageReady', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'update', 'zoomChange'],
481
+  setup: function setup(props, _ref) {
482
+    var originalSlots = _ref.slots,
483
+        emit = _ref.emit;
484
+    var Tag = props.tag,
485
+        WrapperTag = props.wrapperTag;
486
+    var containerClasses = (0, _vue.ref)('swiper-container');
487
+    var virtualData = (0, _vue.ref)(null);
488
+    var breakpointChanged = (0, _vue.ref)(false);
489
+    var initializedRef = (0, _vue.ref)(false);
490
+    var swiperElRef = (0, _vue.ref)(null);
491
+    var swiperRef = (0, _vue.ref)(null);
492
+    var oldPassedParamsRef = (0, _vue.ref)(null);
493
+    var slidesRef = (0, _vue.ref)([]);
494
+    var oldSlidesRef = (0, _vue.ref)([]);
495
+    var nextElRef = (0, _vue.ref)(null);
496
+    var prevElRef = (0, _vue.ref)(null);
497
+    var paginationElRef = (0, _vue.ref)(null);
498
+    var scrollbarElRef = (0, _vue.ref)(null);
499
+
500
+    var _getParams = (0, _getParams3.getParams)(props),
501
+        swiperParams = _getParams.params,
502
+        passedParams = _getParams.passedParams;
503
+
504
+    (0, _getChildren2.getChildren)(originalSlots, slidesRef, oldSlidesRef);
505
+    oldPassedParamsRef.value = passedParams;
506
+    oldSlidesRef.value = slidesRef.value;
507
+
508
+    var onBeforeBreakpoint = function onBeforeBreakpoint() {
509
+      (0, _getChildren2.getChildren)(originalSlots, slidesRef, oldSlidesRef);
510
+      breakpointChanged.value = true;
511
+    };
512
+
513
+    swiperParams.onAny = function (event) {
514
+      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
515
+        args[_key - 1] = arguments[_key];
516
+      }
517
+
518
+      emit.apply(void 0, [event].concat(args));
519
+    };
520
+
521
+    Object.assign(swiperParams.on, {
522
+      _beforeBreakpoint: onBeforeBreakpoint,
523
+      _containerClasses: function _containerClasses(swiper, classes) {
524
+        containerClasses.value = classes;
525
+      },
526
+      _swiper: function _swiper(swiper) {
527
+        swiper.loopCreate = function () {};
528
+
529
+        swiper.loopDestroy = function () {};
530
+
531
+        if (swiperParams.loop) {
532
+          swiper.loopedSlides = (0, _loop.calcLoopedSlides)(slidesRef.value, swiperParams);
533
+        }
534
+
535
+        swiperRef.value = swiper;
536
+
537
+        if (swiper.virtual && swiper.params.virtual.enabled) {
538
+          swiper.virtual.slides = slidesRef.value;
539
+          swiper.params.virtual.cache = false;
540
+
541
+          swiper.params.virtual.renderExternal = function (data) {
542
+            virtualData.value = data;
543
+          };
544
+
545
+          swiper.params.virtual.renderExternalUpdate = false;
546
+        }
547
+      }
548
+    });
549
+    (0, _vue.onUpdated)(function () {
550
+      // set initialized flag
551
+      if (!initializedRef.value && swiperRef.value) {
552
+        swiperRef.value.emitSlidesClasses();
553
+        initializedRef.value = true;
554
+      } // watch for params change
555
+
556
+
557
+      var _getParams2 = (0, _getParams3.getParams)(props),
558
+          newPassedParams = _getParams2.passedParams;
559
+
560
+      var changedParams = (0, _getChangedParams.getChangedParams)(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value);
561
+      oldPassedParamsRef.value = newPassedParams;
562
+
563
+      if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) {
564
+        (0, _updateSwiper.updateSwiper)(swiperRef.value, slidesRef.value, newPassedParams, changedParams);
565
+      }
566
+
567
+      breakpointChanged.value = false;
568
+    }); // update on virtual update
569
+
570
+    (0, _vue.watch)(virtualData, function () {
571
+      (0, _virtual.updateOnVirtualData)(swiperRef.value);
572
+    }); // init swiper
573
+
574
+    (0, _vue.onMounted)(function () {
575
+      if (!swiperElRef.value) return;
576
+      (0, _initSwiper.initSwiper)({
577
+        el: swiperElRef.value,
578
+        nextEl: nextElRef.value,
579
+        prevEl: prevElRef.value,
580
+        paginationEl: paginationElRef.value,
581
+        scrollbarEl: scrollbarElRef.value
582
+      }, swiperParams);
583
+      emit('swiper', swiperRef.value);
584
+    });
585
+    (0, _vue.onBeforeUnmount)(function () {
586
+      if (swiperRef.value && !swiperRef.value.destroyed) {
587
+        swiperRef.value.destroy();
588
+      }
589
+    }); // bypass swiper instance to slides
590
+
591
+    function renderSlides(slides) {
592
+      if (swiperParams.virtual) {
593
+        return (0, _virtual.renderVirtual)(swiperRef, slides, virtualData.value);
594
+      }
595
+
596
+      if (!swiperParams.loop || swiperRef.value && swiperRef.value.destroyed) {
597
+        slides.forEach(function (slide) {
598
+          if (!slide.props) slide.props = {};
599
+          slide.props.swiperRef = swiperRef;
600
+        });
601
+        return slides;
602
+      }
603
+
604
+      return (0, _loop.renderLoop)(swiperRef, slides, swiperParams);
605
+    }
606
+
607
+    return function () {
608
+      var _getChildren = (0, _getChildren2.getChildren)(originalSlots, slidesRef, oldSlidesRef),
609
+          slides = _getChildren.slides,
610
+          slots = _getChildren.slots;
611
+
612
+      return (0, _vue.h)(Tag, {
613
+        ref: swiperElRef,
614
+        class: (0, _utils.uniqueClasses)(containerClasses.value)
615
+      }, [slots['container-start'], (0, _utils.needsNavigation)(props) && [(0, _vue.h)('div', {
616
+        ref: prevElRef,
617
+        class: 'swiper-button-prev'
618
+      }), (0, _vue.h)('div', {
619
+        ref: nextElRef,
620
+        class: 'swiper-button-next'
621
+      })], (0, _utils.needsScrollbar)(props) && (0, _vue.h)('div', {
622
+        ref: scrollbarElRef,
623
+        class: 'swiper-scrollbar'
624
+      }), (0, _utils.needsPagination)(props) && (0, _vue.h)('div', {
625
+        ref: paginationElRef,
626
+        class: 'swiper-pagination'
627
+      }), (0, _vue.h)(WrapperTag, {
628
+        class: 'swiper-wrapper'
629
+      }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), slots['container-end']]);
630
+    };
631
+  }
632
+};
633
+exports.Swiper = Swiper;
0 634
\ No newline at end of file
1 635
new file mode 100644
... ...
@@ -0,0 +1,96 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.updateSwiper = updateSwiper;
5
+
6
+var _utils = require("./utils");
7
+
8
+function updateSwiper(swiper, slides, passedParams, changedParams) {
9
+  var updateParams = changedParams.filter(function (key) {
10
+    return key !== 'children' && key !== 'direction';
11
+  });
12
+  var currentParams = swiper.params,
13
+      pagination = swiper.pagination,
14
+      navigation = swiper.navigation,
15
+      scrollbar = swiper.scrollbar,
16
+      virtual = swiper.virtual,
17
+      thumbs = swiper.thumbs;
18
+  var needThumbsInit;
19
+  var needControllerInit;
20
+  var needPaginationInit;
21
+  var needScrollbarInit;
22
+  var needNavigationInit;
23
+
24
+  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {
25
+    needThumbsInit = true;
26
+  }
27
+
28
+  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
29
+    needControllerInit = true;
30
+  }
31
+
32
+  if (changedParams.includes('pagination') && passedParams.pagination && passedParams.pagination.el && currentParams.pagination && pagination && !pagination.el) {
33
+    needPaginationInit = true;
34
+  }
35
+
36
+  if (changedParams.includes('scrollbar') && passedParams.scrollbar && passedParams.scrollbar.el && currentParams.scrollbar && scrollbar && !scrollbar.el) {
37
+    needScrollbarInit = true;
38
+  }
39
+
40
+  if (changedParams.includes('navigation') && passedParams.navigation && passedParams.navigation.prevEl && passedParams.navigation.nextEl && currentParams.navigation && navigation && !navigation.prevEl && !navigation.nextEl) {
41
+    needNavigationInit = true;
42
+  }
43
+
44
+  updateParams.forEach(function (key) {
45
+    if ((0, _utils.isObject)(currentParams[key]) && (0, _utils.isObject)(passedParams[key])) {
46
+      (0, _utils.extend)(currentParams[key], passedParams[key]);
47
+    } else {
48
+      currentParams[key] = passedParams[key];
49
+    }
50
+  });
51
+
52
+  if (changedParams.includes('children') && virtual && currentParams.virtual.enabled) {
53
+    virtual.slides = slides;
54
+    virtual.update(true);
55
+  }
56
+
57
+  if (needThumbsInit) {
58
+    var initialized = thumbs.init();
59
+    if (initialized) thumbs.update(true);
60
+  }
61
+
62
+  if (needControllerInit) {
63
+    swiper.controller.control = currentParams.controller.control;
64
+  }
65
+
66
+  if (needPaginationInit) {
67
+    pagination.init();
68
+    pagination.render();
69
+    pagination.update();
70
+  }
71
+
72
+  if (needScrollbarInit) {
73
+    scrollbar.init();
74
+    scrollbar.updateSize();
75
+    scrollbar.setTranslate();
76
+  }
77
+
78
+  if (needNavigationInit) {
79
+    navigation.init();
80
+    navigation.update();
81
+  }
82
+
83
+  if (changedParams.includes('allowSlideNext')) {
84
+    swiper.allowSlideNext = passedParams.allowSlideNext;
85
+  }
86
+
87
+  if (changedParams.includes('allowSlidePrev')) {
88
+    swiper.allowSlidePrev = passedParams.allowSlidePrev;
89
+  }
90
+
91
+  if (changedParams.includes('direction')) {
92
+    swiper.changeDirection(passedParams.direction, false);
93
+  }
94
+
95
+  swiper.update();
96
+}
0 97
\ No newline at end of file
1 98
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.isObject = isObject;
5
+exports.extend = extend;
6
+exports.needsNavigation = needsNavigation;
7
+exports.needsPagination = needsPagination;
8
+exports.needsScrollbar = needsScrollbar;
9
+exports.uniqueClasses = uniqueClasses;
10
+
11
+function isObject(o) {
12
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
13
+}
14
+
15
+function extend(target, src) {
16
+  Object.keys(src).forEach(function (key) {
17
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
18
+      extend(target[key], src[key]);
19
+    } else {
20
+      target[key] = src[key];
21
+    }
22
+  });
23
+}
24
+
25
+function needsNavigation(props) {
26
+  if (props === void 0) {
27
+    props = {};
28
+  }
29
+
30
+  return props.navigation && typeof props.navigation.nextEl === 'undefined' && typeof props.navigation.prevEl === 'undefined';
31
+}
32
+
33
+function needsPagination(props) {
34
+  if (props === void 0) {
35
+    props = {};
36
+  }
37
+
38
+  return props.pagination && typeof props.pagination.el === 'undefined';
39
+}
40
+
41
+function needsScrollbar(props) {
42
+  if (props === void 0) {
43
+    props = {};
44
+  }
45
+
46
+  return props.scrollbar && typeof props.scrollbar.el === 'undefined';
47
+}
48
+
49
+function uniqueClasses(classNames) {
50
+  if (classNames === void 0) {
51
+    classNames = '';
52
+  }
53
+
54
+  var classes = classNames.split(' ').map(function (c) {
55
+    return c.trim();
56
+  }).filter(function (c) {
57
+    return !!c;
58
+  });
59
+  var unique = [];
60
+  classes.forEach(function (c) {
61
+    if (unique.indexOf(c) < 0) unique.push(c);
62
+  });
63
+  return unique.join(' ');
64
+}
0 65
\ No newline at end of file
1 66
new file mode 100644
... ...
@@ -0,0 +1,38 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.renderVirtual = renderVirtual;
5
+exports.updateOnVirtualData = updateOnVirtualData;
6
+
7
+var _vue = require("vue");
8
+
9
+function _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); }
10
+
11
+function updateOnVirtualData(swiper) {
12
+  if (!swiper || swiper.destroyed) return;
13
+  swiper.updateSlides();
14
+  swiper.updateProgress();
15
+  swiper.updateSlidesClasses();
16
+
17
+  if (swiper.lazy && swiper.params.lazy.enabled) {
18
+    swiper.lazy.load();
19
+  }
20
+}
21
+
22
+function renderVirtual(swiperRef, slides, virtualData) {
23
+  var _ref;
24
+
25
+  if (!virtualData) return null;
26
+  var style = swiperRef.value.isHorizontal() ? (_ref = {}, _ref[swiperRef.value.rtlTranslate ? 'right' : 'left'] = virtualData.offset + "px", _ref) : {
27
+    top: virtualData.offset + "px"
28
+  };
29
+  return slides.filter(function (slide, index) {
30
+    return index >= virtualData.from && index <= virtualData.to;
31
+  }).map(function (slide) {
32
+    if (!slide.props) slide.props = {};
33
+    if (!slide.props.style) slide.props.style = {};
34
+    slide.props.swiperRef = swiperRef;
35
+    slide.props.style = style;
36
+    return (0, _vue.h)(slide.type, _extends({}, slide.props), slide.children);
37
+  });
38
+}
0 39
\ No newline at end of file
1 40
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+/* a11y */
2
+.swiper-container .swiper-notification {
3
+  position: absolute;
4
+  left: 0;
5
+  top: 0;
6
+  pointer-events: none;
7
+  opacity: 0;
8
+  z-index: -1000;
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+/* a11y */
2
+.swiper-container .swiper-notification {
3
+  position: absolute;
4
+  left: 0;
5
+  top: 0;
6
+  pointer-events: none;
7
+  opacity: 0;
8
+  z-index: -1000;
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/a11y",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/a11y/a11y.js",
6
+  "module": "../../esm/components/a11y/a11y.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/autoplay",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/autoplay/autoplay.js",
6
+  "module": "../../esm/components/autoplay/autoplay.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
2 10
new file mode 100644
3 11
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/controller",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/controller/controller.js",
6
+  "module": "../../esm/components/controller/controller.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+.swiper-container-coverflow {
2
+}
0 3
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+.swiper-container-coverflow {
2
+}
0 3
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/effect-coverflow",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/effect-coverflow/effect-coverflow.js",
6
+  "module": "../../esm/components/effect-coverflow/effect-coverflow.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,50 @@
1
+.swiper-container-cube {
2
+  overflow: visible;
3
+  .swiper-slide {
4
+    pointer-events: none;
5
+    backface-visibility: hidden;
6
+    z-index: 1;
7
+    visibility: hidden;
8
+    transform-origin: 0 0;
9
+    width: 100%;
10
+    height: 100%;
11
+    .swiper-slide {
12
+      pointer-events: none;
13
+    }
14
+  }
15
+  &.swiper-container-rtl .swiper-slide {
16
+    transform-origin: 100% 0;
17
+  }
18
+  .swiper-slide-active {
19
+    &,
20
+    & .swiper-slide-active {
21
+      pointer-events: auto;
22
+    }
23
+  }
24
+  .swiper-slide-active,
25
+  .swiper-slide-next,
26
+  .swiper-slide-prev,
27
+  .swiper-slide-next + .swiper-slide {
28
+    pointer-events: auto;
29
+    visibility: visible;
30
+  }
31
+  .swiper-slide-shadow-top,
32
+  .swiper-slide-shadow-bottom,
33
+  .swiper-slide-shadow-left,
34
+  .swiper-slide-shadow-right {
35
+    z-index: 0;
36
+    backface-visibility: hidden;
37
+  }
38
+  .swiper-cube-shadow {
39
+    position: absolute;
40
+    left: 0;
41
+    bottom: 0px;
42
+    width: 100%;
43
+    height: 100%;
44
+    background: #000;
45
+    opacity: 0.6;
46
+    -webkit-filter: blur(50px);
47
+    filter: blur(50px);
48
+    z-index: 0;
49
+  }
50
+}
0 51
new file mode 100644
... ...
@@ -0,0 +1,50 @@
1
+.swiper-container-cube {
2
+  overflow: visible;
3
+  .swiper-slide {
4
+    pointer-events: none;
5
+    backface-visibility: hidden;
6
+    z-index: 1;
7
+    visibility: hidden;
8
+    transform-origin: 0 0;
9
+    width: 100%;
10
+    height: 100%;
11
+    .swiper-slide {
12
+      pointer-events: none;
13
+    }
14
+  }
15
+  &.swiper-container-rtl .swiper-slide {
16
+    transform-origin: 100% 0;
17
+  }
18
+  .swiper-slide-active {
19
+    &,
20
+    & .swiper-slide-active {
21
+      pointer-events: auto;
22
+    }
23
+  }
24
+  .swiper-slide-active,
25
+  .swiper-slide-next,
26
+  .swiper-slide-prev,
27
+  .swiper-slide-next + .swiper-slide {
28
+    pointer-events: auto;
29
+    visibility: visible;
30
+  }
31
+  .swiper-slide-shadow-top,
32
+  .swiper-slide-shadow-bottom,
33
+  .swiper-slide-shadow-left,
34
+  .swiper-slide-shadow-right {
35
+    z-index: 0;
36
+    backface-visibility: hidden;
37
+  }
38
+  .swiper-cube-shadow {
39
+    position: absolute;
40
+    left: 0;
41
+    bottom: 0px;
42
+    width: 100%;
43
+    height: 100%;
44
+    background: #000;
45
+    opacity: 0.6;
46
+    -webkit-filter: blur(50px);
47
+    filter: blur(50px);
48
+    z-index: 0;
49
+  }
50
+}
0 51
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/effect-cube",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/effect-cube/effect-cube.js",
6
+  "module": "../../esm/components/effect-cube/effect-cube.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+.swiper-container-fade {
2
+  &.swiper-container-free-mode {
3
+    .swiper-slide {
4
+      transition-timing-function: ease-out;
5
+    }
6
+  }
7
+  .swiper-slide {
8
+    pointer-events: none;
9
+    transition-property: opacity;
10
+    .swiper-slide {
11
+      pointer-events: none;
12
+    }
13
+  }
14
+  .swiper-slide-active {
15
+    &,
16
+    & .swiper-slide-active {
17
+      pointer-events: auto;
18
+    }
19
+  }
20
+}
0 21
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+.swiper-container-fade {
2
+  &.swiper-container-free-mode {
3
+    .swiper-slide {
4
+      transition-timing-function: ease-out;
5
+    }
6
+  }
7
+  .swiper-slide {
8
+    pointer-events: none;
9
+    transition-property: opacity;
10
+    .swiper-slide {
11
+      pointer-events: none;
12
+    }
13
+  }
14
+  .swiper-slide-active {
15
+    &,
16
+    & .swiper-slide-active {
17
+      pointer-events: auto;
18
+    }
19
+  }
20
+}
0 21
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/effect-fade",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/effect-fade/effect-fade.js",
6
+  "module": "../../esm/components/effect-fade/effect-fade.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+.swiper-container-flip {
2
+  overflow: visible;
3
+  .swiper-slide {
4
+    pointer-events: none;
5
+    backface-visibility: hidden;
6
+    z-index: 1;
7
+    .swiper-slide {
8
+      pointer-events: none;
9
+    }
10
+  }
11
+  .swiper-slide-active {
12
+    &,
13
+    & .swiper-slide-active {
14
+      pointer-events: auto;
15
+    }
16
+  }
17
+  .swiper-slide-shadow-top,
18
+  .swiper-slide-shadow-bottom,
19
+  .swiper-slide-shadow-left,
20
+  .swiper-slide-shadow-right {
21
+    z-index: 0;
22
+    backface-visibility: hidden;
23
+  }
24
+}
0 25
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+.swiper-container-flip {
2
+  overflow: visible;
3
+  .swiper-slide {
4
+    pointer-events: none;
5
+    backface-visibility: hidden;
6
+    z-index: 1;
7
+    .swiper-slide {
8
+      pointer-events: none;
9
+    }
10
+  }
11
+  .swiper-slide-active {
12
+    &,
13
+    & .swiper-slide-active {
14
+      pointer-events: auto;
15
+    }
16
+  }
17
+  .swiper-slide-shadow-top,
18
+  .swiper-slide-shadow-bottom,
19
+  .swiper-slide-shadow-left,
20
+  .swiper-slide-shadow-right {
21
+    z-index: 0;
22
+    backface-visibility: hidden;
23
+  }
24
+}
0 25
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/effect-flip",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/effect-flip/effect-flip.js",
6
+  "module": "../../esm/components/effect-flip/effect-flip.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/hash-navigation",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/hash-navigation/hash-navigation.js",
6
+  "module": "../../esm/components/hash-navigation/hash-navigation.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/history",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/history/history.js",
6
+  "module": "../../esm/components/history/history.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/keyboard",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/keyboard/keyboard.js",
6
+  "module": "../../esm/components/keyboard/keyboard.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,34 @@
1
+/* Preloader */
2
+:root {
3
+  /*
4
+  --swiper-preloader-color: var(--swiper-theme-color);
5
+  */
6
+}
7
+.swiper-lazy-preloader {
8
+  width: 42px;
9
+  height: 42px;
10
+  position: absolute;
11
+  left: 50%;
12
+  top: 50%;
13
+  margin-left: -21px;
14
+  margin-top: -21px;
15
+  z-index: 10;
16
+  transform-origin: 50%;
17
+  animation: swiper-preloader-spin 1s infinite linear;
18
+  box-sizing: border-box;
19
+  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
20
+  border-radius: 50%;
21
+  border-top-color: transparent;
22
+}
23
+
24
+.swiper-lazy-preloader-white {
25
+  --swiper-preloader-color: #fff;
26
+}
27
+.swiper-lazy-preloader-black {
28
+  --swiper-preloader-color: #000;
29
+}
30
+@keyframes swiper-preloader-spin {
31
+  100% {
32
+    transform: rotate(360deg);
33
+  }
34
+}
0 35
new file mode 100644
... ...
@@ -0,0 +1,34 @@
1
+/* Preloader */
2
+:root {
3
+  /*
4
+  --swiper-preloader-color: var(--swiper-theme-color);
5
+  */
6
+}
7
+.swiper-lazy-preloader {
8
+  width: 42px;
9
+  height: 42px;
10
+  position: absolute;
11
+  left: 50%;
12
+  top: 50%;
13
+  margin-left: -21px;
14
+  margin-top: -21px;
15
+  z-index: 10;
16
+  transform-origin: 50%;
17
+  animation: swiper-preloader-spin 1s infinite linear;
18
+  box-sizing: border-box;
19
+  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
20
+  border-radius: 50%;
21
+  border-top-color: transparent;
22
+}
23
+
24
+.swiper-lazy-preloader-white {
25
+  --swiper-preloader-color: #fff;
26
+}
27
+.swiper-lazy-preloader-black {
28
+  --swiper-preloader-color: #000;
29
+}
30
+@keyframes swiper-preloader-spin {
31
+  100% {
32
+    transform: rotate(360deg);
33
+  }
34
+}
0 35
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/lazy",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/lazy/lazy.js",
6
+  "module": "../../esm/components/lazy/lazy.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/mousewheel",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/mousewheel/mousewheel.js",
6
+  "module": "../../esm/components/mousewheel/mousewheel.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,75 @@
1
+@import url('../../swiper-vars.less');
2
+
3
+.navigation-color-loop(@ruleset) when (length( @colors ) >= 1) {
4
+  @length: length(@colors);
5
+  .looper( 1 );
6
+  .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) {
7
+    @navPair: extract(@colors, @index);
8
+    @navColorName: extract(@navPair, 1);
9
+    @navColorValue: extract(@navPair, 2);
10
+    @ruleset();
11
+    .looper( @index + 1 );
12
+  }
13
+}
14
+
15
+:root {
16
+  --swiper-navigation-size: 44px;
17
+  /*
18
+  --swiper-navigation-color: var(--swiper-theme-color);
19
+  */
20
+}
21
+.swiper-button-prev,
22
+.swiper-button-next {
23
+  position: absolute;
24
+  top: 50%;
25
+  width: calc(var(--swiper-navigation-size) / 44 * 27);
26
+  height: var(--swiper-navigation-size);
27
+  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
28
+  z-index: 10;
29
+  cursor: pointer;
30
+  display: flex;
31
+  align-items: center;
32
+  justify-content: center;
33
+  color: var(--swiper-navigation-color, var(--swiper-theme-color));
34
+  &.swiper-button-disabled {
35
+    opacity: 0.35;
36
+    cursor: auto;
37
+    pointer-events: none;
38
+  }
39
+  &:after {
40
+    font-family: swiper-icons;
41
+    font-size: var(--swiper-navigation-size);
42
+    text-transform: none !important;
43
+    letter-spacing: 0;
44
+    text-transform: none;
45
+    font-variant: initial;
46
+    line-height: 1;
47
+  }
48
+}
49
+.swiper-button-prev,
50
+.swiper-container-rtl .swiper-button-next {
51
+  &:after {
52
+    content: 'prev';
53
+  }
54
+  left: 10px;
55
+  right: auto;
56
+}
57
+.swiper-button-next,
58
+.swiper-container-rtl .swiper-button-prev {
59
+  &:after {
60
+    content: 'next';
61
+  }
62
+  right: 10px;
63
+  left: auto;
64
+}
65
+.navigation-color-loop({
66
+  .swiper-button-prev,
67
+  .swiper-button-next {
68
+    &.swiper-button-@{navColorName} {
69
+      --swiper-navigation-color: @navColorValue;
70
+    }
71
+  }
72
+});
73
+.swiper-button-lock {
74
+  display: none;
75
+}
0 76
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+@import '../../swiper-vars.scss';
2
+
3
+:root {
4
+  --swiper-navigation-size: 44px;
5
+  /*
6
+  --swiper-navigation-color: var(--swiper-theme-color);
7
+  */
8
+}
9
+.swiper-button-prev,
10
+.swiper-button-next {
11
+  position: absolute;
12
+  top: 50%;
13
+  width: calc(var(--swiper-navigation-size) / 44 * 27);
14
+  height: var(--swiper-navigation-size);
15
+  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
16
+  z-index: 10;
17
+  cursor: pointer;
18
+  display: flex;
19
+  align-items: center;
20
+  justify-content: center;
21
+  color: var(--swiper-navigation-color, var(--swiper-theme-color));
22
+  &.swiper-button-disabled {
23
+    opacity: 0.35;
24
+    cursor: auto;
25
+    pointer-events: none;
26
+  }
27
+  &:after {
28
+    font-family: swiper-icons;
29
+    font-size: var(--swiper-navigation-size);
30
+    text-transform: none !important;
31
+    letter-spacing: 0;
32
+    text-transform: none;
33
+    font-variant: initial;
34
+    line-height: 1;
35
+  }
36
+}
37
+.swiper-button-prev,
38
+.swiper-container-rtl .swiper-button-next {
39
+  &:after {
40
+    content: 'prev';
41
+  }
42
+  left: 10px;
43
+  right: auto;
44
+}
45
+.swiper-button-next,
46
+.swiper-container-rtl .swiper-button-prev {
47
+  &:after {
48
+    content: 'next';
49
+  }
50
+  right: 10px;
51
+  left: auto;
52
+}
53
+
54
+@each $navColorName, $navColorValue in $colors {
55
+  .swiper-button-prev,
56
+  .swiper-button-next {
57
+    &.swiper-button-#{$navColorName} {
58
+      --swiper-navigation-color: #{$navColorValue};
59
+    }
60
+  }
61
+}
62
+.swiper-button-lock {
63
+  display: none;
64
+}
0 65
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/navigation",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/navigation/navigation.js",
6
+  "module": "../../esm/components/navigation/navigation.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/pagination",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/pagination/pagination.js",
6
+  "module": "../../esm/components/pagination/pagination.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,165 @@
1
+@import url('../../swiper-vars.less');
2
+
3
+.pagination-color-loop(@ruleset) when (length( @colors ) >= 1) {
4
+  @length: length(@colors);
5
+  .looper( 1 );
6
+  .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) {
7
+    @paginationPair: extract(@colors, @index);
8
+    @paginationColorName: extract(@paginationPair, 1);
9
+    @paginationColorValue: extract(@paginationPair, 2);
10
+    @ruleset();
11
+    .looper( @index + 1 );
12
+  }
13
+}
14
+
15
+:root {
16
+  /*
17
+  --swiper-pagination-color: var(--swiper-theme-color);
18
+  */
19
+}
20
+.swiper-pagination {
21
+  position: absolute;
22
+  text-align: center;
23
+  transition: 300ms opacity;
24
+  transform: translate3d(0, 0, 0);
25
+  z-index: 10;
26
+  &.swiper-pagination-hidden {
27
+    opacity: 0;
28
+  }
29
+}
30
+/* Common Styles */
31
+.swiper-pagination-fraction,
32
+.swiper-pagination-custom,
33
+.swiper-container-horizontal > .swiper-pagination-bullets {
34
+  bottom: 10px;
35
+  left: 0;
36
+  width: 100%;
37
+}
38
+/* Bullets */
39
+.swiper-pagination-bullets-dynamic {
40
+  overflow: hidden;
41
+  font-size: 0;
42
+  .swiper-pagination-bullet {
43
+    transform: scale(0.33);
44
+    position: relative;
45
+  }
46
+  .swiper-pagination-bullet-active {
47
+    transform: scale(1);
48
+  }
49
+  .swiper-pagination-bullet-active-main {
50
+    transform: scale(1);
51
+  }
52
+  .swiper-pagination-bullet-active-prev {
53
+    transform: scale(0.66);
54
+  }
55
+  .swiper-pagination-bullet-active-prev-prev {
56
+    transform: scale(0.33);
57
+  }
58
+  .swiper-pagination-bullet-active-next {
59
+    transform: scale(0.66);
60
+  }
61
+  .swiper-pagination-bullet-active-next-next {
62
+    transform: scale(0.33);
63
+  }
64
+}
65
+.swiper-pagination-bullet {
66
+  width: 8px;
67
+  height: 8px;
68
+  display: inline-block;
69
+  border-radius: 100%;
70
+  background: #000;
71
+  opacity: 0.2;
72
+  button& {
73
+    border: none;
74
+    margin: 0;
75
+    padding: 0;
76
+    box-shadow: none;
77
+    appearance: none;
78
+  }
79
+  .swiper-pagination-clickable & {
80
+    cursor: pointer;
81
+  }
82
+}
83
+.swiper-pagination-bullet-active {
84
+  opacity: 1;
85
+  background: var(--swiper-pagination-color, var(--swiper-theme-color));
86
+}
87
+
88
+.swiper-container-vertical {
89
+  > .swiper-pagination-bullets {
90
+    right: 10px;
91
+    top: 50%;
92
+    transform: translate3d(0px, -50%, 0);
93
+    .swiper-pagination-bullet {
94
+      margin: 6px 0;
95
+      display: block;
96
+    }
97
+    &.swiper-pagination-bullets-dynamic {
98
+      top: 50%;
99
+      transform: translateY(-50%);
100
+      width: 8px;
101
+      .swiper-pagination-bullet {
102
+        display: inline-block;
103
+        transition: 200ms transform, 200ms top;
104
+      }
105
+    }
106
+  }
107
+}
108
+.swiper-container-horizontal {
109
+  > .swiper-pagination-bullets {
110
+    .swiper-pagination-bullet {
111
+      margin: 0 4px;
112
+    }
113
+    &.swiper-pagination-bullets-dynamic {
114
+      left: 50%;
115
+      transform: translateX(-50%);
116
+      white-space: nowrap;
117
+      .swiper-pagination-bullet {
118
+        transition: 200ms transform, 200ms left;
119
+      }
120
+    }
121
+  }
122
+  &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
123
+    transition: 200ms transform, 200ms right;
124
+  }
125
+}
126
+/* Progress */
127
+.swiper-pagination-progressbar {
128
+  background: rgba(0, 0, 0, 0.25);
129
+  position: absolute;
130
+  .swiper-pagination-progressbar-fill {
131
+    background: var(--swiper-pagination-color, var(--swiper-theme-color));
132
+    position: absolute;
133
+    left: 0;
134
+    top: 0;
135
+    width: 100%;
136
+    height: 100%;
137
+    transform: scale(0);
138
+    transform-origin: left top;
139
+  }
140
+  .swiper-container-rtl & .swiper-pagination-progressbar-fill {
141
+    transform-origin: right top;
142
+  }
143
+  .swiper-container-horizontal > &,
144
+  .swiper-container-vertical > &.swiper-pagination-progressbar-opposite {
145
+    width: 100%;
146
+    height: 4px;
147
+    left: 0;
148
+    top: 0;
149
+  }
150
+  .swiper-container-vertical > &,
151
+  .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite {
152
+    width: 4px;
153
+    height: 100%;
154
+    left: 0;
155
+    top: 0;
156
+  }
157
+}
158
+.pagination-color-loop({
159
+  .swiper-pagination-@{paginationColorName} {
160
+    --swiper-pagination-color: @paginationColorValue;
161
+  }
162
+});
163
+.swiper-pagination-lock {
164
+  display: none;
165
+}
0 166
new file mode 100644
... ...
@@ -0,0 +1,153 @@
1
+@import '../../swiper-vars.scss';
2
+
3
+:root {
4
+  /*
5
+  --swiper-pagination-color: var(--swiper-theme-color);
6
+  */
7
+}
8
+.swiper-pagination {
9
+  position: absolute;
10
+  text-align: center;
11
+  transition: 300ms opacity;
12
+  transform: translate3d(0, 0, 0);
13
+  z-index: 10;
14
+  &.swiper-pagination-hidden {
15
+    opacity: 0;
16
+  }
17
+}
18
+/* Common Styles */
19
+.swiper-pagination-fraction,
20
+.swiper-pagination-custom,
21
+.swiper-container-horizontal > .swiper-pagination-bullets {
22
+  bottom: 10px;
23
+  left: 0;
24
+  width: 100%;
25
+}
26
+/* Bullets */
27
+.swiper-pagination-bullets-dynamic {
28
+  overflow: hidden;
29
+  font-size: 0;
30
+  .swiper-pagination-bullet {
31
+    transform: scale(0.33);
32
+    position: relative;
33
+  }
34
+  .swiper-pagination-bullet-active {
35
+    transform: scale(1);
36
+  }
37
+  .swiper-pagination-bullet-active-main {
38
+    transform: scale(1);
39
+  }
40
+  .swiper-pagination-bullet-active-prev {
41
+    transform: scale(0.66);
42
+  }
43
+  .swiper-pagination-bullet-active-prev-prev {
44
+    transform: scale(0.33);
45
+  }
46
+  .swiper-pagination-bullet-active-next {
47
+    transform: scale(0.66);
48
+  }
49
+  .swiper-pagination-bullet-active-next-next {
50
+    transform: scale(0.33);
51
+  }
52
+}
53
+.swiper-pagination-bullet {
54
+  width: 8px;
55
+  height: 8px;
56
+  display: inline-block;
57
+  border-radius: 100%;
58
+  background: #000;
59
+  opacity: 0.2;
60
+  @at-root button#{&} {
61
+    border: none;
62
+    margin: 0;
63
+    padding: 0;
64
+    box-shadow: none;
65
+    appearance: none;
66
+  }
67
+  .swiper-pagination-clickable & {
68
+    cursor: pointer;
69
+  }
70
+}
71
+.swiper-pagination-bullet-active {
72
+  opacity: 1;
73
+  background: var(--swiper-pagination-color, var(--swiper-theme-color));
74
+}
75
+
76
+.swiper-container-vertical {
77
+  > .swiper-pagination-bullets {
78
+    right: 10px;
79
+    top: 50%;
80
+    transform: translate3d(0px, -50%, 0);
81
+    .swiper-pagination-bullet {
82
+      margin: 6px 0;
83
+      display: block;
84
+    }
85
+    &.swiper-pagination-bullets-dynamic {
86
+      top: 50%;
87
+      transform: translateY(-50%);
88
+      width: 8px;
89
+      .swiper-pagination-bullet {
90
+        display: inline-block;
91
+        transition: 200ms transform, 200ms top;
92
+      }
93
+    }
94
+  }
95
+}
96
+.swiper-container-horizontal {
97
+  > .swiper-pagination-bullets {
98
+    .swiper-pagination-bullet {
99
+      margin: 0 4px;
100
+    }
101
+    &.swiper-pagination-bullets-dynamic {
102
+      left: 50%;
103
+      transform: translateX(-50%);
104
+      white-space: nowrap;
105
+      .swiper-pagination-bullet {
106
+        transition: 200ms transform, 200ms left;
107
+      }
108
+    }
109
+  }
110
+  &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
111
+    transition: 200ms transform, 200ms right;
112
+  }
113
+}
114
+/* Progress */
115
+.swiper-pagination-progressbar {
116
+  background: rgba(0, 0, 0, 0.25);
117
+  position: absolute;
118
+  .swiper-pagination-progressbar-fill {
119
+    background: var(--swiper-pagination-color, var(--swiper-theme-color));
120
+    position: absolute;
121
+    left: 0;
122
+    top: 0;
123
+    width: 100%;
124
+    height: 100%;
125
+    transform: scale(0);
126
+    transform-origin: left top;
127
+  }
128
+  .swiper-container-rtl & .swiper-pagination-progressbar-fill {
129
+    transform-origin: right top;
130
+  }
131
+  .swiper-container-horizontal > &,
132
+  .swiper-container-vertical > &.swiper-pagination-progressbar-opposite {
133
+    width: 100%;
134
+    height: 4px;
135
+    left: 0;
136
+    top: 0;
137
+  }
138
+  .swiper-container-vertical > &,
139
+  .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite {
140
+    width: 4px;
141
+    height: 100%;
142
+    left: 0;
143
+    top: 0;
144
+  }
145
+}
146
+@each $paginationColorName, $paginationColorValue in $colors {
147
+  .swiper-pagination-#{$paginationColorName} {
148
+    --swiper-pagination-color: #{$paginationColorValue};
149
+  }
150
+}
151
+.swiper-pagination-lock {
152
+  display: none;
153
+}
0 154
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/parallax",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/parallax/parallax.js",
6
+  "module": "../../esm/components/parallax/parallax.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/scrollbar",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/scrollbar/scrollbar.js",
6
+  "module": "../../esm/components/scrollbar/scrollbar.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,38 @@
1
+/* Scrollbar */
2
+.swiper-scrollbar {
3
+  border-radius: 10px;
4
+  position: relative;
5
+  -ms-touch-action: none;
6
+  background: rgba(0, 0, 0, 0.1);
7
+  .swiper-container-horizontal > & {
8
+    position: absolute;
9
+    left: 1%;
10
+    bottom: 3px;
11
+    z-index: 50;
12
+    height: 5px;
13
+    width: 98%;
14
+  }
15
+  .swiper-container-vertical > & {
16
+    position: absolute;
17
+    right: 3px;
18
+    top: 1%;
19
+    z-index: 50;
20
+    width: 5px;
21
+    height: 98%;
22
+  }
23
+}
24
+.swiper-scrollbar-drag {
25
+  height: 100%;
26
+  width: 100%;
27
+  position: relative;
28
+  background: rgba(0, 0, 0, 0.5);
29
+  border-radius: 10px;
30
+  left: 0;
31
+  top: 0;
32
+}
33
+.swiper-scrollbar-cursor-drag {
34
+  cursor: move;
35
+}
36
+.swiper-scrollbar-lock {
37
+  display: none;
38
+}
0 39
new file mode 100644
... ...
@@ -0,0 +1,38 @@
1
+/* Scrollbar */
2
+.swiper-scrollbar {
3
+  border-radius: 10px;
4
+  position: relative;
5
+  -ms-touch-action: none;
6
+  background: rgba(0, 0, 0, 0.1);
7
+  .swiper-container-horizontal > & {
8
+    position: absolute;
9
+    left: 1%;
10
+    bottom: 3px;
11
+    z-index: 50;
12
+    height: 5px;
13
+    width: 98%;
14
+  }
15
+  .swiper-container-vertical > & {
16
+    position: absolute;
17
+    right: 3px;
18
+    top: 1%;
19
+    z-index: 50;
20
+    width: 5px;
21
+    height: 98%;
22
+  }
23
+}
24
+.swiper-scrollbar-drag {
25
+  height: 100%;
26
+  width: 100%;
27
+  position: relative;
28
+  background: rgba(0, 0, 0, 0.5);
29
+  border-radius: 10px;
30
+  left: 0;
31
+  top: 0;
32
+}
33
+.swiper-scrollbar-cursor-drag {
34
+  cursor: move;
35
+}
36
+.swiper-scrollbar-lock {
37
+  display: none;
38
+}
0 39
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/thumbs",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/thumbs/thumbs.js",
6
+  "module": "../../esm/components/thumbs/thumbs.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+.swiper-container-thumbs {
2
+  .swiper-slide-thumb-active {
3
+    // Styles for active thumb slide
4
+  }
5
+}
0 6
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+.swiper-container-thumbs {
2
+  .swiper-slide-thumb-active {
3
+    // Styles for active thumb slide
4
+  }
5
+}
0 6
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/virtual",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/virtual/virtual.js",
6
+  "module": "../../esm/components/virtual/virtual.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+{
2
+  "name": "swiper/zoom",
3
+  "private": true,
4
+  "sideEffects": false,
5
+  "main": "../../cjs/components/zoom/zoom.js",
6
+  "module": "../../esm/components/zoom/zoom.js"
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+.swiper-zoom-container {
2
+  width: 100%;
3
+  height: 100%;
4
+  display: flex;
5
+  justify-content: center;
6
+  align-items: center;
7
+  text-align: center;
8
+
9
+  > img,
10
+  > svg,
11
+  > canvas {
12
+    max-width: 100%;
13
+    max-height: 100%;
14
+    object-fit: contain;
15
+  }
16
+}
17
+
18
+.swiper-slide-zoomed {
19
+  cursor: move;
20
+}
0 21
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+.swiper-zoom-container {
2
+  width: 100%;
3
+  height: 100%;
4
+  display: flex;
5
+  justify-content: center;
6
+  align-items: center;
7
+  text-align: center;
8
+
9
+  > img,
10
+  > svg,
11
+  > canvas {
12
+    max-width: 100%;
13
+    max-height: 100%;
14
+    object-fit: contain;
15
+  }
16
+}
17
+
18
+.swiper-slide-zoomed {
19
+  cursor: move;
20
+}
0 21
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+{
2
+  "name": "swiper/core",
3
+  "private": true,
4
+  "main": "../swiper.cjs.js",
5
+  "jsnext:main": "../swiper.esm.js",
6
+  "module": "../swiper.esm.js",
7
+  "typings": "../swiper.d.ts",
8
+  "sideEffects": false
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,295 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { bindModuleMethods } from '../../utils/utils';
5
+var A11y = {
6
+  getRandomNumber: function getRandomNumber(size) {
7
+    if (size === void 0) {
8
+      size = 16;
9
+    }
10
+
11
+    var randomChar = function randomChar() {
12
+      return Math.round(16 * Math.random()).toString(16);
13
+    };
14
+
15
+    return 'x'.repeat(size).replace(/x/g, randomChar);
16
+  },
17
+  makeElFocusable: function makeElFocusable($el) {
18
+    $el.attr('tabIndex', '0');
19
+    return $el;
20
+  },
21
+  makeElNotFocusable: function makeElNotFocusable($el) {
22
+    $el.attr('tabIndex', '-1');
23
+    return $el;
24
+  },
25
+  addElRole: function addElRole($el, role) {
26
+    $el.attr('role', role);
27
+    return $el;
28
+  },
29
+  addElRoleDescription: function addElRoleDescription($el, description) {
30
+    $el.attr('aria-role-description', description);
31
+    return $el;
32
+  },
33
+  addElControls: function addElControls($el, controls) {
34
+    $el.attr('aria-controls', controls);
35
+    return $el;
36
+  },
37
+  addElLabel: function addElLabel($el, label) {
38
+    $el.attr('aria-label', label);
39
+    return $el;
40
+  },
41
+  addElId: function addElId($el, id) {
42
+    $el.attr('id', id);
43
+    return $el;
44
+  },
45
+  addElLive: function addElLive($el, live) {
46
+    $el.attr('aria-live', live);
47
+    return $el;
48
+  },
49
+  disableEl: function disableEl($el) {
50
+    $el.attr('aria-disabled', true);
51
+    return $el;
52
+  },
53
+  enableEl: function enableEl($el) {
54
+    $el.attr('aria-disabled', false);
55
+    return $el;
56
+  },
57
+  onEnterKey: function onEnterKey(e) {
58
+    var swiper = this;
59
+    var params = swiper.params.a11y;
60
+    if (e.keyCode !== 13) return;
61
+    var $targetEl = $(e.target);
62
+
63
+    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
64
+      if (!(swiper.isEnd && !swiper.params.loop)) {
65
+        swiper.slideNext();
66
+      }
67
+
68
+      if (swiper.isEnd) {
69
+        swiper.a11y.notify(params.lastSlideMessage);
70
+      } else {
71
+        swiper.a11y.notify(params.nextSlideMessage);
72
+      }
73
+    }
74
+
75
+    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
76
+      if (!(swiper.isBeginning && !swiper.params.loop)) {
77
+        swiper.slidePrev();
78
+      }
79
+
80
+      if (swiper.isBeginning) {
81
+        swiper.a11y.notify(params.firstSlideMessage);
82
+      } else {
83
+        swiper.a11y.notify(params.prevSlideMessage);
84
+      }
85
+    }
86
+
87
+    if (swiper.pagination && $targetEl.is("." + swiper.params.pagination.bulletClass)) {
88
+      $targetEl[0].click();
89
+    }
90
+  },
91
+  notify: function notify(message) {
92
+    var swiper = this;
93
+    var notification = swiper.a11y.liveRegion;
94
+    if (notification.length === 0) return;
95
+    notification.html('');
96
+    notification.html(message);
97
+  },
98
+  updateNavigation: function updateNavigation() {
99
+    var swiper = this;
100
+    if (swiper.params.loop || !swiper.navigation) return;
101
+    var _swiper$navigation = swiper.navigation,
102
+        $nextEl = _swiper$navigation.$nextEl,
103
+        $prevEl = _swiper$navigation.$prevEl;
104
+
105
+    if ($prevEl && $prevEl.length > 0) {
106
+      if (swiper.isBeginning) {
107
+        swiper.a11y.disableEl($prevEl);
108
+        swiper.a11y.makeElNotFocusable($prevEl);
109
+      } else {
110
+        swiper.a11y.enableEl($prevEl);
111
+        swiper.a11y.makeElFocusable($prevEl);
112
+      }
113
+    }
114
+
115
+    if ($nextEl && $nextEl.length > 0) {
116
+      if (swiper.isEnd) {
117
+        swiper.a11y.disableEl($nextEl);
118
+        swiper.a11y.makeElNotFocusable($nextEl);
119
+      } else {
120
+        swiper.a11y.enableEl($nextEl);
121
+        swiper.a11y.makeElFocusable($nextEl);
122
+      }
123
+    }
124
+  },
125
+  updatePagination: function updatePagination() {
126
+    var swiper = this;
127
+    var params = swiper.params.a11y;
128
+
129
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
130
+      swiper.pagination.bullets.each(function (bulletEl) {
131
+        var $bulletEl = $(bulletEl);
132
+        swiper.a11y.makeElFocusable($bulletEl);
133
+
134
+        if (!swiper.params.pagination.renderBullet) {
135
+          swiper.a11y.addElRole($bulletEl, 'button');
136
+          swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
137
+        }
138
+      });
139
+    }
140
+  },
141
+  init: function init() {
142
+    var swiper = this;
143
+    var params = swiper.params.a11y;
144
+    swiper.$el.append(swiper.a11y.liveRegion); // Container
145
+
146
+    var $containerEl = swiper.$el;
147
+
148
+    if (params.containerRoleDescriptionMessage) {
149
+      swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
150
+    }
151
+
152
+    if (params.containerMessage) {
153
+      swiper.a11y.addElLabel($containerEl, params.containerMessage);
154
+    } // Wrapper
155
+
156
+
157
+    var $wrapperEl = swiper.$wrapperEl;
158
+    var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
159
+    var live;
160
+    swiper.a11y.addElId($wrapperEl, wrapperId);
161
+
162
+    if (swiper.params.autoplay && swiper.params.autoplay.enabled) {
163
+      live = 'off';
164
+    } else {
165
+      live = 'polite';
166
+    }
167
+
168
+    swiper.a11y.addElLive($wrapperEl, live); // Slide
169
+
170
+    if (params.itemRoleDescriptionMessage) {
171
+      swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);
172
+    }
173
+
174
+    swiper.a11y.addElRole($(swiper.slides), 'group');
175
+    swiper.slides.each(function (slideEl) {
176
+      var $slideEl = $(slideEl);
177
+      swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + " / " + swiper.slides.length);
178
+    }); // Navigation
179
+
180
+    var $nextEl;
181
+    var $prevEl;
182
+
183
+    if (swiper.navigation && swiper.navigation.$nextEl) {
184
+      $nextEl = swiper.navigation.$nextEl;
185
+    }
186
+
187
+    if (swiper.navigation && swiper.navigation.$prevEl) {
188
+      $prevEl = swiper.navigation.$prevEl;
189
+    }
190
+
191
+    if ($nextEl && $nextEl.length) {
192
+      swiper.a11y.makeElFocusable($nextEl);
193
+
194
+      if ($nextEl[0].tagName !== 'BUTTON') {
195
+        swiper.a11y.addElRole($nextEl, 'button');
196
+        $nextEl.on('keydown', swiper.a11y.onEnterKey);
197
+      }
198
+
199
+      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
200
+      swiper.a11y.addElControls($nextEl, wrapperId);
201
+    }
202
+
203
+    if ($prevEl && $prevEl.length) {
204
+      swiper.a11y.makeElFocusable($prevEl);
205
+
206
+      if ($prevEl[0].tagName !== 'BUTTON') {
207
+        swiper.a11y.addElRole($prevEl, 'button');
208
+        $prevEl.on('keydown', swiper.a11y.onEnterKey);
209
+      }
210
+
211
+      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
212
+      swiper.a11y.addElControls($prevEl, wrapperId);
213
+    } // Pagination
214
+
215
+
216
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
217
+      swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
218
+    }
219
+  },
220
+  destroy: function destroy() {
221
+    var swiper = this;
222
+    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
223
+    var $nextEl;
224
+    var $prevEl;
225
+
226
+    if (swiper.navigation && swiper.navigation.$nextEl) {
227
+      $nextEl = swiper.navigation.$nextEl;
228
+    }
229
+
230
+    if (swiper.navigation && swiper.navigation.$prevEl) {
231
+      $prevEl = swiper.navigation.$prevEl;
232
+    }
233
+
234
+    if ($nextEl) {
235
+      $nextEl.off('keydown', swiper.a11y.onEnterKey);
236
+    }
237
+
238
+    if ($prevEl) {
239
+      $prevEl.off('keydown', swiper.a11y.onEnterKey);
240
+    } // Pagination
241
+
242
+
243
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
244
+      swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
245
+    }
246
+  }
247
+};
248
+export default {
249
+  name: 'a11y',
250
+  params: {
251
+    a11y: {
252
+      enabled: true,
253
+      notificationClass: 'swiper-notification',
254
+      prevSlideMessage: 'Previous slide',
255
+      nextSlideMessage: 'Next slide',
256
+      firstSlideMessage: 'This is the first slide',
257
+      lastSlideMessage: 'This is the last slide',
258
+      paginationBulletMessage: 'Go to slide {{index}}',
259
+      containerMessage: null,
260
+      containerRoleDescriptionMessage: null,
261
+      itemRoleDescriptionMessage: null
262
+    }
263
+  },
264
+  create: function create() {
265
+    var swiper = this;
266
+    bindModuleMethods(swiper, {
267
+      a11y: _extends(_extends({}, A11y), {}, {
268
+        liveRegion: $("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
269
+      })
270
+    });
271
+  },
272
+  on: {
273
+    afterInit: function afterInit(swiper) {
274
+      if (!swiper.params.a11y.enabled) return;
275
+      swiper.a11y.init();
276
+      swiper.a11y.updateNavigation();
277
+    },
278
+    toEdge: function toEdge(swiper) {
279
+      if (!swiper.params.a11y.enabled) return;
280
+      swiper.a11y.updateNavigation();
281
+    },
282
+    fromEdge: function fromEdge(swiper) {
283
+      if (!swiper.params.a11y.enabled) return;
284
+      swiper.a11y.updateNavigation();
285
+    },
286
+    paginationUpdate: function paginationUpdate(swiper) {
287
+      if (!swiper.params.a11y.enabled) return;
288
+      swiper.a11y.updatePagination();
289
+    },
290
+    destroy: function destroy(swiper) {
291
+      if (!swiper.params.a11y.enabled) return;
292
+      swiper.a11y.destroy();
293
+    }
294
+  }
295
+};
0 296
\ No newline at end of file
1 297
new file mode 100644
... ...
@@ -0,0 +1,180 @@
1
+function _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); }
2
+
3
+/* eslint no-underscore-dangle: "off" */
4
+import { getDocument } from 'ssr-window';
5
+import { nextTick, bindModuleMethods } from '../../utils/utils';
6
+var Autoplay = {
7
+  run: function run() {
8
+    var swiper = this;
9
+    var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
10
+    var delay = swiper.params.autoplay.delay;
11
+
12
+    if ($activeSlideEl.attr('data-swiper-autoplay')) {
13
+      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
14
+    }
15
+
16
+    clearTimeout(swiper.autoplay.timeout);
17
+    swiper.autoplay.timeout = nextTick(function () {
18
+      var autoplayResult;
19
+
20
+      if (swiper.params.autoplay.reverseDirection) {
21
+        if (swiper.params.loop) {
22
+          swiper.loopFix();
23
+          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
24
+          swiper.emit('autoplay');
25
+        } else if (!swiper.isBeginning) {
26
+          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
27
+          swiper.emit('autoplay');
28
+        } else if (!swiper.params.autoplay.stopOnLastSlide) {
29
+          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
30
+          swiper.emit('autoplay');
31
+        } else {
32
+          swiper.autoplay.stop();
33
+        }
34
+      } else if (swiper.params.loop) {
35
+        swiper.loopFix();
36
+        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
37
+        swiper.emit('autoplay');
38
+      } else if (!swiper.isEnd) {
39
+        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
40
+        swiper.emit('autoplay');
41
+      } else if (!swiper.params.autoplay.stopOnLastSlide) {
42
+        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
43
+        swiper.emit('autoplay');
44
+      } else {
45
+        swiper.autoplay.stop();
46
+      }
47
+
48
+      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {
49
+        swiper.autoplay.run();
50
+      }
51
+    }, delay);
52
+  },
53
+  start: function start() {
54
+    var swiper = this;
55
+    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
56
+    if (swiper.autoplay.running) return false;
57
+    swiper.autoplay.running = true;
58
+    swiper.emit('autoplayStart');
59
+    swiper.autoplay.run();
60
+    return true;
61
+  },
62
+  stop: function stop() {
63
+    var swiper = this;
64
+    if (!swiper.autoplay.running) return false;
65
+    if (typeof swiper.autoplay.timeout === 'undefined') return false;
66
+
67
+    if (swiper.autoplay.timeout) {
68
+      clearTimeout(swiper.autoplay.timeout);
69
+      swiper.autoplay.timeout = undefined;
70
+    }
71
+
72
+    swiper.autoplay.running = false;
73
+    swiper.emit('autoplayStop');
74
+    return true;
75
+  },
76
+  pause: function pause(speed) {
77
+    var swiper = this;
78
+    if (!swiper.autoplay.running) return;
79
+    if (swiper.autoplay.paused) return;
80
+    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
81
+    swiper.autoplay.paused = true;
82
+
83
+    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
84
+      swiper.autoplay.paused = false;
85
+      swiper.autoplay.run();
86
+    } else {
87
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
88
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
89
+    }
90
+  },
91
+  onVisibilityChange: function onVisibilityChange() {
92
+    var swiper = this;
93
+    var document = getDocument();
94
+
95
+    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
96
+      swiper.autoplay.pause();
97
+    }
98
+
99
+    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
100
+      swiper.autoplay.run();
101
+      swiper.autoplay.paused = false;
102
+    }
103
+  },
104
+  onTransitionEnd: function onTransitionEnd(e) {
105
+    var swiper = this;
106
+    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
107
+    if (e.target !== swiper.$wrapperEl[0]) return;
108
+    swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
109
+    swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
110
+    swiper.autoplay.paused = false;
111
+
112
+    if (!swiper.autoplay.running) {
113
+      swiper.autoplay.stop();
114
+    } else {
115
+      swiper.autoplay.run();
116
+    }
117
+  }
118
+};
119
+export default {
120
+  name: 'autoplay',
121
+  params: {
122
+    autoplay: {
123
+      enabled: false,
124
+      delay: 3000,
125
+      waitForTransition: true,
126
+      disableOnInteraction: true,
127
+      stopOnLastSlide: false,
128
+      reverseDirection: false
129
+    }
130
+  },
131
+  create: function create() {
132
+    var swiper = this;
133
+    bindModuleMethods(swiper, {
134
+      autoplay: _extends(_extends({}, Autoplay), {}, {
135
+        running: false,
136
+        paused: false
137
+      })
138
+    });
139
+  },
140
+  on: {
141
+    init: function init(swiper) {
142
+      if (swiper.params.autoplay.enabled) {
143
+        swiper.autoplay.start();
144
+        var document = getDocument();
145
+        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
146
+      }
147
+    },
148
+    beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
149
+      if (swiper.autoplay.running) {
150
+        if (internal || !swiper.params.autoplay.disableOnInteraction) {
151
+          swiper.autoplay.pause(speed);
152
+        } else {
153
+          swiper.autoplay.stop();
154
+        }
155
+      }
156
+    },
157
+    sliderFirstMove: function sliderFirstMove(swiper) {
158
+      if (swiper.autoplay.running) {
159
+        if (swiper.params.autoplay.disableOnInteraction) {
160
+          swiper.autoplay.stop();
161
+        } else {
162
+          swiper.autoplay.pause();
163
+        }
164
+      }
165
+    },
166
+    touchEnd: function touchEnd(swiper) {
167
+      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
168
+        swiper.autoplay.run();
169
+      }
170
+    },
171
+    destroy: function destroy(swiper) {
172
+      if (swiper.autoplay.running) {
173
+        swiper.autoplay.stop();
174
+      }
175
+
176
+      var document = getDocument();
177
+      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
178
+    }
179
+  }
180
+};
0 181
\ No newline at end of file
1 182
new file mode 100644
... ...
@@ -0,0 +1,197 @@
1
+function _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); }
2
+
3
+/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
4
+import { nextTick, bindModuleMethods } from '../../utils/utils';
5
+var Controller = {
6
+  LinearSpline: function LinearSpline(x, y) {
7
+    var binarySearch = function search() {
8
+      var maxIndex;
9
+      var minIndex;
10
+      var guess;
11
+      return function (array, val) {
12
+        minIndex = -1;
13
+        maxIndex = array.length;
14
+
15
+        while (maxIndex - minIndex > 1) {
16
+          guess = maxIndex + minIndex >> 1;
17
+
18
+          if (array[guess] <= val) {
19
+            minIndex = guess;
20
+          } else {
21
+            maxIndex = guess;
22
+          }
23
+        }
24
+
25
+        return maxIndex;
26
+      };
27
+    }();
28
+
29
+    this.x = x;
30
+    this.y = y;
31
+    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
32
+    // (x1,y1) is the known point before given value,
33
+    // (x3,y3) is the known point after given value.
34
+
35
+    var i1;
36
+    var i3;
37
+
38
+    this.interpolate = function interpolate(x2) {
39
+      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
40
+
41
+      i3 = binarySearch(this.x, x2);
42
+      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
43
+      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
44
+
45
+      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
46
+    };
47
+
48
+    return this;
49
+  },
50
+  // xxx: for now i will just save one spline function to to
51
+  getInterpolateFunction: function getInterpolateFunction(c) {
52
+    var swiper = this;
53
+
54
+    if (!swiper.controller.spline) {
55
+      swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
56
+    }
57
+  },
58
+  setTranslate: function setTranslate(_setTranslate, byController) {
59
+    var swiper = this;
60
+    var controlled = swiper.controller.control;
61
+    var multiplier;
62
+    var controlledTranslate;
63
+    var Swiper = swiper.constructor;
64
+
65
+    function setControlledTranslate(c) {
66
+      // this will create an Interpolate function based on the snapGrids
67
+      // x is the Grid of the scrolled scroller and y will be the controlled scroller
68
+      // it makes sense to create this only once and recall it for the interpolation
69
+      // the function does a lot of value caching for performance
70
+      var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
71
+
72
+      if (swiper.params.controller.by === 'slide') {
73
+        swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
74
+        // but it did not work out
75
+
76
+        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
77
+      }
78
+
79
+      if (!controlledTranslate || swiper.params.controller.by === 'container') {
80
+        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
81
+        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
82
+      }
83
+
84
+      if (swiper.params.controller.inverse) {
85
+        controlledTranslate = c.maxTranslate() - controlledTranslate;
86
+      }
87
+
88
+      c.updateProgress(controlledTranslate);
89
+      c.setTranslate(controlledTranslate, swiper);
90
+      c.updateActiveIndex();
91
+      c.updateSlidesClasses();
92
+    }
93
+
94
+    if (Array.isArray(controlled)) {
95
+      for (var i = 0; i < controlled.length; i += 1) {
96
+        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
97
+          setControlledTranslate(controlled[i]);
98
+        }
99
+      }
100
+    } else if (controlled instanceof Swiper && byController !== controlled) {
101
+      setControlledTranslate(controlled);
102
+    }
103
+  },
104
+  setTransition: function setTransition(duration, byController) {
105
+    var swiper = this;
106
+    var Swiper = swiper.constructor;
107
+    var controlled = swiper.controller.control;
108
+    var i;
109
+
110
+    function setControlledTransition(c) {
111
+      c.setTransition(duration, swiper);
112
+
113
+      if (duration !== 0) {
114
+        c.transitionStart();
115
+
116
+        if (c.params.autoHeight) {
117
+          nextTick(function () {
118
+            c.updateAutoHeight();
119
+          });
120
+        }
121
+
122
+        c.$wrapperEl.transitionEnd(function () {
123
+          if (!controlled) return;
124
+
125
+          if (c.params.loop && swiper.params.controller.by === 'slide') {
126
+            c.loopFix();
127
+          }
128
+
129
+          c.transitionEnd();
130
+        });
131
+      }
132
+    }
133
+
134
+    if (Array.isArray(controlled)) {
135
+      for (i = 0; i < controlled.length; i += 1) {
136
+        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
137
+          setControlledTransition(controlled[i]);
138
+        }
139
+      }
140
+    } else if (controlled instanceof Swiper && byController !== controlled) {
141
+      setControlledTransition(controlled);
142
+    }
143
+  }
144
+};
145
+export default {
146
+  name: 'controller',
147
+  params: {
148
+    controller: {
149
+      control: undefined,
150
+      inverse: false,
151
+      by: 'slide' // or 'container'
152
+
153
+    }
154
+  },
155
+  create: function create() {
156
+    var swiper = this;
157
+    bindModuleMethods(swiper, {
158
+      controller: _extends({
159
+        control: swiper.params.controller.control
160
+      }, Controller)
161
+    });
162
+  },
163
+  on: {
164
+    update: function update(swiper) {
165
+      if (!swiper.controller.control) return;
166
+
167
+      if (swiper.controller.spline) {
168
+        swiper.controller.spline = undefined;
169
+        delete swiper.controller.spline;
170
+      }
171
+    },
172
+    resize: function resize(swiper) {
173
+      if (!swiper.controller.control) return;
174
+
175
+      if (swiper.controller.spline) {
176
+        swiper.controller.spline = undefined;
177
+        delete swiper.controller.spline;
178
+      }
179
+    },
180
+    observerUpdate: function observerUpdate(swiper) {
181
+      if (!swiper.controller.control) return;
182
+
183
+      if (swiper.controller.spline) {
184
+        swiper.controller.spline = undefined;
185
+        delete swiper.controller.spline;
186
+      }
187
+    },
188
+    setTranslate: function setTranslate(swiper, translate, byController) {
189
+      if (!swiper.controller.control) return;
190
+      swiper.controller.setTranslate(translate, byController);
191
+    },
192
+    setTransition: function setTransition(swiper, duration, byController) {
193
+      if (!swiper.controller.control) return;
194
+      swiper.controller.setTransition(duration, byController);
195
+    }
196
+  }
197
+};
0 198
\ No newline at end of file
1 199
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+import { getWindow } from 'ssr-window';
2
+export default function getBreakpoints(breakpoints) {
3
+  var window = getWindow(); // Get breakpoint for window width
4
+
5
+  if (!breakpoints) return undefined;
6
+  var breakpoint = false;
7
+  var points = Object.keys(breakpoints).map(function (point) {
8
+    if (typeof point === 'string' && point.indexOf('@') === 0) {
9
+      var minRatio = parseFloat(point.substr(1));
10
+      var value = window.innerHeight * minRatio;
11
+      return {
12
+        value: value,
13
+        point: point
14
+      };
15
+    }
16
+
17
+    return {
18
+      value: point,
19
+      point: point
20
+    };
21
+  });
22
+  points.sort(function (a, b) {
23
+    return parseInt(a.value, 10) - parseInt(b.value, 10);
24
+  });
25
+
26
+  for (var i = 0; i < points.length; i += 1) {
27
+    var _points$i = points[i],
28
+        point = _points$i.point,
29
+        value = _points$i.value;
30
+
31
+    if (value <= window.innerWidth) {
32
+      breakpoint = point;
33
+    }
34
+  }
35
+
36
+  return breakpoint || 'max';
37
+}
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+import setBreakpoint from './setBreakpoint';
2
+import getBreakpoint from './getBreakpoint';
3
+export default {
4
+  setBreakpoint: setBreakpoint,
5
+  getBreakpoint: getBreakpoint
6
+};
0 7
\ No newline at end of file
1 8
new file mode 100644
... ...
@@ -0,0 +1,75 @@
1
+import { extend } from '../../../utils/utils';
2
+export default function setBreakpoint() {
3
+  var swiper = this;
4
+  var activeIndex = swiper.activeIndex,
5
+      initialized = swiper.initialized,
6
+      _swiper$loopedSlides = swiper.loopedSlides,
7
+      loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
8
+      params = swiper.params,
9
+      $el = swiper.$el;
10
+  var breakpoints = params.breakpoints;
11
+  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
12
+
13
+  var breakpoint = swiper.getBreakpoint(breakpoints);
14
+
15
+  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
16
+    var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
17
+
18
+    if (breakpointOnlyParams) {
19
+      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
20
+        var paramValue = breakpointOnlyParams[param];
21
+        if (typeof paramValue === 'undefined') return;
22
+
23
+        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
24
+          breakpointOnlyParams[param] = 'auto';
25
+        } else if (param === 'slidesPerView') {
26
+          breakpointOnlyParams[param] = parseFloat(paramValue);
27
+        } else {
28
+          breakpointOnlyParams[param] = parseInt(paramValue, 10);
29
+        }
30
+      });
31
+    }
32
+
33
+    var breakpointParams = breakpointOnlyParams || swiper.originalParams;
34
+    var wasMultiRow = params.slidesPerColumn > 1;
35
+    var isMultiRow = breakpointParams.slidesPerColumn > 1;
36
+
37
+    if (wasMultiRow && !isMultiRow) {
38
+      $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
39
+      swiper.emitContainerClasses();
40
+    } else if (!wasMultiRow && isMultiRow) {
41
+      $el.addClass(params.containerModifierClass + "multirow");
42
+
43
+      if (breakpointParams.slidesPerColumnFill === 'column') {
44
+        $el.addClass(params.containerModifierClass + "multirow-column");
45
+      }
46
+
47
+      swiper.emitContainerClasses();
48
+    }
49
+
50
+    var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
51
+    var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
52
+
53
+    if (directionChanged && initialized) {
54
+      swiper.changeDirection();
55
+    }
56
+
57
+    extend(swiper.params, breakpointParams);
58
+    extend(swiper, {
59
+      allowTouchMove: swiper.params.allowTouchMove,
60
+      allowSlideNext: swiper.params.allowSlideNext,
61
+      allowSlidePrev: swiper.params.allowSlidePrev
62
+    });
63
+    swiper.currentBreakpoint = breakpoint;
64
+    swiper.emit('_beforeBreakpoint', breakpointParams);
65
+
66
+    if (needsReLoop && initialized) {
67
+      swiper.loopDestroy();
68
+      swiper.loopCreate();
69
+      swiper.updateSlides();
70
+      swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
71
+    }
72
+
73
+    swiper.emit('breakpoint', breakpointParams);
74
+  }
75
+}
0 76
\ No newline at end of file
1 77
new file mode 100644
... ...
@@ -0,0 +1,26 @@
1
+function checkOverflow() {
2
+  var swiper = this;
3
+  var params = swiper.params;
4
+  var wasLocked = swiper.isLocked;
5
+  var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
6
+
7
+  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
8
+    swiper.isLocked = lastSlidePosition <= swiper.size;
9
+  } else {
10
+    swiper.isLocked = swiper.snapGrid.length === 1;
11
+  }
12
+
13
+  swiper.allowSlideNext = !swiper.isLocked;
14
+  swiper.allowSlidePrev = !swiper.isLocked; // events
15
+
16
+  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
17
+
18
+  if (wasLocked && wasLocked !== swiper.isLocked) {
19
+    swiper.isEnd = false;
20
+    if (swiper.navigation) swiper.navigation.update();
21
+  }
22
+}
23
+
24
+export default {
25
+  checkOverflow: checkOverflow
26
+};
0 27
\ No newline at end of file
1 28
new file mode 100644
... ...
@@ -0,0 +1,49 @@
1
+export default function addClasses() {
2
+  var swiper = this;
3
+  var classNames = swiper.classNames,
4
+      params = swiper.params,
5
+      rtl = swiper.rtl,
6
+      $el = swiper.$el,
7
+      device = swiper.device;
8
+  var suffixes = [];
9
+  suffixes.push('initialized');
10
+  suffixes.push(params.direction);
11
+
12
+  if (params.freeMode) {
13
+    suffixes.push('free-mode');
14
+  }
15
+
16
+  if (params.autoHeight) {
17
+    suffixes.push('autoheight');
18
+  }
19
+
20
+  if (rtl) {
21
+    suffixes.push('rtl');
22
+  }
23
+
24
+  if (params.slidesPerColumn > 1) {
25
+    suffixes.push('multirow');
26
+
27
+    if (params.slidesPerColumnFill === 'column') {
28
+      suffixes.push('multirow-column');
29
+    }
30
+  }
31
+
32
+  if (device.android) {
33
+    suffixes.push('android');
34
+  }
35
+
36
+  if (device.ios) {
37
+    suffixes.push('ios');
38
+  }
39
+
40
+  if (params.cssMode) {
41
+    suffixes.push('css-mode');
42
+  }
43
+
44
+  suffixes.forEach(function (suffix) {
45
+    classNames.push(params.containerModifierClass + suffix);
46
+  });
47
+  $el.addClass(classNames.join(' '));
48
+  swiper.emitContainerClasses();
49
+}
0 50
\ No newline at end of file
1 51
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+import addClasses from './addClasses';
2
+import removeClasses from './removeClasses';
3
+export default {
4
+  addClasses: addClasses,
5
+  removeClasses: removeClasses
6
+};
0 7
\ No newline at end of file
1 8
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+export default function removeClasses() {
2
+  var swiper = this;
3
+  var $el = swiper.$el,
4
+      classNames = swiper.classNames;
5
+  $el.removeClass(classNames.join(' '));
6
+  swiper.emitContainerClasses();
7
+}
0 8
\ No newline at end of file
1 9
new file mode 100644
... ...
@@ -0,0 +1,560 @@
1
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2
+
3
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4
+
5
+/* eslint no-param-reassign: "off" */
6
+import $ from '../../utils/dom';
7
+import { extend, now, deleteProps } from '../../utils/utils';
8
+import { getSupport } from '../../utils/get-support';
9
+import { getDevice } from '../../utils/get-device';
10
+import { getBrowser } from '../../utils/get-browser';
11
+import Resize from '../../modules/resize/resize';
12
+import Observer from '../../modules/observer/observer';
13
+import modular from './modular';
14
+import eventsEmitter from './events-emitter';
15
+import update from './update/index';
16
+import translate from './translate/index';
17
+import transition from './transition/index';
18
+import slide from './slide/index';
19
+import loop from './loop/index';
20
+import grabCursor from './grab-cursor/index';
21
+import manipulation from './manipulation/index';
22
+import events from './events/index';
23
+import breakpoints from './breakpoints/index';
24
+import classes from './classes/index';
25
+import images from './images/index';
26
+import checkOverflow from './check-overflow/index';
27
+import defaults from './defaults';
28
+var prototypes = {
29
+  modular: modular,
30
+  eventsEmitter: eventsEmitter,
31
+  update: update,
32
+  translate: translate,
33
+  transition: transition,
34
+  slide: slide,
35
+  loop: loop,
36
+  grabCursor: grabCursor,
37
+  manipulation: manipulation,
38
+  events: events,
39
+  breakpoints: breakpoints,
40
+  checkOverflow: checkOverflow,
41
+  classes: classes,
42
+  images: images
43
+};
44
+var extendedDefaults = {};
45
+
46
+var Swiper = /*#__PURE__*/function () {
47
+  function Swiper() {
48
+    var el;
49
+    var params;
50
+
51
+    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
52
+      args[_key] = arguments[_key];
53
+    }
54
+
55
+    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
56
+      params = args[0];
57
+    } else {
58
+      el = args[0];
59
+      params = args[1];
60
+    }
61
+
62
+    if (!params) params = {};
63
+    params = extend({}, params);
64
+    if (el && !params.el) params.el = el; // Swiper Instance
65
+
66
+    var swiper = this;
67
+    swiper.support = getSupport();
68
+    swiper.device = getDevice({
69
+      userAgent: params.userAgent
70
+    });
71
+    swiper.browser = getBrowser();
72
+    swiper.eventsListeners = {};
73
+    swiper.eventsAnyListeners = [];
74
+
75
+    if (typeof swiper.modules === 'undefined') {
76
+      swiper.modules = {};
77
+    }
78
+
79
+    Object.keys(swiper.modules).forEach(function (moduleName) {
80
+      var module = swiper.modules[moduleName];
81
+
82
+      if (module.params) {
83
+        var moduleParamName = Object.keys(module.params)[0];
84
+        var moduleParams = module.params[moduleParamName];
85
+        if (typeof moduleParams !== 'object' || moduleParams === null) return;
86
+        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
87
+
88
+        if (params[moduleParamName] === true) {
89
+          params[moduleParamName] = {
90
+            enabled: true
91
+          };
92
+        }
93
+
94
+        if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
95
+          params[moduleParamName].enabled = true;
96
+        }
97
+
98
+        if (!params[moduleParamName]) params[moduleParamName] = {
99
+          enabled: false
100
+        };
101
+      }
102
+    }); // Extend defaults with modules params
103
+
104
+    var swiperParams = extend({}, defaults);
105
+    swiper.useParams(swiperParams); // Extend defaults with passed params
106
+
107
+    swiper.params = extend({}, swiperParams, extendedDefaults, params);
108
+    swiper.originalParams = extend({}, swiper.params);
109
+    swiper.passedParams = extend({}, params); // add event listeners
110
+
111
+    if (swiper.params && swiper.params.on) {
112
+      Object.keys(swiper.params.on).forEach(function (eventName) {
113
+        swiper.on(eventName, swiper.params.on[eventName]);
114
+      });
115
+    }
116
+
117
+    if (swiper.params && swiper.params.onAny) {
118
+      swiper.onAny(swiper.params.onAny);
119
+    } // Save Dom lib
120
+
121
+
122
+    swiper.$ = $; // Find el
123
+
124
+    var $el = $(swiper.params.el);
125
+    el = $el[0];
126
+
127
+    if (!el) {
128
+      return undefined;
129
+    }
130
+
131
+    if ($el.length > 1) {
132
+      var swipers = [];
133
+      $el.each(function (containerEl) {
134
+        var newParams = extend({}, params, {
135
+          el: containerEl
136
+        });
137
+        swipers.push(new Swiper(newParams));
138
+      });
139
+      return swipers;
140
+    }
141
+
142
+    el.swiper = swiper; // Find Wrapper
143
+
144
+    var $wrapperEl;
145
+
146
+    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
147
+      $wrapperEl = $(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
148
+
149
+      $wrapperEl.children = function (options) {
150
+        return $el.children(options);
151
+      };
152
+    } else {
153
+      $wrapperEl = $el.children("." + swiper.params.wrapperClass);
154
+    } // Extend Swiper
155
+
156
+
157
+    extend(swiper, {
158
+      $el: $el,
159
+      el: el,
160
+      $wrapperEl: $wrapperEl,
161
+      wrapperEl: $wrapperEl[0],
162
+      // Classes
163
+      classNames: [],
164
+      // Slides
165
+      slides: $(),
166
+      slidesGrid: [],
167
+      snapGrid: [],
168
+      slidesSizesGrid: [],
169
+      // isDirection
170
+      isHorizontal: function isHorizontal() {
171
+        return swiper.params.direction === 'horizontal';
172
+      },
173
+      isVertical: function isVertical() {
174
+        return swiper.params.direction === 'vertical';
175
+      },
176
+      // RTL
177
+      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
178
+      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
179
+      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
180
+      // Indexes
181
+      activeIndex: 0,
182
+      realIndex: 0,
183
+      //
184
+      isBeginning: true,
185
+      isEnd: false,
186
+      // Props
187
+      translate: 0,
188
+      previousTranslate: 0,
189
+      progress: 0,
190
+      velocity: 0,
191
+      animating: false,
192
+      // Locks
193
+      allowSlideNext: swiper.params.allowSlideNext,
194
+      allowSlidePrev: swiper.params.allowSlidePrev,
195
+      // Touch Events
196
+      touchEvents: function touchEvents() {
197
+        var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
198
+        var desktop = ['mousedown', 'mousemove', 'mouseup'];
199
+
200
+        if (swiper.support.pointerEvents) {
201
+          desktop = ['pointerdown', 'pointermove', 'pointerup'];
202
+        }
203
+
204
+        swiper.touchEventsTouch = {
205
+          start: touch[0],
206
+          move: touch[1],
207
+          end: touch[2],
208
+          cancel: touch[3]
209
+        };
210
+        swiper.touchEventsDesktop = {
211
+          start: desktop[0],
212
+          move: desktop[1],
213
+          end: desktop[2]
214
+        };
215
+        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
216
+      }(),
217
+      touchEventsData: {
218
+        isTouched: undefined,
219
+        isMoved: undefined,
220
+        allowTouchCallbacks: undefined,
221
+        touchStartTime: undefined,
222
+        isScrolling: undefined,
223
+        currentTranslate: undefined,
224
+        startTranslate: undefined,
225
+        allowThresholdMove: undefined,
226
+        // Form elements to match
227
+        formElements: 'input, select, option, textarea, button, video, label',
228
+        // Last click time
229
+        lastClickTime: now(),
230
+        clickTimeout: undefined,
231
+        // Velocities
232
+        velocities: [],
233
+        allowMomentumBounce: undefined,
234
+        isTouchEvent: undefined,
235
+        startMoving: undefined
236
+      },
237
+      // Clicks
238
+      allowClick: true,
239
+      // Touches
240
+      allowTouchMove: swiper.params.allowTouchMove,
241
+      touches: {
242
+        startX: 0,
243
+        startY: 0,
244
+        currentX: 0,
245
+        currentY: 0,
246
+        diff: 0
247
+      },
248
+      // Images
249
+      imagesToLoad: [],
250
+      imagesLoaded: 0
251
+    }); // Install Modules
252
+
253
+    swiper.useModules();
254
+    swiper.emit('_swiper'); // Init
255
+
256
+    if (swiper.params.init) {
257
+      swiper.init();
258
+    } // Return app instance
259
+
260
+
261
+    return swiper;
262
+  }
263
+
264
+  var _proto = Swiper.prototype;
265
+
266
+  _proto.emitContainerClasses = function emitContainerClasses() {
267
+    var swiper = this;
268
+    if (!swiper.params._emitClasses || !swiper.el) return;
269
+    var classes = swiper.el.className.split(' ').filter(function (className) {
270
+      return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
271
+    });
272
+    swiper.emit('_containerClasses', classes.join(' '));
273
+  };
274
+
275
+  _proto.getSlideClasses = function getSlideClasses(slideEl) {
276
+    var swiper = this;
277
+    return slideEl.className.split(' ').filter(function (className) {
278
+      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
279
+    }).join(' ');
280
+  };
281
+
282
+  _proto.emitSlidesClasses = function emitSlidesClasses() {
283
+    var swiper = this;
284
+    if (!swiper.params._emitClasses || !swiper.el) return;
285
+    swiper.slides.each(function (slideEl) {
286
+      var classNames = swiper.getSlideClasses(slideEl);
287
+      swiper.emit('_slideClass', slideEl, classNames);
288
+    });
289
+  };
290
+
291
+  _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
292
+    var swiper = this;
293
+    var params = swiper.params,
294
+        slides = swiper.slides,
295
+        slidesGrid = swiper.slidesGrid,
296
+        swiperSize = swiper.size,
297
+        activeIndex = swiper.activeIndex;
298
+    var spv = 1;
299
+
300
+    if (params.centeredSlides) {
301
+      var slideSize = slides[activeIndex].swiperSlideSize;
302
+      var breakLoop;
303
+
304
+      for (var i = activeIndex + 1; i < slides.length; i += 1) {
305
+        if (slides[i] && !breakLoop) {
306
+          slideSize += slides[i].swiperSlideSize;
307
+          spv += 1;
308
+          if (slideSize > swiperSize) breakLoop = true;
309
+        }
310
+      }
311
+
312
+      for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
313
+        if (slides[_i] && !breakLoop) {
314
+          slideSize += slides[_i].swiperSlideSize;
315
+          spv += 1;
316
+          if (slideSize > swiperSize) breakLoop = true;
317
+        }
318
+      }
319
+    } else {
320
+      for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
321
+        if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
322
+          spv += 1;
323
+        }
324
+      }
325
+    }
326
+
327
+    return spv;
328
+  };
329
+
330
+  _proto.update = function update() {
331
+    var swiper = this;
332
+    if (!swiper || swiper.destroyed) return;
333
+    var snapGrid = swiper.snapGrid,
334
+        params = swiper.params; // Breakpoints
335
+
336
+    if (params.breakpoints) {
337
+      swiper.setBreakpoint();
338
+    }
339
+
340
+    swiper.updateSize();
341
+    swiper.updateSlides();
342
+    swiper.updateProgress();
343
+    swiper.updateSlidesClasses();
344
+
345
+    function setTranslate() {
346
+      var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
347
+      var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
348
+      swiper.setTranslate(newTranslate);
349
+      swiper.updateActiveIndex();
350
+      swiper.updateSlidesClasses();
351
+    }
352
+
353
+    var translated;
354
+
355
+    if (swiper.params.freeMode) {
356
+      setTranslate();
357
+
358
+      if (swiper.params.autoHeight) {
359
+        swiper.updateAutoHeight();
360
+      }
361
+    } else {
362
+      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
363
+        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
364
+      } else {
365
+        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
366
+      }
367
+
368
+      if (!translated) {
369
+        setTranslate();
370
+      }
371
+    }
372
+
373
+    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
374
+      swiper.checkOverflow();
375
+    }
376
+
377
+    swiper.emit('update');
378
+  };
379
+
380
+  _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
381
+    if (needUpdate === void 0) {
382
+      needUpdate = true;
383
+    }
384
+
385
+    var swiper = this;
386
+    var currentDirection = swiper.params.direction;
387
+
388
+    if (!newDirection) {
389
+      // eslint-disable-next-line
390
+      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
391
+    }
392
+
393
+    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
394
+      return swiper;
395
+    }
396
+
397
+    swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
398
+    swiper.emitContainerClasses();
399
+    swiper.params.direction = newDirection;
400
+    swiper.slides.each(function (slideEl) {
401
+      if (newDirection === 'vertical') {
402
+        slideEl.style.width = '';
403
+      } else {
404
+        slideEl.style.height = '';
405
+      }
406
+    });
407
+    swiper.emit('changeDirection');
408
+    if (needUpdate) swiper.update();
409
+    return swiper;
410
+  };
411
+
412
+  _proto.init = function init() {
413
+    var swiper = this;
414
+    if (swiper.initialized) return;
415
+    swiper.emit('beforeInit'); // Set breakpoint
416
+
417
+    if (swiper.params.breakpoints) {
418
+      swiper.setBreakpoint();
419
+    } // Add Classes
420
+
421
+
422
+    swiper.addClasses(); // Create loop
423
+
424
+    if (swiper.params.loop) {
425
+      swiper.loopCreate();
426
+    } // Update size
427
+
428
+
429
+    swiper.updateSize(); // Update slides
430
+
431
+    swiper.updateSlides();
432
+
433
+    if (swiper.params.watchOverflow) {
434
+      swiper.checkOverflow();
435
+    } // Set Grab Cursor
436
+
437
+
438
+    if (swiper.params.grabCursor) {
439
+      swiper.setGrabCursor();
440
+    }
441
+
442
+    if (swiper.params.preloadImages) {
443
+      swiper.preloadImages();
444
+    } // Slide To Initial Slide
445
+
446
+
447
+    if (swiper.params.loop) {
448
+      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
449
+    } else {
450
+      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
451
+    } // Attach events
452
+
453
+
454
+    swiper.attachEvents(); // Init Flag
455
+
456
+    swiper.initialized = true; // Emit
457
+
458
+    swiper.emit('init');
459
+    swiper.emit('afterInit');
460
+  };
461
+
462
+  _proto.destroy = function destroy(deleteInstance, cleanStyles) {
463
+    if (deleteInstance === void 0) {
464
+      deleteInstance = true;
465
+    }
466
+
467
+    if (cleanStyles === void 0) {
468
+      cleanStyles = true;
469
+    }
470
+
471
+    var swiper = this;
472
+    var params = swiper.params,
473
+        $el = swiper.$el,
474
+        $wrapperEl = swiper.$wrapperEl,
475
+        slides = swiper.slides;
476
+
477
+    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
478
+      return null;
479
+    }
480
+
481
+    swiper.emit('beforeDestroy'); // Init Flag
482
+
483
+    swiper.initialized = false; // Detach events
484
+
485
+    swiper.detachEvents(); // Destroy loop
486
+
487
+    if (params.loop) {
488
+      swiper.loopDestroy();
489
+    } // Cleanup styles
490
+
491
+
492
+    if (cleanStyles) {
493
+      swiper.removeClasses();
494
+      $el.removeAttr('style');
495
+      $wrapperEl.removeAttr('style');
496
+
497
+      if (slides && slides.length) {
498
+        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
499
+      }
500
+    }
501
+
502
+    swiper.emit('destroy'); // Detach emitter events
503
+
504
+    Object.keys(swiper.eventsListeners).forEach(function (eventName) {
505
+      swiper.off(eventName);
506
+    });
507
+
508
+    if (deleteInstance !== false) {
509
+      swiper.$el[0].swiper = null;
510
+      deleteProps(swiper);
511
+    }
512
+
513
+    swiper.destroyed = true;
514
+    return null;
515
+  };
516
+
517
+  Swiper.extendDefaults = function extendDefaults(newDefaults) {
518
+    extend(extendedDefaults, newDefaults);
519
+  };
520
+
521
+  Swiper.installModule = function installModule(module) {
522
+    if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
523
+    var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now();
524
+    Swiper.prototype.modules[name] = module;
525
+  };
526
+
527
+  Swiper.use = function use(module) {
528
+    if (Array.isArray(module)) {
529
+      module.forEach(function (m) {
530
+        return Swiper.installModule(m);
531
+      });
532
+      return Swiper;
533
+    }
534
+
535
+    Swiper.installModule(module);
536
+    return Swiper;
537
+  };
538
+
539
+  _createClass(Swiper, null, [{
540
+    key: "extendedDefaults",
541
+    get: function get() {
542
+      return extendedDefaults;
543
+    }
544
+  }, {
545
+    key: "defaults",
546
+    get: function get() {
547
+      return defaults;
548
+    }
549
+  }]);
550
+
551
+  return Swiper;
552
+}();
553
+
554
+Object.keys(prototypes).forEach(function (prototypeGroup) {
555
+  Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
556
+    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
557
+  });
558
+});
559
+Swiper.use([Resize, Observer]);
560
+export default Swiper;
0 561
\ No newline at end of file
1 562
new file mode 100644
... ...
@@ -0,0 +1,126 @@
1
+export default {
2
+  init: true,
3
+  direction: 'horizontal',
4
+  touchEventsTarget: 'container',
5
+  initialSlide: 0,
6
+  speed: 300,
7
+  cssMode: false,
8
+  updateOnWindowResize: true,
9
+  nested: false,
10
+  // Overrides
11
+  width: null,
12
+  height: null,
13
+  //
14
+  preventInteractionOnTransition: false,
15
+  // ssr
16
+  userAgent: null,
17
+  url: null,
18
+  // To support iOS's swipe-to-go-back gesture (when being used in-app).
19
+  edgeSwipeDetection: false,
20
+  edgeSwipeThreshold: 20,
21
+  // Free mode
22
+  freeMode: false,
23
+  freeModeMomentum: true,
24
+  freeModeMomentumRatio: 1,
25
+  freeModeMomentumBounce: true,
26
+  freeModeMomentumBounceRatio: 1,
27
+  freeModeMomentumVelocityRatio: 1,
28
+  freeModeSticky: false,
29
+  freeModeMinimumVelocity: 0.02,
30
+  // Autoheight
31
+  autoHeight: false,
32
+  // Set wrapper width
33
+  setWrapperSize: false,
34
+  // Virtual Translate
35
+  virtualTranslate: false,
36
+  // Effects
37
+  effect: 'slide',
38
+  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
39
+  // Breakpoints
40
+  breakpoints: undefined,
41
+  // Slides grid
42
+  spaceBetween: 0,
43
+  slidesPerView: 1,
44
+  slidesPerColumn: 1,
45
+  slidesPerColumnFill: 'column',
46
+  slidesPerGroup: 1,
47
+  slidesPerGroupSkip: 0,
48
+  centeredSlides: false,
49
+  centeredSlidesBounds: false,
50
+  slidesOffsetBefore: 0,
51
+  // in px
52
+  slidesOffsetAfter: 0,
53
+  // in px
54
+  normalizeSlideIndex: true,
55
+  centerInsufficientSlides: false,
56
+  // Disable swiper and hide navigation when container not overflow
57
+  watchOverflow: false,
58
+  // Round length
59
+  roundLengths: false,
60
+  // Touches
61
+  touchRatio: 1,
62
+  touchAngle: 45,
63
+  simulateTouch: true,
64
+  shortSwipes: true,
65
+  longSwipes: true,
66
+  longSwipesRatio: 0.5,
67
+  longSwipesMs: 300,
68
+  followFinger: true,
69
+  allowTouchMove: true,
70
+  threshold: 0,
71
+  touchMoveStopPropagation: false,
72
+  touchStartPreventDefault: true,
73
+  touchStartForcePreventDefault: false,
74
+  touchReleaseOnEdges: false,
75
+  // Unique Navigation Elements
76
+  uniqueNavElements: true,
77
+  // Resistance
78
+  resistance: true,
79
+  resistanceRatio: 0.85,
80
+  // Progress
81
+  watchSlidesProgress: false,
82
+  watchSlidesVisibility: false,
83
+  // Cursor
84
+  grabCursor: false,
85
+  // Clicks
86
+  preventClicks: true,
87
+  preventClicksPropagation: true,
88
+  slideToClickedSlide: false,
89
+  // Images
90
+  preloadImages: true,
91
+  updateOnImagesReady: true,
92
+  // loop
93
+  loop: false,
94
+  loopAdditionalSlides: 0,
95
+  loopedSlides: null,
96
+  loopFillGroupWithBlank: false,
97
+  loopPreventsSlide: true,
98
+  // Swiping/no swiping
99
+  allowSlidePrev: true,
100
+  allowSlideNext: true,
101
+  swipeHandler: null,
102
+  // '.swipe-handler',
103
+  noSwiping: true,
104
+  noSwipingClass: 'swiper-no-swiping',
105
+  noSwipingSelector: null,
106
+  // Passive Listeners
107
+  passiveListeners: true,
108
+  // NS
109
+  containerModifierClass: 'swiper-container-',
110
+  // NEW
111
+  slideClass: 'swiper-slide',
112
+  slideBlankClass: 'swiper-slide-invisible-blank',
113
+  slideActiveClass: 'swiper-slide-active',
114
+  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
115
+  slideVisibleClass: 'swiper-slide-visible',
116
+  slideDuplicateClass: 'swiper-slide-duplicate',
117
+  slideNextClass: 'swiper-slide-next',
118
+  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
119
+  slidePrevClass: 'swiper-slide-prev',
120
+  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
121
+  wrapperClass: 'swiper-wrapper',
122
+  // Callbacks
123
+  runCallbacksOnInit: true,
124
+  // Internals
125
+  _emitClasses: false
126
+};
0 127
\ No newline at end of file
1 128
new file mode 100644
... ...
@@ -0,0 +1,114 @@
1
+/* eslint-disable no-underscore-dangle */
2
+export default {
3
+  on: function on(events, handler, priority) {
4
+    var self = this;
5
+    if (typeof handler !== 'function') return self;
6
+    var method = priority ? 'unshift' : 'push';
7
+    events.split(' ').forEach(function (event) {
8
+      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
9
+      self.eventsListeners[event][method](handler);
10
+    });
11
+    return self;
12
+  },
13
+  once: function once(events, handler, priority) {
14
+    var self = this;
15
+    if (typeof handler !== 'function') return self;
16
+
17
+    function onceHandler() {
18
+      self.off(events, onceHandler);
19
+
20
+      if (onceHandler.__emitterProxy) {
21
+        delete onceHandler.__emitterProxy;
22
+      }
23
+
24
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
25
+        args[_key] = arguments[_key];
26
+      }
27
+
28
+      handler.apply(self, args);
29
+    }
30
+
31
+    onceHandler.__emitterProxy = handler;
32
+    return self.on(events, onceHandler, priority);
33
+  },
34
+  onAny: function onAny(handler, priority) {
35
+    var self = this;
36
+    if (typeof handler !== 'function') return self;
37
+    var method = priority ? 'unshift' : 'push';
38
+
39
+    if (self.eventsAnyListeners.indexOf(handler) < 0) {
40
+      self.eventsAnyListeners[method](handler);
41
+    }
42
+
43
+    return self;
44
+  },
45
+  offAny: function offAny(handler) {
46
+    var self = this;
47
+    if (!self.eventsAnyListeners) return self;
48
+    var index = self.eventsAnyListeners.indexOf(handler);
49
+
50
+    if (index >= 0) {
51
+      self.eventsAnyListeners.splice(index, 1);
52
+    }
53
+
54
+    return self;
55
+  },
56
+  off: function off(events, handler) {
57
+    var self = this;
58
+    if (!self.eventsListeners) return self;
59
+    events.split(' ').forEach(function (event) {
60
+      if (typeof handler === 'undefined') {
61
+        self.eventsListeners[event] = [];
62
+      } else if (self.eventsListeners[event]) {
63
+        self.eventsListeners[event].forEach(function (eventHandler, index) {
64
+          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
65
+            self.eventsListeners[event].splice(index, 1);
66
+          }
67
+        });
68
+      }
69
+    });
70
+    return self;
71
+  },
72
+  emit: function emit() {
73
+    var self = this;
74
+    if (!self.eventsListeners) return self;
75
+    var events;
76
+    var data;
77
+    var context;
78
+
79
+    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
80
+      args[_key2] = arguments[_key2];
81
+    }
82
+
83
+    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
84
+      events = args[0];
85
+      data = args.slice(1, args.length);
86
+      context = self;
87
+    } else {
88
+      events = args[0].events;
89
+      data = args[0].data;
90
+      context = args[0].context || self;
91
+    }
92
+
93
+    data.unshift(context);
94
+    var eventsArray = Array.isArray(events) ? events : events.split(' ');
95
+    eventsArray.forEach(function (event) {
96
+      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
97
+        self.eventsAnyListeners.forEach(function (eventHandler) {
98
+          eventHandler.apply(context, [event].concat(data));
99
+        });
100
+      }
101
+
102
+      if (self.eventsListeners && self.eventsListeners[event]) {
103
+        var handlers = [];
104
+        self.eventsListeners[event].forEach(function (eventHandler) {
105
+          handlers.push(eventHandler);
106
+        });
107
+        handlers.forEach(function (eventHandler) {
108
+          eventHandler.apply(context, data);
109
+        });
110
+      }
111
+    });
112
+    return self;
113
+  }
114
+};
0 115
\ No newline at end of file
1 116
new file mode 100644
... ...
@@ -0,0 +1,136 @@
1
+import { getDocument } from 'ssr-window';
2
+import onTouchStart from './onTouchStart';
3
+import onTouchMove from './onTouchMove';
4
+import onTouchEnd from './onTouchEnd';
5
+import onResize from './onResize';
6
+import onClick from './onClick';
7
+import onScroll from './onScroll';
8
+var dummyEventAttached = false;
9
+
10
+function dummyEventListener() {}
11
+
12
+function attachEvents() {
13
+  var swiper = this;
14
+  var document = getDocument();
15
+  var params = swiper.params,
16
+      touchEvents = swiper.touchEvents,
17
+      el = swiper.el,
18
+      wrapperEl = swiper.wrapperEl,
19
+      device = swiper.device,
20
+      support = swiper.support;
21
+  swiper.onTouchStart = onTouchStart.bind(swiper);
22
+  swiper.onTouchMove = onTouchMove.bind(swiper);
23
+  swiper.onTouchEnd = onTouchEnd.bind(swiper);
24
+
25
+  if (params.cssMode) {
26
+    swiper.onScroll = onScroll.bind(swiper);
27
+  }
28
+
29
+  swiper.onClick = onClick.bind(swiper);
30
+  var capture = !!params.nested; // Touch Events
31
+
32
+  if (!support.touch && support.pointerEvents) {
33
+    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
34
+    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
35
+    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
36
+  } else {
37
+    if (support.touch) {
38
+      var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
39
+        passive: true,
40
+        capture: false
41
+      } : false;
42
+      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
43
+      el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
44
+        passive: false,
45
+        capture: capture
46
+      } : capture);
47
+      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
48
+
49
+      if (touchEvents.cancel) {
50
+        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
51
+      }
52
+
53
+      if (!dummyEventAttached) {
54
+        document.addEventListener('touchstart', dummyEventListener);
55
+        dummyEventAttached = true;
56
+      }
57
+    }
58
+
59
+    if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
60
+      el.addEventListener('mousedown', swiper.onTouchStart, false);
61
+      document.addEventListener('mousemove', swiper.onTouchMove, capture);
62
+      document.addEventListener('mouseup', swiper.onTouchEnd, false);
63
+    }
64
+  } // Prevent Links Clicks
65
+
66
+
67
+  if (params.preventClicks || params.preventClicksPropagation) {
68
+    el.addEventListener('click', swiper.onClick, true);
69
+  }
70
+
71
+  if (params.cssMode) {
72
+    wrapperEl.addEventListener('scroll', swiper.onScroll);
73
+  } // Resize handler
74
+
75
+
76
+  if (params.updateOnWindowResize) {
77
+    swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
78
+  } else {
79
+    swiper.on('observerUpdate', onResize, true);
80
+  }
81
+}
82
+
83
+function detachEvents() {
84
+  var swiper = this;
85
+  var document = getDocument();
86
+  var params = swiper.params,
87
+      touchEvents = swiper.touchEvents,
88
+      el = swiper.el,
89
+      wrapperEl = swiper.wrapperEl,
90
+      device = swiper.device,
91
+      support = swiper.support;
92
+  var capture = !!params.nested; // Touch Events
93
+
94
+  if (!support.touch && support.pointerEvents) {
95
+    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
96
+    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
97
+    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
98
+  } else {
99
+    if (support.touch) {
100
+      var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
101
+        passive: true,
102
+        capture: false
103
+      } : false;
104
+      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
105
+      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
106
+      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
107
+
108
+      if (touchEvents.cancel) {
109
+        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
110
+      }
111
+    }
112
+
113
+    if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
114
+      el.removeEventListener('mousedown', swiper.onTouchStart, false);
115
+      document.removeEventListener('mousemove', swiper.onTouchMove, capture);
116
+      document.removeEventListener('mouseup', swiper.onTouchEnd, false);
117
+    }
118
+  } // Prevent Links Clicks
119
+
120
+
121
+  if (params.preventClicks || params.preventClicksPropagation) {
122
+    el.removeEventListener('click', swiper.onClick, true);
123
+  }
124
+
125
+  if (params.cssMode) {
126
+    wrapperEl.removeEventListener('scroll', swiper.onScroll);
127
+  } // Resize handler
128
+
129
+
130
+  swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
131
+}
132
+
133
+export default {
134
+  attachEvents: attachEvents,
135
+  detachEvents: detachEvents
136
+};
0 137
\ No newline at end of file
1 138
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+export default function onClick(e) {
2
+  var swiper = this;
3
+
4
+  if (!swiper.allowClick) {
5
+    if (swiper.params.preventClicks) e.preventDefault();
6
+
7
+    if (swiper.params.preventClicksPropagation && swiper.animating) {
8
+      e.stopPropagation();
9
+      e.stopImmediatePropagation();
10
+    }
11
+  }
12
+}
0 13
\ No newline at end of file
1 14
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+export default function onResize() {
2
+  var swiper = this;
3
+  var params = swiper.params,
4
+      el = swiper.el;
5
+  if (el && el.offsetWidth === 0) return; // Breakpoints
6
+
7
+  if (params.breakpoints) {
8
+    swiper.setBreakpoint();
9
+  } // Save locks
10
+
11
+
12
+  var allowSlideNext = swiper.allowSlideNext,
13
+      allowSlidePrev = swiper.allowSlidePrev,
14
+      snapGrid = swiper.snapGrid; // Disable locks on resize
15
+
16
+  swiper.allowSlideNext = true;
17
+  swiper.allowSlidePrev = true;
18
+  swiper.updateSize();
19
+  swiper.updateSlides();
20
+  swiper.updateSlidesClasses();
21
+
22
+  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
23
+    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
24
+  } else {
25
+    swiper.slideTo(swiper.activeIndex, 0, false, true);
26
+  }
27
+
28
+  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
29
+    swiper.autoplay.run();
30
+  } // Return locks after resize
31
+
32
+
33
+  swiper.allowSlidePrev = allowSlidePrev;
34
+  swiper.allowSlideNext = allowSlideNext;
35
+
36
+  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
37
+    swiper.checkOverflow();
38
+  }
39
+}
0 40
\ No newline at end of file
1 41
new file mode 100644
... ...
@@ -0,0 +1,35 @@
1
+export default function onScroll() {
2
+  var swiper = this;
3
+  var wrapperEl = swiper.wrapperEl,
4
+      rtlTranslate = swiper.rtlTranslate;
5
+  swiper.previousTranslate = swiper.translate;
6
+
7
+  if (swiper.isHorizontal()) {
8
+    if (rtlTranslate) {
9
+      swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
10
+    } else {
11
+      swiper.translate = -wrapperEl.scrollLeft;
12
+    }
13
+  } else {
14
+    swiper.translate = -wrapperEl.scrollTop;
15
+  } // eslint-disable-next-line
16
+
17
+
18
+  if (swiper.translate === -0) swiper.translate = 0;
19
+  swiper.updateActiveIndex();
20
+  swiper.updateSlidesClasses();
21
+  var newProgress;
22
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
23
+
24
+  if (translatesDiff === 0) {
25
+    newProgress = 0;
26
+  } else {
27
+    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
28
+  }
29
+
30
+  if (newProgress !== swiper.progress) {
31
+    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
32
+  }
33
+
34
+  swiper.emit('setTranslate', swiper.translate, false);
35
+}
0 36
\ No newline at end of file
1 37
new file mode 100644
... ...
@@ -0,0 +1,319 @@
1
+import { now, nextTick } from '../../../utils/utils';
2
+export default function onTouchEnd(event) {
3
+  var swiper = this;
4
+  var data = swiper.touchEventsData;
5
+  var params = swiper.params,
6
+      touches = swiper.touches,
7
+      rtl = swiper.rtlTranslate,
8
+      $wrapperEl = swiper.$wrapperEl,
9
+      slidesGrid = swiper.slidesGrid,
10
+      snapGrid = swiper.snapGrid;
11
+  var e = event;
12
+  if (e.originalEvent) e = e.originalEvent;
13
+
14
+  if (data.allowTouchCallbacks) {
15
+    swiper.emit('touchEnd', e);
16
+  }
17
+
18
+  data.allowTouchCallbacks = false;
19
+
20
+  if (!data.isTouched) {
21
+    if (data.isMoved && params.grabCursor) {
22
+      swiper.setGrabCursor(false);
23
+    }
24
+
25
+    data.isMoved = false;
26
+    data.startMoving = false;
27
+    return;
28
+  } // Return Grab Cursor
29
+
30
+
31
+  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
32
+    swiper.setGrabCursor(false);
33
+  } // Time diff
34
+
35
+
36
+  var touchEndTime = now();
37
+  var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
38
+
39
+  if (swiper.allowClick) {
40
+    swiper.updateClickedSlide(e);
41
+    swiper.emit('tap click', e);
42
+
43
+    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
44
+      swiper.emit('doubleTap doubleClick', e);
45
+    }
46
+  }
47
+
48
+  data.lastClickTime = now();
49
+  nextTick(function () {
50
+    if (!swiper.destroyed) swiper.allowClick = true;
51
+  });
52
+
53
+  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
54
+    data.isTouched = false;
55
+    data.isMoved = false;
56
+    data.startMoving = false;
57
+    return;
58
+  }
59
+
60
+  data.isTouched = false;
61
+  data.isMoved = false;
62
+  data.startMoving = false;
63
+  var currentPos;
64
+
65
+  if (params.followFinger) {
66
+    currentPos = rtl ? swiper.translate : -swiper.translate;
67
+  } else {
68
+    currentPos = -data.currentTranslate;
69
+  }
70
+
71
+  if (params.cssMode) {
72
+    return;
73
+  }
74
+
75
+  if (params.freeMode) {
76
+    if (currentPos < -swiper.minTranslate()) {
77
+      swiper.slideTo(swiper.activeIndex);
78
+      return;
79
+    }
80
+
81
+    if (currentPos > -swiper.maxTranslate()) {
82
+      if (swiper.slides.length < snapGrid.length) {
83
+        swiper.slideTo(snapGrid.length - 1);
84
+      } else {
85
+        swiper.slideTo(swiper.slides.length - 1);
86
+      }
87
+
88
+      return;
89
+    }
90
+
91
+    if (params.freeModeMomentum) {
92
+      if (data.velocities.length > 1) {
93
+        var lastMoveEvent = data.velocities.pop();
94
+        var velocityEvent = data.velocities.pop();
95
+        var distance = lastMoveEvent.position - velocityEvent.position;
96
+        var time = lastMoveEvent.time - velocityEvent.time;
97
+        swiper.velocity = distance / time;
98
+        swiper.velocity /= 2;
99
+
100
+        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
101
+          swiper.velocity = 0;
102
+        } // this implies that the user stopped moving a finger then released.
103
+        // There would be no events with distance zero, so the last event is stale.
104
+
105
+
106
+        if (time > 150 || now() - lastMoveEvent.time > 300) {
107
+          swiper.velocity = 0;
108
+        }
109
+      } else {
110
+        swiper.velocity = 0;
111
+      }
112
+
113
+      swiper.velocity *= params.freeModeMomentumVelocityRatio;
114
+      data.velocities.length = 0;
115
+      var momentumDuration = 1000 * params.freeModeMomentumRatio;
116
+      var momentumDistance = swiper.velocity * momentumDuration;
117
+      var newPosition = swiper.translate + momentumDistance;
118
+      if (rtl) newPosition = -newPosition;
119
+      var doBounce = false;
120
+      var afterBouncePosition;
121
+      var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
122
+      var needsLoopFix;
123
+
124
+      if (newPosition < swiper.maxTranslate()) {
125
+        if (params.freeModeMomentumBounce) {
126
+          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
127
+            newPosition = swiper.maxTranslate() - bounceAmount;
128
+          }
129
+
130
+          afterBouncePosition = swiper.maxTranslate();
131
+          doBounce = true;
132
+          data.allowMomentumBounce = true;
133
+        } else {
134
+          newPosition = swiper.maxTranslate();
135
+        }
136
+
137
+        if (params.loop && params.centeredSlides) needsLoopFix = true;
138
+      } else if (newPosition > swiper.minTranslate()) {
139
+        if (params.freeModeMomentumBounce) {
140
+          if (newPosition - swiper.minTranslate() > bounceAmount) {
141
+            newPosition = swiper.minTranslate() + bounceAmount;
142
+          }
143
+
144
+          afterBouncePosition = swiper.minTranslate();
145
+          doBounce = true;
146
+          data.allowMomentumBounce = true;
147
+        } else {
148
+          newPosition = swiper.minTranslate();
149
+        }
150
+
151
+        if (params.loop && params.centeredSlides) needsLoopFix = true;
152
+      } else if (params.freeModeSticky) {
153
+        var nextSlide;
154
+
155
+        for (var j = 0; j < snapGrid.length; j += 1) {
156
+          if (snapGrid[j] > -newPosition) {
157
+            nextSlide = j;
158
+            break;
159
+          }
160
+        }
161
+
162
+        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
163
+          newPosition = snapGrid[nextSlide];
164
+        } else {
165
+          newPosition = snapGrid[nextSlide - 1];
166
+        }
167
+
168
+        newPosition = -newPosition;
169
+      }
170
+
171
+      if (needsLoopFix) {
172
+        swiper.once('transitionEnd', function () {
173
+          swiper.loopFix();
174
+        });
175
+      } // Fix duration
176
+
177
+
178
+      if (swiper.velocity !== 0) {
179
+        if (rtl) {
180
+          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
181
+        } else {
182
+          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
183
+        }
184
+
185
+        if (params.freeModeSticky) {
186
+          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
187
+          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
188
+          // It's easy to see this when simulating touch with mouse events. To fix this,
189
+          // limit single-slide swipes to the default slide duration. This also has the
190
+          // nice side effect of matching slide speed if the user stopped moving before
191
+          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
192
+          // For faster swipes, also apply limits (albeit higher ones).
193
+          var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
194
+          var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
195
+
196
+          if (moveDistance < currentSlideSize) {
197
+            momentumDuration = params.speed;
198
+          } else if (moveDistance < 2 * currentSlideSize) {
199
+            momentumDuration = params.speed * 1.5;
200
+          } else {
201
+            momentumDuration = params.speed * 2.5;
202
+          }
203
+        }
204
+      } else if (params.freeModeSticky) {
205
+        swiper.slideToClosest();
206
+        return;
207
+      }
208
+
209
+      if (params.freeModeMomentumBounce && doBounce) {
210
+        swiper.updateProgress(afterBouncePosition);
211
+        swiper.setTransition(momentumDuration);
212
+        swiper.setTranslate(newPosition);
213
+        swiper.transitionStart(true, swiper.swipeDirection);
214
+        swiper.animating = true;
215
+        $wrapperEl.transitionEnd(function () {
216
+          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
217
+          swiper.emit('momentumBounce');
218
+          swiper.setTransition(params.speed);
219
+          setTimeout(function () {
220
+            swiper.setTranslate(afterBouncePosition);
221
+            $wrapperEl.transitionEnd(function () {
222
+              if (!swiper || swiper.destroyed) return;
223
+              swiper.transitionEnd();
224
+            });
225
+          }, 0);
226
+        });
227
+      } else if (swiper.velocity) {
228
+        swiper.updateProgress(newPosition);
229
+        swiper.setTransition(momentumDuration);
230
+        swiper.setTranslate(newPosition);
231
+        swiper.transitionStart(true, swiper.swipeDirection);
232
+
233
+        if (!swiper.animating) {
234
+          swiper.animating = true;
235
+          $wrapperEl.transitionEnd(function () {
236
+            if (!swiper || swiper.destroyed) return;
237
+            swiper.transitionEnd();
238
+          });
239
+        }
240
+      } else {
241
+        swiper.updateProgress(newPosition);
242
+      }
243
+
244
+      swiper.updateActiveIndex();
245
+      swiper.updateSlidesClasses();
246
+    } else if (params.freeModeSticky) {
247
+      swiper.slideToClosest();
248
+      return;
249
+    }
250
+
251
+    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
252
+      swiper.updateProgress();
253
+      swiper.updateActiveIndex();
254
+      swiper.updateSlidesClasses();
255
+    }
256
+
257
+    return;
258
+  } // Find current slide
259
+
260
+
261
+  var stopIndex = 0;
262
+  var groupSize = swiper.slidesSizesGrid[0];
263
+
264
+  for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
265
+    var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
266
+
267
+    if (typeof slidesGrid[i + _increment] !== 'undefined') {
268
+      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
269
+        stopIndex = i;
270
+        groupSize = slidesGrid[i + _increment] - slidesGrid[i];
271
+      }
272
+    } else if (currentPos >= slidesGrid[i]) {
273
+      stopIndex = i;
274
+      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
275
+    }
276
+  } // Find current slide size
277
+
278
+
279
+  var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
280
+  var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
281
+
282
+  if (timeDiff > params.longSwipesMs) {
283
+    // Long touches
284
+    if (!params.longSwipes) {
285
+      swiper.slideTo(swiper.activeIndex);
286
+      return;
287
+    }
288
+
289
+    if (swiper.swipeDirection === 'next') {
290
+      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
291
+    }
292
+
293
+    if (swiper.swipeDirection === 'prev') {
294
+      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
295
+    }
296
+  } else {
297
+    // Short swipes
298
+    if (!params.shortSwipes) {
299
+      swiper.slideTo(swiper.activeIndex);
300
+      return;
301
+    }
302
+
303
+    var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
304
+
305
+    if (!isNavButtonTarget) {
306
+      if (swiper.swipeDirection === 'next') {
307
+        swiper.slideTo(stopIndex + increment);
308
+      }
309
+
310
+      if (swiper.swipeDirection === 'prev') {
311
+        swiper.slideTo(stopIndex);
312
+      }
313
+    } else if (e.target === swiper.navigation.nextEl) {
314
+      swiper.slideTo(stopIndex + increment);
315
+    } else {
316
+      swiper.slideTo(stopIndex);
317
+    }
318
+  }
319
+}
0 320
\ No newline at end of file
1 321
new file mode 100644
... ...
@@ -0,0 +1,225 @@
1
+import { getDocument } from 'ssr-window';
2
+import $ from '../../../utils/dom';
3
+import { extend, now } from '../../../utils/utils';
4
+export default function onTouchMove(event) {
5
+  var document = getDocument();
6
+  var swiper = this;
7
+  var data = swiper.touchEventsData;
8
+  var params = swiper.params,
9
+      touches = swiper.touches,
10
+      rtl = swiper.rtlTranslate;
11
+  var e = event;
12
+  if (e.originalEvent) e = e.originalEvent;
13
+
14
+  if (!data.isTouched) {
15
+    if (data.startMoving && data.isScrolling) {
16
+      swiper.emit('touchMoveOpposite', e);
17
+    }
18
+
19
+    return;
20
+  }
21
+
22
+  if (data.isTouchEvent && e.type !== 'touchmove') return;
23
+  var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
24
+  var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
25
+  var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
26
+
27
+  if (e.preventedByNestedSwiper) {
28
+    touches.startX = pageX;
29
+    touches.startY = pageY;
30
+    return;
31
+  }
32
+
33
+  if (!swiper.allowTouchMove) {
34
+    // isMoved = true;
35
+    swiper.allowClick = false;
36
+
37
+    if (data.isTouched) {
38
+      extend(touches, {
39
+        startX: pageX,
40
+        startY: pageY,
41
+        currentX: pageX,
42
+        currentY: pageY
43
+      });
44
+      data.touchStartTime = now();
45
+    }
46
+
47
+    return;
48
+  }
49
+
50
+  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
51
+    if (swiper.isVertical()) {
52
+      // Vertical
53
+      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
54
+        data.isTouched = false;
55
+        data.isMoved = false;
56
+        return;
57
+      }
58
+    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
59
+      return;
60
+    }
61
+  }
62
+
63
+  if (data.isTouchEvent && document.activeElement) {
64
+    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {
65
+      data.isMoved = true;
66
+      swiper.allowClick = false;
67
+      return;
68
+    }
69
+  }
70
+
71
+  if (data.allowTouchCallbacks) {
72
+    swiper.emit('touchMove', e);
73
+  }
74
+
75
+  if (e.targetTouches && e.targetTouches.length > 1) return;
76
+  touches.currentX = pageX;
77
+  touches.currentY = pageY;
78
+  var diffX = touches.currentX - touches.startX;
79
+  var diffY = touches.currentY - touches.startY;
80
+  if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
81
+
82
+  if (typeof data.isScrolling === 'undefined') {
83
+    var touchAngle;
84
+
85
+    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
86
+      data.isScrolling = false;
87
+    } else {
88
+      // eslint-disable-next-line
89
+      if (diffX * diffX + diffY * diffY >= 25) {
90
+        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
91
+        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
92
+      }
93
+    }
94
+  }
95
+
96
+  if (data.isScrolling) {
97
+    swiper.emit('touchMoveOpposite', e);
98
+  }
99
+
100
+  if (typeof data.startMoving === 'undefined') {
101
+    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
102
+      data.startMoving = true;
103
+    }
104
+  }
105
+
106
+  if (data.isScrolling) {
107
+    data.isTouched = false;
108
+    return;
109
+  }
110
+
111
+  if (!data.startMoving) {
112
+    return;
113
+  }
114
+
115
+  swiper.allowClick = false;
116
+
117
+  if (!params.cssMode && e.cancelable) {
118
+    e.preventDefault();
119
+  }
120
+
121
+  if (params.touchMoveStopPropagation && !params.nested) {
122
+    e.stopPropagation();
123
+  }
124
+
125
+  if (!data.isMoved) {
126
+    if (params.loop) {
127
+      swiper.loopFix();
128
+    }
129
+
130
+    data.startTranslate = swiper.getTranslate();
131
+    swiper.setTransition(0);
132
+
133
+    if (swiper.animating) {
134
+      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
135
+    }
136
+
137
+    data.allowMomentumBounce = false; // Grab Cursor
138
+
139
+    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
140
+      swiper.setGrabCursor(true);
141
+    }
142
+
143
+    swiper.emit('sliderFirstMove', e);
144
+  }
145
+
146
+  swiper.emit('sliderMove', e);
147
+  data.isMoved = true;
148
+  var diff = swiper.isHorizontal() ? diffX : diffY;
149
+  touches.diff = diff;
150
+  diff *= params.touchRatio;
151
+  if (rtl) diff = -diff;
152
+  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
153
+  data.currentTranslate = diff + data.startTranslate;
154
+  var disableParentSwiper = true;
155
+  var resistanceRatio = params.resistanceRatio;
156
+
157
+  if (params.touchReleaseOnEdges) {
158
+    resistanceRatio = 0;
159
+  }
160
+
161
+  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
162
+    disableParentSwiper = false;
163
+    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
164
+  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
165
+    disableParentSwiper = false;
166
+    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
167
+  }
168
+
169
+  if (disableParentSwiper) {
170
+    e.preventedByNestedSwiper = true;
171
+  } // Directions locks
172
+
173
+
174
+  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
175
+    data.currentTranslate = data.startTranslate;
176
+  }
177
+
178
+  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
179
+    data.currentTranslate = data.startTranslate;
180
+  } // Threshold
181
+
182
+
183
+  if (params.threshold > 0) {
184
+    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
185
+      if (!data.allowThresholdMove) {
186
+        data.allowThresholdMove = true;
187
+        touches.startX = touches.currentX;
188
+        touches.startY = touches.currentY;
189
+        data.currentTranslate = data.startTranslate;
190
+        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
191
+        return;
192
+      }
193
+    } else {
194
+      data.currentTranslate = data.startTranslate;
195
+      return;
196
+    }
197
+  }
198
+
199
+  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
200
+
201
+  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
202
+    swiper.updateActiveIndex();
203
+    swiper.updateSlidesClasses();
204
+  }
205
+
206
+  if (params.freeMode) {
207
+    // Velocity
208
+    if (data.velocities.length === 0) {
209
+      data.velocities.push({
210
+        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
211
+        time: data.touchStartTime
212
+      });
213
+    }
214
+
215
+    data.velocities.push({
216
+      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
217
+      time: now()
218
+    });
219
+  } // Update progress
220
+
221
+
222
+  swiper.updateProgress(data.currentTranslate); // Update translate
223
+
224
+  swiper.setTranslate(data.currentTranslate);
225
+}
0 226
\ No newline at end of file
1 227
new file mode 100644
... ...
@@ -0,0 +1,81 @@
1
+import { getWindow, getDocument } from 'ssr-window';
2
+import $ from '../../../utils/dom';
3
+import { extend, now } from '../../../utils/utils';
4
+export default function onTouchStart(event) {
5
+  var swiper = this;
6
+  var document = getDocument();
7
+  var window = getWindow();
8
+  var data = swiper.touchEventsData;
9
+  var params = swiper.params,
10
+      touches = swiper.touches;
11
+
12
+  if (swiper.animating && params.preventInteractionOnTransition) {
13
+    return;
14
+  }
15
+
16
+  var e = event;
17
+  if (e.originalEvent) e = e.originalEvent;
18
+  var $targetEl = $(e.target);
19
+
20
+  if (params.touchEventsTarget === 'wrapper') {
21
+    if (!$targetEl.closest(swiper.wrapperEl).length) return;
22
+  }
23
+
24
+  data.isTouchEvent = e.type === 'touchstart';
25
+  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
26
+  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
27
+  if (data.isTouched && data.isMoved) return;
28
+
29
+  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
30
+    swiper.allowClick = true;
31
+    return;
32
+  }
33
+
34
+  if (params.swipeHandler) {
35
+    if (!$targetEl.closest(params.swipeHandler)[0]) return;
36
+  }
37
+
38
+  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
39
+  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
40
+  var startX = touches.currentX;
41
+  var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
42
+
43
+  var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
44
+  var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
45
+
46
+  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)) {
47
+    return;
48
+  }
49
+
50
+  extend(data, {
51
+    isTouched: true,
52
+    isMoved: false,
53
+    allowTouchCallbacks: true,
54
+    isScrolling: undefined,
55
+    startMoving: undefined
56
+  });
57
+  touches.startX = startX;
58
+  touches.startY = startY;
59
+  data.touchStartTime = now();
60
+  swiper.allowClick = true;
61
+  swiper.updateSize();
62
+  swiper.swipeDirection = undefined;
63
+  if (params.threshold > 0) data.allowThresholdMove = false;
64
+
65
+  if (e.type !== 'touchstart') {
66
+    var preventDefault = true;
67
+    if ($targetEl.is(data.formElements)) preventDefault = false;
68
+
69
+    if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
70
+      document.activeElement.blur();
71
+    }
72
+
73
+    var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
74
+
75
+    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
76
+      e.preventDefault();
77
+    }
78
+  }
79
+
80
+  swiper.emit('touchStart', e);
81
+}
0 82
\ No newline at end of file
1 83
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+import setGrabCursor from './setGrabCursor';
2
+import unsetGrabCursor from './unsetGrabCursor';
3
+export default {
4
+  setGrabCursor: setGrabCursor,
5
+  unsetGrabCursor: unsetGrabCursor
6
+};
0 7
\ No newline at end of file
1 8
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+export default function setGrabCursor(moving) {
2
+  var swiper = this;
3
+  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
4
+  var el = swiper.el;
5
+  el.style.cursor = 'move';
6
+  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
7
+  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
8
+  el.style.cursor = moving ? 'grabbing' : 'grab';
9
+}
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+export default function unsetGrabCursor() {
2
+  var swiper = this;
3
+
4
+  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
5
+    return;
6
+  }
7
+
8
+  swiper.el.style.cursor = '';
9
+}
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+import loadImage from './loadImage';
2
+import preloadImages from './preloadImages';
3
+export default {
4
+  loadImage: loadImage,
5
+  preloadImages: preloadImages
6
+};
0 7
\ No newline at end of file
1 8
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+import { getWindow } from 'ssr-window';
2
+import $ from '../../../utils/dom';
3
+export default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
4
+  var window = getWindow();
5
+  var image;
6
+
7
+  function onReady() {
8
+    if (callback) callback();
9
+  }
10
+
11
+  var isPicture = $(imageEl).parent('picture')[0];
12
+
13
+  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
14
+    if (src) {
15
+      image = new window.Image();
16
+      image.onload = onReady;
17
+      image.onerror = onReady;
18
+
19
+      if (sizes) {
20
+        image.sizes = sizes;
21
+      }
22
+
23
+      if (srcset) {
24
+        image.srcset = srcset;
25
+      }
26
+
27
+      if (src) {
28
+        image.src = src;
29
+      }
30
+    } else {
31
+      onReady();
32
+    }
33
+  } else {
34
+    // image already loaded...
35
+    onReady();
36
+  }
37
+}
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+export default function preloadImages() {
2
+  var swiper = this;
3
+  swiper.imagesToLoad = swiper.$el.find('img');
4
+
5
+  function onReady() {
6
+    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
7
+    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
8
+
9
+    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
10
+      if (swiper.params.updateOnImagesReady) swiper.update();
11
+      swiper.emit('imagesReady');
12
+    }
13
+  }
14
+
15
+  for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
16
+    var imageEl = swiper.imagesToLoad[i];
17
+    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
18
+  }
19
+}
0 20
\ No newline at end of file
1 21
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+import loopCreate from './loopCreate';
2
+import loopFix from './loopFix';
3
+import loopDestroy from './loopDestroy';
4
+export default {
5
+  loopCreate: loopCreate,
6
+  loopFix: loopFix,
7
+  loopDestroy: loopDestroy
8
+};
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,56 @@
1
+import { getDocument } from 'ssr-window';
2
+import $ from '../../../utils/dom';
3
+export default function loopCreate() {
4
+  var swiper = this;
5
+  var document = getDocument();
6
+  var params = swiper.params,
7
+      $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
8
+
9
+  $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
10
+  var slides = $wrapperEl.children("." + params.slideClass);
11
+
12
+  if (params.loopFillGroupWithBlank) {
13
+    var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
14
+
15
+    if (blankSlidesNum !== params.slidesPerGroup) {
16
+      for (var i = 0; i < blankSlidesNum; i += 1) {
17
+        var blankNode = $(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
18
+        $wrapperEl.append(blankNode);
19
+      }
20
+
21
+      slides = $wrapperEl.children("." + params.slideClass);
22
+    }
23
+  }
24
+
25
+  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
26
+  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
27
+  swiper.loopedSlides += params.loopAdditionalSlides;
28
+
29
+  if (swiper.loopedSlides > slides.length) {
30
+    swiper.loopedSlides = slides.length;
31
+  }
32
+
33
+  var prependSlides = [];
34
+  var appendSlides = [];
35
+  slides.each(function (el, index) {
36
+    var slide = $(el);
37
+
38
+    if (index < swiper.loopedSlides) {
39
+      appendSlides.push(el);
40
+    }
41
+
42
+    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
43
+      prependSlides.push(el);
44
+    }
45
+
46
+    slide.attr('data-swiper-slide-index', index);
47
+  });
48
+
49
+  for (var _i = 0; _i < appendSlides.length; _i += 1) {
50
+    $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
51
+  }
52
+
53
+  for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
54
+    $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
55
+  }
56
+}
0 57
\ No newline at end of file
1 58
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+export default function loopDestroy() {
2
+  var swiper = this;
3
+  var $wrapperEl = swiper.$wrapperEl,
4
+      params = swiper.params,
5
+      slides = swiper.slides;
6
+  $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
7
+  slides.removeAttr('data-swiper-slide-index');
8
+}
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+export default function loopFix() {
2
+  var swiper = this;
3
+  swiper.emit('beforeLoopFix');
4
+  var activeIndex = swiper.activeIndex,
5
+      slides = swiper.slides,
6
+      loopedSlides = swiper.loopedSlides,
7
+      allowSlidePrev = swiper.allowSlidePrev,
8
+      allowSlideNext = swiper.allowSlideNext,
9
+      snapGrid = swiper.snapGrid,
10
+      rtl = swiper.rtlTranslate;
11
+  var newIndex;
12
+  swiper.allowSlidePrev = true;
13
+  swiper.allowSlideNext = true;
14
+  var snapTranslate = -snapGrid[activeIndex];
15
+  var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
16
+
17
+  if (activeIndex < loopedSlides) {
18
+    newIndex = slides.length - loopedSlides * 3 + activeIndex;
19
+    newIndex += loopedSlides;
20
+    var slideChanged = swiper.slideTo(newIndex, 0, false, true);
21
+
22
+    if (slideChanged && diff !== 0) {
23
+      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
24
+    }
25
+  } else if (activeIndex >= slides.length - loopedSlides) {
26
+    // Fix For Positive Oversliding
27
+    newIndex = -slides.length + activeIndex + loopedSlides;
28
+    newIndex += loopedSlides;
29
+
30
+    var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
31
+
32
+    if (_slideChanged && diff !== 0) {
33
+      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
34
+    }
35
+  }
36
+
37
+  swiper.allowSlidePrev = allowSlidePrev;
38
+  swiper.allowSlideNext = allowSlideNext;
39
+  swiper.emit('loopFix');
40
+}
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,62 @@
1
+export default function addSlide(index, slides) {
2
+  var swiper = this;
3
+  var $wrapperEl = swiper.$wrapperEl,
4
+      params = swiper.params,
5
+      activeIndex = swiper.activeIndex;
6
+  var activeIndexBuffer = activeIndex;
7
+
8
+  if (params.loop) {
9
+    activeIndexBuffer -= swiper.loopedSlides;
10
+    swiper.loopDestroy();
11
+    swiper.slides = $wrapperEl.children("." + params.slideClass);
12
+  }
13
+
14
+  var baseLength = swiper.slides.length;
15
+
16
+  if (index <= 0) {
17
+    swiper.prependSlide(slides);
18
+    return;
19
+  }
20
+
21
+  if (index >= baseLength) {
22
+    swiper.appendSlide(slides);
23
+    return;
24
+  }
25
+
26
+  var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
27
+  var slidesBuffer = [];
28
+
29
+  for (var i = baseLength - 1; i >= index; i -= 1) {
30
+    var currentSlide = swiper.slides.eq(i);
31
+    currentSlide.remove();
32
+    slidesBuffer.unshift(currentSlide);
33
+  }
34
+
35
+  if (typeof slides === 'object' && 'length' in slides) {
36
+    for (var _i = 0; _i < slides.length; _i += 1) {
37
+      if (slides[_i]) $wrapperEl.append(slides[_i]);
38
+    }
39
+
40
+    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
41
+  } else {
42
+    $wrapperEl.append(slides);
43
+  }
44
+
45
+  for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
46
+    $wrapperEl.append(slidesBuffer[_i2]);
47
+  }
48
+
49
+  if (params.loop) {
50
+    swiper.loopCreate();
51
+  }
52
+
53
+  if (!(params.observer && swiper.support.observer)) {
54
+    swiper.update();
55
+  }
56
+
57
+  if (params.loop) {
58
+    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
59
+  } else {
60
+    swiper.slideTo(newActiveIndex, 0, false);
61
+  }
62
+}
0 63
\ No newline at end of file
1 64
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+export default function appendSlide(slides) {
2
+  var swiper = this;
3
+  var $wrapperEl = swiper.$wrapperEl,
4
+      params = swiper.params;
5
+
6
+  if (params.loop) {
7
+    swiper.loopDestroy();
8
+  }
9
+
10
+  if (typeof slides === 'object' && 'length' in slides) {
11
+    for (var i = 0; i < slides.length; i += 1) {
12
+      if (slides[i]) $wrapperEl.append(slides[i]);
13
+    }
14
+  } else {
15
+    $wrapperEl.append(slides);
16
+  }
17
+
18
+  if (params.loop) {
19
+    swiper.loopCreate();
20
+  }
21
+
22
+  if (!(params.observer && swiper.support.observer)) {
23
+    swiper.update();
24
+  }
25
+}
0 26
\ No newline at end of file
1 27
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+import appendSlide from './appendSlide';
2
+import prependSlide from './prependSlide';
3
+import addSlide from './addSlide';
4
+import removeSlide from './removeSlide';
5
+import removeAllSlides from './removeAllSlides';
6
+export default {
7
+  appendSlide: appendSlide,
8
+  prependSlide: prependSlide,
9
+  addSlide: addSlide,
10
+  removeSlide: removeSlide,
11
+  removeAllSlides: removeAllSlides
12
+};
0 13
\ No newline at end of file
1 14
new file mode 100644
... ...
@@ -0,0 +1,32 @@
1
+export default function prependSlide(slides) {
2
+  var swiper = this;
3
+  var params = swiper.params,
4
+      $wrapperEl = swiper.$wrapperEl,
5
+      activeIndex = swiper.activeIndex;
6
+
7
+  if (params.loop) {
8
+    swiper.loopDestroy();
9
+  }
10
+
11
+  var newActiveIndex = activeIndex + 1;
12
+
13
+  if (typeof slides === 'object' && 'length' in slides) {
14
+    for (var i = 0; i < slides.length; i += 1) {
15
+      if (slides[i]) $wrapperEl.prepend(slides[i]);
16
+    }
17
+
18
+    newActiveIndex = activeIndex + slides.length;
19
+  } else {
20
+    $wrapperEl.prepend(slides);
21
+  }
22
+
23
+  if (params.loop) {
24
+    swiper.loopCreate();
25
+  }
26
+
27
+  if (!(params.observer && swiper.support.observer)) {
28
+    swiper.update();
29
+  }
30
+
31
+  swiper.slideTo(newActiveIndex, 0, false);
32
+}
0 33
\ No newline at end of file
1 34
new file mode 100644
... ...
@@ -0,0 +1,10 @@
1
+export default function removeAllSlides() {
2
+  var swiper = this;
3
+  var slidesIndexes = [];
4
+
5
+  for (var i = 0; i < swiper.slides.length; i += 1) {
6
+    slidesIndexes.push(i);
7
+  }
8
+
9
+  swiper.removeSlide(slidesIndexes);
10
+}
0 11
\ No newline at end of file
1 12
new file mode 100644
... ...
@@ -0,0 +1,45 @@
1
+export default function removeSlide(slidesIndexes) {
2
+  var swiper = this;
3
+  var params = swiper.params,
4
+      $wrapperEl = swiper.$wrapperEl,
5
+      activeIndex = swiper.activeIndex;
6
+  var activeIndexBuffer = activeIndex;
7
+
8
+  if (params.loop) {
9
+    activeIndexBuffer -= swiper.loopedSlides;
10
+    swiper.loopDestroy();
11
+    swiper.slides = $wrapperEl.children("." + params.slideClass);
12
+  }
13
+
14
+  var newActiveIndex = activeIndexBuffer;
15
+  var indexToRemove;
16
+
17
+  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
18
+    for (var i = 0; i < slidesIndexes.length; i += 1) {
19
+      indexToRemove = slidesIndexes[i];
20
+      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
21
+      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
22
+    }
23
+
24
+    newActiveIndex = Math.max(newActiveIndex, 0);
25
+  } else {
26
+    indexToRemove = slidesIndexes;
27
+    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
28
+    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
29
+    newActiveIndex = Math.max(newActiveIndex, 0);
30
+  }
31
+
32
+  if (params.loop) {
33
+    swiper.loopCreate();
34
+  }
35
+
36
+  if (!(params.observer && swiper.support.observer)) {
37
+    swiper.update();
38
+  }
39
+
40
+  if (params.loop) {
41
+    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
42
+  } else {
43
+    swiper.slideTo(newActiveIndex, 0, false);
44
+  }
45
+}
0 46
\ No newline at end of file
1 47
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+import { extend } from '../../utils/utils';
2
+export default {
3
+  useParams: function useParams(instanceParams) {
4
+    var instance = this;
5
+    if (!instance.modules) return;
6
+    Object.keys(instance.modules).forEach(function (moduleName) {
7
+      var module = instance.modules[moduleName]; // Extend params
8
+
9
+      if (module.params) {
10
+        extend(instanceParams, module.params);
11
+      }
12
+    });
13
+  },
14
+  useModules: function useModules(modulesParams) {
15
+    if (modulesParams === void 0) {
16
+      modulesParams = {};
17
+    }
18
+
19
+    var instance = this;
20
+    if (!instance.modules) return;
21
+    Object.keys(instance.modules).forEach(function (moduleName) {
22
+      var module = instance.modules[moduleName];
23
+      var moduleParams = modulesParams[moduleName] || {}; // Add event listeners
24
+
25
+      if (module.on && instance.on) {
26
+        Object.keys(module.on).forEach(function (moduleEventName) {
27
+          instance.on(moduleEventName, module.on[moduleEventName]);
28
+        });
29
+      } // Module create callback
30
+
31
+
32
+      if (module.create) {
33
+        module.create.bind(instance)(moduleParams);
34
+      }
35
+    });
36
+  }
37
+};
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+import slideTo from './slideTo';
2
+import slideToLoop from './slideToLoop';
3
+import slideNext from './slideNext';
4
+import slidePrev from './slidePrev';
5
+import slideReset from './slideReset';
6
+import slideToClosest from './slideToClosest';
7
+import slideToClickedSlide from './slideToClickedSlide';
8
+export default {
9
+  slideTo: slideTo,
10
+  slideToLoop: slideToLoop,
11
+  slideNext: slideNext,
12
+  slidePrev: slidePrev,
13
+  slideReset: slideReset,
14
+  slideToClosest: slideToClosest,
15
+  slideToClickedSlide: slideToClickedSlide
16
+};
0 17
\ No newline at end of file
1 18
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+/* eslint no-unused-vars: "off" */
2
+export default function slideNext(speed, runCallbacks, internal) {
3
+  if (speed === void 0) {
4
+    speed = this.params.speed;
5
+  }
6
+
7
+  if (runCallbacks === void 0) {
8
+    runCallbacks = true;
9
+  }
10
+
11
+  var swiper = this;
12
+  var params = swiper.params,
13
+      animating = swiper.animating;
14
+  var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
15
+
16
+  if (params.loop) {
17
+    if (animating && params.loopPreventsSlide) return false;
18
+    swiper.loopFix(); // eslint-disable-next-line
19
+
20
+    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
21
+  }
22
+
23
+  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
24
+}
0 25
\ No newline at end of file
1 26
new file mode 100644
... ...
@@ -0,0 +1,53 @@
1
+/* eslint no-unused-vars: "off" */
2
+export default function slidePrev(speed, runCallbacks, internal) {
3
+  if (speed === void 0) {
4
+    speed = this.params.speed;
5
+  }
6
+
7
+  if (runCallbacks === void 0) {
8
+    runCallbacks = true;
9
+  }
10
+
11
+  var swiper = this;
12
+  var params = swiper.params,
13
+      animating = swiper.animating,
14
+      snapGrid = swiper.snapGrid,
15
+      slidesGrid = swiper.slidesGrid,
16
+      rtlTranslate = swiper.rtlTranslate;
17
+
18
+  if (params.loop) {
19
+    if (animating && params.loopPreventsSlide) return false;
20
+    swiper.loopFix(); // eslint-disable-next-line
21
+
22
+    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
23
+  }
24
+
25
+  var translate = rtlTranslate ? swiper.translate : -swiper.translate;
26
+
27
+  function normalize(val) {
28
+    if (val < 0) return -Math.floor(Math.abs(val));
29
+    return Math.floor(val);
30
+  }
31
+
32
+  var normalizedTranslate = normalize(translate);
33
+  var normalizedSnapGrid = snapGrid.map(function (val) {
34
+    return normalize(val);
35
+  });
36
+  var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
37
+  var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
38
+
39
+  if (typeof prevSnap === 'undefined' && params.cssMode) {
40
+    snapGrid.forEach(function (snap) {
41
+      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
42
+    });
43
+  }
44
+
45
+  var prevIndex;
46
+
47
+  if (typeof prevSnap !== 'undefined') {
48
+    prevIndex = slidesGrid.indexOf(prevSnap);
49
+    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
50
+  }
51
+
52
+  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
53
+}
0 54
\ No newline at end of file
1 55
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+/* eslint no-unused-vars: "off" */
2
+export default function slideReset(speed, runCallbacks, internal) {
3
+  if (speed === void 0) {
4
+    speed = this.params.speed;
5
+  }
6
+
7
+  if (runCallbacks === void 0) {
8
+    runCallbacks = true;
9
+  }
10
+
11
+  var swiper = this;
12
+  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
13
+}
0 14
\ No newline at end of file
1 15
new file mode 100644
... ...
@@ -0,0 +1,145 @@
1
+export default function slideTo(index, speed, runCallbacks, internal) {
2
+  if (index === void 0) {
3
+    index = 0;
4
+  }
5
+
6
+  if (speed === void 0) {
7
+    speed = this.params.speed;
8
+  }
9
+
10
+  if (runCallbacks === void 0) {
11
+    runCallbacks = true;
12
+  }
13
+
14
+  var swiper = this;
15
+  var slideIndex = index;
16
+  if (slideIndex < 0) slideIndex = 0;
17
+  var params = swiper.params,
18
+      snapGrid = swiper.snapGrid,
19
+      slidesGrid = swiper.slidesGrid,
20
+      previousIndex = swiper.previousIndex,
21
+      activeIndex = swiper.activeIndex,
22
+      rtl = swiper.rtlTranslate,
23
+      wrapperEl = swiper.wrapperEl;
24
+
25
+  if (swiper.animating && params.preventInteractionOnTransition) {
26
+    return false;
27
+  }
28
+
29
+  var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
30
+  var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
31
+  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
32
+
33
+  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
34
+    swiper.emit('beforeSlideChangeStart');
35
+  }
36
+
37
+  var translate = -snapGrid[snapIndex]; // Update progress
38
+
39
+  swiper.updateProgress(translate); // Normalize slideIndex
40
+
41
+  if (params.normalizeSlideIndex) {
42
+    for (var i = 0; i < slidesGrid.length; i += 1) {
43
+      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
44
+        slideIndex = i;
45
+      }
46
+    }
47
+  } // Directions locks
48
+
49
+
50
+  if (swiper.initialized && slideIndex !== activeIndex) {
51
+    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
52
+      return false;
53
+    }
54
+
55
+    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
56
+      if ((activeIndex || 0) !== slideIndex) return false;
57
+    }
58
+  }
59
+
60
+  var direction;
61
+  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
62
+
63
+  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
64
+    swiper.updateActiveIndex(slideIndex); // Update Height
65
+
66
+    if (params.autoHeight) {
67
+      swiper.updateAutoHeight();
68
+    }
69
+
70
+    swiper.updateSlidesClasses();
71
+
72
+    if (params.effect !== 'slide') {
73
+      swiper.setTranslate(translate);
74
+    }
75
+
76
+    if (direction !== 'reset') {
77
+      swiper.transitionStart(runCallbacks, direction);
78
+      swiper.transitionEnd(runCallbacks, direction);
79
+    }
80
+
81
+    return false;
82
+  }
83
+
84
+  if (params.cssMode) {
85
+    var isH = swiper.isHorizontal();
86
+    var t = -translate;
87
+
88
+    if (rtl) {
89
+      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
90
+    }
91
+
92
+    if (speed === 0) {
93
+      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
94
+    } else {
95
+      // eslint-disable-next-line
96
+      if (wrapperEl.scrollTo) {
97
+        var _wrapperEl$scrollTo;
98
+
99
+        wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
100
+      } else {
101
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
102
+      }
103
+    }
104
+
105
+    return true;
106
+  }
107
+
108
+  if (speed === 0) {
109
+    swiper.setTransition(0);
110
+    swiper.setTranslate(translate);
111
+    swiper.updateActiveIndex(slideIndex);
112
+    swiper.updateSlidesClasses();
113
+    swiper.emit('beforeTransitionStart', speed, internal);
114
+    swiper.transitionStart(runCallbacks, direction);
115
+    swiper.transitionEnd(runCallbacks, direction);
116
+  } else {
117
+    swiper.setTransition(speed);
118
+    swiper.setTranslate(translate);
119
+    swiper.updateActiveIndex(slideIndex);
120
+    swiper.updateSlidesClasses();
121
+    swiper.emit('beforeTransitionStart', speed, internal);
122
+    swiper.transitionStart(runCallbacks, direction);
123
+
124
+    if (!swiper.animating) {
125
+      swiper.animating = true;
126
+
127
+      if (!swiper.onSlideToWrapperTransitionEnd) {
128
+        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
129
+          if (!swiper || swiper.destroyed) return;
130
+          if (e.target !== this) return;
131
+          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
132
+          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
133
+          swiper.onSlideToWrapperTransitionEnd = null;
134
+          delete swiper.onSlideToWrapperTransitionEnd;
135
+          swiper.transitionEnd(runCallbacks, direction);
136
+        };
137
+      }
138
+
139
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
140
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
141
+    }
142
+  }
143
+
144
+  return true;
145
+}
0 146
\ No newline at end of file
1 147
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+import $ from '../../../utils/dom';
2
+import { nextTick } from '../../../utils/utils';
3
+export default function slideToClickedSlide() {
4
+  var swiper = this;
5
+  var params = swiper.params,
6
+      $wrapperEl = swiper.$wrapperEl;
7
+  var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
8
+  var slideToIndex = swiper.clickedIndex;
9
+  var realIndex;
10
+
11
+  if (params.loop) {
12
+    if (swiper.animating) return;
13
+    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
14
+
15
+    if (params.centeredSlides) {
16
+      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
17
+        swiper.loopFix();
18
+        slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
19
+        nextTick(function () {
20
+          swiper.slideTo(slideToIndex);
21
+        });
22
+      } else {
23
+        swiper.slideTo(slideToIndex);
24
+      }
25
+    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
26
+      swiper.loopFix();
27
+      slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
28
+      nextTick(function () {
29
+        swiper.slideTo(slideToIndex);
30
+      });
31
+    } else {
32
+      swiper.slideTo(slideToIndex);
33
+    }
34
+  } else {
35
+    swiper.slideTo(slideToIndex);
36
+  }
37
+}
0 38
\ No newline at end of file
1 39
new file mode 100644
... ...
@@ -0,0 +1,44 @@
1
+/* eslint no-unused-vars: "off" */
2
+export default function slideToClosest(speed, runCallbacks, internal, threshold) {
3
+  if (speed === void 0) {
4
+    speed = this.params.speed;
5
+  }
6
+
7
+  if (runCallbacks === void 0) {
8
+    runCallbacks = true;
9
+  }
10
+
11
+  if (threshold === void 0) {
12
+    threshold = 0.5;
13
+  }
14
+
15
+  var swiper = this;
16
+  var index = swiper.activeIndex;
17
+  var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
18
+  var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
19
+  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
20
+
21
+  if (translate >= swiper.snapGrid[snapIndex]) {
22
+    // The current translate is on or after the current snap index, so the choice
23
+    // is between the current index and the one after it.
24
+    var currentSnap = swiper.snapGrid[snapIndex];
25
+    var nextSnap = swiper.snapGrid[snapIndex + 1];
26
+
27
+    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
28
+      index += swiper.params.slidesPerGroup;
29
+    }
30
+  } else {
31
+    // The current translate is before the current snap index, so the choice
32
+    // is between the current index and the one before it.
33
+    var prevSnap = swiper.snapGrid[snapIndex - 1];
34
+    var _currentSnap = swiper.snapGrid[snapIndex];
35
+
36
+    if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
37
+      index -= swiper.params.slidesPerGroup;
38
+    }
39
+  }
40
+
41
+  index = Math.max(index, 0);
42
+  index = Math.min(index, swiper.slidesGrid.length - 1);
43
+  return swiper.slideTo(index, speed, runCallbacks, internal);
44
+}
0 45
\ No newline at end of file
1 46
new file mode 100644
... ...
@@ -0,0 +1,22 @@
1
+export default function slideToLoop(index, speed, runCallbacks, internal) {
2
+  if (index === void 0) {
3
+    index = 0;
4
+  }
5
+
6
+  if (speed === void 0) {
7
+    speed = this.params.speed;
8
+  }
9
+
10
+  if (runCallbacks === void 0) {
11
+    runCallbacks = true;
12
+  }
13
+
14
+  var swiper = this;
15
+  var newIndex = index;
16
+
17
+  if (swiper.params.loop) {
18
+    newIndex += swiper.loopedSlides;
19
+  }
20
+
21
+  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
22
+}
0 23
\ No newline at end of file
1 24
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+import setTransition from './setTransition';
2
+import transitionStart from './transitionStart';
3
+import transitionEnd from './transitionEnd';
4
+export default {
5
+  setTransition: setTransition,
6
+  transitionStart: transitionStart,
7
+  transitionEnd: transitionEnd
8
+};
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+export default function setTransition(duration, byController) {
2
+  var swiper = this;
3
+
4
+  if (!swiper.params.cssMode) {
5
+    swiper.$wrapperEl.transition(duration);
6
+  }
7
+
8
+  swiper.emit('setTransition', duration, byController);
9
+}
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,35 @@
1
+export default function transitionEnd(runCallbacks, direction) {
2
+  if (runCallbacks === void 0) {
3
+    runCallbacks = true;
4
+  }
5
+
6
+  var swiper = this;
7
+  var activeIndex = swiper.activeIndex,
8
+      previousIndex = swiper.previousIndex,
9
+      params = swiper.params;
10
+  swiper.animating = false;
11
+  if (params.cssMode) return;
12
+  swiper.setTransition(0);
13
+  var dir = direction;
14
+
15
+  if (!dir) {
16
+    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
17
+  }
18
+
19
+  swiper.emit('transitionEnd');
20
+
21
+  if (runCallbacks && activeIndex !== previousIndex) {
22
+    if (dir === 'reset') {
23
+      swiper.emit('slideResetTransitionEnd');
24
+      return;
25
+    }
26
+
27
+    swiper.emit('slideChangeTransitionEnd');
28
+
29
+    if (dir === 'next') {
30
+      swiper.emit('slideNextTransitionEnd');
31
+    } else {
32
+      swiper.emit('slidePrevTransitionEnd');
33
+    }
34
+  }
35
+}
0 36
\ No newline at end of file
1 37
new file mode 100644
... ...
@@ -0,0 +1,38 @@
1
+export default function transitionStart(runCallbacks, direction) {
2
+  if (runCallbacks === void 0) {
3
+    runCallbacks = true;
4
+  }
5
+
6
+  var swiper = this;
7
+  var activeIndex = swiper.activeIndex,
8
+      params = swiper.params,
9
+      previousIndex = swiper.previousIndex;
10
+  if (params.cssMode) return;
11
+
12
+  if (params.autoHeight) {
13
+    swiper.updateAutoHeight();
14
+  }
15
+
16
+  var dir = direction;
17
+
18
+  if (!dir) {
19
+    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
20
+  }
21
+
22
+  swiper.emit('transitionStart');
23
+
24
+  if (runCallbacks && activeIndex !== previousIndex) {
25
+    if (dir === 'reset') {
26
+      swiper.emit('slideResetTransitionStart');
27
+      return;
28
+    }
29
+
30
+    swiper.emit('slideChangeTransitionStart');
31
+
32
+    if (dir === 'next') {
33
+      swiper.emit('slideNextTransitionStart');
34
+    } else {
35
+      swiper.emit('slidePrevTransitionStart');
36
+    }
37
+  }
38
+}
0 39
\ No newline at end of file
1 40
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+import { getTranslate } from '../../../utils/utils';
2
+export default function getSwiperTranslate(axis) {
3
+  if (axis === void 0) {
4
+    axis = this.isHorizontal() ? 'x' : 'y';
5
+  }
6
+
7
+  var swiper = this;
8
+  var params = swiper.params,
9
+      rtl = swiper.rtlTranslate,
10
+      translate = swiper.translate,
11
+      $wrapperEl = swiper.$wrapperEl;
12
+
13
+  if (params.virtualTranslate) {
14
+    return rtl ? -translate : translate;
15
+  }
16
+
17
+  if (params.cssMode) {
18
+    return translate;
19
+  }
20
+
21
+  var currentTranslate = getTranslate($wrapperEl[0], axis);
22
+  if (rtl) currentTranslate = -currentTranslate;
23
+  return currentTranslate || 0;
24
+}
0 25
\ No newline at end of file
1 26
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+import getTranslate from './getTranslate';
2
+import setTranslate from './setTranslate';
3
+import minTranslate from './minTranslate';
4
+import maxTranslate from './maxTranslate';
5
+import translateTo from './translateTo';
6
+export default {
7
+  getTranslate: getTranslate,
8
+  setTranslate: setTranslate,
9
+  minTranslate: minTranslate,
10
+  maxTranslate: maxTranslate,
11
+  translateTo: translateTo
12
+};
0 13
\ No newline at end of file
1 14
new file mode 100644
... ...
@@ -0,0 +1,3 @@
1
+export default function maxTranslate() {
2
+  return -this.snapGrid[this.snapGrid.length - 1];
3
+}
0 4
\ No newline at end of file
1 5
new file mode 100644
... ...
@@ -0,0 +1,3 @@
1
+export default function minTranslate() {
2
+  return -this.snapGrid[0];
3
+}
0 4
\ No newline at end of file
1 5
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+export default function setTranslate(translate, byController) {
2
+  var swiper = this;
3
+  var rtl = swiper.rtlTranslate,
4
+      params = swiper.params,
5
+      $wrapperEl = swiper.$wrapperEl,
6
+      wrapperEl = swiper.wrapperEl,
7
+      progress = swiper.progress;
8
+  var x = 0;
9
+  var y = 0;
10
+  var z = 0;
11
+
12
+  if (swiper.isHorizontal()) {
13
+    x = rtl ? -translate : translate;
14
+  } else {
15
+    y = translate;
16
+  }
17
+
18
+  if (params.roundLengths) {
19
+    x = Math.floor(x);
20
+    y = Math.floor(y);
21
+  }
22
+
23
+  if (params.cssMode) {
24
+    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
25
+  } else if (!params.virtualTranslate) {
26
+    $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
27
+  }
28
+
29
+  swiper.previousTranslate = swiper.translate;
30
+  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
31
+
32
+  var newProgress;
33
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
34
+
35
+  if (translatesDiff === 0) {
36
+    newProgress = 0;
37
+  } else {
38
+    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
39
+  }
40
+
41
+  if (newProgress !== progress) {
42
+    swiper.updateProgress(translate);
43
+  }
44
+
45
+  swiper.emit('setTranslate', swiper.translate, byController);
46
+}
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
2
+  if (translate === void 0) {
3
+    translate = 0;
4
+  }
5
+
6
+  if (speed === void 0) {
7
+    speed = this.params.speed;
8
+  }
9
+
10
+  if (runCallbacks === void 0) {
11
+    runCallbacks = true;
12
+  }
13
+
14
+  if (translateBounds === void 0) {
15
+    translateBounds = true;
16
+  }
17
+
18
+  var swiper = this;
19
+  var params = swiper.params,
20
+      wrapperEl = swiper.wrapperEl;
21
+
22
+  if (swiper.animating && params.preventInteractionOnTransition) {
23
+    return false;
24
+  }
25
+
26
+  var minTranslate = swiper.minTranslate();
27
+  var maxTranslate = swiper.maxTranslate();
28
+  var newTranslate;
29
+  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
30
+
31
+  swiper.updateProgress(newTranslate);
32
+
33
+  if (params.cssMode) {
34
+    var isH = swiper.isHorizontal();
35
+
36
+    if (speed === 0) {
37
+      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
38
+    } else {
39
+      // eslint-disable-next-line
40
+      if (wrapperEl.scrollTo) {
41
+        var _wrapperEl$scrollTo;
42
+
43
+        wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
44
+      } else {
45
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
46
+      }
47
+    }
48
+
49
+    return true;
50
+  }
51
+
52
+  if (speed === 0) {
53
+    swiper.setTransition(0);
54
+    swiper.setTranslate(newTranslate);
55
+
56
+    if (runCallbacks) {
57
+      swiper.emit('beforeTransitionStart', speed, internal);
58
+      swiper.emit('transitionEnd');
59
+    }
60
+  } else {
61
+    swiper.setTransition(speed);
62
+    swiper.setTranslate(newTranslate);
63
+
64
+    if (runCallbacks) {
65
+      swiper.emit('beforeTransitionStart', speed, internal);
66
+      swiper.emit('transitionStart');
67
+    }
68
+
69
+    if (!swiper.animating) {
70
+      swiper.animating = true;
71
+
72
+      if (!swiper.onTranslateToWrapperTransitionEnd) {
73
+        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
74
+          if (!swiper || swiper.destroyed) return;
75
+          if (e.target !== this) return;
76
+          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
77
+          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
78
+          swiper.onTranslateToWrapperTransitionEnd = null;
79
+          delete swiper.onTranslateToWrapperTransitionEnd;
80
+
81
+          if (runCallbacks) {
82
+            swiper.emit('transitionEnd');
83
+          }
84
+        };
85
+      }
86
+
87
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
88
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
89
+    }
90
+  }
91
+
92
+  return true;
93
+}
0 94
\ No newline at end of file
1 95
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+import updateSize from './updateSize';
2
+import updateSlides from './updateSlides';
3
+import updateAutoHeight from './updateAutoHeight';
4
+import updateSlidesOffset from './updateSlidesOffset';
5
+import updateSlidesProgress from './updateSlidesProgress';
6
+import updateProgress from './updateProgress';
7
+import updateSlidesClasses from './updateSlidesClasses';
8
+import updateActiveIndex from './updateActiveIndex';
9
+import updateClickedSlide from './updateClickedSlide';
10
+export default {
11
+  updateSize: updateSize,
12
+  updateSlides: updateSlides,
13
+  updateAutoHeight: updateAutoHeight,
14
+  updateSlidesOffset: updateSlidesOffset,
15
+  updateSlidesProgress: updateSlidesProgress,
16
+  updateProgress: updateProgress,
17
+  updateSlidesClasses: updateSlidesClasses,
18
+  updateActiveIndex: updateActiveIndex,
19
+  updateClickedSlide: updateClickedSlide
20
+};
0 21
\ No newline at end of file
1 22
new file mode 100644
... ...
@@ -0,0 +1,69 @@
1
+import { extend } from '../../../utils/utils';
2
+export default function updateActiveIndex(newActiveIndex) {
3
+  var swiper = this;
4
+  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5
+  var slidesGrid = swiper.slidesGrid,
6
+      snapGrid = swiper.snapGrid,
7
+      params = swiper.params,
8
+      previousIndex = swiper.activeIndex,
9
+      previousRealIndex = swiper.realIndex,
10
+      previousSnapIndex = swiper.snapIndex;
11
+  var activeIndex = newActiveIndex;
12
+  var snapIndex;
13
+
14
+  if (typeof activeIndex === 'undefined') {
15
+    for (var i = 0; i < slidesGrid.length; i += 1) {
16
+      if (typeof slidesGrid[i + 1] !== 'undefined') {
17
+        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
18
+          activeIndex = i;
19
+        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
20
+          activeIndex = i + 1;
21
+        }
22
+      } else if (translate >= slidesGrid[i]) {
23
+        activeIndex = i;
24
+      }
25
+    } // Normalize slideIndex
26
+
27
+
28
+    if (params.normalizeSlideIndex) {
29
+      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
30
+    }
31
+  }
32
+
33
+  if (snapGrid.indexOf(translate) >= 0) {
34
+    snapIndex = snapGrid.indexOf(translate);
35
+  } else {
36
+    var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
37
+    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
38
+  }
39
+
40
+  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
41
+
42
+  if (activeIndex === previousIndex) {
43
+    if (snapIndex !== previousSnapIndex) {
44
+      swiper.snapIndex = snapIndex;
45
+      swiper.emit('snapIndexChange');
46
+    }
47
+
48
+    return;
49
+  } // Get real index
50
+
51
+
52
+  var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
53
+  extend(swiper, {
54
+    snapIndex: snapIndex,
55
+    realIndex: realIndex,
56
+    previousIndex: previousIndex,
57
+    activeIndex: activeIndex
58
+  });
59
+  swiper.emit('activeIndexChange');
60
+  swiper.emit('snapIndexChange');
61
+
62
+  if (previousRealIndex !== realIndex) {
63
+    swiper.emit('realIndexChange');
64
+  }
65
+
66
+  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
67
+    swiper.emit('slideChange');
68
+  }
69
+}
0 70
\ No newline at end of file
1 71
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+export default function updateAutoHeight(speed) {
2
+  var swiper = this;
3
+  var activeSlides = [];
4
+  var newHeight = 0;
5
+  var i;
6
+
7
+  if (typeof speed === 'number') {
8
+    swiper.setTransition(speed);
9
+  } else if (speed === true) {
10
+    swiper.setTransition(swiper.params.speed);
11
+  } // Find slides currently in view
12
+
13
+
14
+  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
15
+    if (swiper.params.centeredSlides) {
16
+      swiper.visibleSlides.each(function (slide) {
17
+        activeSlides.push(slide);
18
+      });
19
+    } else {
20
+      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
21
+        var index = swiper.activeIndex + i;
22
+        if (index > swiper.slides.length) break;
23
+        activeSlides.push(swiper.slides.eq(index)[0]);
24
+      }
25
+    }
26
+  } else {
27
+    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
28
+  } // Find new height from highest slide in view
29
+
30
+
31
+  for (i = 0; i < activeSlides.length; i += 1) {
32
+    if (typeof activeSlides[i] !== 'undefined') {
33
+      var height = activeSlides[i].offsetHeight;
34
+      newHeight = height > newHeight ? height : newHeight;
35
+    }
36
+  } // Update Height
37
+
38
+
39
+  if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
40
+}
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,31 @@
1
+import $ from '../../../utils/dom';
2
+export default function updateClickedSlide(e) {
3
+  var swiper = this;
4
+  var params = swiper.params;
5
+  var slide = $(e.target).closest("." + params.slideClass)[0];
6
+  var slideFound = false;
7
+
8
+  if (slide) {
9
+    for (var i = 0; i < swiper.slides.length; i += 1) {
10
+      if (swiper.slides[i] === slide) slideFound = true;
11
+    }
12
+  }
13
+
14
+  if (slide && slideFound) {
15
+    swiper.clickedSlide = slide;
16
+
17
+    if (swiper.virtual && swiper.params.virtual.enabled) {
18
+      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
19
+    } else {
20
+      swiper.clickedIndex = $(slide).index();
21
+    }
22
+  } else {
23
+    swiper.clickedSlide = undefined;
24
+    swiper.clickedIndex = undefined;
25
+    return;
26
+  }
27
+
28
+  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
29
+    swiper.slideToClickedSlide();
30
+  }
31
+}
0 32
\ No newline at end of file
1 33
new file mode 100644
... ...
@@ -0,0 +1,49 @@
1
+import { extend } from '../../../utils/utils';
2
+export default function updateProgress(translate) {
3
+  var swiper = this;
4
+
5
+  if (typeof translate === 'undefined') {
6
+    var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
7
+
8
+    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
9
+  }
10
+
11
+  var params = swiper.params;
12
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
13
+  var progress = swiper.progress,
14
+      isBeginning = swiper.isBeginning,
15
+      isEnd = swiper.isEnd;
16
+  var wasBeginning = isBeginning;
17
+  var wasEnd = isEnd;
18
+
19
+  if (translatesDiff === 0) {
20
+    progress = 0;
21
+    isBeginning = true;
22
+    isEnd = true;
23
+  } else {
24
+    progress = (translate - swiper.minTranslate()) / translatesDiff;
25
+    isBeginning = progress <= 0;
26
+    isEnd = progress >= 1;
27
+  }
28
+
29
+  extend(swiper, {
30
+    progress: progress,
31
+    isBeginning: isBeginning,
32
+    isEnd: isEnd
33
+  });
34
+  if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
35
+
36
+  if (isBeginning && !wasBeginning) {
37
+    swiper.emit('reachBeginning toEdge');
38
+  }
39
+
40
+  if (isEnd && !wasEnd) {
41
+    swiper.emit('reachEnd toEdge');
42
+  }
43
+
44
+  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
45
+    swiper.emit('fromEdge');
46
+  }
47
+
48
+  swiper.emit('progress', progress);
49
+}
0 50
\ No newline at end of file
1 51
new file mode 100644
... ...
@@ -0,0 +1,34 @@
1
+import { extend } from '../../../utils/utils';
2
+export default function updateSize() {
3
+  var swiper = this;
4
+  var width;
5
+  var height;
6
+  var $el = swiper.$el;
7
+
8
+  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
9
+    width = swiper.params.width;
10
+  } else {
11
+    width = $el[0].clientWidth;
12
+  }
13
+
14
+  if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {
15
+    height = swiper.params.height;
16
+  } else {
17
+    height = $el[0].clientHeight;
18
+  }
19
+
20
+  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
21
+    return;
22
+  } // Subtract paddings
23
+
24
+
25
+  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
26
+  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
27
+  if (Number.isNaN(width)) width = 0;
28
+  if (Number.isNaN(height)) height = 0;
29
+  extend(swiper, {
30
+    width: width,
31
+    height: height,
32
+    size: swiper.isHorizontal() ? width : height
33
+  });
34
+}
0 35
\ No newline at end of file
1 36
new file mode 100644
... ...
@@ -0,0 +1,360 @@
1
+import { getWindow } from 'ssr-window';
2
+import { extend } from '../../../utils/utils';
3
+export default function updateSlides() {
4
+  var swiper = this;
5
+  var window = getWindow();
6
+  var params = swiper.params;
7
+  var $wrapperEl = swiper.$wrapperEl,
8
+      swiperSize = swiper.size,
9
+      rtl = swiper.rtlTranslate,
10
+      wrongRTL = swiper.wrongRTL;
11
+  var isVirtual = swiper.virtual && params.virtual.enabled;
12
+  var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
13
+  var slides = $wrapperEl.children("." + swiper.params.slideClass);
14
+  var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
15
+  var snapGrid = [];
16
+  var slidesGrid = [];
17
+  var slidesSizesGrid = [];
18
+
19
+  function slidesForMargin(slideEl, slideIndex) {
20
+    if (!params.cssMode) return true;
21
+
22
+    if (slideIndex === slides.length - 1) {
23
+      return false;
24
+    }
25
+
26
+    return true;
27
+  }
28
+
29
+  var offsetBefore = params.slidesOffsetBefore;
30
+
31
+  if (typeof offsetBefore === 'function') {
32
+    offsetBefore = params.slidesOffsetBefore.call(swiper);
33
+  }
34
+
35
+  var offsetAfter = params.slidesOffsetAfter;
36
+
37
+  if (typeof offsetAfter === 'function') {
38
+    offsetAfter = params.slidesOffsetAfter.call(swiper);
39
+  }
40
+
41
+  var previousSnapGridLength = swiper.snapGrid.length;
42
+  var previousSlidesGridLength = swiper.snapGrid.length;
43
+  var spaceBetween = params.spaceBetween;
44
+  var slidePosition = -offsetBefore;
45
+  var prevSlideSize = 0;
46
+  var index = 0;
47
+
48
+  if (typeof swiperSize === 'undefined') {
49
+    return;
50
+  }
51
+
52
+  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
53
+    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
54
+  }
55
+
56
+  swiper.virtualSize = -spaceBetween; // reset margins
57
+
58
+  if (rtl) slides.css({
59
+    marginLeft: '',
60
+    marginTop: ''
61
+  });else slides.css({
62
+    marginRight: '',
63
+    marginBottom: ''
64
+  });
65
+  var slidesNumberEvenToRows;
66
+
67
+  if (params.slidesPerColumn > 1) {
68
+    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
69
+      slidesNumberEvenToRows = slidesLength;
70
+    } else {
71
+      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
72
+    }
73
+
74
+    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
75
+      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
76
+    }
77
+  } // Calc slides
78
+
79
+
80
+  var slideSize;
81
+  var slidesPerColumn = params.slidesPerColumn;
82
+  var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
83
+  var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
84
+
85
+  for (var i = 0; i < slidesLength; i += 1) {
86
+    slideSize = 0;
87
+    var slide = slides.eq(i);
88
+
89
+    if (params.slidesPerColumn > 1) {
90
+      // Set slides order
91
+      var newSlideOrderIndex = void 0;
92
+      var column = void 0;
93
+      var row = void 0;
94
+
95
+      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
96
+        var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
97
+        var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
98
+        var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
99
+        row = Math.floor(slideIndexInGroup / columnsInGroup);
100
+        column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
101
+        newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
102
+        slide.css({
103
+          '-webkit-box-ordinal-group': newSlideOrderIndex,
104
+          '-moz-box-ordinal-group': newSlideOrderIndex,
105
+          '-ms-flex-order': newSlideOrderIndex,
106
+          '-webkit-order': newSlideOrderIndex,
107
+          order: newSlideOrderIndex
108
+        });
109
+      } else if (params.slidesPerColumnFill === 'column') {
110
+        column = Math.floor(i / slidesPerColumn);
111
+        row = i - column * slidesPerColumn;
112
+
113
+        if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
114
+          row += 1;
115
+
116
+          if (row >= slidesPerColumn) {
117
+            row = 0;
118
+            column += 1;
119
+          }
120
+        }
121
+      } else {
122
+        row = Math.floor(i / slidesPerRow);
123
+        column = i - row * slidesPerRow;
124
+      }
125
+
126
+      slide.css("margin-" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
127
+    }
128
+
129
+    if (slide.css('display') === 'none') continue; // eslint-disable-line
130
+
131
+    if (params.slidesPerView === 'auto') {
132
+      var slideStyles = window.getComputedStyle(slide[0], null);
133
+      var currentTransform = slide[0].style.transform;
134
+      var currentWebKitTransform = slide[0].style.webkitTransform;
135
+
136
+      if (currentTransform) {
137
+        slide[0].style.transform = 'none';
138
+      }
139
+
140
+      if (currentWebKitTransform) {
141
+        slide[0].style.webkitTransform = 'none';
142
+      }
143
+
144
+      if (params.roundLengths) {
145
+        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
146
+      } else {
147
+        // eslint-disable-next-line
148
+        if (swiper.isHorizontal()) {
149
+          var width = parseFloat(slideStyles.getPropertyValue('width') || 0);
150
+          var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);
151
+          var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);
152
+          var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);
153
+          var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);
154
+          var boxSizing = slideStyles.getPropertyValue('box-sizing');
155
+
156
+          if (boxSizing && boxSizing === 'border-box') {
157
+            slideSize = width + marginLeft + marginRight;
158
+          } else {
159
+            var _slide$ = slide[0],
160
+                clientWidth = _slide$.clientWidth,
161
+                offsetWidth = _slide$.offsetWidth;
162
+            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
163
+          }
164
+        } else {
165
+          var height = parseFloat(slideStyles.getPropertyValue('height') || 0);
166
+          var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);
167
+          var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);
168
+          var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);
169
+          var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);
170
+
171
+          var _boxSizing = slideStyles.getPropertyValue('box-sizing');
172
+
173
+          if (_boxSizing && _boxSizing === 'border-box') {
174
+            slideSize = height + marginTop + marginBottom;
175
+          } else {
176
+            var _slide$2 = slide[0],
177
+                clientHeight = _slide$2.clientHeight,
178
+                offsetHeight = _slide$2.offsetHeight;
179
+            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom + (offsetHeight - clientHeight);
180
+          }
181
+        }
182
+      }
183
+
184
+      if (currentTransform) {
185
+        slide[0].style.transform = currentTransform;
186
+      }
187
+
188
+      if (currentWebKitTransform) {
189
+        slide[0].style.webkitTransform = currentWebKitTransform;
190
+      }
191
+
192
+      if (params.roundLengths) slideSize = Math.floor(slideSize);
193
+    } else {
194
+      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
195
+      if (params.roundLengths) slideSize = Math.floor(slideSize);
196
+
197
+      if (slides[i]) {
198
+        if (swiper.isHorizontal()) {
199
+          slides[i].style.width = slideSize + "px";
200
+        } else {
201
+          slides[i].style.height = slideSize + "px";
202
+        }
203
+      }
204
+    }
205
+
206
+    if (slides[i]) {
207
+      slides[i].swiperSlideSize = slideSize;
208
+    }
209
+
210
+    slidesSizesGrid.push(slideSize);
211
+
212
+    if (params.centeredSlides) {
213
+      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
214
+      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
215
+      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
216
+      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
217
+      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
218
+      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
219
+      slidesGrid.push(slidePosition);
220
+    } else {
221
+      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
222
+      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
223
+      slidesGrid.push(slidePosition);
224
+      slidePosition = slidePosition + slideSize + spaceBetween;
225
+    }
226
+
227
+    swiper.virtualSize += slideSize + spaceBetween;
228
+    prevSlideSize = slideSize;
229
+    index += 1;
230
+  }
231
+
232
+  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
233
+  var newSlidesGrid;
234
+
235
+  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
236
+    $wrapperEl.css({
237
+      width: swiper.virtualSize + params.spaceBetween + "px"
238
+    });
239
+  }
240
+
241
+  if (params.setWrapperSize) {
242
+    if (swiper.isHorizontal()) $wrapperEl.css({
243
+      width: swiper.virtualSize + params.spaceBetween + "px"
244
+    });else $wrapperEl.css({
245
+      height: swiper.virtualSize + params.spaceBetween + "px"
246
+    });
247
+  }
248
+
249
+  if (params.slidesPerColumn > 1) {
250
+    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
251
+    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
252
+    if (swiper.isHorizontal()) $wrapperEl.css({
253
+      width: swiper.virtualSize + params.spaceBetween + "px"
254
+    });else $wrapperEl.css({
255
+      height: swiper.virtualSize + params.spaceBetween + "px"
256
+    });
257
+
258
+    if (params.centeredSlides) {
259
+      newSlidesGrid = [];
260
+
261
+      for (var _i = 0; _i < snapGrid.length; _i += 1) {
262
+        var slidesGridItem = snapGrid[_i];
263
+        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
264
+        if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
265
+      }
266
+
267
+      snapGrid = newSlidesGrid;
268
+    }
269
+  } // Remove last grid elements depending on width
270
+
271
+
272
+  if (!params.centeredSlides) {
273
+    newSlidesGrid = [];
274
+
275
+    for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
276
+      var _slidesGridItem = snapGrid[_i2];
277
+      if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
278
+
279
+      if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
280
+        newSlidesGrid.push(_slidesGridItem);
281
+      }
282
+    }
283
+
284
+    snapGrid = newSlidesGrid;
285
+
286
+    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
287
+      snapGrid.push(swiper.virtualSize - swiperSize);
288
+    }
289
+  }
290
+
291
+  if (snapGrid.length === 0) snapGrid = [0];
292
+
293
+  if (params.spaceBetween !== 0) {
294
+    if (swiper.isHorizontal()) {
295
+      if (rtl) slides.filter(slidesForMargin).css({
296
+        marginLeft: spaceBetween + "px"
297
+      });else slides.filter(slidesForMargin).css({
298
+        marginRight: spaceBetween + "px"
299
+      });
300
+    } else slides.filter(slidesForMargin).css({
301
+      marginBottom: spaceBetween + "px"
302
+    });
303
+  }
304
+
305
+  if (params.centeredSlides && params.centeredSlidesBounds) {
306
+    var allSlidesSize = 0;
307
+    slidesSizesGrid.forEach(function (slideSizeValue) {
308
+      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
309
+    });
310
+    allSlidesSize -= params.spaceBetween;
311
+    var maxSnap = allSlidesSize - swiperSize;
312
+    snapGrid = snapGrid.map(function (snap) {
313
+      if (snap < 0) return -offsetBefore;
314
+      if (snap > maxSnap) return maxSnap + offsetAfter;
315
+      return snap;
316
+    });
317
+  }
318
+
319
+  if (params.centerInsufficientSlides) {
320
+    var _allSlidesSize = 0;
321
+    slidesSizesGrid.forEach(function (slideSizeValue) {
322
+      _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
323
+    });
324
+    _allSlidesSize -= params.spaceBetween;
325
+
326
+    if (_allSlidesSize < swiperSize) {
327
+      var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
328
+      snapGrid.forEach(function (snap, snapIndex) {
329
+        snapGrid[snapIndex] = snap - allSlidesOffset;
330
+      });
331
+      slidesGrid.forEach(function (snap, snapIndex) {
332
+        slidesGrid[snapIndex] = snap + allSlidesOffset;
333
+      });
334
+    }
335
+  }
336
+
337
+  extend(swiper, {
338
+    slides: slides,
339
+    snapGrid: snapGrid,
340
+    slidesGrid: slidesGrid,
341
+    slidesSizesGrid: slidesSizesGrid
342
+  });
343
+
344
+  if (slidesLength !== previousSlidesLength) {
345
+    swiper.emit('slidesLengthChange');
346
+  }
347
+
348
+  if (snapGrid.length !== previousSnapGridLength) {
349
+    if (swiper.params.watchOverflow) swiper.checkOverflow();
350
+    swiper.emit('snapGridLengthChange');
351
+  }
352
+
353
+  if (slidesGrid.length !== previousSlidesGridLength) {
354
+    swiper.emit('slidesGridLengthChange');
355
+  }
356
+
357
+  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
358
+    swiper.updateSlidesOffset();
359
+  }
360
+}
0 361
\ No newline at end of file
1 362
new file mode 100644
... ...
@@ -0,0 +1,62 @@
1
+export default function updateSlidesClasses() {
2
+  var swiper = this;
3
+  var slides = swiper.slides,
4
+      params = swiper.params,
5
+      $wrapperEl = swiper.$wrapperEl,
6
+      activeIndex = swiper.activeIndex,
7
+      realIndex = swiper.realIndex;
8
+  var isVirtual = swiper.virtual && params.virtual.enabled;
9
+  slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
10
+  var activeSlide;
11
+
12
+  if (isVirtual) {
13
+    activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
14
+  } else {
15
+    activeSlide = slides.eq(activeIndex);
16
+  } // Active classes
17
+
18
+
19
+  activeSlide.addClass(params.slideActiveClass);
20
+
21
+  if (params.loop) {
22
+    // Duplicate to all looped slides
23
+    if (activeSlide.hasClass(params.slideDuplicateClass)) {
24
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
25
+    } else {
26
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
27
+    }
28
+  } // Next Slide
29
+
30
+
31
+  var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
32
+
33
+  if (params.loop && nextSlide.length === 0) {
34
+    nextSlide = slides.eq(0);
35
+    nextSlide.addClass(params.slideNextClass);
36
+  } // Prev Slide
37
+
38
+
39
+  var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
40
+
41
+  if (params.loop && prevSlide.length === 0) {
42
+    prevSlide = slides.eq(-1);
43
+    prevSlide.addClass(params.slidePrevClass);
44
+  }
45
+
46
+  if (params.loop) {
47
+    // Duplicate to all looped slides
48
+    if (nextSlide.hasClass(params.slideDuplicateClass)) {
49
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
50
+    } else {
51
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
52
+    }
53
+
54
+    if (prevSlide.hasClass(params.slideDuplicateClass)) {
55
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
56
+    } else {
57
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
58
+    }
59
+  }
60
+
61
+  swiper.emitSlidesClasses();
62
+}
0 63
\ No newline at end of file
1 64
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+export default function updateSlidesOffset() {
2
+  var swiper = this;
3
+  var slides = swiper.slides;
4
+
5
+  for (var i = 0; i < slides.length; i += 1) {
6
+    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
7
+  }
8
+}
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+import $ from '../../../utils/dom';
2
+export default function updateSlidesProgress(translate) {
3
+  if (translate === void 0) {
4
+    translate = this && this.translate || 0;
5
+  }
6
+
7
+  var swiper = this;
8
+  var params = swiper.params;
9
+  var slides = swiper.slides,
10
+      rtl = swiper.rtlTranslate;
11
+  if (slides.length === 0) return;
12
+  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
13
+  var offsetCenter = -translate;
14
+  if (rtl) offsetCenter = translate; // Visible Slides
15
+
16
+  slides.removeClass(params.slideVisibleClass);
17
+  swiper.visibleSlidesIndexes = [];
18
+  swiper.visibleSlides = [];
19
+
20
+  for (var i = 0; i < slides.length; i += 1) {
21
+    var slide = slides[i];
22
+    var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
23
+
24
+    if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
25
+      var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
26
+      var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
27
+      var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
28
+
29
+      if (isVisible) {
30
+        swiper.visibleSlides.push(slide);
31
+        swiper.visibleSlidesIndexes.push(i);
32
+        slides.eq(i).addClass(params.slideVisibleClass);
33
+      }
34
+    }
35
+
36
+    slide.progress = rtl ? -slideProgress : slideProgress;
37
+  }
38
+
39
+  swiper.visibleSlides = $(swiper.visibleSlides);
40
+}
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,108 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { bindModuleMethods } from '../../utils/utils';
5
+var Coverflow = {
6
+  setTranslate: function setTranslate() {
7
+    var swiper = this;
8
+    var swiperWidth = swiper.width,
9
+        swiperHeight = swiper.height,
10
+        slides = swiper.slides,
11
+        slidesSizesGrid = swiper.slidesSizesGrid;
12
+    var params = swiper.params.coverflowEffect;
13
+    var isHorizontal = swiper.isHorizontal();
14
+    var transform = swiper.translate;
15
+    var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
16
+    var rotate = isHorizontal ? params.rotate : -params.rotate;
17
+    var translate = params.depth; // Each slide offset from center
18
+
19
+    for (var i = 0, length = slides.length; i < length; i += 1) {
20
+      var $slideEl = slides.eq(i);
21
+      var slideSize = slidesSizesGrid[i];
22
+      var slideOffset = $slideEl[0].swiperSlideOffset;
23
+      var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
24
+      var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
25
+      var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
26
+
27
+      var translateZ = -translate * Math.abs(offsetMultiplier);
28
+      var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
29
+
30
+      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
31
+        stretch = parseFloat(params.stretch) / 100 * slideSize;
32
+      }
33
+
34
+      var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
35
+      var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
36
+      var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
37
+
38
+      if (Math.abs(translateX) < 0.001) translateX = 0;
39
+      if (Math.abs(translateY) < 0.001) translateY = 0;
40
+      if (Math.abs(translateZ) < 0.001) translateZ = 0;
41
+      if (Math.abs(rotateY) < 0.001) rotateY = 0;
42
+      if (Math.abs(rotateX) < 0.001) rotateX = 0;
43
+      if (Math.abs(scale) < 0.001) scale = 0;
44
+      var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
45
+      $slideEl.transform(slideTransform);
46
+      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
47
+
48
+      if (params.slideShadows) {
49
+        // Set shadows
50
+        var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
51
+        var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
52
+
53
+        if ($shadowBeforeEl.length === 0) {
54
+          $shadowBeforeEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
55
+          $slideEl.append($shadowBeforeEl);
56
+        }
57
+
58
+        if ($shadowAfterEl.length === 0) {
59
+          $shadowAfterEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
60
+          $slideEl.append($shadowAfterEl);
61
+        }
62
+
63
+        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
64
+        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
65
+      }
66
+    }
67
+  },
68
+  setTransition: function setTransition(duration) {
69
+    var swiper = this;
70
+    swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
71
+  }
72
+};
73
+export default {
74
+  name: 'effect-coverflow',
75
+  params: {
76
+    coverflowEffect: {
77
+      rotate: 50,
78
+      stretch: 0,
79
+      depth: 100,
80
+      scale: 1,
81
+      modifier: 1,
82
+      slideShadows: true
83
+    }
84
+  },
85
+  create: function create() {
86
+    var swiper = this;
87
+    bindModuleMethods(swiper, {
88
+      coverflowEffect: _extends({}, Coverflow)
89
+    });
90
+  },
91
+  on: {
92
+    beforeInit: function beforeInit(swiper) {
93
+      if (swiper.params.effect !== 'coverflow') return;
94
+      swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
95
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
96
+      swiper.params.watchSlidesProgress = true;
97
+      swiper.originalParams.watchSlidesProgress = true;
98
+    },
99
+    setTranslate: function setTranslate(swiper) {
100
+      if (swiper.params.effect !== 'coverflow') return;
101
+      swiper.coverflowEffect.setTranslate();
102
+    },
103
+    setTransition: function setTransition(swiper, duration) {
104
+      if (swiper.params.effect !== 'coverflow') return;
105
+      swiper.coverflowEffect.setTransition(duration);
106
+    }
107
+  }
108
+};
0 109
\ No newline at end of file
1 110
new file mode 100644
... ...
@@ -0,0 +1,194 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { extend, bindModuleMethods } from '../../utils/utils';
5
+var Cube = {
6
+  setTranslate: function setTranslate() {
7
+    var swiper = this;
8
+    var $el = swiper.$el,
9
+        $wrapperEl = swiper.$wrapperEl,
10
+        slides = swiper.slides,
11
+        swiperWidth = swiper.width,
12
+        swiperHeight = swiper.height,
13
+        rtl = swiper.rtlTranslate,
14
+        swiperSize = swiper.size,
15
+        browser = swiper.browser;
16
+    var params = swiper.params.cubeEffect;
17
+    var isHorizontal = swiper.isHorizontal();
18
+    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
19
+    var wrapperRotate = 0;
20
+    var $cubeShadowEl;
21
+
22
+    if (params.shadow) {
23
+      if (isHorizontal) {
24
+        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
25
+
26
+        if ($cubeShadowEl.length === 0) {
27
+          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
28
+          $wrapperEl.append($cubeShadowEl);
29
+        }
30
+
31
+        $cubeShadowEl.css({
32
+          height: swiperWidth + "px"
33
+        });
34
+      } else {
35
+        $cubeShadowEl = $el.find('.swiper-cube-shadow');
36
+
37
+        if ($cubeShadowEl.length === 0) {
38
+          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
39
+          $el.append($cubeShadowEl);
40
+        }
41
+      }
42
+    }
43
+
44
+    for (var i = 0; i < slides.length; i += 1) {
45
+      var $slideEl = slides.eq(i);
46
+      var slideIndex = i;
47
+
48
+      if (isVirtual) {
49
+        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
50
+      }
51
+
52
+      var slideAngle = slideIndex * 90;
53
+      var round = Math.floor(slideAngle / 360);
54
+
55
+      if (rtl) {
56
+        slideAngle = -slideAngle;
57
+        round = Math.floor(-slideAngle / 360);
58
+      }
59
+
60
+      var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
61
+      var tx = 0;
62
+      var ty = 0;
63
+      var tz = 0;
64
+
65
+      if (slideIndex % 4 === 0) {
66
+        tx = -round * 4 * swiperSize;
67
+        tz = 0;
68
+      } else if ((slideIndex - 1) % 4 === 0) {
69
+        tx = 0;
70
+        tz = -round * 4 * swiperSize;
71
+      } else if ((slideIndex - 2) % 4 === 0) {
72
+        tx = swiperSize + round * 4 * swiperSize;
73
+        tz = swiperSize;
74
+      } else if ((slideIndex - 3) % 4 === 0) {
75
+        tx = -swiperSize;
76
+        tz = 3 * swiperSize + swiperSize * 4 * round;
77
+      }
78
+
79
+      if (rtl) {
80
+        tx = -tx;
81
+      }
82
+
83
+      if (!isHorizontal) {
84
+        ty = tx;
85
+        tx = 0;
86
+      }
87
+
88
+      var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
89
+
90
+      if (progress <= 1 && progress > -1) {
91
+        wrapperRotate = slideIndex * 90 + progress * 90;
92
+        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
93
+      }
94
+
95
+      $slideEl.transform(transform);
96
+
97
+      if (params.slideShadows) {
98
+        // Set shadows
99
+        var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
100
+        var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
101
+
102
+        if (shadowBefore.length === 0) {
103
+          shadowBefore = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
104
+          $slideEl.append(shadowBefore);
105
+        }
106
+
107
+        if (shadowAfter.length === 0) {
108
+          shadowAfter = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
109
+          $slideEl.append(shadowAfter);
110
+        }
111
+
112
+        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
113
+        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
114
+      }
115
+    }
116
+
117
+    $wrapperEl.css({
118
+      '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
119
+      '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
120
+      '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
121
+      'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
122
+    });
123
+
124
+    if (params.shadow) {
125
+      if (isHorizontal) {
126
+        $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
127
+      } else {
128
+        var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
129
+        var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
130
+        var scale1 = params.shadowScale;
131
+        var scale2 = params.shadowScale / multiplier;
132
+        var offset = params.shadowOffset;
133
+        $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
134
+      }
135
+    }
136
+
137
+    var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
138
+    $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
139
+  },
140
+  setTransition: function setTransition(duration) {
141
+    var swiper = this;
142
+    var $el = swiper.$el,
143
+        slides = swiper.slides;
144
+    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
145
+
146
+    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
147
+      $el.find('.swiper-cube-shadow').transition(duration);
148
+    }
149
+  }
150
+};
151
+export default {
152
+  name: 'effect-cube',
153
+  params: {
154
+    cubeEffect: {
155
+      slideShadows: true,
156
+      shadow: true,
157
+      shadowOffset: 20,
158
+      shadowScale: 0.94
159
+    }
160
+  },
161
+  create: function create() {
162
+    var swiper = this;
163
+    bindModuleMethods(swiper, {
164
+      cubeEffect: _extends({}, Cube)
165
+    });
166
+  },
167
+  on: {
168
+    beforeInit: function beforeInit(swiper) {
169
+      if (swiper.params.effect !== 'cube') return;
170
+      swiper.classNames.push(swiper.params.containerModifierClass + "cube");
171
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
172
+      var overwriteParams = {
173
+        slidesPerView: 1,
174
+        slidesPerColumn: 1,
175
+        slidesPerGroup: 1,
176
+        watchSlidesProgress: true,
177
+        resistanceRatio: 0,
178
+        spaceBetween: 0,
179
+        centeredSlides: false,
180
+        virtualTranslate: true
181
+      };
182
+      extend(swiper.params, overwriteParams);
183
+      extend(swiper.originalParams, overwriteParams);
184
+    },
185
+    setTranslate: function setTranslate(swiper) {
186
+      if (swiper.params.effect !== 'cube') return;
187
+      swiper.cubeEffect.setTranslate();
188
+    },
189
+    setTransition: function setTransition(swiper, duration) {
190
+      if (swiper.params.effect !== 'cube') return;
191
+      swiper.cubeEffect.setTransition(duration);
192
+    }
193
+  }
194
+};
0 195
\ No newline at end of file
1 196
new file mode 100644
... ...
@@ -0,0 +1,86 @@
1
+function _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); }
2
+
3
+import { extend, bindModuleMethods } from '../../utils/utils';
4
+var Fade = {
5
+  setTranslate: function setTranslate() {
6
+    var swiper = this;
7
+    var slides = swiper.slides;
8
+
9
+    for (var i = 0; i < slides.length; i += 1) {
10
+      var $slideEl = swiper.slides.eq(i);
11
+      var offset = $slideEl[0].swiperSlideOffset;
12
+      var tx = -offset;
13
+      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
14
+      var ty = 0;
15
+
16
+      if (!swiper.isHorizontal()) {
17
+        ty = tx;
18
+        tx = 0;
19
+      }
20
+
21
+      var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
22
+      $slideEl.css({
23
+        opacity: slideOpacity
24
+      }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
25
+    }
26
+  },
27
+  setTransition: function setTransition(duration) {
28
+    var swiper = this;
29
+    var slides = swiper.slides,
30
+        $wrapperEl = swiper.$wrapperEl;
31
+    slides.transition(duration);
32
+
33
+    if (swiper.params.virtualTranslate && duration !== 0) {
34
+      var eventTriggered = false;
35
+      slides.transitionEnd(function () {
36
+        if (eventTriggered) return;
37
+        if (!swiper || swiper.destroyed) return;
38
+        eventTriggered = true;
39
+        swiper.animating = false;
40
+        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
41
+
42
+        for (var i = 0; i < triggerEvents.length; i += 1) {
43
+          $wrapperEl.trigger(triggerEvents[i]);
44
+        }
45
+      });
46
+    }
47
+  }
48
+};
49
+export default {
50
+  name: 'effect-fade',
51
+  params: {
52
+    fadeEffect: {
53
+      crossFade: false
54
+    }
55
+  },
56
+  create: function create() {
57
+    var swiper = this;
58
+    bindModuleMethods(swiper, {
59
+      fadeEffect: _extends({}, Fade)
60
+    });
61
+  },
62
+  on: {
63
+    beforeInit: function beforeInit(swiper) {
64
+      if (swiper.params.effect !== 'fade') return;
65
+      swiper.classNames.push(swiper.params.containerModifierClass + "fade");
66
+      var overwriteParams = {
67
+        slidesPerView: 1,
68
+        slidesPerColumn: 1,
69
+        slidesPerGroup: 1,
70
+        watchSlidesProgress: true,
71
+        spaceBetween: 0,
72
+        virtualTranslate: true
73
+      };
74
+      extend(swiper.params, overwriteParams);
75
+      extend(swiper.originalParams, overwriteParams);
76
+    },
77
+    setTranslate: function setTranslate(swiper) {
78
+      if (swiper.params.effect !== 'fade') return;
79
+      swiper.fadeEffect.setTranslate();
80
+    },
81
+    setTransition: function setTransition(swiper, duration) {
82
+      if (swiper.params.effect !== 'fade') return;
83
+      swiper.fadeEffect.setTransition(duration);
84
+    }
85
+  }
86
+};
0 87
\ No newline at end of file
1 88
new file mode 100644
... ...
@@ -0,0 +1,123 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { extend, bindModuleMethods } from '../../utils/utils';
5
+var Flip = {
6
+  setTranslate: function setTranslate() {
7
+    var swiper = this;
8
+    var slides = swiper.slides,
9
+        rtl = swiper.rtlTranslate;
10
+
11
+    for (var i = 0; i < slides.length; i += 1) {
12
+      var $slideEl = slides.eq(i);
13
+      var progress = $slideEl[0].progress;
14
+
15
+      if (swiper.params.flipEffect.limitRotation) {
16
+        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
17
+      }
18
+
19
+      var offset = $slideEl[0].swiperSlideOffset;
20
+      var rotate = -180 * progress;
21
+      var rotateY = rotate;
22
+      var rotateX = 0;
23
+      var tx = -offset;
24
+      var ty = 0;
25
+
26
+      if (!swiper.isHorizontal()) {
27
+        ty = tx;
28
+        tx = 0;
29
+        rotateX = -rotateY;
30
+        rotateY = 0;
31
+      } else if (rtl) {
32
+        rotateY = -rotateY;
33
+      }
34
+
35
+      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
36
+
37
+      if (swiper.params.flipEffect.slideShadows) {
38
+        // Set shadows
39
+        var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
40
+        var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
41
+
42
+        if (shadowBefore.length === 0) {
43
+          shadowBefore = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
44
+          $slideEl.append(shadowBefore);
45
+        }
46
+
47
+        if (shadowAfter.length === 0) {
48
+          shadowAfter = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
49
+          $slideEl.append(shadowAfter);
50
+        }
51
+
52
+        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
53
+        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
54
+      }
55
+
56
+      $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
57
+    }
58
+  },
59
+  setTransition: function setTransition(duration) {
60
+    var swiper = this;
61
+    var slides = swiper.slides,
62
+        activeIndex = swiper.activeIndex,
63
+        $wrapperEl = swiper.$wrapperEl;
64
+    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
65
+
66
+    if (swiper.params.virtualTranslate && duration !== 0) {
67
+      var eventTriggered = false; // eslint-disable-next-line
68
+
69
+      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
70
+        if (eventTriggered) return;
71
+        if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
72
+
73
+        eventTriggered = true;
74
+        swiper.animating = false;
75
+        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
76
+
77
+        for (var i = 0; i < triggerEvents.length; i += 1) {
78
+          $wrapperEl.trigger(triggerEvents[i]);
79
+        }
80
+      });
81
+    }
82
+  }
83
+};
84
+export default {
85
+  name: 'effect-flip',
86
+  params: {
87
+    flipEffect: {
88
+      slideShadows: true,
89
+      limitRotation: true
90
+    }
91
+  },
92
+  create: function create() {
93
+    var swiper = this;
94
+    bindModuleMethods(swiper, {
95
+      flipEffect: _extends({}, Flip)
96
+    });
97
+  },
98
+  on: {
99
+    beforeInit: function beforeInit(swiper) {
100
+      if (swiper.params.effect !== 'flip') return;
101
+      swiper.classNames.push(swiper.params.containerModifierClass + "flip");
102
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
103
+      var overwriteParams = {
104
+        slidesPerView: 1,
105
+        slidesPerColumn: 1,
106
+        slidesPerGroup: 1,
107
+        watchSlidesProgress: true,
108
+        spaceBetween: 0,
109
+        virtualTranslate: true
110
+      };
111
+      extend(swiper.params, overwriteParams);
112
+      extend(swiper.originalParams, overwriteParams);
113
+    },
114
+    setTranslate: function setTranslate(swiper) {
115
+      if (swiper.params.effect !== 'flip') return;
116
+      swiper.flipEffect.setTranslate();
117
+    },
118
+    setTransition: function setTransition(swiper, duration) {
119
+      if (swiper.params.effect !== 'flip') return;
120
+      swiper.flipEffect.setTransition(duration);
121
+    }
122
+  }
123
+};
0 124
\ No newline at end of file
1 125
new file mode 100644
... ...
@@ -0,0 +1,110 @@
1
+function _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); }
2
+
3
+import { getWindow, getDocument } from 'ssr-window';
4
+import $ from '../../utils/dom';
5
+import { bindModuleMethods } from '../../utils/utils';
6
+var HashNavigation = {
7
+  onHashCange: function onHashCange() {
8
+    var swiper = this;
9
+    var document = getDocument();
10
+    swiper.emit('hashChange');
11
+    var newHash = document.location.hash.replace('#', '');
12
+    var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
13
+
14
+    if (newHash !== activeSlideHash) {
15
+      var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
16
+      if (typeof newIndex === 'undefined') return;
17
+      swiper.slideTo(newIndex);
18
+    }
19
+  },
20
+  setHash: function setHash() {
21
+    var swiper = this;
22
+    var window = getWindow();
23
+    var document = getDocument();
24
+    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
25
+
26
+    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
27
+      window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
28
+      swiper.emit('hashSet');
29
+    } else {
30
+      var slide = swiper.slides.eq(swiper.activeIndex);
31
+      var hash = slide.attr('data-hash') || slide.attr('data-history');
32
+      document.location.hash = hash || '';
33
+      swiper.emit('hashSet');
34
+    }
35
+  },
36
+  init: function init() {
37
+    var swiper = this;
38
+    var document = getDocument();
39
+    var window = getWindow();
40
+    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
41
+    swiper.hashNavigation.initialized = true;
42
+    var hash = document.location.hash.replace('#', '');
43
+
44
+    if (hash) {
45
+      var speed = 0;
46
+
47
+      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
48
+        var slide = swiper.slides.eq(i);
49
+        var slideHash = slide.attr('data-hash') || slide.attr('data-history');
50
+
51
+        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
52
+          var index = slide.index();
53
+          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
54
+        }
55
+      }
56
+    }
57
+
58
+    if (swiper.params.hashNavigation.watchState) {
59
+      $(window).on('hashchange', swiper.hashNavigation.onHashCange);
60
+    }
61
+  },
62
+  destroy: function destroy() {
63
+    var swiper = this;
64
+    var window = getWindow();
65
+
66
+    if (swiper.params.hashNavigation.watchState) {
67
+      $(window).off('hashchange', swiper.hashNavigation.onHashCange);
68
+    }
69
+  }
70
+};
71
+export default {
72
+  name: 'hash-navigation',
73
+  params: {
74
+    hashNavigation: {
75
+      enabled: false,
76
+      replaceState: false,
77
+      watchState: false
78
+    }
79
+  },
80
+  create: function create() {
81
+    var swiper = this;
82
+    bindModuleMethods(swiper, {
83
+      hashNavigation: _extends({
84
+        initialized: false
85
+      }, HashNavigation)
86
+    });
87
+  },
88
+  on: {
89
+    init: function init(swiper) {
90
+      if (swiper.params.hashNavigation.enabled) {
91
+        swiper.hashNavigation.init();
92
+      }
93
+    },
94
+    destroy: function destroy(swiper) {
95
+      if (swiper.params.hashNavigation.enabled) {
96
+        swiper.hashNavigation.destroy();
97
+      }
98
+    },
99
+    transitionEnd: function transitionEnd(swiper) {
100
+      if (swiper.hashNavigation.initialized) {
101
+        swiper.hashNavigation.setHash();
102
+      }
103
+    },
104
+    slideChange: function slideChange(swiper) {
105
+      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
106
+        swiper.hashNavigation.setHash();
107
+      }
108
+    }
109
+  }
110
+};
0 111
\ No newline at end of file
1 112
new file mode 100644
... ...
@@ -0,0 +1,154 @@
1
+function _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); }
2
+
3
+import { getWindow } from 'ssr-window';
4
+import { bindModuleMethods } from '../../utils/utils';
5
+var History = {
6
+  init: function init() {
7
+    var swiper = this;
8
+    var window = getWindow();
9
+    if (!swiper.params.history) return;
10
+
11
+    if (!window.history || !window.history.pushState) {
12
+      swiper.params.history.enabled = false;
13
+      swiper.params.hashNavigation.enabled = true;
14
+      return;
15
+    }
16
+
17
+    var history = swiper.history;
18
+    history.initialized = true;
19
+    history.paths = History.getPathValues(swiper.params.url);
20
+    if (!history.paths.key && !history.paths.value) return;
21
+    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
22
+
23
+    if (!swiper.params.history.replaceState) {
24
+      window.addEventListener('popstate', swiper.history.setHistoryPopState);
25
+    }
26
+  },
27
+  destroy: function destroy() {
28
+    var swiper = this;
29
+    var window = getWindow();
30
+
31
+    if (!swiper.params.history.replaceState) {
32
+      window.removeEventListener('popstate', swiper.history.setHistoryPopState);
33
+    }
34
+  },
35
+  setHistoryPopState: function setHistoryPopState() {
36
+    var swiper = this;
37
+    swiper.history.paths = History.getPathValues(swiper.params.url);
38
+    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
39
+  },
40
+  getPathValues: function getPathValues(urlOverride) {
41
+    var window = getWindow();
42
+    var location;
43
+
44
+    if (urlOverride) {
45
+      location = new URL(urlOverride);
46
+    } else {
47
+      location = window.location;
48
+    }
49
+
50
+    var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
51
+      return part !== '';
52
+    });
53
+    var total = pathArray.length;
54
+    var key = pathArray[total - 2];
55
+    var value = pathArray[total - 1];
56
+    return {
57
+      key: key,
58
+      value: value
59
+    };
60
+  },
61
+  setHistory: function setHistory(key, index) {
62
+    var swiper = this;
63
+    var window = getWindow();
64
+    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
65
+    var location;
66
+
67
+    if (swiper.params.url) {
68
+      location = new URL(swiper.params.url);
69
+    } else {
70
+      location = window.location;
71
+    }
72
+
73
+    var slide = swiper.slides.eq(index);
74
+    var value = History.slugify(slide.attr('data-history'));
75
+
76
+    if (!location.pathname.includes(key)) {
77
+      value = key + "/" + value;
78
+    }
79
+
80
+    var currentState = window.history.state;
81
+
82
+    if (currentState && currentState.value === value) {
83
+      return;
84
+    }
85
+
86
+    if (swiper.params.history.replaceState) {
87
+      window.history.replaceState({
88
+        value: value
89
+      }, null, value);
90
+    } else {
91
+      window.history.pushState({
92
+        value: value
93
+      }, null, value);
94
+    }
95
+  },
96
+  slugify: function slugify(text) {
97
+    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
98
+  },
99
+  scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
100
+    var swiper = this;
101
+
102
+    if (value) {
103
+      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
104
+        var slide = swiper.slides.eq(i);
105
+        var slideHistory = History.slugify(slide.attr('data-history'));
106
+
107
+        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
108
+          var index = slide.index();
109
+          swiper.slideTo(index, speed, runCallbacks);
110
+        }
111
+      }
112
+    } else {
113
+      swiper.slideTo(0, speed, runCallbacks);
114
+    }
115
+  }
116
+};
117
+export default {
118
+  name: 'history',
119
+  params: {
120
+    history: {
121
+      enabled: false,
122
+      replaceState: false,
123
+      key: 'slides'
124
+    }
125
+  },
126
+  create: function create() {
127
+    var swiper = this;
128
+    bindModuleMethods(swiper, {
129
+      history: _extends({}, History)
130
+    });
131
+  },
132
+  on: {
133
+    init: function init(swiper) {
134
+      if (swiper.params.history.enabled) {
135
+        swiper.history.init();
136
+      }
137
+    },
138
+    destroy: function destroy(swiper) {
139
+      if (swiper.params.history.enabled) {
140
+        swiper.history.destroy();
141
+      }
142
+    },
143
+    transitionEnd: function transitionEnd(swiper) {
144
+      if (swiper.history.initialized) {
145
+        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
146
+      }
147
+    },
148
+    slideChange: function slideChange(swiper) {
149
+      if (swiper.history.initialized && swiper.params.cssMode) {
150
+        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
151
+      }
152
+    }
153
+  }
154
+};
0 155
\ No newline at end of file
1 156
new file mode 100644
... ...
@@ -0,0 +1,127 @@
1
+function _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); }
2
+
3
+import { getWindow, getDocument } from 'ssr-window';
4
+import $ from '../../utils/dom';
5
+import { bindModuleMethods } from '../../utils/utils';
6
+var Keyboard = {
7
+  handle: function handle(event) {
8
+    var swiper = this;
9
+    var window = getWindow();
10
+    var document = getDocument();
11
+    var rtl = swiper.rtlTranslate;
12
+    var e = event;
13
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
14
+
15
+    var kc = e.keyCode || e.charCode;
16
+    var pageUpDown = swiper.params.keyboard.pageUpDown;
17
+    var isPageUp = pageUpDown && kc === 33;
18
+    var isPageDown = pageUpDown && kc === 34;
19
+    var isArrowLeft = kc === 37;
20
+    var isArrowRight = kc === 39;
21
+    var isArrowUp = kc === 38;
22
+    var isArrowDown = kc === 40; // Directions locks
23
+
24
+    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
25
+      return false;
26
+    }
27
+
28
+    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
29
+      return false;
30
+    }
31
+
32
+    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
33
+      return undefined;
34
+    }
35
+
36
+    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
37
+      return undefined;
38
+    }
39
+
40
+    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
41
+      var inView = false; // Check that swiper should be inside of visible area of window
42
+
43
+      if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
44
+        return undefined;
45
+      }
46
+
47
+      var windowWidth = window.innerWidth;
48
+      var windowHeight = window.innerHeight;
49
+      var swiperOffset = swiper.$el.offset();
50
+      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
51
+      var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
52
+
53
+      for (var i = 0; i < swiperCoord.length; i += 1) {
54
+        var point = swiperCoord[i];
55
+
56
+        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
57
+          inView = true;
58
+        }
59
+      }
60
+
61
+      if (!inView) return undefined;
62
+    }
63
+
64
+    if (swiper.isHorizontal()) {
65
+      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
66
+        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
67
+      }
68
+
69
+      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
70
+      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
71
+    } else {
72
+      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
73
+        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
74
+      }
75
+
76
+      if (isPageDown || isArrowDown) swiper.slideNext();
77
+      if (isPageUp || isArrowUp) swiper.slidePrev();
78
+    }
79
+
80
+    swiper.emit('keyPress', kc);
81
+    return undefined;
82
+  },
83
+  enable: function enable() {
84
+    var swiper = this;
85
+    var document = getDocument();
86
+    if (swiper.keyboard.enabled) return;
87
+    $(document).on('keydown', swiper.keyboard.handle);
88
+    swiper.keyboard.enabled = true;
89
+  },
90
+  disable: function disable() {
91
+    var swiper = this;
92
+    var document = getDocument();
93
+    if (!swiper.keyboard.enabled) return;
94
+    $(document).off('keydown', swiper.keyboard.handle);
95
+    swiper.keyboard.enabled = false;
96
+  }
97
+};
98
+export default {
99
+  name: 'keyboard',
100
+  params: {
101
+    keyboard: {
102
+      enabled: false,
103
+      onlyInViewport: true,
104
+      pageUpDown: true
105
+    }
106
+  },
107
+  create: function create() {
108
+    var swiper = this;
109
+    bindModuleMethods(swiper, {
110
+      keyboard: _extends({
111
+        enabled: false
112
+      }, Keyboard)
113
+    });
114
+  },
115
+  on: {
116
+    init: function init(swiper) {
117
+      if (swiper.params.keyboard.enabled) {
118
+        swiper.keyboard.enable();
119
+      }
120
+    },
121
+    destroy: function destroy(swiper) {
122
+      if (swiper.keyboard.enabled) {
123
+        swiper.keyboard.disable();
124
+      }
125
+    }
126
+  }
127
+};
0 128
\ No newline at end of file
1 129
new file mode 100644
... ...
@@ -0,0 +1,227 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { bindModuleMethods } from '../../utils/utils';
5
+var Lazy = {
6
+  loadInSlide: function loadInSlide(index, loadInDuplicate) {
7
+    if (loadInDuplicate === void 0) {
8
+      loadInDuplicate = true;
9
+    }
10
+
11
+    var swiper = this;
12
+    var params = swiper.params.lazy;
13
+    if (typeof index === 'undefined') return;
14
+    if (swiper.slides.length === 0) return;
15
+    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
16
+    var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
17
+    var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
18
+
19
+    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
20
+      $images.push($slideEl[0]);
21
+    }
22
+
23
+    if ($images.length === 0) return;
24
+    $images.each(function (imageEl) {
25
+      var $imageEl = $(imageEl);
26
+      $imageEl.addClass(params.loadingClass);
27
+      var background = $imageEl.attr('data-background');
28
+      var src = $imageEl.attr('data-src');
29
+      var srcset = $imageEl.attr('data-srcset');
30
+      var sizes = $imageEl.attr('data-sizes');
31
+      var $pictureEl = $imageEl.parent('picture');
32
+      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
33
+        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
34
+
35
+        if (background) {
36
+          $imageEl.css('background-image', "url(\"" + background + "\")");
37
+          $imageEl.removeAttr('data-background');
38
+        } else {
39
+          if (srcset) {
40
+            $imageEl.attr('srcset', srcset);
41
+            $imageEl.removeAttr('data-srcset');
42
+          }
43
+
44
+          if (sizes) {
45
+            $imageEl.attr('sizes', sizes);
46
+            $imageEl.removeAttr('data-sizes');
47
+          }
48
+
49
+          if ($pictureEl.length) {
50
+            $pictureEl.children('source').each(function (sourceEl) {
51
+              var $source = $(sourceEl);
52
+
53
+              if ($source.attr('data-srcset')) {
54
+                $source.attr('srcset', $source.attr('data-srcset'));
55
+                $source.removeAttr('data-srcset');
56
+              }
57
+            });
58
+          }
59
+
60
+          if (src) {
61
+            $imageEl.attr('src', src);
62
+            $imageEl.removeAttr('data-src');
63
+          }
64
+        }
65
+
66
+        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
67
+        $slideEl.find("." + params.preloaderClass).remove();
68
+
69
+        if (swiper.params.loop && loadInDuplicate) {
70
+          var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
71
+
72
+          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
73
+            var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
74
+            swiper.lazy.loadInSlide(originalSlide.index(), false);
75
+          } else {
76
+            var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
77
+            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
78
+          }
79
+        }
80
+
81
+        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
82
+
83
+        if (swiper.params.autoHeight) {
84
+          swiper.updateAutoHeight();
85
+        }
86
+      });
87
+      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
88
+    });
89
+  },
90
+  load: function load() {
91
+    var swiper = this;
92
+    var $wrapperEl = swiper.$wrapperEl,
93
+        swiperParams = swiper.params,
94
+        slides = swiper.slides,
95
+        activeIndex = swiper.activeIndex;
96
+    var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
97
+    var params = swiperParams.lazy;
98
+    var slidesPerView = swiperParams.slidesPerView;
99
+
100
+    if (slidesPerView === 'auto') {
101
+      slidesPerView = 0;
102
+    }
103
+
104
+    function slideExist(index) {
105
+      if (isVirtual) {
106
+        if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
107
+          return true;
108
+        }
109
+      } else if (slides[index]) return true;
110
+
111
+      return false;
112
+    }
113
+
114
+    function slideIndex(slideEl) {
115
+      if (isVirtual) {
116
+        return $(slideEl).attr('data-swiper-slide-index');
117
+      }
118
+
119
+      return $(slideEl).index();
120
+    }
121
+
122
+    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
123
+
124
+    if (swiper.params.watchSlidesVisibility) {
125
+      $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
126
+        var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
127
+        swiper.lazy.loadInSlide(index);
128
+      });
129
+    } else if (slidesPerView > 1) {
130
+      for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
131
+        if (slideExist(i)) swiper.lazy.loadInSlide(i);
132
+      }
133
+    } else {
134
+      swiper.lazy.loadInSlide(activeIndex);
135
+    }
136
+
137
+    if (params.loadPrevNext) {
138
+      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
139
+        var amount = params.loadPrevNextAmount;
140
+        var spv = slidesPerView;
141
+        var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
142
+        var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
143
+
144
+        for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
145
+          if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
146
+        } // Prev Slides
147
+
148
+
149
+        for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
150
+          if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
151
+        }
152
+      } else {
153
+        var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
154
+        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
155
+        var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
156
+        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
157
+      }
158
+    }
159
+  }
160
+};
161
+export default {
162
+  name: 'lazy',
163
+  params: {
164
+    lazy: {
165
+      enabled: false,
166
+      loadPrevNext: false,
167
+      loadPrevNextAmount: 1,
168
+      loadOnTransitionStart: false,
169
+      elementClass: 'swiper-lazy',
170
+      loadingClass: 'swiper-lazy-loading',
171
+      loadedClass: 'swiper-lazy-loaded',
172
+      preloaderClass: 'swiper-lazy-preloader'
173
+    }
174
+  },
175
+  create: function create() {
176
+    var swiper = this;
177
+    bindModuleMethods(swiper, {
178
+      lazy: _extends({
179
+        initialImageLoaded: false
180
+      }, Lazy)
181
+    });
182
+  },
183
+  on: {
184
+    beforeInit: function beforeInit(swiper) {
185
+      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
186
+        swiper.params.preloadImages = false;
187
+      }
188
+    },
189
+    init: function init(swiper) {
190
+      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
191
+        swiper.lazy.load();
192
+      }
193
+    },
194
+    scroll: function scroll(swiper) {
195
+      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
196
+        swiper.lazy.load();
197
+      }
198
+    },
199
+    resize: function resize(swiper) {
200
+      if (swiper.params.lazy.enabled) {
201
+        swiper.lazy.load();
202
+      }
203
+    },
204
+    scrollbarDragMove: function scrollbarDragMove(swiper) {
205
+      if (swiper.params.lazy.enabled) {
206
+        swiper.lazy.load();
207
+      }
208
+    },
209
+    transitionStart: function transitionStart(swiper) {
210
+      if (swiper.params.lazy.enabled) {
211
+        if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
212
+          swiper.lazy.load();
213
+        }
214
+      }
215
+    },
216
+    transitionEnd: function transitionEnd(swiper) {
217
+      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
218
+        swiper.lazy.load();
219
+      }
220
+    },
221
+    slideChange: function slideChange(swiper) {
222
+      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
223
+        swiper.lazy.load();
224
+      }
225
+    }
226
+  }
227
+};
0 228
\ No newline at end of file
1 229
new file mode 100644
... ...
@@ -0,0 +1,459 @@
1
+import { getWindow, getDocument } from 'ssr-window';
2
+import $ from '../../utils/dom';
3
+import { now, nextTick, bindModuleMethods } from '../../utils/utils';
4
+
5
+function isEventSupported() {
6
+  var document = getDocument();
7
+  var eventName = 'onwheel';
8
+  var isSupported = (eventName in document);
9
+
10
+  if (!isSupported) {
11
+    var element = document.createElement('div');
12
+    element.setAttribute(eventName, 'return;');
13
+    isSupported = typeof element[eventName] === 'function';
14
+  }
15
+
16
+  if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
17
+  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
18
+  document.implementation.hasFeature('', '') !== true) {
19
+    // This is the only way to test support for the `wheel` event in IE9+.
20
+    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
21
+  }
22
+
23
+  return isSupported;
24
+}
25
+
26
+var Mousewheel = {
27
+  lastScrollTime: now(),
28
+  lastEventBeforeSnap: undefined,
29
+  recentWheelEvents: [],
30
+  event: function event() {
31
+    var window = getWindow();
32
+    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
33
+    return isEventSupported() ? 'wheel' : 'mousewheel';
34
+  },
35
+  normalize: function normalize(e) {
36
+    // Reasonable defaults
37
+    var PIXEL_STEP = 10;
38
+    var LINE_HEIGHT = 40;
39
+    var PAGE_HEIGHT = 800;
40
+    var sX = 0;
41
+    var sY = 0; // spinX, spinY
42
+
43
+    var pX = 0;
44
+    var pY = 0; // pixelX, pixelY
45
+    // Legacy
46
+
47
+    if ('detail' in e) {
48
+      sY = e.detail;
49
+    }
50
+
51
+    if ('wheelDelta' in e) {
52
+      sY = -e.wheelDelta / 120;
53
+    }
54
+
55
+    if ('wheelDeltaY' in e) {
56
+      sY = -e.wheelDeltaY / 120;
57
+    }
58
+
59
+    if ('wheelDeltaX' in e) {
60
+      sX = -e.wheelDeltaX / 120;
61
+    } // side scrolling on FF with DOMMouseScroll
62
+
63
+
64
+    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
65
+      sX = sY;
66
+      sY = 0;
67
+    }
68
+
69
+    pX = sX * PIXEL_STEP;
70
+    pY = sY * PIXEL_STEP;
71
+
72
+    if ('deltaY' in e) {
73
+      pY = e.deltaY;
74
+    }
75
+
76
+    if ('deltaX' in e) {
77
+      pX = e.deltaX;
78
+    }
79
+
80
+    if (e.shiftKey && !pX) {
81
+      // if user scrolls with shift he wants horizontal scroll
82
+      pX = pY;
83
+      pY = 0;
84
+    }
85
+
86
+    if ((pX || pY) && e.deltaMode) {
87
+      if (e.deltaMode === 1) {
88
+        // delta in LINE units
89
+        pX *= LINE_HEIGHT;
90
+        pY *= LINE_HEIGHT;
91
+      } else {
92
+        // delta in PAGE units
93
+        pX *= PAGE_HEIGHT;
94
+        pY *= PAGE_HEIGHT;
95
+      }
96
+    } // Fall-back if spin cannot be determined
97
+
98
+
99
+    if (pX && !sX) {
100
+      sX = pX < 1 ? -1 : 1;
101
+    }
102
+
103
+    if (pY && !sY) {
104
+      sY = pY < 1 ? -1 : 1;
105
+    }
106
+
107
+    return {
108
+      spinX: sX,
109
+      spinY: sY,
110
+      pixelX: pX,
111
+      pixelY: pY
112
+    };
113
+  },
114
+  handleMouseEnter: function handleMouseEnter() {
115
+    var swiper = this;
116
+    swiper.mouseEntered = true;
117
+  },
118
+  handleMouseLeave: function handleMouseLeave() {
119
+    var swiper = this;
120
+    swiper.mouseEntered = false;
121
+  },
122
+  handle: function handle(event) {
123
+    var e = event;
124
+    var swiper = this;
125
+    var params = swiper.params.mousewheel;
126
+
127
+    if (swiper.params.cssMode) {
128
+      e.preventDefault();
129
+    }
130
+
131
+    var target = swiper.$el;
132
+
133
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
134
+      target = $(swiper.params.mousewheel.eventsTarget);
135
+    }
136
+
137
+    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
138
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
139
+
140
+    var delta = 0;
141
+    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
142
+    var data = Mousewheel.normalize(e);
143
+
144
+    if (params.forceToAxis) {
145
+      if (swiper.isHorizontal()) {
146
+        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
147
+      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
148
+    } else {
149
+      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
150
+    }
151
+
152
+    if (delta === 0) return true;
153
+    if (params.invert) delta = -delta;
154
+
155
+    if (!swiper.params.freeMode) {
156
+      // Register the new event in a variable which stores the relevant data
157
+      var newEvent = {
158
+        time: now(),
159
+        delta: Math.abs(delta),
160
+        direction: Math.sign(delta),
161
+        raw: event
162
+      }; // Keep the most recent events
163
+
164
+      var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
165
+
166
+      if (recentWheelEvents.length >= 2) {
167
+        recentWheelEvents.shift(); // only store the last N events
168
+      }
169
+
170
+      var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
171
+      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
172
+      //   If direction has changed or
173
+      //   if the scroll is quicker than the previous one:
174
+      //     Animate the slider.
175
+      // Else (this is the first time the wheel is moved):
176
+      //     Animate the slider.
177
+
178
+      if (prevEvent) {
179
+        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
180
+          swiper.mousewheel.animateSlider(newEvent);
181
+        }
182
+      } else {
183
+        swiper.mousewheel.animateSlider(newEvent);
184
+      } // If it's time to release the scroll:
185
+      //   Return now so you don't hit the preventDefault.
186
+
187
+
188
+      if (swiper.mousewheel.releaseScroll(newEvent)) {
189
+        return true;
190
+      }
191
+    } else {
192
+      // Freemode or scrollContainer:
193
+      // If we recently snapped after a momentum scroll, then ignore wheel events
194
+      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
195
+      // or if it's a new scroll (larger delta or inverse sign as last event before
196
+      // an end-of-momentum snap).
197
+      var _newEvent = {
198
+        time: now(),
199
+        delta: Math.abs(delta),
200
+        direction: Math.sign(delta)
201
+      };
202
+      var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
203
+      var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
204
+
205
+      if (!ignoreWheelEvents) {
206
+        swiper.mousewheel.lastEventBeforeSnap = undefined;
207
+
208
+        if (swiper.params.loop) {
209
+          swiper.loopFix();
210
+        }
211
+
212
+        var position = swiper.getTranslate() + delta * params.sensitivity;
213
+        var wasBeginning = swiper.isBeginning;
214
+        var wasEnd = swiper.isEnd;
215
+        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
216
+        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
217
+        swiper.setTransition(0);
218
+        swiper.setTranslate(position);
219
+        swiper.updateProgress();
220
+        swiper.updateActiveIndex();
221
+        swiper.updateSlidesClasses();
222
+
223
+        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
224
+          swiper.updateSlidesClasses();
225
+        }
226
+
227
+        if (swiper.params.freeModeSticky) {
228
+          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
229
+          // the end of a momentum scroll by storing recent (N=15?) wheel events.
230
+          // 1. do all N events have decreasing or same (absolute value) delta?
231
+          // 2. did all N events arrive in the last M (M=500?) msecs?
232
+          // 3. does the earliest event have an (absolute value) delta that's
233
+          //    at least P (P=1?) larger than the most recent event's delta?
234
+          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
235
+          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
236
+          // Snap immediately and ignore remaining wheel events in this scroll.
237
+          // See comment above for "remaining wheel events in this scroll" determination.
238
+          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
239
+          clearTimeout(swiper.mousewheel.timeout);
240
+          swiper.mousewheel.timeout = undefined;
241
+          var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
242
+
243
+          if (_recentWheelEvents.length >= 15) {
244
+            _recentWheelEvents.shift(); // only store the last N events
245
+
246
+          }
247
+
248
+          var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
249
+
250
+          var firstEvent = _recentWheelEvents[0];
251
+
252
+          _recentWheelEvents.push(_newEvent);
253
+
254
+          if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
255
+            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
256
+            _recentWheelEvents.splice(0);
257
+          } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
258
+            // We're at the end of the deceleration of a momentum scroll, so there's no need
259
+            // to wait for more events. Snap ASAP on the next tick.
260
+            // Also, because there's some remaining momentum we'll bias the snap in the
261
+            // direction of the ongoing scroll because it's better UX for the scroll to snap
262
+            // in the same direction as the scroll instead of reversing to snap.  Therefore,
263
+            // if it's already scrolled more than 20% in the current direction, keep going.
264
+            var snapToThreshold = delta > 0 ? 0.8 : 0.2;
265
+            swiper.mousewheel.lastEventBeforeSnap = _newEvent;
266
+
267
+            _recentWheelEvents.splice(0);
268
+
269
+            swiper.mousewheel.timeout = nextTick(function () {
270
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
271
+            }, 0); // no delay; move on next tick
272
+          }
273
+
274
+          if (!swiper.mousewheel.timeout) {
275
+            // if we get here, then we haven't detected the end of a momentum scroll, so
276
+            // we'll consider a scroll "complete" when there haven't been any wheel events
277
+            // for 500ms.
278
+            swiper.mousewheel.timeout = nextTick(function () {
279
+              var snapToThreshold = 0.5;
280
+              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
281
+
282
+              _recentWheelEvents.splice(0);
283
+
284
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
285
+            }, 500);
286
+          }
287
+        } // Emit event
288
+
289
+
290
+        if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
291
+
292
+        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
293
+
294
+        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
295
+      }
296
+    }
297
+
298
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
299
+    return false;
300
+  },
301
+  animateSlider: function animateSlider(newEvent) {
302
+    var swiper = this;
303
+    var window = getWindow();
304
+
305
+    if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
306
+      // Prevent if delta of wheel scroll delta is below configured threshold
307
+      return false;
308
+    }
309
+
310
+    if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
311
+      // Prevent if time between scrolls is below configured threshold
312
+      return false;
313
+    } // If the movement is NOT big enough and
314
+    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
315
+    //   Don't go any further (avoid insignificant scroll movement).
316
+
317
+
318
+    if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {
319
+      // Return false as a default
320
+      return true;
321
+    } // If user is scrolling towards the end:
322
+    //   If the slider hasn't hit the latest slide or
323
+    //   if the slider is a loop and
324
+    //   if the slider isn't moving right now:
325
+    //     Go to next slide and
326
+    //     emit a scroll event.
327
+    // Else (the user is scrolling towards the beginning) and
328
+    // if the slider hasn't hit the first slide or
329
+    // if the slider is a loop and
330
+    // if the slider isn't moving right now:
331
+    //   Go to prev slide and
332
+    //   emit a scroll event.
333
+
334
+
335
+    if (newEvent.direction < 0) {
336
+      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
337
+        swiper.slideNext();
338
+        swiper.emit('scroll', newEvent.raw);
339
+      }
340
+    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
341
+      swiper.slidePrev();
342
+      swiper.emit('scroll', newEvent.raw);
343
+    } // If you got here is because an animation has been triggered so store the current time
344
+
345
+
346
+    swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
347
+
348
+    return false;
349
+  },
350
+  releaseScroll: function releaseScroll(newEvent) {
351
+    var swiper = this;
352
+    var params = swiper.params.mousewheel;
353
+
354
+    if (newEvent.direction < 0) {
355
+      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
356
+        // Return true to animate scroll on edges
357
+        return true;
358
+      }
359
+    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
360
+      // Return true to animate scroll on edges
361
+      return true;
362
+    }
363
+
364
+    return false;
365
+  },
366
+  enable: function enable() {
367
+    var swiper = this;
368
+    var event = Mousewheel.event();
369
+
370
+    if (swiper.params.cssMode) {
371
+      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
372
+      return true;
373
+    }
374
+
375
+    if (!event) return false;
376
+    if (swiper.mousewheel.enabled) return false;
377
+    var target = swiper.$el;
378
+
379
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
380
+      target = $(swiper.params.mousewheel.eventsTarget);
381
+    }
382
+
383
+    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
384
+    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
385
+    target.on(event, swiper.mousewheel.handle);
386
+    swiper.mousewheel.enabled = true;
387
+    return true;
388
+  },
389
+  disable: function disable() {
390
+    var swiper = this;
391
+    var event = Mousewheel.event();
392
+
393
+    if (swiper.params.cssMode) {
394
+      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
395
+      return true;
396
+    }
397
+
398
+    if (!event) return false;
399
+    if (!swiper.mousewheel.enabled) return false;
400
+    var target = swiper.$el;
401
+
402
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
403
+      target = $(swiper.params.mousewheel.eventsTarget);
404
+    }
405
+
406
+    target.off(event, swiper.mousewheel.handle);
407
+    swiper.mousewheel.enabled = false;
408
+    return true;
409
+  }
410
+};
411
+export default {
412
+  name: 'mousewheel',
413
+  params: {
414
+    mousewheel: {
415
+      enabled: false,
416
+      releaseOnEdges: false,
417
+      invert: false,
418
+      forceToAxis: false,
419
+      sensitivity: 1,
420
+      eventsTarget: 'container',
421
+      thresholdDelta: null,
422
+      thresholdTime: null
423
+    }
424
+  },
425
+  create: function create() {
426
+    var swiper = this;
427
+    bindModuleMethods(swiper, {
428
+      mousewheel: {
429
+        enabled: false,
430
+        lastScrollTime: now(),
431
+        lastEventBeforeSnap: undefined,
432
+        recentWheelEvents: [],
433
+        enable: Mousewheel.enable,
434
+        disable: Mousewheel.disable,
435
+        handle: Mousewheel.handle,
436
+        handleMouseEnter: Mousewheel.handleMouseEnter,
437
+        handleMouseLeave: Mousewheel.handleMouseLeave,
438
+        animateSlider: Mousewheel.animateSlider,
439
+        releaseScroll: Mousewheel.releaseScroll
440
+      }
441
+    });
442
+  },
443
+  on: {
444
+    init: function init(swiper) {
445
+      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
446
+        swiper.mousewheel.disable();
447
+      }
448
+
449
+      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
450
+    },
451
+    destroy: function destroy(swiper) {
452
+      if (swiper.params.cssMode) {
453
+        swiper.mousewheel.enable();
454
+      }
455
+
456
+      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
457
+    }
458
+  }
459
+};
0 460
\ No newline at end of file
1 461
new file mode 100644
... ...
@@ -0,0 +1,164 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { extend, bindModuleMethods } from '../../utils/utils';
5
+var Navigation = {
6
+  update: function update() {
7
+    // Update Navigation Buttons
8
+    var swiper = this;
9
+    var params = swiper.params.navigation;
10
+    if (swiper.params.loop) return;
11
+    var _swiper$navigation = swiper.navigation,
12
+        $nextEl = _swiper$navigation.$nextEl,
13
+        $prevEl = _swiper$navigation.$prevEl;
14
+
15
+    if ($prevEl && $prevEl.length > 0) {
16
+      if (swiper.isBeginning) {
17
+        $prevEl.addClass(params.disabledClass);
18
+      } else {
19
+        $prevEl.removeClass(params.disabledClass);
20
+      }
21
+
22
+      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
23
+    }
24
+
25
+    if ($nextEl && $nextEl.length > 0) {
26
+      if (swiper.isEnd) {
27
+        $nextEl.addClass(params.disabledClass);
28
+      } else {
29
+        $nextEl.removeClass(params.disabledClass);
30
+      }
31
+
32
+      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
33
+    }
34
+  },
35
+  onPrevClick: function onPrevClick(e) {
36
+    var swiper = this;
37
+    e.preventDefault();
38
+    if (swiper.isBeginning && !swiper.params.loop) return;
39
+    swiper.slidePrev();
40
+  },
41
+  onNextClick: function onNextClick(e) {
42
+    var swiper = this;
43
+    e.preventDefault();
44
+    if (swiper.isEnd && !swiper.params.loop) return;
45
+    swiper.slideNext();
46
+  },
47
+  init: function init() {
48
+    var swiper = this;
49
+    var params = swiper.params.navigation;
50
+    if (!(params.nextEl || params.prevEl)) return;
51
+    var $nextEl;
52
+    var $prevEl;
53
+
54
+    if (params.nextEl) {
55
+      $nextEl = $(params.nextEl);
56
+
57
+      if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
58
+        $nextEl = swiper.$el.find(params.nextEl);
59
+      }
60
+    }
61
+
62
+    if (params.prevEl) {
63
+      $prevEl = $(params.prevEl);
64
+
65
+      if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
66
+        $prevEl = swiper.$el.find(params.prevEl);
67
+      }
68
+    }
69
+
70
+    if ($nextEl && $nextEl.length > 0) {
71
+      $nextEl.on('click', swiper.navigation.onNextClick);
72
+    }
73
+
74
+    if ($prevEl && $prevEl.length > 0) {
75
+      $prevEl.on('click', swiper.navigation.onPrevClick);
76
+    }
77
+
78
+    extend(swiper.navigation, {
79
+      $nextEl: $nextEl,
80
+      nextEl: $nextEl && $nextEl[0],
81
+      $prevEl: $prevEl,
82
+      prevEl: $prevEl && $prevEl[0]
83
+    });
84
+  },
85
+  destroy: function destroy() {
86
+    var swiper = this;
87
+    var _swiper$navigation2 = swiper.navigation,
88
+        $nextEl = _swiper$navigation2.$nextEl,
89
+        $prevEl = _swiper$navigation2.$prevEl;
90
+
91
+    if ($nextEl && $nextEl.length) {
92
+      $nextEl.off('click', swiper.navigation.onNextClick);
93
+      $nextEl.removeClass(swiper.params.navigation.disabledClass);
94
+    }
95
+
96
+    if ($prevEl && $prevEl.length) {
97
+      $prevEl.off('click', swiper.navigation.onPrevClick);
98
+      $prevEl.removeClass(swiper.params.navigation.disabledClass);
99
+    }
100
+  }
101
+};
102
+export default {
103
+  name: 'navigation',
104
+  params: {
105
+    navigation: {
106
+      nextEl: null,
107
+      prevEl: null,
108
+      hideOnClick: false,
109
+      disabledClass: 'swiper-button-disabled',
110
+      hiddenClass: 'swiper-button-hidden',
111
+      lockClass: 'swiper-button-lock'
112
+    }
113
+  },
114
+  create: function create() {
115
+    var swiper = this;
116
+    bindModuleMethods(swiper, {
117
+      navigation: _extends({}, Navigation)
118
+    });
119
+  },
120
+  on: {
121
+    init: function init(swiper) {
122
+      swiper.navigation.init();
123
+      swiper.navigation.update();
124
+    },
125
+    toEdge: function toEdge(swiper) {
126
+      swiper.navigation.update();
127
+    },
128
+    fromEdge: function fromEdge(swiper) {
129
+      swiper.navigation.update();
130
+    },
131
+    destroy: function destroy(swiper) {
132
+      swiper.navigation.destroy();
133
+    },
134
+    click: function click(swiper, e) {
135
+      var _swiper$navigation3 = swiper.navigation,
136
+          $nextEl = _swiper$navigation3.$nextEl,
137
+          $prevEl = _swiper$navigation3.$prevEl;
138
+
139
+      if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {
140
+        var isHidden;
141
+
142
+        if ($nextEl) {
143
+          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
144
+        } else if ($prevEl) {
145
+          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
146
+        }
147
+
148
+        if (isHidden === true) {
149
+          swiper.emit('navigationShow');
150
+        } else {
151
+          swiper.emit('navigationHide');
152
+        }
153
+
154
+        if ($nextEl) {
155
+          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
156
+        }
157
+
158
+        if ($prevEl) {
159
+          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
160
+        }
161
+      }
162
+    }
163
+  }
164
+};
0 165
\ No newline at end of file
1 166
new file mode 100644
... ...
@@ -0,0 +1,357 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { extend, bindModuleMethods } from '../../utils/utils';
5
+var Pagination = {
6
+  update: function update() {
7
+    // Render || Update Pagination bullets/items
8
+    var swiper = this;
9
+    var rtl = swiper.rtl;
10
+    var params = swiper.params.pagination;
11
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
12
+    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
13
+    var $el = swiper.pagination.$el; // Current/Total
14
+
15
+    var current;
16
+    var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
17
+
18
+    if (swiper.params.loop) {
19
+      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
20
+
21
+      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
22
+        current -= slidesLength - swiper.loopedSlides * 2;
23
+      }
24
+
25
+      if (current > total - 1) current -= total;
26
+      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
27
+    } else if (typeof swiper.snapIndex !== 'undefined') {
28
+      current = swiper.snapIndex;
29
+    } else {
30
+      current = swiper.activeIndex || 0;
31
+    } // Types
32
+
33
+
34
+    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
35
+      var bullets = swiper.pagination.bullets;
36
+      var firstIndex;
37
+      var lastIndex;
38
+      var midIndex;
39
+
40
+      if (params.dynamicBullets) {
41
+        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
42
+        $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
43
+
44
+        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
45
+          swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
46
+
47
+          if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
48
+            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
49
+          } else if (swiper.pagination.dynamicBulletIndex < 0) {
50
+            swiper.pagination.dynamicBulletIndex = 0;
51
+          }
52
+        }
53
+
54
+        firstIndex = current - swiper.pagination.dynamicBulletIndex;
55
+        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
56
+        midIndex = (lastIndex + firstIndex) / 2;
57
+      }
58
+
59
+      bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
60
+
61
+      if ($el.length > 1) {
62
+        bullets.each(function (bullet) {
63
+          var $bullet = $(bullet);
64
+          var bulletIndex = $bullet.index();
65
+
66
+          if (bulletIndex === current) {
67
+            $bullet.addClass(params.bulletActiveClass);
68
+          }
69
+
70
+          if (params.dynamicBullets) {
71
+            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
72
+              $bullet.addClass(params.bulletActiveClass + "-main");
73
+            }
74
+
75
+            if (bulletIndex === firstIndex) {
76
+              $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
77
+            }
78
+
79
+            if (bulletIndex === lastIndex) {
80
+              $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
81
+            }
82
+          }
83
+        });
84
+      } else {
85
+        var $bullet = bullets.eq(current);
86
+        var bulletIndex = $bullet.index();
87
+        $bullet.addClass(params.bulletActiveClass);
88
+
89
+        if (params.dynamicBullets) {
90
+          var $firstDisplayedBullet = bullets.eq(firstIndex);
91
+          var $lastDisplayedBullet = bullets.eq(lastIndex);
92
+
93
+          for (var i = firstIndex; i <= lastIndex; i += 1) {
94
+            bullets.eq(i).addClass(params.bulletActiveClass + "-main");
95
+          }
96
+
97
+          if (swiper.params.loop) {
98
+            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
99
+              for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
100
+                bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
101
+              }
102
+
103
+              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
104
+            } else {
105
+              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
106
+              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
107
+            }
108
+          } else {
109
+            $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
110
+            $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
111
+          }
112
+        }
113
+      }
114
+
115
+      if (params.dynamicBullets) {
116
+        var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
117
+        var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
118
+        var offsetProp = rtl ? 'right' : 'left';
119
+        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
120
+      }
121
+    }
122
+
123
+    if (params.type === 'fraction') {
124
+      $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
125
+      $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
126
+    }
127
+
128
+    if (params.type === 'progressbar') {
129
+      var progressbarDirection;
130
+
131
+      if (params.progressbarOpposite) {
132
+        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
133
+      } else {
134
+        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
135
+      }
136
+
137
+      var scale = (current + 1) / total;
138
+      var scaleX = 1;
139
+      var scaleY = 1;
140
+
141
+      if (progressbarDirection === 'horizontal') {
142
+        scaleX = scale;
143
+      } else {
144
+        scaleY = scale;
145
+      }
146
+
147
+      $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
148
+    }
149
+
150
+    if (params.type === 'custom' && params.renderCustom) {
151
+      $el.html(params.renderCustom(swiper, current + 1, total));
152
+      swiper.emit('paginationRender', $el[0]);
153
+    } else {
154
+      swiper.emit('paginationUpdate', $el[0]);
155
+    }
156
+
157
+    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
158
+  },
159
+  render: function render() {
160
+    // Render Container
161
+    var swiper = this;
162
+    var params = swiper.params.pagination;
163
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
164
+    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
165
+    var $el = swiper.pagination.$el;
166
+    var paginationHTML = '';
167
+
168
+    if (params.type === 'bullets') {
169
+      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
170
+
171
+      for (var i = 0; i < numberOfBullets; i += 1) {
172
+        if (params.renderBullet) {
173
+          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
174
+        } else {
175
+          paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
176
+        }
177
+      }
178
+
179
+      $el.html(paginationHTML);
180
+      swiper.pagination.bullets = $el.find("." + params.bulletClass);
181
+    }
182
+
183
+    if (params.type === 'fraction') {
184
+      if (params.renderFraction) {
185
+        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
186
+      } else {
187
+        paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
188
+      }
189
+
190
+      $el.html(paginationHTML);
191
+    }
192
+
193
+    if (params.type === 'progressbar') {
194
+      if (params.renderProgressbar) {
195
+        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
196
+      } else {
197
+        paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
198
+      }
199
+
200
+      $el.html(paginationHTML);
201
+    }
202
+
203
+    if (params.type !== 'custom') {
204
+      swiper.emit('paginationRender', swiper.pagination.$el[0]);
205
+    }
206
+  },
207
+  init: function init() {
208
+    var swiper = this;
209
+    var params = swiper.params.pagination;
210
+    if (!params.el) return;
211
+    var $el = $(params.el);
212
+    if ($el.length === 0) return;
213
+
214
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
215
+      $el = swiper.$el.find(params.el);
216
+    }
217
+
218
+    if (params.type === 'bullets' && params.clickable) {
219
+      $el.addClass(params.clickableClass);
220
+    }
221
+
222
+    $el.addClass(params.modifierClass + params.type);
223
+
224
+    if (params.type === 'bullets' && params.dynamicBullets) {
225
+      $el.addClass("" + params.modifierClass + params.type + "-dynamic");
226
+      swiper.pagination.dynamicBulletIndex = 0;
227
+
228
+      if (params.dynamicMainBullets < 1) {
229
+        params.dynamicMainBullets = 1;
230
+      }
231
+    }
232
+
233
+    if (params.type === 'progressbar' && params.progressbarOpposite) {
234
+      $el.addClass(params.progressbarOppositeClass);
235
+    }
236
+
237
+    if (params.clickable) {
238
+      $el.on('click', "." + params.bulletClass, function onClick(e) {
239
+        e.preventDefault();
240
+        var index = $(this).index() * swiper.params.slidesPerGroup;
241
+        if (swiper.params.loop) index += swiper.loopedSlides;
242
+        swiper.slideTo(index);
243
+      });
244
+    }
245
+
246
+    extend(swiper.pagination, {
247
+      $el: $el,
248
+      el: $el[0]
249
+    });
250
+  },
251
+  destroy: function destroy() {
252
+    var swiper = this;
253
+    var params = swiper.params.pagination;
254
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
255
+    var $el = swiper.pagination.$el;
256
+    $el.removeClass(params.hiddenClass);
257
+    $el.removeClass(params.modifierClass + params.type);
258
+    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
259
+
260
+    if (params.clickable) {
261
+      $el.off('click', "." + params.bulletClass);
262
+    }
263
+  }
264
+};
265
+export default {
266
+  name: 'pagination',
267
+  params: {
268
+    pagination: {
269
+      el: null,
270
+      bulletElement: 'span',
271
+      clickable: false,
272
+      hideOnClick: false,
273
+      renderBullet: null,
274
+      renderProgressbar: null,
275
+      renderFraction: null,
276
+      renderCustom: null,
277
+      progressbarOpposite: false,
278
+      type: 'bullets',
279
+      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
280
+      dynamicBullets: false,
281
+      dynamicMainBullets: 1,
282
+      formatFractionCurrent: function formatFractionCurrent(number) {
283
+        return number;
284
+      },
285
+      formatFractionTotal: function formatFractionTotal(number) {
286
+        return number;
287
+      },
288
+      bulletClass: 'swiper-pagination-bullet',
289
+      bulletActiveClass: 'swiper-pagination-bullet-active',
290
+      modifierClass: 'swiper-pagination-',
291
+      // NEW
292
+      currentClass: 'swiper-pagination-current',
293
+      totalClass: 'swiper-pagination-total',
294
+      hiddenClass: 'swiper-pagination-hidden',
295
+      progressbarFillClass: 'swiper-pagination-progressbar-fill',
296
+      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
297
+      clickableClass: 'swiper-pagination-clickable',
298
+      // NEW
299
+      lockClass: 'swiper-pagination-lock'
300
+    }
301
+  },
302
+  create: function create() {
303
+    var swiper = this;
304
+    bindModuleMethods(swiper, {
305
+      pagination: _extends({
306
+        dynamicBulletIndex: 0
307
+      }, Pagination)
308
+    });
309
+  },
310
+  on: {
311
+    init: function init(swiper) {
312
+      swiper.pagination.init();
313
+      swiper.pagination.render();
314
+      swiper.pagination.update();
315
+    },
316
+    activeIndexChange: function activeIndexChange(swiper) {
317
+      if (swiper.params.loop) {
318
+        swiper.pagination.update();
319
+      } else if (typeof swiper.snapIndex === 'undefined') {
320
+        swiper.pagination.update();
321
+      }
322
+    },
323
+    snapIndexChange: function snapIndexChange(swiper) {
324
+      if (!swiper.params.loop) {
325
+        swiper.pagination.update();
326
+      }
327
+    },
328
+    slidesLengthChange: function slidesLengthChange(swiper) {
329
+      if (swiper.params.loop) {
330
+        swiper.pagination.render();
331
+        swiper.pagination.update();
332
+      }
333
+    },
334
+    snapGridLengthChange: function snapGridLengthChange(swiper) {
335
+      if (!swiper.params.loop) {
336
+        swiper.pagination.render();
337
+        swiper.pagination.update();
338
+      }
339
+    },
340
+    destroy: function destroy(swiper) {
341
+      swiper.pagination.destroy();
342
+    },
343
+    click: function click(swiper, e) {
344
+      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {
345
+        var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
346
+
347
+        if (isHidden === true) {
348
+          swiper.emit('paginationShow');
349
+        } else {
350
+          swiper.emit('paginationHide');
351
+        }
352
+
353
+        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
354
+      }
355
+    }
356
+  }
357
+};
0 358
\ No newline at end of file
1 359
new file mode 100644
... ...
@@ -0,0 +1,121 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { bindModuleMethods } from '../../utils/utils';
5
+var Parallax = {
6
+  setTransform: function setTransform(el, progress) {
7
+    var swiper = this;
8
+    var rtl = swiper.rtl;
9
+    var $el = $(el);
10
+    var rtlFactor = rtl ? -1 : 1;
11
+    var p = $el.attr('data-swiper-parallax') || '0';
12
+    var x = $el.attr('data-swiper-parallax-x');
13
+    var y = $el.attr('data-swiper-parallax-y');
14
+    var scale = $el.attr('data-swiper-parallax-scale');
15
+    var opacity = $el.attr('data-swiper-parallax-opacity');
16
+
17
+    if (x || y) {
18
+      x = x || '0';
19
+      y = y || '0';
20
+    } else if (swiper.isHorizontal()) {
21
+      x = p;
22
+      y = '0';
23
+    } else {
24
+      y = p;
25
+      x = '0';
26
+    }
27
+
28
+    if (x.indexOf('%') >= 0) {
29
+      x = parseInt(x, 10) * progress * rtlFactor + "%";
30
+    } else {
31
+      x = x * progress * rtlFactor + "px";
32
+    }
33
+
34
+    if (y.indexOf('%') >= 0) {
35
+      y = parseInt(y, 10) * progress + "%";
36
+    } else {
37
+      y = y * progress + "px";
38
+    }
39
+
40
+    if (typeof opacity !== 'undefined' && opacity !== null) {
41
+      var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
42
+      $el[0].style.opacity = currentOpacity;
43
+    }
44
+
45
+    if (typeof scale === 'undefined' || scale === null) {
46
+      $el.transform("translate3d(" + x + ", " + y + ", 0px)");
47
+    } else {
48
+      var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
49
+      $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
50
+    }
51
+  },
52
+  setTranslate: function setTranslate() {
53
+    var swiper = this;
54
+    var $el = swiper.$el,
55
+        slides = swiper.slides,
56
+        progress = swiper.progress,
57
+        snapGrid = swiper.snapGrid;
58
+    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
59
+      swiper.parallax.setTransform(el, progress);
60
+    });
61
+    slides.each(function (slideEl, slideIndex) {
62
+      var slideProgress = slideEl.progress;
63
+
64
+      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
65
+        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
66
+      }
67
+
68
+      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
69
+      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
70
+        swiper.parallax.setTransform(el, slideProgress);
71
+      });
72
+    });
73
+  },
74
+  setTransition: function setTransition(duration) {
75
+    if (duration === void 0) {
76
+      duration = this.params.speed;
77
+    }
78
+
79
+    var swiper = this;
80
+    var $el = swiper.$el;
81
+    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
82
+      var $parallaxEl = $(parallaxEl);
83
+      var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
84
+      if (duration === 0) parallaxDuration = 0;
85
+      $parallaxEl.transition(parallaxDuration);
86
+    });
87
+  }
88
+};
89
+export default {
90
+  name: 'parallax',
91
+  params: {
92
+    parallax: {
93
+      enabled: false
94
+    }
95
+  },
96
+  create: function create() {
97
+    var swiper = this;
98
+    bindModuleMethods(swiper, {
99
+      parallax: _extends({}, Parallax)
100
+    });
101
+  },
102
+  on: {
103
+    beforeInit: function beforeInit(swiper) {
104
+      if (!swiper.params.parallax.enabled) return;
105
+      swiper.params.watchSlidesProgress = true;
106
+      swiper.originalParams.watchSlidesProgress = true;
107
+    },
108
+    init: function init(swiper) {
109
+      if (!swiper.params.parallax.enabled) return;
110
+      swiper.parallax.setTranslate();
111
+    },
112
+    setTranslate: function setTranslate(swiper) {
113
+      if (!swiper.params.parallax.enabled) return;
114
+      swiper.parallax.setTranslate();
115
+    },
116
+    setTransition: function setTransition(swiper, duration) {
117
+      if (!swiper.params.parallax.enabled) return;
118
+      swiper.parallax.setTransition(duration);
119
+    }
120
+  }
121
+};
0 122
\ No newline at end of file
1 123
new file mode 100644
... ...
@@ -0,0 +1,345 @@
1
+function _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); }
2
+
3
+import { getDocument } from 'ssr-window';
4
+import $ from '../../utils/dom';
5
+import { extend, nextTick, bindModuleMethods } from '../../utils/utils';
6
+var Scrollbar = {
7
+  setTranslate: function setTranslate() {
8
+    var swiper = this;
9
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10
+    var scrollbar = swiper.scrollbar,
11
+        rtl = swiper.rtlTranslate,
12
+        progress = swiper.progress;
13
+    var dragSize = scrollbar.dragSize,
14
+        trackSize = scrollbar.trackSize,
15
+        $dragEl = scrollbar.$dragEl,
16
+        $el = scrollbar.$el;
17
+    var params = swiper.params.scrollbar;
18
+    var newSize = dragSize;
19
+    var newPos = (trackSize - dragSize) * progress;
20
+
21
+    if (rtl) {
22
+      newPos = -newPos;
23
+
24
+      if (newPos > 0) {
25
+        newSize = dragSize - newPos;
26
+        newPos = 0;
27
+      } else if (-newPos + dragSize > trackSize) {
28
+        newSize = trackSize + newPos;
29
+      }
30
+    } else if (newPos < 0) {
31
+      newSize = dragSize + newPos;
32
+      newPos = 0;
33
+    } else if (newPos + dragSize > trackSize) {
34
+      newSize = trackSize - newPos;
35
+    }
36
+
37
+    if (swiper.isHorizontal()) {
38
+      $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
39
+      $dragEl[0].style.width = newSize + "px";
40
+    } else {
41
+      $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
42
+      $dragEl[0].style.height = newSize + "px";
43
+    }
44
+
45
+    if (params.hide) {
46
+      clearTimeout(swiper.scrollbar.timeout);
47
+      $el[0].style.opacity = 1;
48
+      swiper.scrollbar.timeout = setTimeout(function () {
49
+        $el[0].style.opacity = 0;
50
+        $el.transition(400);
51
+      }, 1000);
52
+    }
53
+  },
54
+  setTransition: function setTransition(duration) {
55
+    var swiper = this;
56
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
57
+    swiper.scrollbar.$dragEl.transition(duration);
58
+  },
59
+  updateSize: function updateSize() {
60
+    var swiper = this;
61
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
62
+    var scrollbar = swiper.scrollbar;
63
+    var $dragEl = scrollbar.$dragEl,
64
+        $el = scrollbar.$el;
65
+    $dragEl[0].style.width = '';
66
+    $dragEl[0].style.height = '';
67
+    var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
68
+    var divider = swiper.size / swiper.virtualSize;
69
+    var moveDivider = divider * (trackSize / swiper.size);
70
+    var dragSize;
71
+
72
+    if (swiper.params.scrollbar.dragSize === 'auto') {
73
+      dragSize = trackSize * divider;
74
+    } else {
75
+      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
76
+    }
77
+
78
+    if (swiper.isHorizontal()) {
79
+      $dragEl[0].style.width = dragSize + "px";
80
+    } else {
81
+      $dragEl[0].style.height = dragSize + "px";
82
+    }
83
+
84
+    if (divider >= 1) {
85
+      $el[0].style.display = 'none';
86
+    } else {
87
+      $el[0].style.display = '';
88
+    }
89
+
90
+    if (swiper.params.scrollbar.hide) {
91
+      $el[0].style.opacity = 0;
92
+    }
93
+
94
+    extend(scrollbar, {
95
+      trackSize: trackSize,
96
+      divider: divider,
97
+      moveDivider: moveDivider,
98
+      dragSize: dragSize
99
+    });
100
+    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
101
+  },
102
+  getPointerPosition: function getPointerPosition(e) {
103
+    var swiper = this;
104
+
105
+    if (swiper.isHorizontal()) {
106
+      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
107
+    }
108
+
109
+    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
110
+  },
111
+  setDragPosition: function setDragPosition(e) {
112
+    var swiper = this;
113
+    var scrollbar = swiper.scrollbar,
114
+        rtl = swiper.rtlTranslate;
115
+    var $el = scrollbar.$el,
116
+        dragSize = scrollbar.dragSize,
117
+        trackSize = scrollbar.trackSize,
118
+        dragStartPos = scrollbar.dragStartPos;
119
+    var positionRatio;
120
+    positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
121
+    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
122
+
123
+    if (rtl) {
124
+      positionRatio = 1 - positionRatio;
125
+    }
126
+
127
+    var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
128
+    swiper.updateProgress(position);
129
+    swiper.setTranslate(position);
130
+    swiper.updateActiveIndex();
131
+    swiper.updateSlidesClasses();
132
+  },
133
+  onDragStart: function onDragStart(e) {
134
+    var swiper = this;
135
+    var params = swiper.params.scrollbar;
136
+    var scrollbar = swiper.scrollbar,
137
+        $wrapperEl = swiper.$wrapperEl;
138
+    var $el = scrollbar.$el,
139
+        $dragEl = scrollbar.$dragEl;
140
+    swiper.scrollbar.isTouched = true;
141
+    swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
142
+    e.preventDefault();
143
+    e.stopPropagation();
144
+    $wrapperEl.transition(100);
145
+    $dragEl.transition(100);
146
+    scrollbar.setDragPosition(e);
147
+    clearTimeout(swiper.scrollbar.dragTimeout);
148
+    $el.transition(0);
149
+
150
+    if (params.hide) {
151
+      $el.css('opacity', 1);
152
+    }
153
+
154
+    if (swiper.params.cssMode) {
155
+      swiper.$wrapperEl.css('scroll-snap-type', 'none');
156
+    }
157
+
158
+    swiper.emit('scrollbarDragStart', e);
159
+  },
160
+  onDragMove: function onDragMove(e) {
161
+    var swiper = this;
162
+    var scrollbar = swiper.scrollbar,
163
+        $wrapperEl = swiper.$wrapperEl;
164
+    var $el = scrollbar.$el,
165
+        $dragEl = scrollbar.$dragEl;
166
+    if (!swiper.scrollbar.isTouched) return;
167
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
168
+    scrollbar.setDragPosition(e);
169
+    $wrapperEl.transition(0);
170
+    $el.transition(0);
171
+    $dragEl.transition(0);
172
+    swiper.emit('scrollbarDragMove', e);
173
+  },
174
+  onDragEnd: function onDragEnd(e) {
175
+    var swiper = this;
176
+    var params = swiper.params.scrollbar;
177
+    var scrollbar = swiper.scrollbar,
178
+        $wrapperEl = swiper.$wrapperEl;
179
+    var $el = scrollbar.$el;
180
+    if (!swiper.scrollbar.isTouched) return;
181
+    swiper.scrollbar.isTouched = false;
182
+
183
+    if (swiper.params.cssMode) {
184
+      swiper.$wrapperEl.css('scroll-snap-type', '');
185
+      $wrapperEl.transition('');
186
+    }
187
+
188
+    if (params.hide) {
189
+      clearTimeout(swiper.scrollbar.dragTimeout);
190
+      swiper.scrollbar.dragTimeout = nextTick(function () {
191
+        $el.css('opacity', 0);
192
+        $el.transition(400);
193
+      }, 1000);
194
+    }
195
+
196
+    swiper.emit('scrollbarDragEnd', e);
197
+
198
+    if (params.snapOnRelease) {
199
+      swiper.slideToClosest();
200
+    }
201
+  },
202
+  enableDraggable: function enableDraggable() {
203
+    var swiper = this;
204
+    if (!swiper.params.scrollbar.el) return;
205
+    var document = getDocument();
206
+    var scrollbar = swiper.scrollbar,
207
+        touchEventsTouch = swiper.touchEventsTouch,
208
+        touchEventsDesktop = swiper.touchEventsDesktop,
209
+        params = swiper.params,
210
+        support = swiper.support;
211
+    var $el = scrollbar.$el;
212
+    var target = $el[0];
213
+    var activeListener = support.passiveListener && params.passiveListeners ? {
214
+      passive: false,
215
+      capture: false
216
+    } : false;
217
+    var passiveListener = support.passiveListener && params.passiveListeners ? {
218
+      passive: true,
219
+      capture: false
220
+    } : false;
221
+
222
+    if (!support.touch) {
223
+      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
224
+      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
225
+      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
226
+    } else {
227
+      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
228
+      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
229
+      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
230
+    }
231
+  },
232
+  disableDraggable: function disableDraggable() {
233
+    var swiper = this;
234
+    if (!swiper.params.scrollbar.el) return;
235
+    var document = getDocument();
236
+    var scrollbar = swiper.scrollbar,
237
+        touchEventsTouch = swiper.touchEventsTouch,
238
+        touchEventsDesktop = swiper.touchEventsDesktop,
239
+        params = swiper.params,
240
+        support = swiper.support;
241
+    var $el = scrollbar.$el;
242
+    var target = $el[0];
243
+    var activeListener = support.passiveListener && params.passiveListeners ? {
244
+      passive: false,
245
+      capture: false
246
+    } : false;
247
+    var passiveListener = support.passiveListener && params.passiveListeners ? {
248
+      passive: true,
249
+      capture: false
250
+    } : false;
251
+
252
+    if (!support.touch) {
253
+      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
254
+      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
255
+      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
256
+    } else {
257
+      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
258
+      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
259
+      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
260
+    }
261
+  },
262
+  init: function init() {
263
+    var swiper = this;
264
+    if (!swiper.params.scrollbar.el) return;
265
+    var scrollbar = swiper.scrollbar,
266
+        $swiperEl = swiper.$el;
267
+    var params = swiper.params.scrollbar;
268
+    var $el = $(params.el);
269
+
270
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
271
+      $el = $swiperEl.find(params.el);
272
+    }
273
+
274
+    var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
275
+
276
+    if ($dragEl.length === 0) {
277
+      $dragEl = $("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
278
+      $el.append($dragEl);
279
+    }
280
+
281
+    extend(scrollbar, {
282
+      $el: $el,
283
+      el: $el[0],
284
+      $dragEl: $dragEl,
285
+      dragEl: $dragEl[0]
286
+    });
287
+
288
+    if (params.draggable) {
289
+      scrollbar.enableDraggable();
290
+    }
291
+  },
292
+  destroy: function destroy() {
293
+    var swiper = this;
294
+    swiper.scrollbar.disableDraggable();
295
+  }
296
+};
297
+export default {
298
+  name: 'scrollbar',
299
+  params: {
300
+    scrollbar: {
301
+      el: null,
302
+      dragSize: 'auto',
303
+      hide: false,
304
+      draggable: false,
305
+      snapOnRelease: true,
306
+      lockClass: 'swiper-scrollbar-lock',
307
+      dragClass: 'swiper-scrollbar-drag'
308
+    }
309
+  },
310
+  create: function create() {
311
+    var swiper = this;
312
+    bindModuleMethods(swiper, {
313
+      scrollbar: _extends({
314
+        isTouched: false,
315
+        timeout: null,
316
+        dragTimeout: null
317
+      }, Scrollbar)
318
+    });
319
+  },
320
+  on: {
321
+    init: function init(swiper) {
322
+      swiper.scrollbar.init();
323
+      swiper.scrollbar.updateSize();
324
+      swiper.scrollbar.setTranslate();
325
+    },
326
+    update: function update(swiper) {
327
+      swiper.scrollbar.updateSize();
328
+    },
329
+    resize: function resize(swiper) {
330
+      swiper.scrollbar.updateSize();
331
+    },
332
+    observerUpdate: function observerUpdate(swiper) {
333
+      swiper.scrollbar.updateSize();
334
+    },
335
+    setTranslate: function setTranslate(swiper) {
336
+      swiper.scrollbar.setTranslate();
337
+    },
338
+    setTransition: function setTransition(swiper, duration) {
339
+      swiper.scrollbar.setTransition(duration);
340
+    },
341
+    destroy: function destroy(swiper) {
342
+      swiper.scrollbar.destroy();
343
+    }
344
+  }
345
+};
0 346
\ No newline at end of file
1 347
new file mode 100644
... ...
@@ -0,0 +1,202 @@
1
+function _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); }
2
+
3
+import { extend, isObject, bindModuleMethods } from '../../utils/utils';
4
+import $ from '../../utils/dom';
5
+var Thumbs = {
6
+  init: function init() {
7
+    var swiper = this;
8
+    var thumbsParams = swiper.params.thumbs;
9
+    if (swiper.thumbs.initialized) return false;
10
+    swiper.thumbs.initialized = true;
11
+    var SwiperClass = swiper.constructor;
12
+
13
+    if (thumbsParams.swiper instanceof SwiperClass) {
14
+      swiper.thumbs.swiper = thumbsParams.swiper;
15
+      extend(swiper.thumbs.swiper.originalParams, {
16
+        watchSlidesProgress: true,
17
+        slideToClickedSlide: false
18
+      });
19
+      extend(swiper.thumbs.swiper.params, {
20
+        watchSlidesProgress: true,
21
+        slideToClickedSlide: false
22
+      });
23
+    } else if (isObject(thumbsParams.swiper)) {
24
+      swiper.thumbs.swiper = new SwiperClass(extend({}, thumbsParams.swiper, {
25
+        watchSlidesVisibility: true,
26
+        watchSlidesProgress: true,
27
+        slideToClickedSlide: false
28
+      }));
29
+      swiper.thumbs.swiperCreated = true;
30
+    }
31
+
32
+    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
33
+    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
34
+    return true;
35
+  },
36
+  onThumbClick: function onThumbClick() {
37
+    var swiper = this;
38
+    var thumbsSwiper = swiper.thumbs.swiper;
39
+    if (!thumbsSwiper) return;
40
+    var clickedIndex = thumbsSwiper.clickedIndex;
41
+    var clickedSlide = thumbsSwiper.clickedSlide;
42
+    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
43
+    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
44
+    var slideToIndex;
45
+
46
+    if (thumbsSwiper.params.loop) {
47
+      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
48
+    } else {
49
+      slideToIndex = clickedIndex;
50
+    }
51
+
52
+    if (swiper.params.loop) {
53
+      var currentIndex = swiper.activeIndex;
54
+
55
+      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
56
+        swiper.loopFix(); // eslint-disable-next-line
57
+
58
+        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
59
+        currentIndex = swiper.activeIndex;
60
+      }
61
+
62
+      var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
63
+      var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
64
+      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
65
+    }
66
+
67
+    swiper.slideTo(slideToIndex);
68
+  },
69
+  update: function update(initial) {
70
+    var swiper = this;
71
+    var thumbsSwiper = swiper.thumbs.swiper;
72
+    if (!thumbsSwiper) return;
73
+    var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
74
+    var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
75
+    var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
76
+
77
+    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
78
+      var currentThumbsIndex = thumbsSwiper.activeIndex;
79
+      var newThumbsIndex;
80
+      var direction;
81
+
82
+      if (thumbsSwiper.params.loop) {
83
+        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
84
+          thumbsSwiper.loopFix(); // eslint-disable-next-line
85
+
86
+          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
87
+          currentThumbsIndex = thumbsSwiper.activeIndex;
88
+        } // Find actual thumbs index to slide to
89
+
90
+
91
+        var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
92
+        var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
93
+        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
94
+        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
95
+      } else {
96
+        newThumbsIndex = swiper.realIndex;
97
+        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
98
+      }
99
+
100
+      if (useOffset) {
101
+        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
102
+      }
103
+
104
+      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
105
+        if (thumbsSwiper.params.centeredSlides) {
106
+          if (newThumbsIndex > currentThumbsIndex) {
107
+            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
108
+          } else {
109
+            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
110
+          }
111
+        } else if (newThumbsIndex > currentThumbsIndex) {
112
+          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
113
+        }
114
+
115
+        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
116
+      }
117
+    } // Activate thumbs
118
+
119
+
120
+    var thumbsToActivate = 1;
121
+    var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
122
+
123
+    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
124
+      thumbsToActivate = swiper.params.slidesPerView;
125
+    }
126
+
127
+    if (!swiper.params.thumbs.multipleActiveThumbs) {
128
+      thumbsToActivate = 1;
129
+    }
130
+
131
+    thumbsToActivate = Math.floor(thumbsToActivate);
132
+    thumbsSwiper.slides.removeClass(thumbActiveClass);
133
+
134
+    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
135
+      for (var i = 0; i < thumbsToActivate; i += 1) {
136
+        thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
137
+      }
138
+    } else {
139
+      for (var _i = 0; _i < thumbsToActivate; _i += 1) {
140
+        thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
141
+      }
142
+    }
143
+  }
144
+};
145
+export default {
146
+  name: 'thumbs',
147
+  params: {
148
+    thumbs: {
149
+      swiper: null,
150
+      multipleActiveThumbs: true,
151
+      autoScrollOffset: 0,
152
+      slideThumbActiveClass: 'swiper-slide-thumb-active',
153
+      thumbsContainerClass: 'swiper-container-thumbs'
154
+    }
155
+  },
156
+  create: function create() {
157
+    var swiper = this;
158
+    bindModuleMethods(swiper, {
159
+      thumbs: _extends({
160
+        swiper: null,
161
+        initialized: false
162
+      }, Thumbs)
163
+    });
164
+  },
165
+  on: {
166
+    beforeInit: function beforeInit(swiper) {
167
+      var thumbs = swiper.params.thumbs;
168
+      if (!thumbs || !thumbs.swiper) return;
169
+      swiper.thumbs.init();
170
+      swiper.thumbs.update(true);
171
+    },
172
+    slideChange: function slideChange(swiper) {
173
+      if (!swiper.thumbs.swiper) return;
174
+      swiper.thumbs.update();
175
+    },
176
+    update: function update(swiper) {
177
+      if (!swiper.thumbs.swiper) return;
178
+      swiper.thumbs.update();
179
+    },
180
+    resize: function resize(swiper) {
181
+      if (!swiper.thumbs.swiper) return;
182
+      swiper.thumbs.update();
183
+    },
184
+    observerUpdate: function observerUpdate(swiper) {
185
+      if (!swiper.thumbs.swiper) return;
186
+      swiper.thumbs.update();
187
+    },
188
+    setTransition: function setTransition(swiper, duration) {
189
+      var thumbsSwiper = swiper.thumbs.swiper;
190
+      if (!thumbsSwiper) return;
191
+      thumbsSwiper.setTransition(duration);
192
+    },
193
+    beforeDestroy: function beforeDestroy(swiper) {
194
+      var thumbsSwiper = swiper.thumbs.swiper;
195
+      if (!thumbsSwiper) return;
196
+
197
+      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
198
+        thumbsSwiper.destroy();
199
+      }
200
+    }
201
+  }
202
+};
0 203
\ No newline at end of file
1 204
new file mode 100644
... ...
@@ -0,0 +1,270 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { extend, bindModuleMethods } from '../../utils/utils';
5
+var Virtual = {
6
+  update: function update(force) {
7
+    var swiper = this;
8
+    var _swiper$params = swiper.params,
9
+        slidesPerView = _swiper$params.slidesPerView,
10
+        slidesPerGroup = _swiper$params.slidesPerGroup,
11
+        centeredSlides = _swiper$params.centeredSlides;
12
+    var _swiper$params$virtua = swiper.params.virtual,
13
+        addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
14
+        addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
15
+    var _swiper$virtual = swiper.virtual,
16
+        previousFrom = _swiper$virtual.from,
17
+        previousTo = _swiper$virtual.to,
18
+        slides = _swiper$virtual.slides,
19
+        previousSlidesGrid = _swiper$virtual.slidesGrid,
20
+        renderSlide = _swiper$virtual.renderSlide,
21
+        previousOffset = _swiper$virtual.offset;
22
+    swiper.updateActiveIndex();
23
+    var activeIndex = swiper.activeIndex || 0;
24
+    var offsetProp;
25
+    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
26
+    var slidesAfter;
27
+    var slidesBefore;
28
+
29
+    if (centeredSlides) {
30
+      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
31
+      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
32
+    } else {
33
+      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
34
+      slidesBefore = slidesPerGroup + addSlidesBefore;
35
+    }
36
+
37
+    var from = Math.max((activeIndex || 0) - slidesBefore, 0);
38
+    var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
39
+    var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
40
+    extend(swiper.virtual, {
41
+      from: from,
42
+      to: to,
43
+      offset: offset,
44
+      slidesGrid: swiper.slidesGrid
45
+    });
46
+
47
+    function onRendered() {
48
+      swiper.updateSlides();
49
+      swiper.updateProgress();
50
+      swiper.updateSlidesClasses();
51
+
52
+      if (swiper.lazy && swiper.params.lazy.enabled) {
53
+        swiper.lazy.load();
54
+      }
55
+    }
56
+
57
+    if (previousFrom === from && previousTo === to && !force) {
58
+      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
59
+        swiper.slides.css(offsetProp, offset + "px");
60
+      }
61
+
62
+      swiper.updateProgress();
63
+      return;
64
+    }
65
+
66
+    if (swiper.params.virtual.renderExternal) {
67
+      swiper.params.virtual.renderExternal.call(swiper, {
68
+        offset: offset,
69
+        from: from,
70
+        to: to,
71
+        slides: function getSlides() {
72
+          var slidesToRender = [];
73
+
74
+          for (var i = from; i <= to; i += 1) {
75
+            slidesToRender.push(slides[i]);
76
+          }
77
+
78
+          return slidesToRender;
79
+        }()
80
+      });
81
+
82
+      if (swiper.params.virtual.renderExternalUpdate) {
83
+        onRendered();
84
+      }
85
+
86
+      return;
87
+    }
88
+
89
+    var prependIndexes = [];
90
+    var appendIndexes = [];
91
+
92
+    if (force) {
93
+      swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
94
+    } else {
95
+      for (var i = previousFrom; i <= previousTo; i += 1) {
96
+        if (i < from || i > to) {
97
+          swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
98
+        }
99
+      }
100
+    }
101
+
102
+    for (var _i = 0; _i < slides.length; _i += 1) {
103
+      if (_i >= from && _i <= to) {
104
+        if (typeof previousTo === 'undefined' || force) {
105
+          appendIndexes.push(_i);
106
+        } else {
107
+          if (_i > previousTo) appendIndexes.push(_i);
108
+          if (_i < previousFrom) prependIndexes.push(_i);
109
+        }
110
+      }
111
+    }
112
+
113
+    appendIndexes.forEach(function (index) {
114
+      swiper.$wrapperEl.append(renderSlide(slides[index], index));
115
+    });
116
+    prependIndexes.sort(function (a, b) {
117
+      return b - a;
118
+    }).forEach(function (index) {
119
+      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
120
+    });
121
+    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
122
+    onRendered();
123
+  },
124
+  renderSlide: function renderSlide(slide, index) {
125
+    var swiper = this;
126
+    var params = swiper.params.virtual;
127
+
128
+    if (params.cache && swiper.virtual.cache[index]) {
129
+      return swiper.virtual.cache[index];
130
+    }
131
+
132
+    var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
133
+    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
134
+    if (params.cache) swiper.virtual.cache[index] = $slideEl;
135
+    return $slideEl;
136
+  },
137
+  appendSlide: function appendSlide(slides) {
138
+    var swiper = this;
139
+
140
+    if (typeof slides === 'object' && 'length' in slides) {
141
+      for (var i = 0; i < slides.length; i += 1) {
142
+        if (slides[i]) swiper.virtual.slides.push(slides[i]);
143
+      }
144
+    } else {
145
+      swiper.virtual.slides.push(slides);
146
+    }
147
+
148
+    swiper.virtual.update(true);
149
+  },
150
+  prependSlide: function prependSlide(slides) {
151
+    var swiper = this;
152
+    var activeIndex = swiper.activeIndex;
153
+    var newActiveIndex = activeIndex + 1;
154
+    var numberOfNewSlides = 1;
155
+
156
+    if (Array.isArray(slides)) {
157
+      for (var i = 0; i < slides.length; i += 1) {
158
+        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
159
+      }
160
+
161
+      newActiveIndex = activeIndex + slides.length;
162
+      numberOfNewSlides = slides.length;
163
+    } else {
164
+      swiper.virtual.slides.unshift(slides);
165
+    }
166
+
167
+    if (swiper.params.virtual.cache) {
168
+      var cache = swiper.virtual.cache;
169
+      var newCache = {};
170
+      Object.keys(cache).forEach(function (cachedIndex) {
171
+        var $cachedEl = cache[cachedIndex];
172
+        var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
173
+
174
+        if (cachedElIndex) {
175
+          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
176
+        }
177
+
178
+        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
179
+      });
180
+      swiper.virtual.cache = newCache;
181
+    }
182
+
183
+    swiper.virtual.update(true);
184
+    swiper.slideTo(newActiveIndex, 0);
185
+  },
186
+  removeSlide: function removeSlide(slidesIndexes) {
187
+    var swiper = this;
188
+    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
189
+    var activeIndex = swiper.activeIndex;
190
+
191
+    if (Array.isArray(slidesIndexes)) {
192
+      for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
193
+        swiper.virtual.slides.splice(slidesIndexes[i], 1);
194
+
195
+        if (swiper.params.virtual.cache) {
196
+          delete swiper.virtual.cache[slidesIndexes[i]];
197
+        }
198
+
199
+        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
200
+        activeIndex = Math.max(activeIndex, 0);
201
+      }
202
+    } else {
203
+      swiper.virtual.slides.splice(slidesIndexes, 1);
204
+
205
+      if (swiper.params.virtual.cache) {
206
+        delete swiper.virtual.cache[slidesIndexes];
207
+      }
208
+
209
+      if (slidesIndexes < activeIndex) activeIndex -= 1;
210
+      activeIndex = Math.max(activeIndex, 0);
211
+    }
212
+
213
+    swiper.virtual.update(true);
214
+    swiper.slideTo(activeIndex, 0);
215
+  },
216
+  removeAllSlides: function removeAllSlides() {
217
+    var swiper = this;
218
+    swiper.virtual.slides = [];
219
+
220
+    if (swiper.params.virtual.cache) {
221
+      swiper.virtual.cache = {};
222
+    }
223
+
224
+    swiper.virtual.update(true);
225
+    swiper.slideTo(0, 0);
226
+  }
227
+};
228
+export default {
229
+  name: 'virtual',
230
+  params: {
231
+    virtual: {
232
+      enabled: false,
233
+      slides: [],
234
+      cache: true,
235
+      renderSlide: null,
236
+      renderExternal: null,
237
+      renderExternalUpdate: true,
238
+      addSlidesBefore: 0,
239
+      addSlidesAfter: 0
240
+    }
241
+  },
242
+  create: function create() {
243
+    var swiper = this;
244
+    bindModuleMethods(swiper, {
245
+      virtual: _extends(_extends({}, Virtual), {}, {
246
+        slides: swiper.params.virtual.slides,
247
+        cache: {}
248
+      })
249
+    });
250
+  },
251
+  on: {
252
+    beforeInit: function beforeInit(swiper) {
253
+      if (!swiper.params.virtual.enabled) return;
254
+      swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
255
+      var overwriteParams = {
256
+        watchSlidesProgress: true
257
+      };
258
+      extend(swiper.params, overwriteParams);
259
+      extend(swiper.originalParams, overwriteParams);
260
+
261
+      if (!swiper.params.initialSlide) {
262
+        swiper.virtual.update();
263
+      }
264
+    },
265
+    setTranslate: function setTranslate(swiper) {
266
+      if (!swiper.params.virtual.enabled) return;
267
+      swiper.virtual.update();
268
+    }
269
+  }
270
+};
0 271
\ No newline at end of file
1 272
new file mode 100644
... ...
@@ -0,0 +1,596 @@
1
+function _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); }
2
+
3
+import $ from '../../utils/dom';
4
+import { bindModuleMethods, getTranslate } from '../../utils/utils';
5
+var Zoom = {
6
+  // Calc Scale From Multi-touches
7
+  getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
8
+    if (e.targetTouches.length < 2) return 1;
9
+    var x1 = e.targetTouches[0].pageX;
10
+    var y1 = e.targetTouches[0].pageY;
11
+    var x2 = e.targetTouches[1].pageX;
12
+    var y2 = e.targetTouches[1].pageY;
13
+    var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
14
+    return distance;
15
+  },
16
+  // Events
17
+  onGestureStart: function onGestureStart(e) {
18
+    var swiper = this;
19
+    var support = swiper.support;
20
+    var params = swiper.params.zoom;
21
+    var zoom = swiper.zoom;
22
+    var gesture = zoom.gesture;
23
+    zoom.fakeGestureTouched = false;
24
+    zoom.fakeGestureMoved = false;
25
+
26
+    if (!support.gestures) {
27
+      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
28
+        return;
29
+      }
30
+
31
+      zoom.fakeGestureTouched = true;
32
+      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
33
+    }
34
+
35
+    if (!gesture.$slideEl || !gesture.$slideEl.length) {
36
+      gesture.$slideEl = $(e.target).closest("." + swiper.params.slideClass);
37
+      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
38
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
39
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
40
+      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
41
+
42
+      if (gesture.$imageWrapEl.length === 0) {
43
+        gesture.$imageEl = undefined;
44
+        return;
45
+      }
46
+    }
47
+
48
+    if (gesture.$imageEl) {
49
+      gesture.$imageEl.transition(0);
50
+    }
51
+
52
+    swiper.zoom.isScaling = true;
53
+  },
54
+  onGestureChange: function onGestureChange(e) {
55
+    var swiper = this;
56
+    var support = swiper.support;
57
+    var params = swiper.params.zoom;
58
+    var zoom = swiper.zoom;
59
+    var gesture = zoom.gesture;
60
+
61
+    if (!support.gestures) {
62
+      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
63
+        return;
64
+      }
65
+
66
+      zoom.fakeGestureMoved = true;
67
+      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
68
+    }
69
+
70
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
71
+      if (e.type === 'gesturechange') zoom.onGestureStart(e);
72
+      return;
73
+    }
74
+
75
+    if (support.gestures) {
76
+      zoom.scale = e.scale * zoom.currentScale;
77
+    } else {
78
+      zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
79
+    }
80
+
81
+    if (zoom.scale > gesture.maxRatio) {
82
+      zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
83
+    }
84
+
85
+    if (zoom.scale < params.minRatio) {
86
+      zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
87
+    }
88
+
89
+    gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
90
+  },
91
+  onGestureEnd: function onGestureEnd(e) {
92
+    var swiper = this;
93
+    var device = swiper.device;
94
+    var support = swiper.support;
95
+    var params = swiper.params.zoom;
96
+    var zoom = swiper.zoom;
97
+    var gesture = zoom.gesture;
98
+
99
+    if (!support.gestures) {
100
+      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
101
+        return;
102
+      }
103
+
104
+      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
105
+        return;
106
+      }
107
+
108
+      zoom.fakeGestureTouched = false;
109
+      zoom.fakeGestureMoved = false;
110
+    }
111
+
112
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
113
+    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
114
+    gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
115
+    zoom.currentScale = zoom.scale;
116
+    zoom.isScaling = false;
117
+    if (zoom.scale === 1) gesture.$slideEl = undefined;
118
+  },
119
+  onTouchStart: function onTouchStart(e) {
120
+    var swiper = this;
121
+    var device = swiper.device;
122
+    var zoom = swiper.zoom;
123
+    var gesture = zoom.gesture,
124
+        image = zoom.image;
125
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
126
+    if (image.isTouched) return;
127
+    if (device.android && e.cancelable) e.preventDefault();
128
+    image.isTouched = true;
129
+    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
130
+    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
131
+  },
132
+  onTouchMove: function onTouchMove(e) {
133
+    var swiper = this;
134
+    var zoom = swiper.zoom;
135
+    var gesture = zoom.gesture,
136
+        image = zoom.image,
137
+        velocity = zoom.velocity;
138
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
139
+    swiper.allowClick = false;
140
+    if (!image.isTouched || !gesture.$slideEl) return;
141
+
142
+    if (!image.isMoved) {
143
+      image.width = gesture.$imageEl[0].offsetWidth;
144
+      image.height = gesture.$imageEl[0].offsetHeight;
145
+      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
146
+      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
147
+      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
148
+      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
149
+      gesture.$imageWrapEl.transition(0);
150
+
151
+      if (swiper.rtl) {
152
+        image.startX = -image.startX;
153
+        image.startY = -image.startY;
154
+      }
155
+    } // Define if we need image drag
156
+
157
+
158
+    var scaledWidth = image.width * zoom.scale;
159
+    var scaledHeight = image.height * zoom.scale;
160
+    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
161
+    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
162
+    image.maxX = -image.minX;
163
+    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
164
+    image.maxY = -image.minY;
165
+    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
166
+    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
167
+
168
+    if (!image.isMoved && !zoom.isScaling) {
169
+      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
170
+        image.isTouched = false;
171
+        return;
172
+      }
173
+
174
+      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
175
+        image.isTouched = false;
176
+        return;
177
+      }
178
+    }
179
+
180
+    if (e.cancelable) {
181
+      e.preventDefault();
182
+    }
183
+
184
+    e.stopPropagation();
185
+    image.isMoved = true;
186
+    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
187
+    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
188
+
189
+    if (image.currentX < image.minX) {
190
+      image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
191
+    }
192
+
193
+    if (image.currentX > image.maxX) {
194
+      image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
195
+    }
196
+
197
+    if (image.currentY < image.minY) {
198
+      image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
199
+    }
200
+
201
+    if (image.currentY > image.maxY) {
202
+      image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
203
+    } // Velocity
204
+
205
+
206
+    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
207
+    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
208
+    if (!velocity.prevTime) velocity.prevTime = Date.now();
209
+    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
210
+    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
211
+    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
212
+    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
213
+    velocity.prevPositionX = image.touchesCurrent.x;
214
+    velocity.prevPositionY = image.touchesCurrent.y;
215
+    velocity.prevTime = Date.now();
216
+    gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
217
+  },
218
+  onTouchEnd: function onTouchEnd() {
219
+    var swiper = this;
220
+    var zoom = swiper.zoom;
221
+    var gesture = zoom.gesture,
222
+        image = zoom.image,
223
+        velocity = zoom.velocity;
224
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
225
+
226
+    if (!image.isTouched || !image.isMoved) {
227
+      image.isTouched = false;
228
+      image.isMoved = false;
229
+      return;
230
+    }
231
+
232
+    image.isTouched = false;
233
+    image.isMoved = false;
234
+    var momentumDurationX = 300;
235
+    var momentumDurationY = 300;
236
+    var momentumDistanceX = velocity.x * momentumDurationX;
237
+    var newPositionX = image.currentX + momentumDistanceX;
238
+    var momentumDistanceY = velocity.y * momentumDurationY;
239
+    var newPositionY = image.currentY + momentumDistanceY; // Fix duration
240
+
241
+    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
242
+    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
243
+    var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
244
+    image.currentX = newPositionX;
245
+    image.currentY = newPositionY; // Define if we need image drag
246
+
247
+    var scaledWidth = image.width * zoom.scale;
248
+    var scaledHeight = image.height * zoom.scale;
249
+    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
250
+    image.maxX = -image.minX;
251
+    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
252
+    image.maxY = -image.minY;
253
+    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
254
+    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
255
+    gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
256
+  },
257
+  onTransitionEnd: function onTransitionEnd() {
258
+    var swiper = this;
259
+    var zoom = swiper.zoom;
260
+    var gesture = zoom.gesture;
261
+
262
+    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
263
+      if (gesture.$imageEl) {
264
+        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
265
+      }
266
+
267
+      if (gesture.$imageWrapEl) {
268
+        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
269
+      }
270
+
271
+      zoom.scale = 1;
272
+      zoom.currentScale = 1;
273
+      gesture.$slideEl = undefined;
274
+      gesture.$imageEl = undefined;
275
+      gesture.$imageWrapEl = undefined;
276
+    }
277
+  },
278
+  // Toggle Zoom
279
+  toggle: function toggle(e) {
280
+    var swiper = this;
281
+    var zoom = swiper.zoom;
282
+
283
+    if (zoom.scale && zoom.scale !== 1) {
284
+      // Zoom Out
285
+      zoom.out();
286
+    } else {
287
+      // Zoom In
288
+      zoom.in(e);
289
+    }
290
+  },
291
+  in: function _in(e) {
292
+    var swiper = this;
293
+    var zoom = swiper.zoom;
294
+    var params = swiper.params.zoom;
295
+    var gesture = zoom.gesture,
296
+        image = zoom.image;
297
+
298
+    if (!gesture.$slideEl) {
299
+      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
300
+        gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
301
+      } else {
302
+        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
303
+      }
304
+
305
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
306
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
307
+    }
308
+
309
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
310
+    gesture.$slideEl.addClass("" + params.zoomedSlideClass);
311
+    var touchX;
312
+    var touchY;
313
+    var offsetX;
314
+    var offsetY;
315
+    var diffX;
316
+    var diffY;
317
+    var translateX;
318
+    var translateY;
319
+    var imageWidth;
320
+    var imageHeight;
321
+    var scaledWidth;
322
+    var scaledHeight;
323
+    var translateMinX;
324
+    var translateMinY;
325
+    var translateMaxX;
326
+    var translateMaxY;
327
+    var slideWidth;
328
+    var slideHeight;
329
+
330
+    if (typeof image.touchesStart.x === 'undefined' && e) {
331
+      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
332
+      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
333
+    } else {
334
+      touchX = image.touchesStart.x;
335
+      touchY = image.touchesStart.y;
336
+    }
337
+
338
+    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
339
+    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
340
+
341
+    if (e) {
342
+      slideWidth = gesture.$slideEl[0].offsetWidth;
343
+      slideHeight = gesture.$slideEl[0].offsetHeight;
344
+      offsetX = gesture.$slideEl.offset().left;
345
+      offsetY = gesture.$slideEl.offset().top;
346
+      diffX = offsetX + slideWidth / 2 - touchX;
347
+      diffY = offsetY + slideHeight / 2 - touchY;
348
+      imageWidth = gesture.$imageEl[0].offsetWidth;
349
+      imageHeight = gesture.$imageEl[0].offsetHeight;
350
+      scaledWidth = imageWidth * zoom.scale;
351
+      scaledHeight = imageHeight * zoom.scale;
352
+      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
353
+      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
354
+      translateMaxX = -translateMinX;
355
+      translateMaxY = -translateMinY;
356
+      translateX = diffX * zoom.scale;
357
+      translateY = diffY * zoom.scale;
358
+
359
+      if (translateX < translateMinX) {
360
+        translateX = translateMinX;
361
+      }
362
+
363
+      if (translateX > translateMaxX) {
364
+        translateX = translateMaxX;
365
+      }
366
+
367
+      if (translateY < translateMinY) {
368
+        translateY = translateMinY;
369
+      }
370
+
371
+      if (translateY > translateMaxY) {
372
+        translateY = translateMaxY;
373
+      }
374
+    } else {
375
+      translateX = 0;
376
+      translateY = 0;
377
+    }
378
+
379
+    gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
380
+    gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
381
+  },
382
+  out: function out() {
383
+    var swiper = this;
384
+    var zoom = swiper.zoom;
385
+    var params = swiper.params.zoom;
386
+    var gesture = zoom.gesture;
387
+
388
+    if (!gesture.$slideEl) {
389
+      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
390
+        gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
391
+      } else {
392
+        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
393
+      }
394
+
395
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
396
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
397
+    }
398
+
399
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
400
+    zoom.scale = 1;
401
+    zoom.currentScale = 1;
402
+    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
403
+    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
404
+    gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
405
+    gesture.$slideEl = undefined;
406
+  },
407
+  toggleGestures: function toggleGestures(method) {
408
+    var swiper = this;
409
+    var zoom = swiper.zoom;
410
+    var selector = zoom.slideSelector,
411
+        passive = zoom.passiveListener;
412
+    swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
413
+    swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
414
+    swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
415
+  },
416
+  enableGestures: function enableGestures() {
417
+    if (this.zoom.gesturesEnabled) return;
418
+    this.zoom.gesturesEnabled = true;
419
+    this.zoom.toggleGestures('on');
420
+  },
421
+  disableGestures: function disableGestures() {
422
+    if (!this.zoom.gesturesEnabled) return;
423
+    this.zoom.gesturesEnabled = false;
424
+    this.zoom.toggleGestures('off');
425
+  },
426
+  // Attach/Detach Events
427
+  enable: function enable() {
428
+    var swiper = this;
429
+    var support = swiper.support;
430
+    var zoom = swiper.zoom;
431
+    if (zoom.enabled) return;
432
+    zoom.enabled = true;
433
+    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
434
+      passive: true,
435
+      capture: false
436
+    } : false;
437
+    var activeListenerWithCapture = support.passiveListener ? {
438
+      passive: false,
439
+      capture: true
440
+    } : true;
441
+    var slideSelector = "." + swiper.params.slideClass;
442
+    swiper.zoom.passiveListener = passiveListener;
443
+    swiper.zoom.slideSelector = slideSelector; // Scale image
444
+
445
+    if (support.gestures) {
446
+      swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
447
+      swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
448
+    } else if (swiper.touchEvents.start === 'touchstart') {
449
+      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
450
+      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
451
+      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
452
+
453
+      if (swiper.touchEvents.cancel) {
454
+        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
455
+      }
456
+    } // Move image
457
+
458
+
459
+    swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
460
+  },
461
+  disable: function disable() {
462
+    var swiper = this;
463
+    var zoom = swiper.zoom;
464
+    if (!zoom.enabled) return;
465
+    var support = swiper.support;
466
+    swiper.zoom.enabled = false;
467
+    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
468
+      passive: true,
469
+      capture: false
470
+    } : false;
471
+    var activeListenerWithCapture = support.passiveListener ? {
472
+      passive: false,
473
+      capture: true
474
+    } : true;
475
+    var slideSelector = "." + swiper.params.slideClass; // Scale image
476
+
477
+    if (support.gestures) {
478
+      swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
479
+      swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
480
+    } else if (swiper.touchEvents.start === 'touchstart') {
481
+      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
482
+      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
483
+      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
484
+
485
+      if (swiper.touchEvents.cancel) {
486
+        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
487
+      }
488
+    } // Move image
489
+
490
+
491
+    swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
492
+  }
493
+};
494
+export default {
495
+  name: 'zoom',
496
+  params: {
497
+    zoom: {
498
+      enabled: false,
499
+      maxRatio: 3,
500
+      minRatio: 1,
501
+      toggle: true,
502
+      containerClass: 'swiper-zoom-container',
503
+      zoomedSlideClass: 'swiper-slide-zoomed'
504
+    }
505
+  },
506
+  create: function create() {
507
+    var swiper = this;
508
+    bindModuleMethods(swiper, {
509
+      zoom: _extends({
510
+        enabled: false,
511
+        scale: 1,
512
+        currentScale: 1,
513
+        isScaling: false,
514
+        gesture: {
515
+          $slideEl: undefined,
516
+          slideWidth: undefined,
517
+          slideHeight: undefined,
518
+          $imageEl: undefined,
519
+          $imageWrapEl: undefined,
520
+          maxRatio: 3
521
+        },
522
+        image: {
523
+          isTouched: undefined,
524
+          isMoved: undefined,
525
+          currentX: undefined,
526
+          currentY: undefined,
527
+          minX: undefined,
528
+          minY: undefined,
529
+          maxX: undefined,
530
+          maxY: undefined,
531
+          width: undefined,
532
+          height: undefined,
533
+          startX: undefined,
534
+          startY: undefined,
535
+          touchesStart: {},
536
+          touchesCurrent: {}
537
+        },
538
+        velocity: {
539
+          x: undefined,
540
+          y: undefined,
541
+          prevPositionX: undefined,
542
+          prevPositionY: undefined,
543
+          prevTime: undefined
544
+        }
545
+      }, Zoom)
546
+    });
547
+    var scale = 1;
548
+    Object.defineProperty(swiper.zoom, 'scale', {
549
+      get: function get() {
550
+        return scale;
551
+      },
552
+      set: function set(value) {
553
+        if (scale !== value) {
554
+          var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
555
+          var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
556
+          swiper.emit('zoomChange', value, imageEl, slideEl);
557
+        }
558
+
559
+        scale = value;
560
+      }
561
+    });
562
+  },
563
+  on: {
564
+    init: function init(swiper) {
565
+      if (swiper.params.zoom.enabled) {
566
+        swiper.zoom.enable();
567
+      }
568
+    },
569
+    destroy: function destroy(swiper) {
570
+      swiper.zoom.disable();
571
+    },
572
+    touchStart: function touchStart(swiper, e) {
573
+      if (!swiper.zoom.enabled) return;
574
+      swiper.zoom.onTouchStart(e);
575
+    },
576
+    touchEnd: function touchEnd(swiper, e) {
577
+      if (!swiper.zoom.enabled) return;
578
+      swiper.zoom.onTouchEnd(e);
579
+    },
580
+    doubleTap: function doubleTap(swiper, e) {
581
+      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
582
+        swiper.zoom.toggle(e);
583
+      }
584
+    },
585
+    transitionEnd: function transitionEnd(swiper) {
586
+      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
587
+        swiper.zoom.onTransitionEnd();
588
+      }
589
+    },
590
+    slideChange: function slideChange(swiper) {
591
+      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
592
+        swiper.zoom.onTransitionEnd();
593
+      }
594
+    }
595
+  }
596
+};
0 597
\ No newline at end of file
1 598
new file mode 100644
... ...
@@ -0,0 +1,92 @@
1
+function _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); }
2
+
3
+import { getWindow } from 'ssr-window';
4
+import { bindModuleMethods } from '../../utils/utils';
5
+var Observer = {
6
+  attach: function attach(target, options) {
7
+    if (options === void 0) {
8
+      options = {};
9
+    }
10
+
11
+    var window = getWindow();
12
+    var swiper = this;
13
+    var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
14
+    var observer = new ObserverFunc(function (mutations) {
15
+      // The observerUpdate event should only be triggered
16
+      // once despite the number of mutations.  Additional
17
+      // triggers are redundant and are very costly
18
+      if (mutations.length === 1) {
19
+        swiper.emit('observerUpdate', mutations[0]);
20
+        return;
21
+      }
22
+
23
+      var observerUpdate = function observerUpdate() {
24
+        swiper.emit('observerUpdate', mutations[0]);
25
+      };
26
+
27
+      if (window.requestAnimationFrame) {
28
+        window.requestAnimationFrame(observerUpdate);
29
+      } else {
30
+        window.setTimeout(observerUpdate, 0);
31
+      }
32
+    });
33
+    observer.observe(target, {
34
+      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
35
+      childList: typeof options.childList === 'undefined' ? true : options.childList,
36
+      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
37
+    });
38
+    swiper.observer.observers.push(observer);
39
+  },
40
+  init: function init() {
41
+    var swiper = this;
42
+    if (!swiper.support.observer || !swiper.params.observer) return;
43
+
44
+    if (swiper.params.observeParents) {
45
+      var containerParents = swiper.$el.parents();
46
+
47
+      for (var i = 0; i < containerParents.length; i += 1) {
48
+        swiper.observer.attach(containerParents[i]);
49
+      }
50
+    } // Observe container
51
+
52
+
53
+    swiper.observer.attach(swiper.$el[0], {
54
+      childList: swiper.params.observeSlideChildren
55
+    }); // Observe wrapper
56
+
57
+    swiper.observer.attach(swiper.$wrapperEl[0], {
58
+      attributes: false
59
+    });
60
+  },
61
+  destroy: function destroy() {
62
+    var swiper = this;
63
+    swiper.observer.observers.forEach(function (observer) {
64
+      observer.disconnect();
65
+    });
66
+    swiper.observer.observers = [];
67
+  }
68
+};
69
+export default {
70
+  name: 'observer',
71
+  params: {
72
+    observer: false,
73
+    observeParents: false,
74
+    observeSlideChildren: false
75
+  },
76
+  create: function create() {
77
+    var swiper = this;
78
+    bindModuleMethods(swiper, {
79
+      observer: _extends(_extends({}, Observer), {}, {
80
+        observers: []
81
+      })
82
+    });
83
+  },
84
+  on: {
85
+    init: function init(swiper) {
86
+      swiper.observer.init();
87
+    },
88
+    destroy: function destroy(swiper) {
89
+      swiper.observer.destroy();
90
+    }
91
+  }
92
+};
0 93
\ No newline at end of file
1 94
new file mode 100644
... ...
@@ -0,0 +1,35 @@
1
+import { getWindow } from 'ssr-window';
2
+import { extend } from '../../utils/utils';
3
+export default {
4
+  name: 'resize',
5
+  create: function create() {
6
+    var swiper = this;
7
+    extend(swiper, {
8
+      resize: {
9
+        resizeHandler: function resizeHandler() {
10
+          if (!swiper || swiper.destroyed || !swiper.initialized) return;
11
+          swiper.emit('beforeResize');
12
+          swiper.emit('resize');
13
+        },
14
+        orientationChangeHandler: function orientationChangeHandler() {
15
+          if (!swiper || swiper.destroyed || !swiper.initialized) return;
16
+          swiper.emit('orientationchange');
17
+        }
18
+      }
19
+    });
20
+  },
21
+  on: {
22
+    init: function init(swiper) {
23
+      var window = getWindow(); // Emit resize
24
+
25
+      window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange
26
+
27
+      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
28
+    },
29
+    destroy: function destroy(swiper) {
30
+      var window = getWindow();
31
+      window.removeEventListener('resize', swiper.resize.resizeHandler);
32
+      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
33
+    }
34
+  }
35
+};
0 36
\ No newline at end of file
1 37
new file mode 100644
... ...
@@ -0,0 +1,51 @@
1
+import { paramsList } from './params-list';
2
+import { isObject } from './utils';
3
+
4
+function getChangedParams(swiperParams, oldParams, children, oldChildren) {
5
+  var keys = [];
6
+  if (!oldParams) return keys;
7
+
8
+  var addKey = function addKey(key) {
9
+    if (keys.indexOf(key) < 0) keys.push(key);
10
+  };
11
+
12
+  var oldChildrenKeys = oldChildren.map(function (child) {
13
+    return child.key;
14
+  });
15
+  var childrenKeys = children.map(function (child) {
16
+    return child.key;
17
+  });
18
+  if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');
19
+  if (oldChildren.length !== children.length) addKey('children');
20
+  var watchParams = paramsList.filter(function (key) {
21
+    return key[0] === '_';
22
+  }).map(function (key) {
23
+    return key.replace(/_/, '');
24
+  });
25
+  watchParams.forEach(function (key) {
26
+    if (key in swiperParams && key in oldParams) {
27
+      if (isObject(swiperParams[key]) && isObject(oldParams[key])) {
28
+        var newKeys = Object.keys(swiperParams[key]);
29
+        var oldKeys = Object.keys(oldParams[key]);
30
+
31
+        if (newKeys.length !== oldKeys.length) {
32
+          addKey(key);
33
+        } else {
34
+          newKeys.forEach(function (newKey) {
35
+            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
36
+              addKey(key);
37
+            }
38
+          });
39
+          oldKeys.forEach(function (oldKey) {
40
+            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
41
+          });
42
+        }
43
+      } else if (swiperParams[key] !== oldParams[key]) {
44
+        addKey(key);
45
+      }
46
+    }
47
+  });
48
+  return keys;
49
+}
50
+
51
+export { getChangedParams };
0 52
\ No newline at end of file
1 53
new file mode 100644
... ...
@@ -0,0 +1,36 @@
1
+import React from 'react';
2
+
3
+function getChildren(children) {
4
+  var slides = [];
5
+  var slots = {
6
+    'container-start': [],
7
+    'container-end': [],
8
+    'wrapper-start': [],
9
+    'wrapper-end': []
10
+  };
11
+
12
+  function processChildren(c) {
13
+    React.Children.toArray(c).forEach(function (child) {
14
+      if (child.type === React.Fragment && child.props.children) {
15
+        processChildren(child.props.children);
16
+        return;
17
+      }
18
+
19
+      if (child.type && child.type.displayName === 'SwiperSlide') {
20
+        slides.push(child);
21
+      } else if (child.props && child.props.slot && slots[child.props.slot]) {
22
+        slots[child.props.slot].push(child);
23
+      } else {
24
+        slots['container-end'].push(child);
25
+      }
26
+    });
27
+  }
28
+
29
+  processChildren(children);
30
+  return {
31
+    slides: slides,
32
+    slots: slots
33
+  };
34
+}
35
+
36
+export { getChildren };
0 37
\ No newline at end of file
1 38
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+// eslint-disable-next-line
2
+import Swiper from '../../core';
3
+import { isObject, extend } from './utils';
4
+import { paramsList } from './params-list';
5
+
6
+function getParams(obj) {
7
+  if (obj === void 0) {
8
+    obj = {};
9
+  }
10
+
11
+  var params = {
12
+    on: {}
13
+  };
14
+  var passedParams = {};
15
+  extend(params, Swiper.defaults);
16
+  extend(params, Swiper.extendedDefaults);
17
+  params._emitClasses = true;
18
+  var rest = {};
19
+  var allowedParams = paramsList.map(function (key) {
20
+    return key.replace(/_/, '');
21
+  });
22
+  Object.keys(obj).forEach(function (key) {
23
+    if (allowedParams.indexOf(key) >= 0) {
24
+      if (isObject(obj[key])) {
25
+        params[key] = {};
26
+        passedParams[key] = {};
27
+        extend(params[key], obj[key]);
28
+        extend(passedParams[key], obj[key]);
29
+      } else {
30
+        params[key] = obj[key];
31
+        passedParams[key] = obj[key];
32
+      }
33
+    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
34
+      params.on["" + key[2].toLowerCase() + key.substr(3)] = obj[key];
35
+    } else {
36
+      rest[key] = obj[key];
37
+    }
38
+  });
39
+  return {
40
+    params: params,
41
+    passedParams: passedParams,
42
+    rest: rest
43
+  };
44
+}
45
+
46
+export { getParams };
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+// eslint-disable-next-line
2
+import Swiper from '../../core';
3
+import { needsNavigation, needsPagination, needsScrollbar } from './utils';
4
+
5
+function initSwiper(_ref, swiperParams) {
6
+  var el = _ref.el,
7
+      nextEl = _ref.nextEl,
8
+      prevEl = _ref.prevEl,
9
+      paginationEl = _ref.paginationEl,
10
+      scrollbarEl = _ref.scrollbarEl;
11
+
12
+  if (needsNavigation(swiperParams) && nextEl && prevEl) {
13
+    if (swiperParams.navigation === true) {
14
+      swiperParams.navigation = {};
15
+    }
16
+
17
+    swiperParams.navigation.nextEl = nextEl;
18
+    swiperParams.navigation.prevEl = prevEl;
19
+  }
20
+
21
+  if (needsPagination(swiperParams) && paginationEl) {
22
+    if (swiperParams.pagination === true) {
23
+      swiperParams.pagination = {};
24
+    }
25
+
26
+    swiperParams.pagination.el = paginationEl;
27
+  }
28
+
29
+  if (needsScrollbar(swiperParams) && scrollbarEl) {
30
+    if (swiperParams.scrollbar === true) {
31
+      swiperParams.scrollbar = {};
32
+    }
33
+
34
+    swiperParams.scrollbar.el = scrollbarEl;
35
+  }
36
+
37
+  return new Swiper(el, swiperParams);
38
+}
39
+
40
+export { initSwiper };
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,79 @@
1
+import React from 'react'; // eslint-disable-next-line
2
+
3
+import Swiper from '../../core';
4
+
5
+function calcLoopedSlides(slides, swiperParams) {
6
+  var slidesPerViewParams = swiperParams.slidesPerView;
7
+
8
+  if (swiperParams.breakpoints) {
9
+    var breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);
10
+    var breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;
11
+
12
+    if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {
13
+      slidesPerViewParams = breakpointOnlyParams.slidesPerView;
14
+    }
15
+  }
16
+
17
+  var loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));
18
+  loopedSlides += swiperParams.loopAdditionalSlides;
19
+
20
+  if (loopedSlides > slides.length) {
21
+    loopedSlides = slides.length;
22
+  }
23
+
24
+  return loopedSlides;
25
+}
26
+
27
+function renderLoop(swiper, slides, swiperParams) {
28
+  var modifiedSlides = slides.map(function (child, index) {
29
+    return React.cloneElement(child, {
30
+      swiper: swiper,
31
+      'data-swiper-slide-index': index
32
+    });
33
+  });
34
+
35
+  function duplicateSlide(child, index, position) {
36
+    return React.cloneElement(child, {
37
+      key: child.key + "-duplicate-" + index + "-" + position,
38
+      className: (child.props.className || '') + " " + swiperParams.slideDuplicateClass
39
+    });
40
+  }
41
+
42
+  if (swiperParams.loopFillGroupWithBlank) {
43
+    var blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;
44
+
45
+    if (blankSlidesNum !== swiperParams.slidesPerGroup) {
46
+      for (var i = 0; i < blankSlidesNum; i += 1) {
47
+        var blankSlide = /*#__PURE__*/React.createElement("div", {
48
+          className: swiperParams.slideClass + " " + swiperParams.slideBlankClass
49
+        });
50
+        modifiedSlides.push(blankSlide);
51
+      }
52
+    }
53
+  }
54
+
55
+  if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {
56
+    swiperParams.loopedSlides = modifiedSlides.length;
57
+  }
58
+
59
+  var loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);
60
+  var prependSlides = [];
61
+  var appendSlides = [];
62
+  modifiedSlides.forEach(function (child, index) {
63
+    if (index < loopedSlides) {
64
+      appendSlides.push(duplicateSlide(child, index, 'prepend'));
65
+    }
66
+
67
+    if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) {
68
+      prependSlides.push(duplicateSlide(child, index, 'append'));
69
+    }
70
+  });
71
+
72
+  if (swiper) {
73
+    swiper.loopedSlides = loopedSlides;
74
+  }
75
+
76
+  return [].concat(prependSlides, modifiedSlides, appendSlides);
77
+}
78
+
79
+export { calcLoopedSlides, renderLoop };
0 80
\ No newline at end of file
1 81
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+/* underscore in name -> watch for changes */
2
+var paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', // modules
3
+'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];
4
+export { paramsList };
0 5
\ No newline at end of file
1 6
new file mode 100644
... ...
@@ -0,0 +1,87 @@
1
+function _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); }
2
+
3
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
4
+
5
+import React, { useRef, useState, forwardRef } from 'react';
6
+import { uniqueClasses } from './utils';
7
+import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';
8
+var SwiperSlide = forwardRef(function (_temp, externalRef) {
9
+  var _ref = _temp === void 0 ? {} : _temp,
10
+      _ref$tag = _ref.tag,
11
+      Tag = _ref$tag === void 0 ? 'div' : _ref$tag,
12
+      children = _ref.children,
13
+      _ref$className = _ref.className,
14
+      className = _ref$className === void 0 ? '' : _ref$className,
15
+      swiper = _ref.swiper,
16
+      zoom = _ref.zoom,
17
+      virtualIndex = _ref.virtualIndex,
18
+      rest = _objectWithoutPropertiesLoose(_ref, ["tag", "children", "className", "swiper", "zoom", "virtualIndex"]);
19
+
20
+  var slideElRef = useRef(null);
21
+
22
+  var _useState = useState('swiper-slide'),
23
+      slideClasses = _useState[0],
24
+      setSlideClasses = _useState[1];
25
+
26
+  function updateClasses(swiper, el, classNames) {
27
+    if (el === slideElRef.current) {
28
+      setSlideClasses(classNames);
29
+    }
30
+  }
31
+
32
+  useIsomorphicLayoutEffect(function () {
33
+    if (externalRef) {
34
+      externalRef.current = slideElRef.current;
35
+    }
36
+
37
+    if (!slideElRef.current || !swiper) {
38
+      return;
39
+    }
40
+
41
+    if (swiper.destroyed) {
42
+      if (slideClasses !== 'swiper-slide') {
43
+        setSlideClasses('swiper-slide');
44
+      }
45
+
46
+      return;
47
+    }
48
+
49
+    swiper.on('_slideClass', updateClasses); // eslint-disable-next-line
50
+
51
+    return function () {
52
+      if (!swiper) return;
53
+      swiper.off('_slideClass', updateClasses);
54
+    };
55
+  });
56
+  useIsomorphicLayoutEffect(function () {
57
+    if (swiper && slideElRef.current) {
58
+      setSlideClasses(swiper.getSlideClasses(slideElRef.current));
59
+    }
60
+  }, [swiper]);
61
+  var slideData;
62
+
63
+  if (typeof children === 'function') {
64
+    slideData = {
65
+      isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,
66
+      isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,
67
+      isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,
68
+      isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,
69
+      isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate next') >= 0
70
+    };
71
+  }
72
+
73
+  var renderChildren = function renderChildren() {
74
+    return typeof children === 'function' ? children(slideData) : children;
75
+  };
76
+
77
+  return /*#__PURE__*/React.createElement(Tag, _extends({
78
+    ref: slideElRef,
79
+    className: uniqueClasses("" + slideClasses + (className ? " " + className : '')),
80
+    "data-swiper-slide-index": virtualIndex
81
+  }, rest), zoom ? /*#__PURE__*/React.createElement("div", {
82
+    className: "swiper-zoom-container",
83
+    "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined
84
+  }, renderChildren()) : renderChildren());
85
+});
86
+SwiperSlide.displayName = 'SwiperSlide';
87
+export { SwiperSlide };
0 88
\ No newline at end of file
1 89
new file mode 100644
... ...
@@ -0,0 +1,174 @@
1
+function _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); }
2
+
3
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
4
+
5
+import React, { useRef, useState, useEffect, forwardRef } from 'react';
6
+import { getParams } from './get-params';
7
+import { initSwiper } from './init-swiper';
8
+import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses } from './utils';
9
+import { renderLoop, calcLoopedSlides } from './loop';
10
+import { getChangedParams } from './get-changed-params';
11
+import { getChildren } from './get-children';
12
+import { updateSwiper } from './update-swiper';
13
+import { renderVirtual, updateOnVirtualData } from './virtual';
14
+import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';
15
+var Swiper = forwardRef(function (_temp, externalElRef) {
16
+  var _ref = _temp === void 0 ? {} : _temp,
17
+      className = _ref.className,
18
+      _ref$tag = _ref.tag,
19
+      Tag = _ref$tag === void 0 ? 'div' : _ref$tag,
20
+      _ref$wrapperTag = _ref.wrapperTag,
21
+      WrapperTag = _ref$wrapperTag === void 0 ? 'div' : _ref$wrapperTag,
22
+      children = _ref.children,
23
+      onSwiper = _ref.onSwiper,
24
+      rest = _objectWithoutPropertiesLoose(_ref, ["className", "tag", "wrapperTag", "children", "onSwiper"]);
25
+
26
+  var _useState = useState('swiper-container'),
27
+      containerClasses = _useState[0],
28
+      setContainerClasses = _useState[1];
29
+
30
+  var _useState2 = useState(null),
31
+      virtualData = _useState2[0],
32
+      setVirtualData = _useState2[1];
33
+
34
+  var _useState3 = useState(false),
35
+      breakpointChanged = _useState3[0],
36
+      setBreakpointChanged = _useState3[1];
37
+
38
+  var initializedRef = useRef(false);
39
+  var swiperElRef = useRef(null);
40
+  var swiperRef = useRef(null);
41
+  var oldPassedParamsRef = useRef(null);
42
+  var oldSlides = useRef(null);
43
+  var nextElRef = useRef(null);
44
+  var prevElRef = useRef(null);
45
+  var paginationElRef = useRef(null);
46
+  var scrollbarElRef = useRef(null);
47
+
48
+  var _getParams = getParams(rest),
49
+      swiperParams = _getParams.params,
50
+      passedParams = _getParams.passedParams,
51
+      restProps = _getParams.rest;
52
+
53
+  var _getChildren = getChildren(children),
54
+      slides = _getChildren.slides,
55
+      slots = _getChildren.slots;
56
+
57
+  var changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current);
58
+  oldPassedParamsRef.current = passedParams;
59
+  oldSlides.current = slides;
60
+
61
+  var onBeforeBreakpoint = function onBeforeBreakpoint() {
62
+    setBreakpointChanged(!breakpointChanged);
63
+  };
64
+
65
+  Object.assign(swiperParams.on, {
66
+    _containerClasses: function _containerClasses(swiper, classes) {
67
+      setContainerClasses(classes);
68
+    },
69
+    _swiper: function _swiper(swiper) {
70
+      swiper.loopCreate = function () {};
71
+
72
+      swiper.loopDestroy = function () {};
73
+
74
+      if (swiperParams.loop) {
75
+        swiper.loopedSlides = calcLoopedSlides(slides, swiperParams);
76
+      }
77
+
78
+      swiperRef.current = swiper;
79
+
80
+      if (swiper.virtual && swiper.params.virtual.enabled) {
81
+        swiper.virtual.slides = slides;
82
+        swiper.params.virtual.cache = false;
83
+        swiper.params.virtual.renderExternal = setVirtualData;
84
+        swiper.params.virtual.renderExternalUpdate = false;
85
+      }
86
+    }
87
+  });
88
+
89
+  if (swiperRef.current) {
90
+    swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);
91
+  }
92
+
93
+  useEffect(function () {
94
+    return function () {
95
+      if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);
96
+    };
97
+  }); // set initialized flag
98
+
99
+  useEffect(function () {
100
+    if (!initializedRef.current && swiperRef.current) {
101
+      swiperRef.current.emitSlidesClasses();
102
+      initializedRef.current = true;
103
+    }
104
+  }); // watch for params change
105
+
106
+  useIsomorphicLayoutEffect(function () {
107
+    if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {
108
+      updateSwiper(swiperRef.current, slides, passedParams, changedParams);
109
+    }
110
+  }); // update on virtual update
111
+
112
+  useIsomorphicLayoutEffect(function () {
113
+    updateOnVirtualData(swiperRef.current);
114
+  }, [virtualData]); // init swiper
115
+
116
+  useIsomorphicLayoutEffect(function () {
117
+    if (externalElRef) {
118
+      externalElRef.current = swiperElRef.current;
119
+    }
120
+
121
+    if (!swiperElRef.current) return;
122
+    initSwiper({
123
+      el: swiperElRef.current,
124
+      nextEl: nextElRef.current,
125
+      prevEl: prevElRef.current,
126
+      paginationEl: paginationElRef.current,
127
+      scrollbarEl: scrollbarElRef.current
128
+    }, swiperParams);
129
+    if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line
130
+
131
+    return function () {
132
+      if (swiperRef.current && !swiperRef.current.destroyed) {
133
+        swiperRef.current.destroy();
134
+      }
135
+    };
136
+  }, []); // bypass swiper instance to slides
137
+
138
+  function renderSlides() {
139
+    if (swiperParams.virtual) {
140
+      return renderVirtual(swiperRef.current, slides, virtualData);
141
+    }
142
+
143
+    if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {
144
+      return slides.map(function (child) {
145
+        return React.cloneElement(child, {
146
+          swiper: swiperRef.current
147
+        });
148
+      });
149
+    }
150
+
151
+    return renderLoop(swiperRef.current, slides, swiperParams);
152
+  }
153
+
154
+  return /*#__PURE__*/React.createElement(Tag, _extends({
155
+    ref: swiperElRef,
156
+    className: uniqueClasses("" + containerClasses + (className ? " " + className : ''))
157
+  }, restProps), slots['container-start'], needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
158
+    ref: prevElRef,
159
+    className: "swiper-button-prev"
160
+  }), /*#__PURE__*/React.createElement("div", {
161
+    ref: nextElRef,
162
+    className: "swiper-button-next"
163
+  })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", {
164
+    ref: scrollbarElRef,
165
+    className: "swiper-scrollbar"
166
+  }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", {
167
+    ref: paginationElRef,
168
+    className: "swiper-pagination"
169
+  }), /*#__PURE__*/React.createElement(WrapperTag, {
170
+    className: "swiper-wrapper"
171
+  }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), slots['container-end']);
172
+});
173
+Swiper.displayName = 'Swiper';
174
+export { Swiper };
0 175
\ No newline at end of file
1 176
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+import { isObject, extend } from './utils';
2
+
3
+function updateSwiper(swiper, slides, passedParams, changedParams) {
4
+  var updateParams = changedParams.filter(function (key) {
5
+    return key !== 'children' && key !== 'direction';
6
+  });
7
+  var currentParams = swiper.params,
8
+      pagination = swiper.pagination,
9
+      navigation = swiper.navigation,
10
+      scrollbar = swiper.scrollbar,
11
+      virtual = swiper.virtual,
12
+      thumbs = swiper.thumbs;
13
+  var needThumbsInit;
14
+  var needControllerInit;
15
+  var needPaginationInit;
16
+  var needScrollbarInit;
17
+  var needNavigationInit;
18
+
19
+  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {
20
+    needThumbsInit = true;
21
+  }
22
+
23
+  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
24
+    needControllerInit = true;
25
+  }
26
+
27
+  if (changedParams.includes('pagination') && passedParams.pagination && passedParams.pagination.el && currentParams.pagination && pagination && !pagination.el) {
28
+    needPaginationInit = true;
29
+  }
30
+
31
+  if (changedParams.includes('scrollbar') && passedParams.scrollbar && passedParams.scrollbar.el && currentParams.scrollbar && scrollbar && !scrollbar.el) {
32
+    needScrollbarInit = true;
33
+  }
34
+
35
+  if (changedParams.includes('navigation') && passedParams.navigation && passedParams.navigation.prevEl && passedParams.navigation.nextEl && currentParams.navigation && navigation && !navigation.prevEl && !navigation.nextEl) {
36
+    needNavigationInit = true;
37
+  }
38
+
39
+  updateParams.forEach(function (key) {
40
+    if (isObject(currentParams[key]) && isObject(passedParams[key])) {
41
+      extend(currentParams[key], passedParams[key]);
42
+    } else {
43
+      currentParams[key] = passedParams[key];
44
+    }
45
+  });
46
+
47
+  if (changedParams.includes('children') && virtual && currentParams.virtual.enabled) {
48
+    virtual.slides = slides;
49
+    virtual.update(true);
50
+  }
51
+
52
+  if (needThumbsInit) {
53
+    var initialized = thumbs.init();
54
+    if (initialized) thumbs.update(true);
55
+  }
56
+
57
+  if (needControllerInit) {
58
+    swiper.controller.control = currentParams.controller.control;
59
+  }
60
+
61
+  if (needPaginationInit) {
62
+    pagination.init();
63
+    pagination.render();
64
+    pagination.update();
65
+  }
66
+
67
+  if (needScrollbarInit) {
68
+    scrollbar.init();
69
+    scrollbar.updateSize();
70
+    scrollbar.setTranslate();
71
+  }
72
+
73
+  if (needNavigationInit) {
74
+    navigation.init();
75
+    navigation.update();
76
+  }
77
+
78
+  if (changedParams.includes('allowSlideNext')) {
79
+    swiper.allowSlideNext = passedParams.allowSlideNext;
80
+  }
81
+
82
+  if (changedParams.includes('allowSlidePrev')) {
83
+    swiper.allowSlidePrev = passedParams.allowSlidePrev;
84
+  }
85
+
86
+  if (changedParams.includes('direction')) {
87
+    swiper.changeDirection(passedParams.direction, false);
88
+  }
89
+
90
+  swiper.update();
91
+}
92
+
93
+export { updateSwiper };
0 94
\ No newline at end of file
1 95
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+import { useEffect, useLayoutEffect } from 'react';
2
+
3
+function useIsomorphicLayoutEffect(callback, deps) {
4
+  // eslint-disable-next-line
5
+  if (typeof window === 'undefined') return useEffect(callback, deps);
6
+  return useLayoutEffect(callback, deps);
7
+}
8
+
9
+export { useIsomorphicLayoutEffect };
0 10
\ No newline at end of file
1 11
new file mode 100644
... ...
@@ -0,0 +1,56 @@
1
+function isObject(o) {
2
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
3
+}
4
+
5
+function extend(target, src) {
6
+  Object.keys(src).forEach(function (key) {
7
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
8
+      extend(target[key], src[key]);
9
+    } else {
10
+      target[key] = src[key];
11
+    }
12
+  });
13
+}
14
+
15
+function needsNavigation(params) {
16
+  if (params === void 0) {
17
+    params = {};
18
+  }
19
+
20
+  return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';
21
+}
22
+
23
+function needsPagination(params) {
24
+  if (params === void 0) {
25
+    params = {};
26
+  }
27
+
28
+  return params.pagination && typeof params.pagination.el === 'undefined';
29
+}
30
+
31
+function needsScrollbar(params) {
32
+  if (params === void 0) {
33
+    params = {};
34
+  }
35
+
36
+  return params.scrollbar && typeof params.scrollbar.el === 'undefined';
37
+}
38
+
39
+function uniqueClasses(classNames) {
40
+  if (classNames === void 0) {
41
+    classNames = '';
42
+  }
43
+
44
+  var classes = classNames.split(' ').map(function (c) {
45
+    return c.trim();
46
+  }).filter(function (c) {
47
+    return !!c;
48
+  });
49
+  var unique = [];
50
+  classes.forEach(function (c) {
51
+    if (unique.indexOf(c) < 0) unique.push(c);
52
+  });
53
+  return unique.join(' ');
54
+}
55
+
56
+export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };
0 57
\ No newline at end of file
1 58
new file mode 100644
... ...
@@ -0,0 +1,31 @@
1
+import React from 'react';
2
+
3
+function updateOnVirtualData(swiper) {
4
+  if (!swiper || swiper.destroyed) return;
5
+  swiper.updateSlides();
6
+  swiper.updateProgress();
7
+  swiper.updateSlidesClasses();
8
+
9
+  if (swiper.lazy && swiper.params.lazy.enabled) {
10
+    swiper.lazy.load();
11
+  }
12
+}
13
+
14
+function renderVirtual(swiper, slides, virtualData) {
15
+  var _ref;
16
+
17
+  if (!virtualData) return null;
18
+  var style = swiper.isHorizontal() ? (_ref = {}, _ref[swiper.rtlTranslate ? 'right' : 'left'] = virtualData.offset + "px", _ref) : {
19
+    top: virtualData.offset + "px"
20
+  };
21
+  return slides.filter(function (child, index) {
22
+    return index >= virtualData.from && index <= virtualData.to;
23
+  }).map(function (child) {
24
+    return React.cloneElement(child, {
25
+      swiper: swiper,
26
+      style: style
27
+    });
28
+  });
29
+}
30
+
31
+export { renderVirtual, updateOnVirtualData };
0 32
\ No newline at end of file
1 33
new file mode 100644
... ...
@@ -0,0 +1,43 @@
1
+import { isObject } from './utils';
2
+import { paramsList } from './params-list';
3
+
4
+function getChangedParams(swiperParams, oldParams) {
5
+  var keys = [];
6
+  if (!oldParams) return keys;
7
+
8
+  var addKey = function addKey(key) {
9
+    if (keys.indexOf(key) < 0) keys.push(key);
10
+  };
11
+
12
+  var watchParams = paramsList.filter(function (key) {
13
+    return key[0] === '_';
14
+  }).map(function (key) {
15
+    return key.replace(/_/, '');
16
+  });
17
+  watchParams.forEach(function (key) {
18
+    if (key in swiperParams && key in oldParams) {
19
+      if (isObject(swiperParams[key]) && isObject(oldParams[key])) {
20
+        var newKeys = Object.keys(swiperParams[key]);
21
+        var oldKeys = Object.keys(oldParams[key]);
22
+
23
+        if (newKeys.length !== oldKeys.length) {
24
+          addKey(key);
25
+        } else {
26
+          newKeys.forEach(function (newKey) {
27
+            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
28
+              addKey(key);
29
+            }
30
+          });
31
+          oldKeys.forEach(function (oldKey) {
32
+            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
33
+          });
34
+        }
35
+      } else if (swiperParams[key] !== oldParams[key]) {
36
+        addKey(key);
37
+      }
38
+    }
39
+  });
40
+  return keys;
41
+}
42
+
43
+export { getChangedParams };
0 44
\ No newline at end of file
1 45
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+// eslint-disable-next-line
2
+import Swiper from '../../core';
3
+import { isObject, extend } from './utils';
4
+import { paramsList } from './params-list';
5
+
6
+function getParams(obj) {
7
+  if (obj === void 0) {
8
+    obj = {};
9
+  }
10
+
11
+  var params = {
12
+    on: {}
13
+  };
14
+  var passedParams = {};
15
+  extend(params, Swiper.defaults);
16
+  extend(params, Swiper.extendedDefaults);
17
+  params._emitClasses = true;
18
+  var rest = {};
19
+  var allowedParams = paramsList.map(function (key) {
20
+    return key.replace(/_/, '');
21
+  });
22
+  Object.keys(obj).forEach(function (key) {
23
+    if (allowedParams.indexOf(key) >= 0) {
24
+      if (isObject(obj[key])) {
25
+        params[key] = {};
26
+        passedParams[key] = {};
27
+        extend(params[key], obj[key]);
28
+        extend(passedParams[key], obj[key]);
29
+      } else {
30
+        params[key] = obj[key];
31
+        passedParams[key] = obj[key];
32
+      }
33
+    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
34
+      params.on["" + key[2].toLowerCase() + key.substr(3)] = obj[key];
35
+    } else {
36
+      rest[key] = obj[key];
37
+    }
38
+  });
39
+  return {
40
+    params: params,
41
+    passedParams: passedParams,
42
+    rest: rest
43
+  };
44
+}
45
+
46
+export { getParams };
0 47
\ No newline at end of file
1 48
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+// eslint-disable-next-line
2
+import Swiper from '../../core';
3
+import { needsNavigation, needsPagination, needsScrollbar } from './utils';
4
+
5
+function initSwiper(_ref, swiperParams) {
6
+  var el = _ref.el,
7
+      nextEl = _ref.nextEl,
8
+      prevEl = _ref.prevEl,
9
+      paginationEl = _ref.paginationEl,
10
+      scrollbarEl = _ref.scrollbarEl;
11
+
12
+  if (needsNavigation(swiperParams) && nextEl && prevEl) {
13
+    if (swiperParams.navigation === true) {
14
+      swiperParams.navigation = {};
15
+    }
16
+
17
+    swiperParams.navigation.nextEl = nextEl;
18
+    swiperParams.navigation.prevEl = prevEl;
19
+  }
20
+
21
+  if (needsPagination(swiperParams) && paginationEl) {
22
+    if (swiperParams.pagination === true) {
23
+      swiperParams.pagination = {};
24
+    }
25
+
26
+    swiperParams.pagination.el = paginationEl;
27
+  }
28
+
29
+  if (needsScrollbar(swiperParams) && scrollbarEl) {
30
+    if (swiperParams.scrollbar === true) {
31
+      swiperParams.scrollbar = {};
32
+    }
33
+
34
+    swiperParams.scrollbar.el = scrollbarEl;
35
+  }
36
+
37
+  return new Swiper(el, swiperParams);
38
+}
39
+
40
+export { initSwiper };
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+/* underscore in name -> watch for changes */
2
+var paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', // modules
3
+'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];
4
+export { paramsList };
0 5
\ No newline at end of file
1 6
new file mode 100644
... ...
@@ -0,0 +1,341 @@
1
+/* swiper.svelte generated by Svelte v3.24.1 */
2
+import {
3
+	SvelteComponent,
4
+	assign,
5
+	attr,
6
+	binding_callbacks,
7
+	check_outros,
8
+	compute_rest_props,
9
+	create_slot,
10
+	detach,
11
+	element,
12
+	exclude_internal_props,
13
+	get_spread_update,
14
+	group_outros,
15
+	init,
16
+	insert,
17
+	safe_not_equal,
18
+	set_attributes,
19
+	transition_in,
20
+	transition_out,
21
+	update_slot
22
+} from "svelte/internal";
23
+
24
+import { onMount, onDestroy, beforeUpdate, afterUpdate, tick } from "svelte";
25
+import { uniqueClasses } from "./utils";
26
+const get_default_slot_changes_1 = dirty => ({ data: dirty & /*slideData*/ 32 });
27
+const get_default_slot_context_1 = ctx => ({ data: /*slideData*/ ctx[5] });
28
+const get_default_slot_changes = dirty => ({ data: dirty & /*slideData*/ 32 });
29
+const get_default_slot_context = ctx => ({ data: /*slideData*/ ctx[5] });
30
+
31
+// (90:2) {:else}
32
+function create_else_block(ctx) {
33
+	let current;
34
+	const default_slot_template = /*$$slots*/ ctx[8].default;
35
+	const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[7], get_default_slot_context_1);
36
+
37
+	return {
38
+		c() {
39
+			if (default_slot) default_slot.c();
40
+		},
41
+		m(target, anchor) {
42
+			if (default_slot) {
43
+				default_slot.m(target, anchor);
44
+			}
45
+
46
+			current = true;
47
+		},
48
+		p(ctx, dirty) {
49
+			if (default_slot) {
50
+				if (default_slot.p && dirty & /*$$scope, slideData*/ 160) {
51
+					update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[7], dirty, get_default_slot_changes_1, get_default_slot_context_1);
52
+				}
53
+			}
54
+		},
55
+		i(local) {
56
+			if (current) return;
57
+			transition_in(default_slot, local);
58
+			current = true;
59
+		},
60
+		o(local) {
61
+			transition_out(default_slot, local);
62
+			current = false;
63
+		},
64
+		d(detaching) {
65
+			if (default_slot) default_slot.d(detaching);
66
+		}
67
+	};
68
+}
69
+
70
+// (84:2) {#if zoom}
71
+function create_if_block(ctx) {
72
+	let div;
73
+	let div_data_swiper_zoom_value;
74
+	let current;
75
+	const default_slot_template = /*$$slots*/ ctx[8].default;
76
+	const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[7], get_default_slot_context);
77
+
78
+	return {
79
+		c() {
80
+			div = element("div");
81
+			if (default_slot) default_slot.c();
82
+			attr(div, "class", "swiper-zoom-container");
83
+
84
+			attr(div, "data-swiper-zoom", div_data_swiper_zoom_value = typeof /*zoom*/ ctx[0] === "number"
85
+			? /*zoom*/ ctx[0]
86
+			: undefined);
87
+		},
88
+		m(target, anchor) {
89
+			insert(target, div, anchor);
90
+
91
+			if (default_slot) {
92
+				default_slot.m(div, null);
93
+			}
94
+
95
+			current = true;
96
+		},
97
+		p(ctx, dirty) {
98
+			if (default_slot) {
99
+				if (default_slot.p && dirty & /*$$scope, slideData*/ 160) {
100
+					update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[7], dirty, get_default_slot_changes, get_default_slot_context);
101
+				}
102
+			}
103
+
104
+			if (!current || dirty & /*zoom*/ 1 && div_data_swiper_zoom_value !== (div_data_swiper_zoom_value = typeof /*zoom*/ ctx[0] === "number"
105
+			? /*zoom*/ ctx[0]
106
+			: undefined)) {
107
+				attr(div, "data-swiper-zoom", div_data_swiper_zoom_value);
108
+			}
109
+		},
110
+		i(local) {
111
+			if (current) return;
112
+			transition_in(default_slot, local);
113
+			current = true;
114
+		},
115
+		o(local) {
116
+			transition_out(default_slot, local);
117
+			current = false;
118
+		},
119
+		d(detaching) {
120
+			if (detaching) detach(div);
121
+			if (default_slot) default_slot.d(detaching);
122
+		}
123
+	};
124
+}
125
+
126
+function create_fragment(ctx) {
127
+	let div;
128
+	let current_block_type_index;
129
+	let if_block;
130
+	let div_class_value;
131
+	let current;
132
+	const if_block_creators = [create_if_block, create_else_block];
133
+	const if_blocks = [];
134
+
135
+	function select_block_type(ctx, dirty) {
136
+		if (/*zoom*/ ctx[0]) return 0;
137
+		return 1;
138
+	}
139
+
140
+	current_block_type_index = select_block_type(ctx, -1);
141
+	if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
142
+
143
+	let div_levels = [
144
+		{
145
+			class: div_class_value = uniqueClasses(`${/*slideClasses*/ ctx[4]}${/*className*/ ctx[2] ? ` ${/*className*/ ctx[2]}` : ""}`)
146
+		},
147
+		{
148
+			"data-swiper-slide-index": /*virtualIndex*/ ctx[1]
149
+		},
150
+		/*$$restProps*/ ctx[6]
151
+	];
152
+
153
+	let div_data = {};
154
+
155
+	for (let i = 0; i < div_levels.length; i += 1) {
156
+		div_data = assign(div_data, div_levels[i]);
157
+	}
158
+
159
+	return {
160
+		c() {
161
+			div = element("div");
162
+			if_block.c();
163
+			set_attributes(div, div_data);
164
+		},
165
+		m(target, anchor) {
166
+			insert(target, div, anchor);
167
+			if_blocks[current_block_type_index].m(div, null);
168
+			/*div_binding*/ ctx[9](div);
169
+			current = true;
170
+		},
171
+		p(ctx, [dirty]) {
172
+			let previous_block_index = current_block_type_index;
173
+			current_block_type_index = select_block_type(ctx, dirty);
174
+
175
+			if (current_block_type_index === previous_block_index) {
176
+				if_blocks[current_block_type_index].p(ctx, dirty);
177
+			} else {
178
+				group_outros();
179
+
180
+				transition_out(if_blocks[previous_block_index], 1, 1, () => {
181
+					if_blocks[previous_block_index] = null;
182
+				});
183
+
184
+				check_outros();
185
+				if_block = if_blocks[current_block_type_index];
186
+
187
+				if (!if_block) {
188
+					if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
189
+					if_block.c();
190
+				}
191
+
192
+				transition_in(if_block, 1);
193
+				if_block.m(div, null);
194
+			}
195
+
196
+			set_attributes(div, div_data = get_spread_update(div_levels, [
197
+				(!current || dirty & /*slideClasses, className*/ 20 && div_class_value !== (div_class_value = uniqueClasses(`${/*slideClasses*/ ctx[4]}${/*className*/ ctx[2] ? ` ${/*className*/ ctx[2]}` : ""}`))) && { class: div_class_value },
198
+				(!current || dirty & /*virtualIndex*/ 2) && {
199
+					"data-swiper-slide-index": /*virtualIndex*/ ctx[1]
200
+				},
201
+				dirty & /*$$restProps*/ 64 && /*$$restProps*/ ctx[6]
202
+			]));
203
+		},
204
+		i(local) {
205
+			if (current) return;
206
+			transition_in(if_block);
207
+			current = true;
208
+		},
209
+		o(local) {
210
+			transition_out(if_block);
211
+			current = false;
212
+		},
213
+		d(detaching) {
214
+			if (detaching) detach(div);
215
+			if_blocks[current_block_type_index].d();
216
+			/*div_binding*/ ctx[9](null);
217
+		}
218
+	};
219
+}
220
+
221
+function instance($$self, $$props, $$invalidate) {
222
+	const omit_props_names = ["zoom","virtualIndex","class"];
223
+	let $$restProps = compute_rest_props($$props, omit_props_names);
224
+	let { zoom = undefined } = $$props;
225
+	let { virtualIndex = undefined } = $$props;
226
+	let { class: className = undefined } = $$props;
227
+	let slideEl = null;
228
+	let slideClasses = "swiper-slide";
229
+	let swiper = null;
230
+	let eventAttached = false;
231
+
232
+	const updateClasses = (_, el, classNames) => {
233
+		if (el === slideEl) {
234
+			$$invalidate(4, slideClasses = classNames);
235
+		}
236
+	};
237
+
238
+	const attachEvent = () => {
239
+		if (!swiper || eventAttached) return;
240
+		swiper.on("_slideClass", updateClasses);
241
+		eventAttached = true;
242
+	};
243
+
244
+	const detachEvent = () => {
245
+		if (!swiper) return;
246
+		swiper.off("_slideClass", updateClasses);
247
+		eventAttached = false;
248
+	};
249
+
250
+	onMount(() => {
251
+		if (typeof virtualIndex === "undefined") return;
252
+
253
+		$$invalidate(
254
+			3,
255
+			slideEl.onSwiper = _swiper => {
256
+				swiper = _swiper;
257
+				attachEvent();
258
+			},
259
+			slideEl
260
+		);
261
+
262
+		attachEvent();
263
+	});
264
+
265
+	afterUpdate(() => {
266
+		if (!slideEl || !swiper) return;
267
+
268
+		if (swiper.destroyed) {
269
+			if (slideClasses !== "swiper-slide") {
270
+				$$invalidate(4, slideClasses = "swiper-slide");
271
+			}
272
+
273
+			return;
274
+		}
275
+
276
+		attachEvent();
277
+	});
278
+
279
+	beforeUpdate(() => {
280
+		attachEvent();
281
+	});
282
+
283
+	onDestroy(() => {
284
+		if (!swiper) return;
285
+		detachEvent();
286
+	});
287
+
288
+	let { $$slots = {}, $$scope } = $$props;
289
+
290
+	function div_binding($$value) {
291
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
292
+			slideEl = $$value;
293
+			$$invalidate(3, slideEl);
294
+		});
295
+	}
296
+
297
+	$$self.$$set = $$new_props => {
298
+		$$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
299
+		$$invalidate(6, $$restProps = compute_rest_props($$props, omit_props_names));
300
+		if ("zoom" in $$new_props) $$invalidate(0, zoom = $$new_props.zoom);
301
+		if ("virtualIndex" in $$new_props) $$invalidate(1, virtualIndex = $$new_props.virtualIndex);
302
+		if ("class" in $$new_props) $$invalidate(2, className = $$new_props.class);
303
+		if ("$$scope" in $$new_props) $$invalidate(7, $$scope = $$new_props.$$scope);
304
+	};
305
+
306
+	let slideData;
307
+
308
+	$$self.$$.update = () => {
309
+		if ($$self.$$.dirty & /*slideClasses*/ 16) {
310
+			$: $$invalidate(5, slideData = {
311
+				isActive: slideClasses.indexOf("swiper-slide-active") >= 0 || slideClasses.indexOf("swiper-slide-duplicate-active") >= 0,
312
+				isVisible: slideClasses.indexOf("swiper-slide-visible") >= 0,
313
+				isDuplicate: slideClasses.indexOf("swiper-slide-duplicate") >= 0,
314
+				isPrev: slideClasses.indexOf("swiper-slide-prev") >= 0 || slideClasses.indexOf("swiper-slide-duplicate-prev") >= 0,
315
+				isNext: slideClasses.indexOf("swiper-slide-next") >= 0 || slideClasses.indexOf("swiper-slide-duplicate next") >= 0
316
+			});
317
+		}
318
+	};
319
+
320
+	return [
321
+		zoom,
322
+		virtualIndex,
323
+		className,
324
+		slideEl,
325
+		slideClasses,
326
+		slideData,
327
+		$$restProps,
328
+		$$scope,
329
+		$$slots,
330
+		div_binding
331
+	];
332
+}
333
+
334
+class Swiper extends SvelteComponent {
335
+	constructor(options) {
336
+		super();
337
+		init(this, options, instance, create_fragment, safe_not_equal, { zoom: 0, virtualIndex: 1, class: 2 });
338
+	}
339
+}
340
+
341
+export default Swiper;
0 342
\ No newline at end of file
1 343
new file mode 100644
... ...
@@ -0,0 +1,551 @@
1
+/* swiper.svelte generated by Svelte v3.24.1 */
2
+import {
3
+	SvelteComponent,
4
+	append,
5
+	assign,
6
+	attr,
7
+	binding_callbacks,
8
+	compute_rest_props,
9
+	create_slot,
10
+	detach,
11
+	element,
12
+	exclude_internal_props,
13
+	get_spread_update,
14
+	init,
15
+	insert,
16
+	noop,
17
+	safe_not_equal,
18
+	set_attributes,
19
+	space,
20
+	transition_in,
21
+	transition_out,
22
+	update_slot
23
+} from "svelte/internal";
24
+
25
+import {
26
+	onMount,
27
+	onDestroy,
28
+	afterUpdate,
29
+	createEventDispatcher,
30
+	tick,
31
+	beforeUpdate
32
+} from "svelte";
33
+
34
+import { getParams } from "./get-params";
35
+import { initSwiper } from "./init-swiper";
36
+
37
+import {
38
+	needsScrollbar,
39
+	needsNavigation,
40
+	needsPagination,
41
+	uniqueClasses
42
+} from "./utils";
43
+
44
+import { getChangedParams } from "./get-changed-params";
45
+import { updateSwiper } from "./update-swiper";
46
+const get_content_end_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
47
+const get_content_end_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
48
+const get_wrapper_end_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
49
+const get_wrapper_end_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
50
+const get_default_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
51
+const get_default_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
52
+const get_wrapper_start_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
53
+const get_wrapper_start_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
54
+const get_content_start_slot_changes = dirty => ({ virtualData: dirty & /*virtualData*/ 512 });
55
+const get_content_start_slot_context = ctx => ({ virtualData: /*virtualData*/ ctx[9] });
56
+
57
+// (142:2) {#if needsNavigation(swiperParams)}
58
+function create_if_block_2(ctx) {
59
+	let div0;
60
+	let t;
61
+	let div1;
62
+
63
+	return {
64
+		c() {
65
+			div0 = element("div");
66
+			t = space();
67
+			div1 = element("div");
68
+			attr(div0, "class", "swiper-button-prev");
69
+			attr(div1, "class", "swiper-button-next");
70
+		},
71
+		m(target, anchor) {
72
+			insert(target, div0, anchor);
73
+			/*div0_binding*/ ctx[13](div0);
74
+			insert(target, t, anchor);
75
+			insert(target, div1, anchor);
76
+			/*div1_binding*/ ctx[14](div1);
77
+		},
78
+		p: noop,
79
+		d(detaching) {
80
+			if (detaching) detach(div0);
81
+			/*div0_binding*/ ctx[13](null);
82
+			if (detaching) detach(t);
83
+			if (detaching) detach(div1);
84
+			/*div1_binding*/ ctx[14](null);
85
+		}
86
+	};
87
+}
88
+
89
+// (146:2) {#if needsScrollbar(swiperParams)}
90
+function create_if_block_1(ctx) {
91
+	let div;
92
+
93
+	return {
94
+		c() {
95
+			div = element("div");
96
+			attr(div, "class", "swiper-scrollbar");
97
+		},
98
+		m(target, anchor) {
99
+			insert(target, div, anchor);
100
+			/*div_binding*/ ctx[15](div);
101
+		},
102
+		p: noop,
103
+		d(detaching) {
104
+			if (detaching) detach(div);
105
+			/*div_binding*/ ctx[15](null);
106
+		}
107
+	};
108
+}
109
+
110
+// (149:2) {#if needsPagination(swiperParams)}
111
+function create_if_block(ctx) {
112
+	let div;
113
+
114
+	return {
115
+		c() {
116
+			div = element("div");
117
+			attr(div, "class", "swiper-pagination");
118
+		},
119
+		m(target, anchor) {
120
+			insert(target, div, anchor);
121
+			/*div_binding_1*/ ctx[16](div);
122
+		},
123
+		p: noop,
124
+		d(detaching) {
125
+			if (detaching) detach(div);
126
+			/*div_binding_1*/ ctx[16](null);
127
+		}
128
+	};
129
+}
130
+
131
+function create_fragment(ctx) {
132
+	let div1;
133
+	let t0;
134
+	let show_if_2 = needsNavigation(/*swiperParams*/ ctx[2]);
135
+	let t1;
136
+	let show_if_1 = needsScrollbar(/*swiperParams*/ ctx[2]);
137
+	let t2;
138
+	let show_if = needsPagination(/*swiperParams*/ ctx[2]);
139
+	let t3;
140
+	let div0;
141
+	let t4;
142
+	let t5;
143
+	let t6;
144
+	let div1_class_value;
145
+	let current;
146
+	const content_start_slot_template = /*$$slots*/ ctx[12]["content-start"];
147
+	const content_start_slot = create_slot(content_start_slot_template, ctx, /*$$scope*/ ctx[11], get_content_start_slot_context);
148
+	let if_block0 = show_if_2 && create_if_block_2(ctx);
149
+	let if_block1 = show_if_1 && create_if_block_1(ctx);
150
+	let if_block2 = show_if && create_if_block(ctx);
151
+	const wrapper_start_slot_template = /*$$slots*/ ctx[12]["wrapper-start"];
152
+	const wrapper_start_slot = create_slot(wrapper_start_slot_template, ctx, /*$$scope*/ ctx[11], get_wrapper_start_slot_context);
153
+	const default_slot_template = /*$$slots*/ ctx[12].default;
154
+	const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[11], get_default_slot_context);
155
+	const wrapper_end_slot_template = /*$$slots*/ ctx[12]["wrapper-end"];
156
+	const wrapper_end_slot = create_slot(wrapper_end_slot_template, ctx, /*$$scope*/ ctx[11], get_wrapper_end_slot_context);
157
+	const content_end_slot_template = /*$$slots*/ ctx[12]["content-end"];
158
+	const content_end_slot = create_slot(content_end_slot_template, ctx, /*$$scope*/ ctx[11], get_content_end_slot_context);
159
+
160
+	let div1_levels = [
161
+		{
162
+			class: div1_class_value = uniqueClasses(`${/*containerClasses*/ ctx[1]}${/*className*/ ctx[0] ? ` ${/*className*/ ctx[0]}` : ""}`)
163
+		},
164
+		/*restProps*/ ctx[3]
165
+	];
166
+
167
+	let div1_data = {};
168
+
169
+	for (let i = 0; i < div1_levels.length; i += 1) {
170
+		div1_data = assign(div1_data, div1_levels[i]);
171
+	}
172
+
173
+	return {
174
+		c() {
175
+			div1 = element("div");
176
+			if (content_start_slot) content_start_slot.c();
177
+			t0 = space();
178
+			if (if_block0) if_block0.c();
179
+			t1 = space();
180
+			if (if_block1) if_block1.c();
181
+			t2 = space();
182
+			if (if_block2) if_block2.c();
183
+			t3 = space();
184
+			div0 = element("div");
185
+			if (wrapper_start_slot) wrapper_start_slot.c();
186
+			t4 = space();
187
+			if (default_slot) default_slot.c();
188
+			t5 = space();
189
+			if (wrapper_end_slot) wrapper_end_slot.c();
190
+			t6 = space();
191
+			if (content_end_slot) content_end_slot.c();
192
+			attr(div0, "class", "swiper-wrapper");
193
+			set_attributes(div1, div1_data);
194
+		},
195
+		m(target, anchor) {
196
+			insert(target, div1, anchor);
197
+
198
+			if (content_start_slot) {
199
+				content_start_slot.m(div1, null);
200
+			}
201
+
202
+			append(div1, t0);
203
+			if (if_block0) if_block0.m(div1, null);
204
+			append(div1, t1);
205
+			if (if_block1) if_block1.m(div1, null);
206
+			append(div1, t2);
207
+			if (if_block2) if_block2.m(div1, null);
208
+			append(div1, t3);
209
+			append(div1, div0);
210
+
211
+			if (wrapper_start_slot) {
212
+				wrapper_start_slot.m(div0, null);
213
+			}
214
+
215
+			append(div0, t4);
216
+
217
+			if (default_slot) {
218
+				default_slot.m(div0, null);
219
+			}
220
+
221
+			append(div0, t5);
222
+
223
+			if (wrapper_end_slot) {
224
+				wrapper_end_slot.m(div0, null);
225
+			}
226
+
227
+			append(div1, t6);
228
+
229
+			if (content_end_slot) {
230
+				content_end_slot.m(div1, null);
231
+			}
232
+
233
+			/*div1_binding_1*/ ctx[17](div1);
234
+			current = true;
235
+		},
236
+		p(ctx, [dirty]) {
237
+			if (content_start_slot) {
238
+				if (content_start_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
239
+					update_slot(content_start_slot, content_start_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_content_start_slot_changes, get_content_start_slot_context);
240
+				}
241
+			}
242
+
243
+			if (dirty & /*swiperParams*/ 4) show_if_2 = needsNavigation(/*swiperParams*/ ctx[2]);
244
+
245
+			if (show_if_2) {
246
+				if (if_block0) {
247
+					if_block0.p(ctx, dirty);
248
+				} else {
249
+					if_block0 = create_if_block_2(ctx);
250
+					if_block0.c();
251
+					if_block0.m(div1, t1);
252
+				}
253
+			} else if (if_block0) {
254
+				if_block0.d(1);
255
+				if_block0 = null;
256
+			}
257
+
258
+			if (dirty & /*swiperParams*/ 4) show_if_1 = needsScrollbar(/*swiperParams*/ ctx[2]);
259
+
260
+			if (show_if_1) {
261
+				if (if_block1) {
262
+					if_block1.p(ctx, dirty);
263
+				} else {
264
+					if_block1 = create_if_block_1(ctx);
265
+					if_block1.c();
266
+					if_block1.m(div1, t2);
267
+				}
268
+			} else if (if_block1) {
269
+				if_block1.d(1);
270
+				if_block1 = null;
271
+			}
272
+
273
+			if (dirty & /*swiperParams*/ 4) show_if = needsPagination(/*swiperParams*/ ctx[2]);
274
+
275
+			if (show_if) {
276
+				if (if_block2) {
277
+					if_block2.p(ctx, dirty);
278
+				} else {
279
+					if_block2 = create_if_block(ctx);
280
+					if_block2.c();
281
+					if_block2.m(div1, t3);
282
+				}
283
+			} else if (if_block2) {
284
+				if_block2.d(1);
285
+				if_block2 = null;
286
+			}
287
+
288
+			if (wrapper_start_slot) {
289
+				if (wrapper_start_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
290
+					update_slot(wrapper_start_slot, wrapper_start_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_wrapper_start_slot_changes, get_wrapper_start_slot_context);
291
+				}
292
+			}
293
+
294
+			if (default_slot) {
295
+				if (default_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
296
+					update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_default_slot_changes, get_default_slot_context);
297
+				}
298
+			}
299
+
300
+			if (wrapper_end_slot) {
301
+				if (wrapper_end_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
302
+					update_slot(wrapper_end_slot, wrapper_end_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_wrapper_end_slot_changes, get_wrapper_end_slot_context);
303
+				}
304
+			}
305
+
306
+			if (content_end_slot) {
307
+				if (content_end_slot.p && dirty & /*$$scope, virtualData*/ 2560) {
308
+					update_slot(content_end_slot, content_end_slot_template, ctx, /*$$scope*/ ctx[11], dirty, get_content_end_slot_changes, get_content_end_slot_context);
309
+				}
310
+			}
311
+
312
+			set_attributes(div1, div1_data = get_spread_update(div1_levels, [
313
+				(!current || dirty & /*containerClasses, className*/ 3 && div1_class_value !== (div1_class_value = uniqueClasses(`${/*containerClasses*/ ctx[1]}${/*className*/ ctx[0] ? ` ${/*className*/ ctx[0]}` : ""}`))) && { class: div1_class_value },
314
+				dirty & /*restProps*/ 8 && /*restProps*/ ctx[3]
315
+			]));
316
+		},
317
+		i(local) {
318
+			if (current) return;
319
+			transition_in(content_start_slot, local);
320
+			transition_in(wrapper_start_slot, local);
321
+			transition_in(default_slot, local);
322
+			transition_in(wrapper_end_slot, local);
323
+			transition_in(content_end_slot, local);
324
+			current = true;
325
+		},
326
+		o(local) {
327
+			transition_out(content_start_slot, local);
328
+			transition_out(wrapper_start_slot, local);
329
+			transition_out(default_slot, local);
330
+			transition_out(wrapper_end_slot, local);
331
+			transition_out(content_end_slot, local);
332
+			current = false;
333
+		},
334
+		d(detaching) {
335
+			if (detaching) detach(div1);
336
+			if (content_start_slot) content_start_slot.d(detaching);
337
+			if (if_block0) if_block0.d();
338
+			if (if_block1) if_block1.d();
339
+			if (if_block2) if_block2.d();
340
+			if (wrapper_start_slot) wrapper_start_slot.d(detaching);
341
+			if (default_slot) default_slot.d(detaching);
342
+			if (wrapper_end_slot) wrapper_end_slot.d(detaching);
343
+			if (content_end_slot) content_end_slot.d(detaching);
344
+			/*div1_binding_1*/ ctx[17](null);
345
+		}
346
+	};
347
+}
348
+
349
+function instance($$self, $$props, $$invalidate) {
350
+	const omit_props_names = ["class","swiper"];
351
+	let $$restProps = compute_rest_props($$props, omit_props_names);
352
+	const dispatch = createEventDispatcher();
353
+	let { class: className = undefined } = $$props;
354
+	let containerClasses = "swiper-container";
355
+	let breakpointChanged = false;
356
+	let swiperInstance = null;
357
+	let oldPassedParams = null;
358
+	let paramsData;
359
+	let swiperParams;
360
+	let passedParams;
361
+	let restProps;
362
+	let swiperEl = null;
363
+	let prevEl = null;
364
+	let nextEl = null;
365
+	let scrollbarEl = null;
366
+	let paginationEl = null;
367
+	let virtualData = { slides: [] };
368
+
369
+	function swiper() {
370
+		return swiperInstance;
371
+	}
372
+
373
+	const setVirtualData = data => {
374
+		$$invalidate(9, virtualData = data);
375
+
376
+		tick().then(() => {
377
+			swiperInstance.$wrapperEl.children(".swiper-slide").each(el => {
378
+				if (el.onSwiper) el.onSwiper(swiperInstance);
379
+			});
380
+
381
+			swiperInstance.updateSlides();
382
+			swiperInstance.updateProgress();
383
+			swiperInstance.updateSlidesClasses();
384
+
385
+			if (swiperInstance.lazy && swiperInstance.params.lazy.enabled) {
386
+				swiperInstance.lazy.load();
387
+			}
388
+		});
389
+	};
390
+
391
+	const calcParams = () => {
392
+		paramsData = getParams($$restProps);
393
+		$$invalidate(2, swiperParams = paramsData.params);
394
+		passedParams = paramsData.passedParams;
395
+		$$invalidate(3, restProps = paramsData.rest);
396
+	};
397
+
398
+	calcParams();
399
+	oldPassedParams = passedParams;
400
+
401
+	const onBeforeBreakpoint = () => {
402
+		breakpointChanged = true;
403
+	};
404
+
405
+	swiperParams.onAny = (event, ...args) => {
406
+		dispatch(event, [args]);
407
+	};
408
+
409
+	Object.assign(swiperParams.on, {
410
+		_beforeBreakpoint: onBeforeBreakpoint,
411
+		_containerClasses(_swiper, classes) {
412
+			$$invalidate(1, containerClasses = classes);
413
+		},
414
+		_swiper(_swiper) {
415
+			swiperInstance = _swiper;
416
+
417
+			if (_swiper.virtual && _swiper.params.virtual.enabled) {
418
+				_swiper.params.virtual.cache = false;
419
+				_swiper.params.virtual.renderExternalUpdate = false;
420
+
421
+				_swiper.params.virtual.renderExternal = data => {
422
+					setVirtualData(data);
423
+
424
+					if (swiperParams.virtual && swiperParams.virtual.renderExternal) {
425
+						swiperParams.virtual.renderExternal(data);
426
+					}
427
+				};
428
+			}
429
+
430
+			dispatch("swiper", [_swiper]);
431
+		}
432
+	});
433
+
434
+	onMount(() => {
435
+		if (!swiperEl) return;
436
+
437
+		initSwiper(
438
+			{
439
+				el: swiperEl,
440
+				nextEl,
441
+				prevEl,
442
+				paginationEl,
443
+				scrollbarEl
444
+			},
445
+			swiperParams
446
+		);
447
+
448
+		if (swiperParams.virtual) return;
449
+
450
+		swiperInstance.slides.each(el => {
451
+			if (el.onSwiper) el.onSwiper(swiperInstance);
452
+		});
453
+	});
454
+
455
+	afterUpdate(() => {
456
+		if (!swiperInstance) return;
457
+		calcParams();
458
+		const changedParams = getChangedParams(passedParams, oldPassedParams);
459
+
460
+		if ((changedParams.length || breakpointChanged) && swiperInstance && !swiperInstance.destroyed) {
461
+			updateSwiper(swiperInstance, passedParams, changedParams);
462
+		}
463
+
464
+		breakpointChanged = false;
465
+		oldPassedParams = passedParams;
466
+	});
467
+
468
+	onDestroy(() => {
469
+		if (swiperInstance && !swiperInstance.destroyed) {
470
+			swiperInstance.destroy();
471
+		}
472
+	});
473
+
474
+	let { $$slots = {}, $$scope } = $$props;
475
+
476
+	function div0_binding($$value) {
477
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
478
+			prevEl = $$value;
479
+			$$invalidate(5, prevEl);
480
+		});
481
+	}
482
+
483
+	function div1_binding($$value) {
484
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
485
+			nextEl = $$value;
486
+			$$invalidate(6, nextEl);
487
+		});
488
+	}
489
+
490
+	function div_binding($$value) {
491
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
492
+			scrollbarEl = $$value;
493
+			$$invalidate(7, scrollbarEl);
494
+		});
495
+	}
496
+
497
+	function div_binding_1($$value) {
498
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
499
+			paginationEl = $$value;
500
+			$$invalidate(8, paginationEl);
501
+		});
502
+	}
503
+
504
+	function div1_binding_1($$value) {
505
+		binding_callbacks[$$value ? "unshift" : "push"](() => {
506
+			swiperEl = $$value;
507
+			$$invalidate(4, swiperEl);
508
+		});
509
+	}
510
+
511
+	$$self.$$set = $$new_props => {
512
+		$$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
513
+		$$invalidate(27, $$restProps = compute_rest_props($$props, omit_props_names));
514
+		if ("class" in $$new_props) $$invalidate(0, className = $$new_props.class);
515
+		if ("$$scope" in $$new_props) $$invalidate(11, $$scope = $$new_props.$$scope);
516
+	};
517
+
518
+	return [
519
+		className,
520
+		containerClasses,
521
+		swiperParams,
522
+		restProps,
523
+		swiperEl,
524
+		prevEl,
525
+		nextEl,
526
+		scrollbarEl,
527
+		paginationEl,
528
+		virtualData,
529
+		swiper,
530
+		$$scope,
531
+		$$slots,
532
+		div0_binding,
533
+		div1_binding,
534
+		div_binding,
535
+		div_binding_1,
536
+		div1_binding_1
537
+	];
538
+}
539
+
540
+class Swiper extends SvelteComponent {
541
+	constructor(options) {
542
+		super();
543
+		init(this, options, instance, create_fragment, safe_not_equal, { class: 0, swiper: 10 });
544
+	}
545
+
546
+	get swiper() {
547
+		return this.$$.ctx[10];
548
+	}
549
+}
550
+
551
+export default Swiper;
0 552
\ No newline at end of file
1 553
new file mode 100644
... ...
@@ -0,0 +1,90 @@
1
+import { isObject, extend } from './utils';
2
+
3
+function updateSwiper(swiper, passedParams, changedParams) {
4
+  var updateParams = changedParams.filter(function (key) {
5
+    return key !== 'children' && key !== 'direction';
6
+  });
7
+  var currentParams = swiper.params,
8
+      pagination = swiper.pagination,
9
+      navigation = swiper.navigation,
10
+      scrollbar = swiper.scrollbar,
11
+      thumbs = swiper.thumbs;
12
+  var needThumbsInit;
13
+  var needControllerInit;
14
+  var needPaginationInit;
15
+  var needScrollbarInit;
16
+  var needNavigationInit;
17
+
18
+  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {
19
+    needThumbsInit = true;
20
+  }
21
+
22
+  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
23
+    needControllerInit = true;
24
+  }
25
+
26
+  if (changedParams.includes('pagination') && passedParams.pagination && passedParams.pagination.el && currentParams.pagination && pagination && !pagination.el) {
27
+    needPaginationInit = true;
28
+  }
29
+
30
+  if (changedParams.includes('scrollbar') && passedParams.scrollbar && passedParams.scrollbar.el && currentParams.scrollbar && scrollbar && !scrollbar.el) {
31
+    needScrollbarInit = true;
32
+  }
33
+
34
+  if (changedParams.includes('navigation') && passedParams.navigation && passedParams.navigation.prevEl && passedParams.navigation.nextEl && currentParams.navigation && navigation && !navigation.prevEl && !navigation.nextEl) {
35
+    needNavigationInit = true;
36
+  }
37
+
38
+  updateParams.forEach(function (key) {
39
+    if (isObject(currentParams[key]) && isObject(passedParams[key])) {
40
+      extend(currentParams[key], passedParams[key]);
41
+    } else {
42
+      currentParams[key] = passedParams[key];
43
+    }
44
+  });
45
+
46
+  if (needThumbsInit) {
47
+    var initialized = thumbs.init();
48
+
49
+    if (initialized) {
50
+      thumbs.update(true);
51
+    }
52
+  }
53
+
54
+  if (needControllerInit) {
55
+    swiper.controller.control = currentParams.controller.control;
56
+  }
57
+
58
+  if (needPaginationInit) {
59
+    pagination.init();
60
+    pagination.render();
61
+    pagination.update();
62
+  }
63
+
64
+  if (needScrollbarInit) {
65
+    scrollbar.init();
66
+    scrollbar.updateSize();
67
+    scrollbar.setTranslate();
68
+  }
69
+
70
+  if (needNavigationInit) {
71
+    navigation.init();
72
+    navigation.update();
73
+  }
74
+
75
+  if (changedParams.includes('allowSlideNext')) {
76
+    swiper.allowSlideNext = passedParams.allowSlideNext;
77
+  }
78
+
79
+  if (changedParams.includes('allowSlidePrev')) {
80
+    swiper.allowSlidePrev = passedParams.allowSlidePrev;
81
+  }
82
+
83
+  if (changedParams.includes('direction')) {
84
+    swiper.changeDirection(passedParams.direction, false);
85
+  }
86
+
87
+  swiper.update();
88
+}
89
+
90
+export { updateSwiper };
0 91
\ No newline at end of file
1 92
new file mode 100644
... ...
@@ -0,0 +1,56 @@
1
+function isObject(o) {
2
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
3
+}
4
+
5
+function extend(target, src) {
6
+  Object.keys(src).forEach(function (key) {
7
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
8
+      extend(target[key], src[key]);
9
+    } else {
10
+      target[key] = src[key];
11
+    }
12
+  });
13
+}
14
+
15
+function needsNavigation(params) {
16
+  if (params === void 0) {
17
+    params = {};
18
+  }
19
+
20
+  return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';
21
+}
22
+
23
+function needsPagination(params) {
24
+  if (params === void 0) {
25
+    params = {};
26
+  }
27
+
28
+  return params.pagination && typeof params.pagination.el === 'undefined';
29
+}
30
+
31
+function needsScrollbar(params) {
32
+  if (params === void 0) {
33
+    params = {};
34
+  }
35
+
36
+  return params.scrollbar && typeof params.scrollbar.el === 'undefined';
37
+}
38
+
39
+function uniqueClasses(classNames) {
40
+  if (classNames === void 0) {
41
+    classNames = '';
42
+  }
43
+
44
+  var classes = classNames.split(' ').map(function (c) {
45
+    return c.trim();
46
+  }).filter(function (c) {
47
+    return !!c;
48
+  });
49
+  var unique = [];
50
+  classes.forEach(function (c) {
51
+    if (unique.indexOf(c) < 0) unique.push(c);
52
+  });
53
+  return unique.join(' ');
54
+}
55
+
56
+export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };
0 57
\ No newline at end of file
1 58
new file mode 100644
... ...
@@ -0,0 +1,43 @@
1
+import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';
2
+var Methods = {
3
+  addClass: addClass,
4
+  removeClass: removeClass,
5
+  hasClass: hasClass,
6
+  toggleClass: toggleClass,
7
+  attr: attr,
8
+  removeAttr: removeAttr,
9
+  transform: transform,
10
+  transition: transition,
11
+  on: on,
12
+  off: off,
13
+  trigger: trigger,
14
+  transitionEnd: transitionEnd,
15
+  outerWidth: outerWidth,
16
+  outerHeight: outerHeight,
17
+  styles: styles,
18
+  offset: offset,
19
+  css: css,
20
+  each: each,
21
+  html: html,
22
+  text: text,
23
+  is: is,
24
+  index: index,
25
+  eq: eq,
26
+  append: append,
27
+  prepend: prepend,
28
+  next: next,
29
+  nextAll: nextAll,
30
+  prev: prev,
31
+  prevAll: prevAll,
32
+  parent: parent,
33
+  parents: parents,
34
+  closest: closest,
35
+  find: find,
36
+  children: children,
37
+  filter: filter,
38
+  remove: remove
39
+};
40
+Object.keys(Methods).forEach(function (methodName) {
41
+  $.fn[methodName] = Methods[methodName];
42
+});
43
+export default $;
0 44
\ No newline at end of file
1 45
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+import { getWindow } from 'ssr-window';
2
+var browser;
3
+
4
+function calcBrowser() {
5
+  var window = getWindow();
6
+
7
+  function isSafari() {
8
+    var ua = window.navigator.userAgent.toLowerCase();
9
+    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
10
+  }
11
+
12
+  return {
13
+    isEdge: !!window.navigator.userAgent.match(/Edge/g),
14
+    isSafari: isSafari(),
15
+    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
16
+  };
17
+}
18
+
19
+function getBrowser() {
20
+  if (!browser) {
21
+    browser = calcBrowser();
22
+  }
23
+
24
+  return browser;
25
+}
26
+
27
+export { getBrowser };
0 28
\ No newline at end of file
1 29
new file mode 100644
... ...
@@ -0,0 +1,62 @@
1
+import { getWindow } from 'ssr-window';
2
+import { getSupport } from './get-support';
3
+var device;
4
+
5
+function calcDevice(_temp) {
6
+  var _ref = _temp === void 0 ? {} : _temp,
7
+      userAgent = _ref.userAgent;
8
+
9
+  var support = getSupport();
10
+  var window = getWindow();
11
+  var platform = window.navigator.platform;
12
+  var ua = userAgent || window.navigator.userAgent;
13
+  var device = {
14
+    ios: false,
15
+    android: false
16
+  };
17
+  var screenWidth = window.screen.width;
18
+  var screenHeight = window.screen.height;
19
+  var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
20
+
21
+  var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
22
+  var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
23
+  var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
24
+  var windows = platform === 'Win32';
25
+  var macos = platform === 'MacIntel'; // iPadOs 13 fix
26
+
27
+  var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
28
+
29
+  if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
30
+    ipad = ua.match(/(Version)\/([\d.]+)/);
31
+    if (!ipad) ipad = [0, 1, '13_0_0'];
32
+    macos = false;
33
+  } // Android
34
+
35
+
36
+  if (android && !windows) {
37
+    device.os = 'android';
38
+    device.android = true;
39
+  }
40
+
41
+  if (ipad || iphone || ipod) {
42
+    device.os = 'ios';
43
+    device.ios = true;
44
+  } // Export object
45
+
46
+
47
+  return device;
48
+}
49
+
50
+function getDevice(overrides) {
51
+  if (overrides === void 0) {
52
+    overrides = {};
53
+  }
54
+
55
+  if (!device) {
56
+    device = calcDevice(overrides);
57
+  }
58
+
59
+  return device;
60
+}
61
+
62
+export { getDevice };
0 63
\ No newline at end of file
1 64
new file mode 100644
... ...
@@ -0,0 +1,43 @@
1
+import { getWindow, getDocument } from 'ssr-window';
2
+var support;
3
+
4
+function calcSupport() {
5
+  var window = getWindow();
6
+  var document = getDocument();
7
+  return {
8
+    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
9
+    pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
10
+    observer: function checkObserver() {
11
+      return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
12
+    }(),
13
+    passiveListener: function checkPassiveListener() {
14
+      var supportsPassive = false;
15
+
16
+      try {
17
+        var opts = Object.defineProperty({}, 'passive', {
18
+          // eslint-disable-next-line
19
+          get: function get() {
20
+            supportsPassive = true;
21
+          }
22
+        });
23
+        window.addEventListener('testPassiveListener', null, opts);
24
+      } catch (e) {// No support
25
+      }
26
+
27
+      return supportsPassive;
28
+    }(),
29
+    gestures: function checkGestures() {
30
+      return 'ongesturestart' in window;
31
+    }()
32
+  };
33
+}
34
+
35
+function getSupport() {
36
+  if (!support) {
37
+    support = calcSupport();
38
+  }
39
+
40
+  return support;
41
+}
42
+
43
+export { getSupport };
0 44
\ No newline at end of file
1 45
new file mode 100644
... ...
@@ -0,0 +1,123 @@
1
+import { getWindow } from 'ssr-window';
2
+
3
+function deleteProps(obj) {
4
+  var object = obj;
5
+  Object.keys(object).forEach(function (key) {
6
+    try {
7
+      object[key] = null;
8
+    } catch (e) {// no getter for object
9
+    }
10
+
11
+    try {
12
+      delete object[key];
13
+    } catch (e) {// something got wrong
14
+    }
15
+  });
16
+}
17
+
18
+function nextTick(callback, delay) {
19
+  if (delay === void 0) {
20
+    delay = 0;
21
+  }
22
+
23
+  return setTimeout(callback, delay);
24
+}
25
+
26
+function now() {
27
+  return Date.now();
28
+}
29
+
30
+function getTranslate(el, axis) {
31
+  if (axis === void 0) {
32
+    axis = 'x';
33
+  }
34
+
35
+  var window = getWindow();
36
+  var matrix;
37
+  var curTransform;
38
+  var transformMatrix;
39
+  var curStyle = window.getComputedStyle(el, null);
40
+
41
+  if (window.WebKitCSSMatrix) {
42
+    curTransform = curStyle.transform || curStyle.webkitTransform;
43
+
44
+    if (curTransform.split(',').length > 6) {
45
+      curTransform = curTransform.split(', ').map(function (a) {
46
+        return a.replace(',', '.');
47
+      }).join(', ');
48
+    } // Some old versions of Webkit choke when 'none' is passed; pass
49
+    // empty string instead in this case
50
+
51
+
52
+    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
53
+  } else {
54
+    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
55
+    matrix = transformMatrix.toString().split(',');
56
+  }
57
+
58
+  if (axis === 'x') {
59
+    // Latest Chrome and webkits Fix
60
+    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
61
+    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
62
+      else curTransform = parseFloat(matrix[4]);
63
+  }
64
+
65
+  if (axis === 'y') {
66
+    // Latest Chrome and webkits Fix
67
+    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
68
+    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
69
+      else curTransform = parseFloat(matrix[5]);
70
+  }
71
+
72
+  return curTransform || 0;
73
+}
74
+
75
+function isObject(o) {
76
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
77
+}
78
+
79
+function extend() {
80
+  var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
81
+
82
+  for (var i = 1; i < arguments.length; i += 1) {
83
+    var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
84
+
85
+    if (nextSource !== undefined && nextSource !== null) {
86
+      var keysArray = Object.keys(Object(nextSource));
87
+
88
+      for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
89
+        var nextKey = keysArray[nextIndex];
90
+        var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
91
+
92
+        if (desc !== undefined && desc.enumerable) {
93
+          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
94
+            extend(to[nextKey], nextSource[nextKey]);
95
+          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
96
+            to[nextKey] = {};
97
+            extend(to[nextKey], nextSource[nextKey]);
98
+          } else {
99
+            to[nextKey] = nextSource[nextKey];
100
+          }
101
+        }
102
+      }
103
+    }
104
+  }
105
+
106
+  return to;
107
+}
108
+
109
+function bindModuleMethods(instance, obj) {
110
+  Object.keys(obj).forEach(function (key) {
111
+    if (isObject(obj[key])) {
112
+      Object.keys(obj[key]).forEach(function (subKey) {
113
+        if (typeof obj[key][subKey] === 'function') {
114
+          obj[key][subKey] = obj[key][subKey].bind(instance);
115
+        }
116
+      });
117
+    }
118
+
119
+    instance[key] = obj[key];
120
+  });
121
+}
122
+
123
+export { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods };
0 124
\ No newline at end of file
1 125
new file mode 100644
... ...
@@ -0,0 +1,51 @@
1
+import { paramsList } from './params-list';
2
+import { isObject } from './utils';
3
+
4
+function getChangedParams(swiperParams, oldParams, children, oldChildren) {
5
+  var keys = [];
6
+  if (!oldParams) return keys;
7
+
8
+  var addKey = function addKey(key) {
9
+    if (keys.indexOf(key) < 0) keys.push(key);
10
+  };
11
+
12
+  var oldChildrenKeys = oldChildren.map(function (child) {
13
+    return child.props && child.props.key;
14
+  });
15
+  var childrenKeys = children.map(function (child) {
16
+    return child.props && child.props.key;
17
+  });
18
+  if (oldChildrenKeys.join('') !== childrenKeys.join('')) keys.push('children');
19
+  if (oldChildren.length !== children.length) keys.push('children');
20
+  var watchParams = paramsList.filter(function (key) {
21
+    return key[0] === '_';
22
+  }).map(function (key) {
23
+    return key.replace(/_/, '');
24
+  });
25
+  watchParams.forEach(function (key) {
26
+    if (key in swiperParams && key in oldParams) {
27
+      if (isObject(swiperParams[key]) && isObject(oldParams[key])) {
28
+        var newKeys = Object.keys(swiperParams[key]);
29
+        var oldKeys = Object.keys(oldParams[key]);
30
+
31
+        if (newKeys.length !== oldKeys.length) {
32
+          addKey(key);
33
+        } else {
34
+          newKeys.forEach(function (newKey) {
35
+            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
36
+              addKey(key);
37
+            }
38
+          });
39
+          oldKeys.forEach(function (oldKey) {
40
+            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
41
+          });
42
+        }
43
+      } else if (swiperParams[key] !== oldParams[key]) {
44
+        addKey(key);
45
+      }
46
+    }
47
+  });
48
+  return keys;
49
+}
50
+
51
+export { getChangedParams };
0 52
\ No newline at end of file
1 53
new file mode 100644
... ...
@@ -0,0 +1,41 @@
1
+function getChildren(originalSlots, slidesRef, oldSlidesRef) {
2
+  if (originalSlots === void 0) {
3
+    originalSlots = {};
4
+  }
5
+
6
+  var slides = [];
7
+  var slots = {
8
+    'container-start': [],
9
+    'container-end': [],
10
+    'wrapper-start': [],
11
+    'wrapper-end': []
12
+  };
13
+
14
+  var getSlidesFromElements = function getSlidesFromElements(els, slotName) {
15
+    els.forEach(function (vnode) {
16
+      var isFragment = typeof vnode.type === 'symbol';
17
+      if (slotName === 'default') slotName = 'container-end';
18
+
19
+      if (isFragment && vnode.children) {
20
+        getSlidesFromElements(vnode.children, 'default');
21
+      } else if (vnode.type && vnode.type.name === 'SwiperSlide') {
22
+        slides.push(vnode);
23
+      } else if (slots[slotName]) {
24
+        slots[slotName].push(vnode);
25
+      }
26
+    });
27
+  };
28
+
29
+  Object.keys(originalSlots).forEach(function (slotName) {
30
+    var els = originalSlots[slotName]();
31
+    getSlidesFromElements(els, slotName);
32
+  });
33
+  oldSlidesRef.value = slidesRef.value;
34
+  slidesRef.value = slides;
35
+  return {
36
+    slides: slides,
37
+    slots: slots
38
+  };
39
+}
40
+
41
+export { getChildren };
0 42
\ No newline at end of file
1 43
new file mode 100644
... ...
@@ -0,0 +1,48 @@
1
+// eslint-disable-next-line
2
+import Swiper from '../../core';
3
+import { isObject, extend } from './utils';
4
+import { paramsList } from './params-list';
5
+
6
+function getParams(obj) {
7
+  if (obj === void 0) {
8
+    obj = {};
9
+  }
10
+
11
+  var params = {
12
+    on: {}
13
+  };
14
+  var passedParams = {};
15
+  extend(params, Swiper.defaults);
16
+  extend(params, Swiper.extendedDefaults);
17
+  params._emitClasses = true;
18
+  var rest = {};
19
+  var allowedParams = paramsList.map(function (key) {
20
+    return key.replace(/_/, '');
21
+  });
22
+  Object.keys(obj).forEach(function (key) {
23
+    if (typeof obj[key] === 'undefined') return;
24
+
25
+    if (allowedParams.indexOf(key) >= 0) {
26
+      if (isObject(obj[key])) {
27
+        params[key] = {};
28
+        passedParams[key] = {};
29
+        extend(params[key], obj[key]);
30
+        extend(passedParams[key], obj[key]);
31
+      } else {
32
+        params[key] = obj[key];
33
+        passedParams[key] = obj[key];
34
+      }
35
+    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
36
+      params.on["" + key[2].toLowerCase() + key.substr(3)] = obj[key];
37
+    } else {
38
+      rest[key] = obj[key];
39
+    }
40
+  });
41
+  return {
42
+    params: params,
43
+    passedParams: passedParams,
44
+    rest: rest
45
+  };
46
+}
47
+
48
+export { getParams };
0 49
\ No newline at end of file
1 50
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+// eslint-disable-next-line
2
+import Swiper from '../../core';
3
+import { needsNavigation, needsPagination, needsScrollbar } from './utils';
4
+
5
+function initSwiper(_ref, swiperParams) {
6
+  var el = _ref.el,
7
+      nextEl = _ref.nextEl,
8
+      prevEl = _ref.prevEl,
9
+      paginationEl = _ref.paginationEl,
10
+      scrollbarEl = _ref.scrollbarEl;
11
+
12
+  if (needsNavigation(swiperParams) && nextEl && prevEl) {
13
+    if (swiperParams.navigation === true) {
14
+      swiperParams.navigation = {};
15
+    }
16
+
17
+    swiperParams.navigation.nextEl = nextEl;
18
+    swiperParams.navigation.prevEl = prevEl;
19
+  }
20
+
21
+  if (needsPagination(swiperParams) && paginationEl) {
22
+    if (swiperParams.pagination === true) {
23
+      swiperParams.pagination = {};
24
+    }
25
+
26
+    swiperParams.pagination.el = paginationEl;
27
+  }
28
+
29
+  if (needsScrollbar(swiperParams) && scrollbarEl) {
30
+    if (swiperParams.scrollbar === true) {
31
+      swiperParams.scrollbar = {};
32
+    }
33
+
34
+    swiperParams.scrollbar.el = scrollbarEl;
35
+  }
36
+
37
+  return new Swiper(el, swiperParams);
38
+}
39
+
40
+export { initSwiper };
0 41
\ No newline at end of file
1 42
new file mode 100644
... ...
@@ -0,0 +1,82 @@
1
+function _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); }
2
+
3
+import { h } from 'vue'; // eslint-disable-next-line
4
+
5
+import Swiper from '../../core';
6
+
7
+function calcLoopedSlides(slides, swiperParams) {
8
+  var slidesPerViewParams = swiperParams.slidesPerView;
9
+
10
+  if (swiperParams.breakpoints) {
11
+    var breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);
12
+    var breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;
13
+
14
+    if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {
15
+      slidesPerViewParams = breakpointOnlyParams.slidesPerView;
16
+    }
17
+  }
18
+
19
+  var loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));
20
+  loopedSlides += swiperParams.loopAdditionalSlides;
21
+
22
+  if (loopedSlides > slides.length) {
23
+    loopedSlides = slides.length;
24
+  }
25
+
26
+  return loopedSlides;
27
+}
28
+
29
+function renderLoop(swiperRef, slides, swiperParams) {
30
+  var modifiedSlides = slides.map(function (child, index) {
31
+    if (!child.props) child.props = {};
32
+    child.props.swiperRef = swiperRef;
33
+    child.props['data-swiper-slide-index'] = index;
34
+    return child;
35
+  });
36
+
37
+  function duplicateSlide(child, index, position) {
38
+    if (!child.props) child.props = {};
39
+    return h(child.type, _extends(_extends({}, child.props), {}, {
40
+      key: child.key + "-duplicate-" + index + "-" + position,
41
+      class: (child.props.className || '') + " " + swiperParams.slideDuplicateClass + " " + (child.props.class || '')
42
+    }), child.children);
43
+  }
44
+
45
+  if (swiperParams.loopFillGroupWithBlank) {
46
+    var blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;
47
+
48
+    if (blankSlidesNum !== swiperParams.slidesPerGroup) {
49
+      for (var i = 0; i < blankSlidesNum; i += 1) {
50
+        var blankSlide = h('div', {
51
+          class: swiperParams.slideClass + " " + swiperParams.slideBlankClass
52
+        });
53
+        modifiedSlides.push(blankSlide);
54
+      }
55
+    }
56
+  }
57
+
58
+  if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {
59
+    swiperParams.loopedSlides = modifiedSlides.length;
60
+  }
61
+
62
+  var loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);
63
+  var prependSlides = [];
64
+  var appendSlides = [];
65
+  modifiedSlides.forEach(function (child, index) {
66
+    if (index < loopedSlides) {
67
+      appendSlides.push(duplicateSlide(child, index, 'prepend'));
68
+    }
69
+
70
+    if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) {
71
+      prependSlides.push(duplicateSlide(child, index, 'append'));
72
+    }
73
+  });
74
+
75
+  if (swiperRef.value) {
76
+    swiperRef.value.loopedSlides = loopedSlides;
77
+  }
78
+
79
+  return [].concat(prependSlides, modifiedSlides, appendSlides);
80
+}
81
+
82
+export { calcLoopedSlides, renderLoop };
0 83
\ No newline at end of file
1 84
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+/* underscore in name -> watch for changes */
2
+var paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', // modules
3
+'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];
4
+export { paramsList };
0 5
\ No newline at end of file
1 6
new file mode 100644
... ...
@@ -0,0 +1,77 @@
1
+import { h, ref, onMounted, onUpdated, onBeforeUpdate, computed, onBeforeUnmount } from 'vue';
2
+import { uniqueClasses } from './utils';
3
+var SwiperSlide = {
4
+  name: 'SwiperSlide',
5
+  props: {
6
+    tag: {
7
+      type: String,
8
+      default: 'div'
9
+    },
10
+    swiperRef: Object,
11
+    zoom: {
12
+      type: Boolean,
13
+      default: undefined
14
+    },
15
+    virtualIndex: {
16
+      type: [String, Number],
17
+      default: undefined
18
+    }
19
+  },
20
+  setup: function setup(props, _ref) {
21
+    var slots = _ref.slots;
22
+    var eventAttached = false;
23
+    var swiperRef = props.swiperRef;
24
+    var slideElRef = ref(null);
25
+    var slideClasses = ref('swiper-slide');
26
+
27
+    function updateClasses(swiper, el, classNames) {
28
+      if (el === slideElRef.value) {
29
+        slideClasses.value = classNames;
30
+      }
31
+    }
32
+
33
+    onMounted(function () {
34
+      if (!swiperRef.value) return;
35
+      swiperRef.value.on('_slideClass', updateClasses);
36
+      eventAttached = true;
37
+    });
38
+    onBeforeUpdate(function () {
39
+      if (eventAttached || !swiperRef || !swiperRef.value) return;
40
+      swiperRef.value.on('_slideClass', updateClasses);
41
+      eventAttached = true;
42
+    });
43
+    onUpdated(function () {
44
+      if (!slideElRef.value || !swiperRef || !swiperRef.value) return;
45
+
46
+      if (swiperRef.value.destroyed) {
47
+        if (slideClasses.value !== 'swiper-slide') {
48
+          slideClasses.value = 'swiper-slide';
49
+        }
50
+      }
51
+    });
52
+    onBeforeUnmount(function () {
53
+      if (!swiperRef || !swiperRef.value) return;
54
+      swiperRef.value.off('_slideClass', updateClasses);
55
+    });
56
+    var slideData = computed(function () {
57
+      return {
58
+        isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-active') >= 0,
59
+        isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0,
60
+        isDuplicate: slideClasses.value.indexOf('swiper-slide-duplicate') >= 0,
61
+        isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-prev') >= 0,
62
+        isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate next') >= 0
63
+      };
64
+    });
65
+    return function () {
66
+      return h(props.tag, {
67
+        class: uniqueClasses("" + slideClasses.value),
68
+        ref: slideElRef,
69
+        'data-swiper-slide-index': props.virtualIndex
70
+      }, props.zoom ? h('div', {
71
+        class: 'swiper-zoom-container',
72
+        'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined
73
+      }, slots.default && slots.default(slideData.value)) : slots.default && slots.default(slideData.value));
74
+    };
75
+  }
76
+};
77
+export { SwiperSlide };
0 78
\ No newline at end of file
1 79
new file mode 100644
... ...
@@ -0,0 +1,619 @@
1
+import { h, ref, onMounted, onUpdated, onBeforeUnmount, watch } from 'vue';
2
+import { getParams } from './get-params';
3
+import { initSwiper } from './init-swiper';
4
+import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses } from './utils';
5
+import { renderLoop, calcLoopedSlides } from './loop';
6
+import { getChangedParams } from './get-changed-params';
7
+import { getChildren } from './get-children';
8
+import { updateSwiper } from './update-swiper';
9
+import { renderVirtual, updateOnVirtualData } from './virtual';
10
+var Swiper = {
11
+  name: 'Swiper',
12
+  props: {
13
+    tag: {
14
+      type: String,
15
+      default: 'div'
16
+    },
17
+    wrapperTag: {
18
+      type: String,
19
+      default: 'div'
20
+    },
21
+    init: {
22
+      type: Boolean,
23
+      default: undefined
24
+    },
25
+    direction: {
26
+      type: String,
27
+      default: undefined
28
+    },
29
+    touchEventsTarget: {
30
+      type: String,
31
+      default: undefined
32
+    },
33
+    initialSlide: {
34
+      type: Number,
35
+      default: undefined
36
+    },
37
+    speed: {
38
+      type: Number,
39
+      default: undefined
40
+    },
41
+    cssMode: {
42
+      type: Boolean,
43
+      default: undefined
44
+    },
45
+    updateOnWindowResize: {
46
+      type: Boolean,
47
+      default: undefined
48
+    },
49
+    nested: {
50
+      type: Boolean,
51
+      default: undefined
52
+    },
53
+    width: {
54
+      type: Number,
55
+      default: undefined
56
+    },
57
+    height: {
58
+      type: Number,
59
+      default: undefined
60
+    },
61
+    preventInteractionOnTransition: {
62
+      type: Boolean,
63
+      default: undefined
64
+    },
65
+    userAgent: {
66
+      type: String,
67
+      default: undefined
68
+    },
69
+    url: {
70
+      type: String,
71
+      default: undefined
72
+    },
73
+    edgeSwipeDetection: {
74
+      type: Boolean,
75
+      default: undefined
76
+    },
77
+    edgeSwipeThreshold: {
78
+      type: Number,
79
+      default: undefined
80
+    },
81
+    freeMode: {
82
+      type: Boolean,
83
+      default: undefined
84
+    },
85
+    freeModeMomentum: {
86
+      type: Boolean,
87
+      default: undefined
88
+    },
89
+    freeModeMomentumRatio: {
90
+      type: Number,
91
+      default: undefined
92
+    },
93
+    freeModeMomentumBounce: {
94
+      type: Boolean,
95
+      default: undefined
96
+    },
97
+    freeModeMomentumBounceRatio: {
98
+      type: Number,
99
+      default: undefined
100
+    },
101
+    freeModeMomentumVelocityRatio: {
102
+      type: Number,
103
+      default: undefined
104
+    },
105
+    freeModeSticky: {
106
+      type: Boolean,
107
+      default: undefined
108
+    },
109
+    freeModeMinimumVelocity: {
110
+      type: Number,
111
+      default: undefined
112
+    },
113
+    autoHeight: {
114
+      type: Boolean,
115
+      default: undefined
116
+    },
117
+    setWrapperSize: {
118
+      type: Boolean,
119
+      default: undefined
120
+    },
121
+    virtualTranslate: {
122
+      type: Boolean,
123
+      default: undefined
124
+    },
125
+    effect: {
126
+      type: String,
127
+      default: undefined
128
+    },
129
+    breakpoints: {
130
+      type: Object,
131
+      default: undefined
132
+    },
133
+    spaceBetween: {
134
+      type: Number,
135
+      default: undefined
136
+    },
137
+    slidesPerView: {
138
+      type: [Number, String],
139
+      default: undefined
140
+    },
141
+    slidesPerColumn: {
142
+      type: Number,
143
+      default: undefined
144
+    },
145
+    slidesPerColumnFill: {
146
+      type: String,
147
+      default: undefined
148
+    },
149
+    slidesPerGroup: {
150
+      type: Number,
151
+      default: undefined
152
+    },
153
+    slidesPerGroupSkip: {
154
+      type: Number,
155
+      default: undefined
156
+    },
157
+    centeredSlides: {
158
+      type: Boolean,
159
+      default: undefined
160
+    },
161
+    centeredSlidesBounds: {
162
+      type: Boolean,
163
+      default: undefined
164
+    },
165
+    slidesOffsetBefore: {
166
+      type: Number,
167
+      default: undefined
168
+    },
169
+    slidesOffsetAfter: {
170
+      type: Number,
171
+      default: undefined
172
+    },
173
+    normalizeSlideIndex: {
174
+      type: Boolean,
175
+      default: undefined
176
+    },
177
+    centerInsufficientSlides: {
178
+      type: Boolean,
179
+      default: undefined
180
+    },
181
+    watchOverflow: {
182
+      type: Boolean,
183
+      default: undefined
184
+    },
185
+    roundLengths: {
186
+      type: Boolean,
187
+      default: undefined
188
+    },
189
+    touchRatio: {
190
+      type: Number,
191
+      default: undefined
192
+    },
193
+    touchAngle: {
194
+      type: Number,
195
+      default: undefined
196
+    },
197
+    simulateTouch: {
198
+      type: Boolean,
199
+      default: undefined
200
+    },
201
+    shortSwipes: {
202
+      type: Boolean,
203
+      default: undefined
204
+    },
205
+    longSwipes: {
206
+      type: Boolean,
207
+      default: undefined
208
+    },
209
+    longSwipesRatio: {
210
+      type: Number,
211
+      default: undefined
212
+    },
213
+    longSwipesMs: {
214
+      type: Number,
215
+      default: undefined
216
+    },
217
+    followFinger: {
218
+      type: Boolean,
219
+      default: undefined
220
+    },
221
+    allowTouchMove: {
222
+      type: Boolean,
223
+      default: undefined
224
+    },
225
+    threshold: {
226
+      type: Number,
227
+      default: undefined
228
+    },
229
+    touchMoveStopPropagation: {
230
+      type: Boolean,
231
+      default: undefined
232
+    },
233
+    touchStartPreventDefault: {
234
+      type: Boolean,
235
+      default: undefined
236
+    },
237
+    touchStartForcePreventDefault: {
238
+      type: Boolean,
239
+      default: undefined
240
+    },
241
+    touchReleaseOnEdges: {
242
+      type: Boolean,
243
+      default: undefined
244
+    },
245
+    uniqueNavElements: {
246
+      type: Boolean,
247
+      default: undefined
248
+    },
249
+    resistance: {
250
+      type: Boolean,
251
+      default: undefined
252
+    },
253
+    resistanceRatio: {
254
+      type: Number,
255
+      default: undefined
256
+    },
257
+    watchSlidesProgress: {
258
+      type: Boolean,
259
+      default: undefined
260
+    },
261
+    watchSlidesVisibility: {
262
+      type: Boolean,
263
+      default: undefined
264
+    },
265
+    grabCursor: {
266
+      type: Boolean,
267
+      default: undefined
268
+    },
269
+    preventClicks: {
270
+      type: Boolean,
271
+      default: undefined
272
+    },
273
+    preventClicksPropagation: {
274
+      type: Boolean,
275
+      default: undefined
276
+    },
277
+    slideToClickedSlide: {
278
+      type: Boolean,
279
+      default: undefined
280
+    },
281
+    preloadImages: {
282
+      type: Boolean,
283
+      default: undefined
284
+    },
285
+    updateOnImagesReady: {
286
+      type: Boolean,
287
+      default: undefined
288
+    },
289
+    loop: {
290
+      type: Boolean,
291
+      default: undefined
292
+    },
293
+    loopAdditionalSlides: {
294
+      type: Number,
295
+      default: undefined
296
+    },
297
+    loopedSlides: {
298
+      type: Number,
299
+      default: undefined
300
+    },
301
+    loopFillGroupWithBlank: {
302
+      type: Boolean,
303
+      default: undefined
304
+    },
305
+    loopPreventsSlide: {
306
+      type: Boolean,
307
+      default: undefined
308
+    },
309
+    allowSlidePrev: {
310
+      type: Boolean,
311
+      default: undefined
312
+    },
313
+    allowSlideNext: {
314
+      type: Boolean,
315
+      default: undefined
316
+    },
317
+    swipeHandler: {
318
+      type: Boolean,
319
+      default: undefined
320
+    },
321
+    noSwiping: {
322
+      type: Boolean,
323
+      default: undefined
324
+    },
325
+    noSwipingClass: {
326
+      type: String,
327
+      default: undefined
328
+    },
329
+    noSwipingSelector: {
330
+      type: String,
331
+      default: undefined
332
+    },
333
+    passiveListeners: {
334
+      type: Boolean,
335
+      default: undefined
336
+    },
337
+    containerModifierClass: {
338
+      type: String,
339
+      default: undefined
340
+    },
341
+    slideClass: {
342
+      type: String,
343
+      default: undefined
344
+    },
345
+    slideBlankClass: {
346
+      type: String,
347
+      default: undefined
348
+    },
349
+    slideActiveClass: {
350
+      type: String,
351
+      default: undefined
352
+    },
353
+    slideDuplicateActiveClass: {
354
+      type: String,
355
+      default: undefined
356
+    },
357
+    slideVisibleClass: {
358
+      type: String,
359
+      default: undefined
360
+    },
361
+    slideDuplicateClass: {
362
+      type: String,
363
+      default: undefined
364
+    },
365
+    slideNextClass: {
366
+      type: String,
367
+      default: undefined
368
+    },
369
+    slideDuplicateNextClass: {
370
+      type: String,
371
+      default: undefined
372
+    },
373
+    slidePrevClass: {
374
+      type: String,
375
+      default: undefined
376
+    },
377
+    slideDuplicatePrevClass: {
378
+      type: String,
379
+      default: undefined
380
+    },
381
+    wrapperClass: {
382
+      type: String,
383
+      default: undefined
384
+    },
385
+    runCallbacksOnInit: {
386
+      type: Boolean,
387
+      default: undefined
388
+    },
389
+    a11y: {
390
+      type: [Boolean, Object],
391
+      default: undefined
392
+    },
393
+    autoplay: {
394
+      type: [Boolean, Object],
395
+      default: undefined
396
+    },
397
+    controller: {
398
+      type: Object,
399
+      default: undefined
400
+    },
401
+    coverflowEffect: {
402
+      type: Object,
403
+      default: undefined
404
+    },
405
+    cubeEffect: {
406
+      type: Object,
407
+      default: undefined
408
+    },
409
+    fadeEffect: {
410
+      type: Object,
411
+      default: undefined
412
+    },
413
+    flipEffect: {
414
+      type: Object,
415
+      default: undefined
416
+    },
417
+    hashNavigation: {
418
+      type: [Boolean, Object],
419
+      default: undefined
420
+    },
421
+    history: {
422
+      type: [Boolean, Object],
423
+      default: undefined
424
+    },
425
+    keyboard: {
426
+      type: [Boolean, Object],
427
+      default: undefined
428
+    },
429
+    lazy: {
430
+      type: [Boolean, Object],
431
+      default: undefined
432
+    },
433
+    mousewheel: {
434
+      type: [Boolean, Object],
435
+      default: undefined
436
+    },
437
+    navigation: {
438
+      type: [Boolean, Object],
439
+      default: undefined
440
+    },
441
+    pagination: {
442
+      type: [Boolean, Object],
443
+      default: undefined
444
+    },
445
+    parallax: {
446
+      type: [Boolean, Object],
447
+      default: undefined
448
+    },
449
+    scrollbar: {
450
+      type: [Boolean, Object],
451
+      default: undefined
452
+    },
453
+    thumbs: {
454
+      type: Object,
455
+      default: undefined
456
+    },
457
+    virtual: {
458
+      type: [Boolean, Object],
459
+      default: undefined
460
+    },
461
+    zoom: {
462
+      type: [Boolean, Object],
463
+      default: undefined
464
+    }
465
+  },
466
+  emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_swiper', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'doubleTap', 'doubleClick', 'destroy', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress', 'lazyImageLoad', 'lazyImageReady', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'update', 'zoomChange'],
467
+  setup: function setup(props, _ref) {
468
+    var originalSlots = _ref.slots,
469
+        emit = _ref.emit;
470
+    var Tag = props.tag,
471
+        WrapperTag = props.wrapperTag;
472
+    var containerClasses = ref('swiper-container');
473
+    var virtualData = ref(null);
474
+    var breakpointChanged = ref(false);
475
+    var initializedRef = ref(false);
476
+    var swiperElRef = ref(null);
477
+    var swiperRef = ref(null);
478
+    var oldPassedParamsRef = ref(null);
479
+    var slidesRef = ref([]);
480
+    var oldSlidesRef = ref([]);
481
+    var nextElRef = ref(null);
482
+    var prevElRef = ref(null);
483
+    var paginationElRef = ref(null);
484
+    var scrollbarElRef = ref(null);
485
+
486
+    var _getParams = getParams(props),
487
+        swiperParams = _getParams.params,
488
+        passedParams = _getParams.passedParams;
489
+
490
+    getChildren(originalSlots, slidesRef, oldSlidesRef);
491
+    oldPassedParamsRef.value = passedParams;
492
+    oldSlidesRef.value = slidesRef.value;
493
+
494
+    var onBeforeBreakpoint = function onBeforeBreakpoint() {
495
+      getChildren(originalSlots, slidesRef, oldSlidesRef);
496
+      breakpointChanged.value = true;
497
+    };
498
+
499
+    swiperParams.onAny = function (event) {
500
+      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
501
+        args[_key - 1] = arguments[_key];
502
+      }
503
+
504
+      emit.apply(void 0, [event].concat(args));
505
+    };
506
+
507
+    Object.assign(swiperParams.on, {
508
+      _beforeBreakpoint: onBeforeBreakpoint,
509
+      _containerClasses: function _containerClasses(swiper, classes) {
510
+        containerClasses.value = classes;
511
+      },
512
+      _swiper: function _swiper(swiper) {
513
+        swiper.loopCreate = function () {};
514
+
515
+        swiper.loopDestroy = function () {};
516
+
517
+        if (swiperParams.loop) {
518
+          swiper.loopedSlides = calcLoopedSlides(slidesRef.value, swiperParams);
519
+        }
520
+
521
+        swiperRef.value = swiper;
522
+
523
+        if (swiper.virtual && swiper.params.virtual.enabled) {
524
+          swiper.virtual.slides = slidesRef.value;
525
+          swiper.params.virtual.cache = false;
526
+
527
+          swiper.params.virtual.renderExternal = function (data) {
528
+            virtualData.value = data;
529
+          };
530
+
531
+          swiper.params.virtual.renderExternalUpdate = false;
532
+        }
533
+      }
534
+    });
535
+    onUpdated(function () {
536
+      // set initialized flag
537
+      if (!initializedRef.value && swiperRef.value) {
538
+        swiperRef.value.emitSlidesClasses();
539
+        initializedRef.value = true;
540
+      } // watch for params change
541
+
542
+
543
+      var _getParams2 = getParams(props),
544
+          newPassedParams = _getParams2.passedParams;
545
+
546
+      var changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value);
547
+      oldPassedParamsRef.value = newPassedParams;
548
+
549
+      if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) {
550
+        updateSwiper(swiperRef.value, slidesRef.value, newPassedParams, changedParams);
551
+      }
552
+
553
+      breakpointChanged.value = false;
554
+    }); // update on virtual update
555
+
556
+    watch(virtualData, function () {
557
+      updateOnVirtualData(swiperRef.value);
558
+    }); // init swiper
559
+
560
+    onMounted(function () {
561
+      if (!swiperElRef.value) return;
562
+      initSwiper({
563
+        el: swiperElRef.value,
564
+        nextEl: nextElRef.value,
565
+        prevEl: prevElRef.value,
566
+        paginationEl: paginationElRef.value,
567
+        scrollbarEl: scrollbarElRef.value
568
+      }, swiperParams);
569
+      emit('swiper', swiperRef.value);
570
+    });
571
+    onBeforeUnmount(function () {
572
+      if (swiperRef.value && !swiperRef.value.destroyed) {
573
+        swiperRef.value.destroy();
574
+      }
575
+    }); // bypass swiper instance to slides
576
+
577
+    function renderSlides(slides) {
578
+      if (swiperParams.virtual) {
579
+        return renderVirtual(swiperRef, slides, virtualData.value);
580
+      }
581
+
582
+      if (!swiperParams.loop || swiperRef.value && swiperRef.value.destroyed) {
583
+        slides.forEach(function (slide) {
584
+          if (!slide.props) slide.props = {};
585
+          slide.props.swiperRef = swiperRef;
586
+        });
587
+        return slides;
588
+      }
589
+
590
+      return renderLoop(swiperRef, slides, swiperParams);
591
+    }
592
+
593
+    return function () {
594
+      var _getChildren = getChildren(originalSlots, slidesRef, oldSlidesRef),
595
+          slides = _getChildren.slides,
596
+          slots = _getChildren.slots;
597
+
598
+      return h(Tag, {
599
+        ref: swiperElRef,
600
+        class: uniqueClasses(containerClasses.value)
601
+      }, [slots['container-start'], needsNavigation(props) && [h('div', {
602
+        ref: prevElRef,
603
+        class: 'swiper-button-prev'
604
+      }), h('div', {
605
+        ref: nextElRef,
606
+        class: 'swiper-button-next'
607
+      })], needsScrollbar(props) && h('div', {
608
+        ref: scrollbarElRef,
609
+        class: 'swiper-scrollbar'
610
+      }), needsPagination(props) && h('div', {
611
+        ref: paginationElRef,
612
+        class: 'swiper-pagination'
613
+      }), h(WrapperTag, {
614
+        class: 'swiper-wrapper'
615
+      }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), slots['container-end']]);
616
+    };
617
+  }
618
+};
619
+export { Swiper };
0 620
\ No newline at end of file
1 621
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+import { isObject, extend } from './utils';
2
+
3
+function updateSwiper(swiper, slides, passedParams, changedParams) {
4
+  var updateParams = changedParams.filter(function (key) {
5
+    return key !== 'children' && key !== 'direction';
6
+  });
7
+  var currentParams = swiper.params,
8
+      pagination = swiper.pagination,
9
+      navigation = swiper.navigation,
10
+      scrollbar = swiper.scrollbar,
11
+      virtual = swiper.virtual,
12
+      thumbs = swiper.thumbs;
13
+  var needThumbsInit;
14
+  var needControllerInit;
15
+  var needPaginationInit;
16
+  var needScrollbarInit;
17
+  var needNavigationInit;
18
+
19
+  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {
20
+    needThumbsInit = true;
21
+  }
22
+
23
+  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
24
+    needControllerInit = true;
25
+  }
26
+
27
+  if (changedParams.includes('pagination') && passedParams.pagination && passedParams.pagination.el && currentParams.pagination && pagination && !pagination.el) {
28
+    needPaginationInit = true;
29
+  }
30
+
31
+  if (changedParams.includes('scrollbar') && passedParams.scrollbar && passedParams.scrollbar.el && currentParams.scrollbar && scrollbar && !scrollbar.el) {
32
+    needScrollbarInit = true;
33
+  }
34
+
35
+  if (changedParams.includes('navigation') && passedParams.navigation && passedParams.navigation.prevEl && passedParams.navigation.nextEl && currentParams.navigation && navigation && !navigation.prevEl && !navigation.nextEl) {
36
+    needNavigationInit = true;
37
+  }
38
+
39
+  updateParams.forEach(function (key) {
40
+    if (isObject(currentParams[key]) && isObject(passedParams[key])) {
41
+      extend(currentParams[key], passedParams[key]);
42
+    } else {
43
+      currentParams[key] = passedParams[key];
44
+    }
45
+  });
46
+
47
+  if (changedParams.includes('children') && virtual && currentParams.virtual.enabled) {
48
+    virtual.slides = slides;
49
+    virtual.update(true);
50
+  }
51
+
52
+  if (needThumbsInit) {
53
+    var initialized = thumbs.init();
54
+    if (initialized) thumbs.update(true);
55
+  }
56
+
57
+  if (needControllerInit) {
58
+    swiper.controller.control = currentParams.controller.control;
59
+  }
60
+
61
+  if (needPaginationInit) {
62
+    pagination.init();
63
+    pagination.render();
64
+    pagination.update();
65
+  }
66
+
67
+  if (needScrollbarInit) {
68
+    scrollbar.init();
69
+    scrollbar.updateSize();
70
+    scrollbar.setTranslate();
71
+  }
72
+
73
+  if (needNavigationInit) {
74
+    navigation.init();
75
+    navigation.update();
76
+  }
77
+
78
+  if (changedParams.includes('allowSlideNext')) {
79
+    swiper.allowSlideNext = passedParams.allowSlideNext;
80
+  }
81
+
82
+  if (changedParams.includes('allowSlidePrev')) {
83
+    swiper.allowSlidePrev = passedParams.allowSlidePrev;
84
+  }
85
+
86
+  if (changedParams.includes('direction')) {
87
+    swiper.changeDirection(passedParams.direction, false);
88
+  }
89
+
90
+  swiper.update();
91
+}
92
+
93
+export { updateSwiper };
0 94
\ No newline at end of file
1 95
new file mode 100644
... ...
@@ -0,0 +1,56 @@
1
+function isObject(o) {
2
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
3
+}
4
+
5
+function extend(target, src) {
6
+  Object.keys(src).forEach(function (key) {
7
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
8
+      extend(target[key], src[key]);
9
+    } else {
10
+      target[key] = src[key];
11
+    }
12
+  });
13
+}
14
+
15
+function needsNavigation(props) {
16
+  if (props === void 0) {
17
+    props = {};
18
+  }
19
+
20
+  return props.navigation && typeof props.navigation.nextEl === 'undefined' && typeof props.navigation.prevEl === 'undefined';
21
+}
22
+
23
+function needsPagination(props) {
24
+  if (props === void 0) {
25
+    props = {};
26
+  }
27
+
28
+  return props.pagination && typeof props.pagination.el === 'undefined';
29
+}
30
+
31
+function needsScrollbar(props) {
32
+  if (props === void 0) {
33
+    props = {};
34
+  }
35
+
36
+  return props.scrollbar && typeof props.scrollbar.el === 'undefined';
37
+}
38
+
39
+function uniqueClasses(classNames) {
40
+  if (classNames === void 0) {
41
+    classNames = '';
42
+  }
43
+
44
+  var classes = classNames.split(' ').map(function (c) {
45
+    return c.trim();
46
+  }).filter(function (c) {
47
+    return !!c;
48
+  });
49
+  var unique = [];
50
+  classes.forEach(function (c) {
51
+    if (unique.indexOf(c) < 0) unique.push(c);
52
+  });
53
+  return unique.join(' ');
54
+}
55
+
56
+export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };
0 57
\ No newline at end of file
1 58
new file mode 100644
... ...
@@ -0,0 +1,34 @@
1
+function _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); }
2
+
3
+import { h } from 'vue';
4
+
5
+function updateOnVirtualData(swiper) {
6
+  if (!swiper || swiper.destroyed) return;
7
+  swiper.updateSlides();
8
+  swiper.updateProgress();
9
+  swiper.updateSlidesClasses();
10
+
11
+  if (swiper.lazy && swiper.params.lazy.enabled) {
12
+    swiper.lazy.load();
13
+  }
14
+}
15
+
16
+function renderVirtual(swiperRef, slides, virtualData) {
17
+  var _ref;
18
+
19
+  if (!virtualData) return null;
20
+  var style = swiperRef.value.isHorizontal() ? (_ref = {}, _ref[swiperRef.value.rtlTranslate ? 'right' : 'left'] = virtualData.offset + "px", _ref) : {
21
+    top: virtualData.offset + "px"
22
+  };
23
+  return slides.filter(function (slide, index) {
24
+    return index >= virtualData.from && index <= virtualData.to;
25
+  }).map(function (slide) {
26
+    if (!slide.props) slide.props = {};
27
+    if (!slide.props.style) slide.props.style = {};
28
+    slide.props.swiperRef = swiperRef;
29
+    slide.props.style = style;
30
+    return h(slide.type, _extends({}, slide.props), slide.children);
31
+  });
32
+}
33
+
34
+export { renderVirtual, updateOnVirtualData };
0 35
\ No newline at end of file
1 36
new file mode 100644
... ...
@@ -0,0 +1,28 @@
1
+{
2
+  "requires": true,
3
+  "lockfileVersion": 1,
4
+  "dependencies": {
5
+    "dom7": {
6
+      "version": "3.0.0-alpha.9",
7
+      "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0-alpha.9.tgz",
8
+      "integrity": "sha512-wTxPe1vJqLAy2PzAROh/n1PsRF/ZklAJyRIn9shm2dAQjP4JhjsgDKQ1YTbuzf1KVlqOlqYPmwupQExcB9jOUg==",
9
+      "requires": {
10
+        "ssr-window": "^3.0.0-alpha.1"
11
+      }
12
+    },
13
+    "ssr-window": {
14
+      "version": "3.0.0-alpha.4",
15
+      "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0-alpha.4.tgz",
16
+      "integrity": "sha512-+dBRP/pZ+VyITxTzD0lMDzDwN/BmfUl8xi2e6t5Nz4+FqUphfcBLB1OOUSYCRNFB25rD3c8AJRYpY5rHTbL+kg=="
17
+    },
18
+    "swiper": {
19
+      "version": "6.3.3",
20
+      "resolved": "https://registry.npmjs.org/swiper/-/swiper-6.3.3.tgz",
21
+      "integrity": "sha512-SnG1weu2GhqKxuG4NTIA1A6OE9x3P/+d2DW6APLUgYNHm0ZgkAOxL/tEDubiHvgwqtaVaz6QWqkSbCaDYffSNg==",
22
+      "requires": {
23
+        "dom7": "^3.0.0-alpha.7",
24
+        "ssr-window": "^3.0.0-alpha.4"
25
+      }
26
+    }
27
+  }
28
+}
0 29
new file mode 100644
... ...
@@ -0,0 +1,90 @@
1
+{
2
+  "_from": "swiper",
3
+  "_id": "swiper@6.3.3",
4
+  "_inBundle": false,
5
+  "_integrity": "sha512-SnG1weu2GhqKxuG4NTIA1A6OE9x3P/+d2DW6APLUgYNHm0ZgkAOxL/tEDubiHvgwqtaVaz6QWqkSbCaDYffSNg==",
6
+  "_location": "/swiper",
7
+  "_phantomChildren": {},
8
+  "_requested": {
9
+    "type": "tag",
10
+    "registry": true,
11
+    "raw": "swiper",
12
+    "name": "swiper",
13
+    "escapedName": "swiper",
14
+    "rawSpec": "",
15
+    "saveSpec": null,
16
+    "fetchSpec": "latest"
17
+  },
18
+  "_requiredBy": [
19
+    "#USER",
20
+    "/"
21
+  ],
22
+  "_resolved": "https://registry.npmjs.org/swiper/-/swiper-6.3.3.tgz",
23
+  "_shasum": "e0b2e27621c07e789bfa91569b5676e896d18001",
24
+  "_spec": "swiper",
25
+  "_where": "/mnt/d/Work/PhpstormProjects/esalesmedia/contao-swiperjs/assets/lib/swiper/6.3.3",
26
+  "author": {
27
+    "name": "Vladimir Kharlampidi"
28
+  },
29
+  "bugs": {
30
+    "url": "https://github.com/nolimits4web/swiper/issues"
31
+  },
32
+  "bundleDependencies": false,
33
+  "dependencies": {
34
+    "dom7": "^3.0.0-alpha.7",
35
+    "ssr-window": "^3.0.0-alpha.4"
36
+  },
37
+  "deprecated": false,
38
+  "description": "Most modern mobile touch slider and framework with hardware accelerated transitions",
39
+  "engines": {
40
+    "node": ">= 4.7.0"
41
+  },
42
+  "funding": {
43
+    "type": "patreon",
44
+    "url": "https://www.patreon.com/vladimirkharlampidi"
45
+  },
46
+  "homepage": "https://swiperjs.com",
47
+  "jsnext:main": "swiper.esm.js",
48
+  "keywords": [
49
+    "swiper",
50
+    "swipe",
51
+    "slider",
52
+    "touch",
53
+    "ios",
54
+    "mobile",
55
+    "cordova",
56
+    "phonegap",
57
+    "app",
58
+    "framework",
59
+    "framework7",
60
+    "carousel",
61
+    "gallery",
62
+    "plugin",
63
+    "react",
64
+    "slideshow"
65
+  ],
66
+  "license": "MIT",
67
+  "main": "swiper.cjs.js",
68
+  "module": "swiper.esm.js",
69
+  "name": "swiper",
70
+  "repository": {
71
+    "type": "git",
72
+    "url": "git+https://github.com/nolimits4web/Swiper.git"
73
+  },
74
+  "scripts": {
75
+    "postinstall": "echo \"\u001b[35m\u001b[1mLove Swiper? Support Vladimir's work by donating or pledging on patreon:\u001b[22m\u001b[39m\n > \u001b[32mhttps://patreon.com/vladimirkharlampidi\u001b[0m\n\""
76
+  },
77
+  "sideEffects": [
78
+    "*.less",
79
+    "*.scss",
80
+    "*.css",
81
+    "cjs/utils/dom.js",
82
+    "cjs/components/core/core-class.js",
83
+    "esm/utils/dom.js",
84
+    "esm/components/core/core-class.js",
85
+    "swiper-bundle.cjs.js",
86
+    "swiper-bundle.esm.js"
87
+  ],
88
+  "typings": "swiper.d.ts",
89
+  "version": "6.3.3"
90
+}
0 91
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+{
2
+  "name": "swiper/react",
3
+  "private": true,
4
+  "main": "../swiper-react.cjs.js",
5
+  "jsnext:main": "../swiper-react.esm.js",
6
+  "module": "../swiper-react.esm.js",
7
+  "typings": "../swiper-react.d.ts",
8
+  "sideEffects": false
9
+}
0 10
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+{
2
+  "name": "swiper/svelte",
3
+  "private": true,
4
+  "main": "../swiper-svelte.cjs.js",
5
+  "jsnext:main": "../swiper-svelte.esm.js",
6
+  "module": "../swiper-svelte.esm.js",
7
+  "sideEffects": false
8
+}
0 9
new file mode 100644
... ...
@@ -0,0 +1,45 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+'use strict';
14
+
15
+Object.defineProperty(exports, '__esModule', { value: true });
16
+
17
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
18
+
19
+var Swiper = _interopDefault(require('./cjs/components/core/core-class'));
20
+var Virtual = _interopDefault(require('./cjs/components/virtual/virtual'));
21
+var Keyboard = _interopDefault(require('./cjs/components/keyboard/keyboard'));
22
+var Mousewheel = _interopDefault(require('./cjs/components/mousewheel/mousewheel'));
23
+var Navigation = _interopDefault(require('./cjs/components/navigation/navigation'));
24
+var Pagination = _interopDefault(require('./cjs/components/pagination/pagination'));
25
+var Scrollbar = _interopDefault(require('./cjs/components/scrollbar/scrollbar'));
26
+var Parallax = _interopDefault(require('./cjs/components/parallax/parallax'));
27
+var Zoom = _interopDefault(require('./cjs/components/zoom/zoom'));
28
+var Lazy = _interopDefault(require('./cjs/components/lazy/lazy'));
29
+var Controller = _interopDefault(require('./cjs/components/controller/controller'));
30
+var A11y = _interopDefault(require('./cjs/components/a11y/a11y'));
31
+var History = _interopDefault(require('./cjs/components/history/history'));
32
+var HashNavigation = _interopDefault(require('./cjs/components/hash-navigation/hash-navigation'));
33
+var Autoplay = _interopDefault(require('./cjs/components/autoplay/autoplay'));
34
+var EffectFade = _interopDefault(require('./cjs/components/effect-fade/effect-fade'));
35
+var EffectCube = _interopDefault(require('./cjs/components/effect-cube/effect-cube'));
36
+var EffectFlip = _interopDefault(require('./cjs/components/effect-flip/effect-flip'));
37
+var EffectCoverflow = _interopDefault(require('./cjs/components/effect-coverflow/effect-coverflow'));
38
+var Thumbs = _interopDefault(require('./cjs/components/thumbs/thumbs'));
39
+
40
+// Swiper Class
41
+var components = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs];
42
+Swiper.use(components);
43
+
44
+exports.Swiper = Swiper;
45
+exports.default = Swiper;
0 46
new file mode 100644
... ...
@@ -0,0 +1,532 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+@font-face {
14
+  font-family: 'swiper-icons';
15
+  src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');
16
+  font-weight: 400;
17
+  font-style: normal;
18
+}
19
+:root {
20
+  --swiper-theme-color: #007aff;
21
+}
22
+.swiper-container {
23
+  margin-left: auto;
24
+  margin-right: auto;
25
+  position: relative;
26
+  overflow: hidden;
27
+  list-style: none;
28
+  padding: 0;
29
+  /* Fix of Webkit flickering */
30
+  z-index: 1;
31
+}
32
+.swiper-container-vertical > .swiper-wrapper {
33
+  flex-direction: column;
34
+}
35
+.swiper-wrapper {
36
+  position: relative;
37
+  width: 100%;
38
+  height: 100%;
39
+  z-index: 1;
40
+  display: flex;
41
+  transition-property: transform;
42
+  box-sizing: content-box;
43
+}
44
+.swiper-container-android .swiper-slide,
45
+.swiper-wrapper {
46
+  transform: translate3d(0px, 0, 0);
47
+}
48
+.swiper-container-multirow > .swiper-wrapper {
49
+  flex-wrap: wrap;
50
+}
51
+.swiper-container-multirow-column > .swiper-wrapper {
52
+  flex-wrap: wrap;
53
+  flex-direction: column;
54
+}
55
+.swiper-container-free-mode > .swiper-wrapper {
56
+  transition-timing-function: ease-out;
57
+  margin: 0 auto;
58
+}
59
+.swiper-slide {
60
+  flex-shrink: 0;
61
+  width: 100%;
62
+  height: 100%;
63
+  position: relative;
64
+  transition-property: transform;
65
+}
66
+.swiper-slide-invisible-blank {
67
+  visibility: hidden;
68
+}
69
+/* Auto Height */
70
+.swiper-container-autoheight,
71
+.swiper-container-autoheight .swiper-slide {
72
+  height: auto;
73
+}
74
+.swiper-container-autoheight .swiper-wrapper {
75
+  align-items: flex-start;
76
+  transition-property: transform, height;
77
+}
78
+/* 3D Effects */
79
+.swiper-container-3d {
80
+  perspective: 1200px;
81
+}
82
+.swiper-container-3d .swiper-wrapper,
83
+.swiper-container-3d .swiper-slide,
84
+.swiper-container-3d .swiper-slide-shadow-left,
85
+.swiper-container-3d .swiper-slide-shadow-right,
86
+.swiper-container-3d .swiper-slide-shadow-top,
87
+.swiper-container-3d .swiper-slide-shadow-bottom,
88
+.swiper-container-3d .swiper-cube-shadow {
89
+  transform-style: preserve-3d;
90
+}
91
+.swiper-container-3d .swiper-slide-shadow-left,
92
+.swiper-container-3d .swiper-slide-shadow-right,
93
+.swiper-container-3d .swiper-slide-shadow-top,
94
+.swiper-container-3d .swiper-slide-shadow-bottom {
95
+  position: absolute;
96
+  left: 0;
97
+  top: 0;
98
+  width: 100%;
99
+  height: 100%;
100
+  pointer-events: none;
101
+  z-index: 10;
102
+}
103
+.swiper-container-3d .swiper-slide-shadow-left {
104
+  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
105
+}
106
+.swiper-container-3d .swiper-slide-shadow-right {
107
+  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
108
+}
109
+.swiper-container-3d .swiper-slide-shadow-top {
110
+  background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
111
+}
112
+.swiper-container-3d .swiper-slide-shadow-bottom {
113
+  background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
114
+}
115
+/* CSS Mode */
116
+.swiper-container-css-mode > .swiper-wrapper {
117
+  overflow: auto;
118
+  scrollbar-width: none;
119
+  /* For Firefox */
120
+  -ms-overflow-style: none;
121
+  /* For Internet Explorer and Edge */
122
+}
123
+.swiper-container-css-mode > .swiper-wrapper::-webkit-scrollbar {
124
+  display: none;
125
+}
126
+.swiper-container-css-mode > .swiper-wrapper > .swiper-slide {
127
+  scroll-snap-align: start start;
128
+}
129
+.swiper-container-horizontal.swiper-container-css-mode > .swiper-wrapper {
130
+  scroll-snap-type: x mandatory;
131
+}
132
+.swiper-container-vertical.swiper-container-css-mode > .swiper-wrapper {
133
+  scroll-snap-type: y mandatory;
134
+}
135
+:root {
136
+  --swiper-navigation-size: 44px;
137
+  /*
138
+  --swiper-navigation-color: var(--swiper-theme-color);
139
+  */
140
+}
141
+.swiper-button-prev,
142
+.swiper-button-next {
143
+  position: absolute;
144
+  top: 50%;
145
+  width: calc(var(--swiper-navigation-size) / 44 * 27);
146
+  height: var(--swiper-navigation-size);
147
+  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
148
+  z-index: 10;
149
+  cursor: pointer;
150
+  display: flex;
151
+  align-items: center;
152
+  justify-content: center;
153
+  color: var(--swiper-navigation-color, var(--swiper-theme-color));
154
+}
155
+.swiper-button-prev.swiper-button-disabled,
156
+.swiper-button-next.swiper-button-disabled {
157
+  opacity: 0.35;
158
+  cursor: auto;
159
+  pointer-events: none;
160
+}
161
+.swiper-button-prev:after,
162
+.swiper-button-next:after {
163
+  font-family: swiper-icons;
164
+  font-size: var(--swiper-navigation-size);
165
+  text-transform: none !important;
166
+  letter-spacing: 0;
167
+  text-transform: none;
168
+  font-variant: initial;
169
+  line-height: 1;
170
+}
171
+.swiper-button-prev,
172
+.swiper-container-rtl .swiper-button-next {
173
+  left: 10px;
174
+  right: auto;
175
+}
176
+.swiper-button-prev:after,
177
+.swiper-container-rtl .swiper-button-next:after {
178
+  content: 'prev';
179
+}
180
+.swiper-button-next,
181
+.swiper-container-rtl .swiper-button-prev {
182
+  right: 10px;
183
+  left: auto;
184
+}
185
+.swiper-button-next:after,
186
+.swiper-container-rtl .swiper-button-prev:after {
187
+  content: 'next';
188
+}
189
+.swiper-button-prev.swiper-button-white,
190
+.swiper-button-next.swiper-button-white {
191
+  --swiper-navigation-color: #ffffff;
192
+}
193
+.swiper-button-prev.swiper-button-black,
194
+.swiper-button-next.swiper-button-black {
195
+  --swiper-navigation-color: #000000;
196
+}
197
+.swiper-button-lock {
198
+  display: none;
199
+}
200
+:root {
201
+  /*
202
+  --swiper-pagination-color: var(--swiper-theme-color);
203
+  */
204
+}
205
+.swiper-pagination {
206
+  position: absolute;
207
+  text-align: center;
208
+  transition: 300ms opacity;
209
+  transform: translate3d(0, 0, 0);
210
+  z-index: 10;
211
+}
212
+.swiper-pagination.swiper-pagination-hidden {
213
+  opacity: 0;
214
+}
215
+/* Common Styles */
216
+.swiper-pagination-fraction,
217
+.swiper-pagination-custom,
218
+.swiper-container-horizontal > .swiper-pagination-bullets {
219
+  bottom: 10px;
220
+  left: 0;
221
+  width: 100%;
222
+}
223
+/* Bullets */
224
+.swiper-pagination-bullets-dynamic {
225
+  overflow: hidden;
226
+  font-size: 0;
227
+}
228
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
229
+  transform: scale(0.33);
230
+  position: relative;
231
+}
232
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
233
+  transform: scale(1);
234
+}
235
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
236
+  transform: scale(1);
237
+}
238
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
239
+  transform: scale(0.66);
240
+}
241
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
242
+  transform: scale(0.33);
243
+}
244
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
245
+  transform: scale(0.66);
246
+}
247
+.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
248
+  transform: scale(0.33);
249
+}
250
+.swiper-pagination-bullet {
251
+  width: 8px;
252
+  height: 8px;
253
+  display: inline-block;
254
+  border-radius: 100%;
255
+  background: #000;
256
+  opacity: 0.2;
257
+}
258
+button.swiper-pagination-bullet {
259
+  border: none;
260
+  margin: 0;
261
+  padding: 0;
262
+  box-shadow: none;
263
+  -webkit-appearance: none;
264
+     -moz-appearance: none;
265
+          appearance: none;
266
+}
267
+.swiper-pagination-clickable .swiper-pagination-bullet {
268
+  cursor: pointer;
269
+}
270
+.swiper-pagination-bullet-active {
271
+  opacity: 1;
272
+  background: var(--swiper-pagination-color, var(--swiper-theme-color));
273
+}
274
+.swiper-container-vertical > .swiper-pagination-bullets {
275
+  right: 10px;
276
+  top: 50%;
277
+  transform: translate3d(0px, -50%, 0);
278
+}
279
+.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {
280
+  margin: 6px 0;
281
+  display: block;
282
+}
283
+.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
284
+  top: 50%;
285
+  transform: translateY(-50%);
286
+  width: 8px;
287
+}
288
+.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
289
+  display: inline-block;
290
+  transition: 200ms transform, 200ms top;
291
+}
292
+.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {
293
+  margin: 0 4px;
294
+}
295
+.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
296
+  left: 50%;
297
+  transform: translateX(-50%);
298
+  white-space: nowrap;
299
+}
300
+.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
301
+  transition: 200ms transform, 200ms left;
302
+}
303
+.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
304
+  transition: 200ms transform, 200ms right;
305
+}
306
+/* Progress */
307
+.swiper-pagination-progressbar {
308
+  background: rgba(0, 0, 0, 0.25);
309
+  position: absolute;
310
+}
311
+.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
312
+  background: var(--swiper-pagination-color, var(--swiper-theme-color));
313
+  position: absolute;
314
+  left: 0;
315
+  top: 0;
316
+  width: 100%;
317
+  height: 100%;
318
+  transform: scale(0);
319
+  transform-origin: left top;
320
+}
321
+.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
322
+  transform-origin: right top;
323
+}
324
+.swiper-container-horizontal > .swiper-pagination-progressbar,
325
+.swiper-container-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
326
+  width: 100%;
327
+  height: 4px;
328
+  left: 0;
329
+  top: 0;
330
+}
331
+.swiper-container-vertical > .swiper-pagination-progressbar,
332
+.swiper-container-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
333
+  width: 4px;
334
+  height: 100%;
335
+  left: 0;
336
+  top: 0;
337
+}
338
+.swiper-pagination-white {
339
+  --swiper-pagination-color: #ffffff;
340
+}
341
+.swiper-pagination-black {
342
+  --swiper-pagination-color: #000000;
343
+}
344
+.swiper-pagination-lock {
345
+  display: none;
346
+}
347
+/* Scrollbar */
348
+.swiper-scrollbar {
349
+  border-radius: 10px;
350
+  position: relative;
351
+  -ms-touch-action: none;
352
+  background: rgba(0, 0, 0, 0.1);
353
+}
354
+.swiper-container-horizontal > .swiper-scrollbar {
355
+  position: absolute;
356
+  left: 1%;
357
+  bottom: 3px;
358
+  z-index: 50;
359
+  height: 5px;
360
+  width: 98%;
361
+}
362
+.swiper-container-vertical > .swiper-scrollbar {
363
+  position: absolute;
364
+  right: 3px;
365
+  top: 1%;
366
+  z-index: 50;
367
+  width: 5px;
368
+  height: 98%;
369
+}
370
+.swiper-scrollbar-drag {
371
+  height: 100%;
372
+  width: 100%;
373
+  position: relative;
374
+  background: rgba(0, 0, 0, 0.5);
375
+  border-radius: 10px;
376
+  left: 0;
377
+  top: 0;
378
+}
379
+.swiper-scrollbar-cursor-drag {
380
+  cursor: move;
381
+}
382
+.swiper-scrollbar-lock {
383
+  display: none;
384
+}
385
+.swiper-zoom-container {
386
+  width: 100%;
387
+  height: 100%;
388
+  display: flex;
389
+  justify-content: center;
390
+  align-items: center;
391
+  text-align: center;
392
+}
393
+.swiper-zoom-container > img,
394
+.swiper-zoom-container > svg,
395
+.swiper-zoom-container > canvas {
396
+  max-width: 100%;
397
+  max-height: 100%;
398
+  object-fit: contain;
399
+}
400
+.swiper-slide-zoomed {
401
+  cursor: move;
402
+}
403
+/* Preloader */
404
+:root {
405
+  /*
406
+  --swiper-preloader-color: var(--swiper-theme-color);
407
+  */
408
+}
409
+.swiper-lazy-preloader {
410
+  width: 42px;
411
+  height: 42px;
412
+  position: absolute;
413
+  left: 50%;
414
+  top: 50%;
415
+  margin-left: -21px;
416
+  margin-top: -21px;
417
+  z-index: 10;
418
+  transform-origin: 50%;
419
+  animation: swiper-preloader-spin 1s infinite linear;
420
+  box-sizing: border-box;
421
+  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
422
+  border-radius: 50%;
423
+  border-top-color: transparent;
424
+}
425
+.swiper-lazy-preloader-white {
426
+  --swiper-preloader-color: #fff;
427
+}
428
+.swiper-lazy-preloader-black {
429
+  --swiper-preloader-color: #000;
430
+}
431
+@keyframes swiper-preloader-spin {
432
+  100% {
433
+    transform: rotate(360deg);
434
+  }
435
+}
436
+/* a11y */
437
+.swiper-container .swiper-notification {
438
+  position: absolute;
439
+  left: 0;
440
+  top: 0;
441
+  pointer-events: none;
442
+  opacity: 0;
443
+  z-index: -1000;
444
+}
445
+.swiper-container-fade.swiper-container-free-mode .swiper-slide {
446
+  transition-timing-function: ease-out;
447
+}
448
+.swiper-container-fade .swiper-slide {
449
+  pointer-events: none;
450
+  transition-property: opacity;
451
+}
452
+.swiper-container-fade .swiper-slide .swiper-slide {
453
+  pointer-events: none;
454
+}
455
+.swiper-container-fade .swiper-slide-active,
456
+.swiper-container-fade .swiper-slide-active .swiper-slide-active {
457
+  pointer-events: auto;
458
+}
459
+.swiper-container-cube {
460
+  overflow: visible;
461
+}
462
+.swiper-container-cube .swiper-slide {
463
+  pointer-events: none;
464
+  -webkit-backface-visibility: hidden;
465
+          backface-visibility: hidden;
466
+  z-index: 1;
467
+  visibility: hidden;
468
+  transform-origin: 0 0;
469
+  width: 100%;
470
+  height: 100%;
471
+}
472
+.swiper-container-cube .swiper-slide .swiper-slide {
473
+  pointer-events: none;
474
+}
475
+.swiper-container-cube.swiper-container-rtl .swiper-slide {
476
+  transform-origin: 100% 0;
477
+}
478
+.swiper-container-cube .swiper-slide-active,
479
+.swiper-container-cube .swiper-slide-active .swiper-slide-active {
480
+  pointer-events: auto;
481
+}
482
+.swiper-container-cube .swiper-slide-active,
483
+.swiper-container-cube .swiper-slide-next,
484
+.swiper-container-cube .swiper-slide-prev,
485
+.swiper-container-cube .swiper-slide-next + .swiper-slide {
486
+  pointer-events: auto;
487
+  visibility: visible;
488
+}
489
+.swiper-container-cube .swiper-slide-shadow-top,
490
+.swiper-container-cube .swiper-slide-shadow-bottom,
491
+.swiper-container-cube .swiper-slide-shadow-left,
492
+.swiper-container-cube .swiper-slide-shadow-right {
493
+  z-index: 0;
494
+  -webkit-backface-visibility: hidden;
495
+          backface-visibility: hidden;
496
+}
497
+.swiper-container-cube .swiper-cube-shadow {
498
+  position: absolute;
499
+  left: 0;
500
+  bottom: 0px;
501
+  width: 100%;
502
+  height: 100%;
503
+  background: #000;
504
+  opacity: 0.6;
505
+  -webkit-filter: blur(50px);
506
+  filter: blur(50px);
507
+  z-index: 0;
508
+}
509
+.swiper-container-flip {
510
+  overflow: visible;
511
+}
512
+.swiper-container-flip .swiper-slide {
513
+  pointer-events: none;
514
+  -webkit-backface-visibility: hidden;
515
+          backface-visibility: hidden;
516
+  z-index: 1;
517
+}
518
+.swiper-container-flip .swiper-slide .swiper-slide {
519
+  pointer-events: none;
520
+}
521
+.swiper-container-flip .swiper-slide-active,
522
+.swiper-container-flip .swiper-slide-active .swiper-slide-active {
523
+  pointer-events: auto;
524
+}
525
+.swiper-container-flip .swiper-slide-shadow-top,
526
+.swiper-container-flip .swiper-slide-shadow-bottom,
527
+.swiper-container-flip .swiper-slide-shadow-left,
528
+.swiper-container-flip .swiper-slide-shadow-right {
529
+  z-index: 0;
530
+  -webkit-backface-visibility: hidden;
531
+          backface-visibility: hidden;
532
+}
0 533
new file mode 100644
... ...
@@ -0,0 +1,9387 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+function _defineProperties(target, props) {
14
+  for (var i = 0; i < props.length; i++) {
15
+    var descriptor = props[i];
16
+    descriptor.enumerable = descriptor.enumerable || false;
17
+    descriptor.configurable = true;
18
+    if ("value" in descriptor) descriptor.writable = true;
19
+    Object.defineProperty(target, descriptor.key, descriptor);
20
+  }
21
+}
22
+
23
+function _createClass(Constructor, protoProps, staticProps) {
24
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
25
+  if (staticProps) _defineProperties(Constructor, staticProps);
26
+  return Constructor;
27
+}
28
+
29
+function _extends() {
30
+  _extends = Object.assign || function (target) {
31
+    for (var i = 1; i < arguments.length; i++) {
32
+      var source = arguments[i];
33
+
34
+      for (var key in source) {
35
+        if (Object.prototype.hasOwnProperty.call(source, key)) {
36
+          target[key] = source[key];
37
+        }
38
+      }
39
+    }
40
+
41
+    return target;
42
+  };
43
+
44
+  return _extends.apply(this, arguments);
45
+}
46
+
47
+/**
48
+ * SSR Window 3.0.0-alpha.4
49
+ * Better handling for window object in SSR environment
50
+ * https://github.com/nolimits4web/ssr-window
51
+ *
52
+ * Copyright 2020, Vladimir Kharlampidi
53
+ *
54
+ * Licensed under MIT
55
+ *
56
+ * Released on: May 20, 2020
57
+ */
58
+
59
+/* eslint-disable no-param-reassign */
60
+function isObject(obj) {
61
+  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
62
+}
63
+
64
+function extend(target, src) {
65
+  if (target === void 0) {
66
+    target = {};
67
+  }
68
+
69
+  if (src === void 0) {
70
+    src = {};
71
+  }
72
+
73
+  Object.keys(src).forEach(function (key) {
74
+    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
75
+      extend(target[key], src[key]);
76
+    }
77
+  });
78
+}
79
+
80
+var ssrDocument = {
81
+  body: {},
82
+  addEventListener: function addEventListener() {},
83
+  removeEventListener: function removeEventListener() {},
84
+  activeElement: {
85
+    blur: function blur() {},
86
+    nodeName: ''
87
+  },
88
+  querySelector: function querySelector() {
89
+    return null;
90
+  },
91
+  querySelectorAll: function querySelectorAll() {
92
+    return [];
93
+  },
94
+  getElementById: function getElementById() {
95
+    return null;
96
+  },
97
+  createEvent: function createEvent() {
98
+    return {
99
+      initEvent: function initEvent() {}
100
+    };
101
+  },
102
+  createElement: function createElement() {
103
+    return {
104
+      children: [],
105
+      childNodes: [],
106
+      style: {},
107
+      setAttribute: function setAttribute() {},
108
+      getElementsByTagName: function getElementsByTagName() {
109
+        return [];
110
+      }
111
+    };
112
+  },
113
+  createElementNS: function createElementNS() {
114
+    return {};
115
+  },
116
+  importNode: function importNode() {
117
+    return null;
118
+  },
119
+  location: {
120
+    hash: '',
121
+    host: '',
122
+    hostname: '',
123
+    href: '',
124
+    origin: '',
125
+    pathname: '',
126
+    protocol: '',
127
+    search: ''
128
+  }
129
+};
130
+
131
+function getDocument() {
132
+  var doc = typeof document !== 'undefined' ? document : {};
133
+  extend(doc, ssrDocument);
134
+  return doc;
135
+}
136
+
137
+var ssrWindow = {
138
+  document: ssrDocument,
139
+  navigator: {
140
+    userAgent: ''
141
+  },
142
+  location: {
143
+    hash: '',
144
+    host: '',
145
+    hostname: '',
146
+    href: '',
147
+    origin: '',
148
+    pathname: '',
149
+    protocol: '',
150
+    search: ''
151
+  },
152
+  history: {
153
+    replaceState: function replaceState() {},
154
+    pushState: function pushState() {},
155
+    go: function go() {},
156
+    back: function back() {}
157
+  },
158
+  CustomEvent: function CustomEvent() {
159
+    return this;
160
+  },
161
+  addEventListener: function addEventListener() {},
162
+  removeEventListener: function removeEventListener() {},
163
+  getComputedStyle: function getComputedStyle() {
164
+    return {
165
+      getPropertyValue: function getPropertyValue() {
166
+        return '';
167
+      }
168
+    };
169
+  },
170
+  Image: function Image() {},
171
+  Date: function Date() {},
172
+  screen: {},
173
+  setTimeout: function setTimeout() {},
174
+  clearTimeout: function clearTimeout() {},
175
+  matchMedia: function matchMedia() {
176
+    return {};
177
+  },
178
+  requestAnimationFrame: function requestAnimationFrame(callback) {
179
+    if (typeof setTimeout === 'undefined') {
180
+      callback();
181
+      return null;
182
+    }
183
+
184
+    return setTimeout(callback, 0);
185
+  },
186
+  cancelAnimationFrame: function cancelAnimationFrame(id) {
187
+    if (typeof setTimeout === 'undefined') {
188
+      return;
189
+    }
190
+
191
+    clearTimeout(id);
192
+  }
193
+};
194
+
195
+function getWindow() {
196
+  var win = typeof window !== 'undefined' ? window : {};
197
+  extend(win, ssrWindow);
198
+  return win;
199
+}
200
+
201
+/**
202
+ * Dom7 3.0.0-alpha.7
203
+ * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
204
+ * https://framework7.io/docs/dom7.html
205
+ *
206
+ * Copyright 2020, Vladimir Kharlampidi
207
+ *
208
+ * Licensed under MIT
209
+ *
210
+ * Released on: July 14, 2020
211
+ */
212
+
213
+function _inheritsLoose(subClass, superClass) {
214
+  subClass.prototype = Object.create(superClass.prototype);
215
+  subClass.prototype.constructor = subClass;
216
+  subClass.__proto__ = superClass;
217
+}
218
+
219
+function _getPrototypeOf(o) {
220
+  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
221
+    return o.__proto__ || Object.getPrototypeOf(o);
222
+  };
223
+  return _getPrototypeOf(o);
224
+}
225
+
226
+function _setPrototypeOf(o, p) {
227
+  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
228
+    o.__proto__ = p;
229
+    return o;
230
+  };
231
+
232
+  return _setPrototypeOf(o, p);
233
+}
234
+
235
+function _isNativeReflectConstruct() {
236
+  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
237
+  if (Reflect.construct.sham) return false;
238
+  if (typeof Proxy === "function") return true;
239
+
240
+  try {
241
+    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
242
+    return true;
243
+  } catch (e) {
244
+    return false;
245
+  }
246
+}
247
+
248
+function _construct(Parent, args, Class) {
249
+  if (_isNativeReflectConstruct()) {
250
+    _construct = Reflect.construct;
251
+  } else {
252
+    _construct = function _construct(Parent, args, Class) {
253
+      var a = [null];
254
+      a.push.apply(a, args);
255
+      var Constructor = Function.bind.apply(Parent, a);
256
+      var instance = new Constructor();
257
+      if (Class) _setPrototypeOf(instance, Class.prototype);
258
+      return instance;
259
+    };
260
+  }
261
+
262
+  return _construct.apply(null, arguments);
263
+}
264
+
265
+function _isNativeFunction(fn) {
266
+  return Function.toString.call(fn).indexOf("[native code]") !== -1;
267
+}
268
+
269
+function _wrapNativeSuper(Class) {
270
+  var _cache = typeof Map === "function" ? new Map() : undefined;
271
+
272
+  _wrapNativeSuper = function _wrapNativeSuper(Class) {
273
+    if (Class === null || !_isNativeFunction(Class)) return Class;
274
+
275
+    if (typeof Class !== "function") {
276
+      throw new TypeError("Super expression must either be null or a function");
277
+    }
278
+
279
+    if (typeof _cache !== "undefined") {
280
+      if (_cache.has(Class)) return _cache.get(Class);
281
+
282
+      _cache.set(Class, Wrapper);
283
+    }
284
+
285
+    function Wrapper() {
286
+      return _construct(Class, arguments, _getPrototypeOf(this).constructor);
287
+    }
288
+
289
+    Wrapper.prototype = Object.create(Class.prototype, {
290
+      constructor: {
291
+        value: Wrapper,
292
+        enumerable: false,
293
+        writable: true,
294
+        configurable: true
295
+      }
296
+    });
297
+    return _setPrototypeOf(Wrapper, Class);
298
+  };
299
+
300
+  return _wrapNativeSuper(Class);
301
+}
302
+
303
+function _assertThisInitialized(self) {
304
+  if (self === void 0) {
305
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
306
+  }
307
+
308
+  return self;
309
+}
310
+/* eslint-disable no-proto */
311
+
312
+
313
+function makeReactive(obj) {
314
+  var proto = obj.__proto__;
315
+  Object.defineProperty(obj, '__proto__', {
316
+    get: function get() {
317
+      return proto;
318
+    },
319
+    set: function set(value) {
320
+      proto.__proto__ = value;
321
+    }
322
+  });
323
+}
324
+
325
+var Dom7 = /*#__PURE__*/function (_Array) {
326
+  _inheritsLoose(Dom7, _Array);
327
+
328
+  function Dom7(items) {
329
+    var _this;
330
+
331
+    _this = _Array.call.apply(_Array, [this].concat(items)) || this;
332
+    makeReactive(_assertThisInitialized(_this));
333
+    return _this;
334
+  }
335
+
336
+  return Dom7;
337
+}( /*#__PURE__*/_wrapNativeSuper(Array));
338
+
339
+function arrayFlat(arr) {
340
+  if (arr === void 0) {
341
+    arr = [];
342
+  }
343
+
344
+  var res = [];
345
+  arr.forEach(function (el) {
346
+    if (Array.isArray(el)) {
347
+      res.push.apply(res, arrayFlat(el));
348
+    } else {
349
+      res.push(el);
350
+    }
351
+  });
352
+  return res;
353
+}
354
+
355
+function arrayFilter(arr, callback) {
356
+  return Array.prototype.filter.call(arr, callback);
357
+}
358
+
359
+function arrayUnique(arr) {
360
+  var uniqueArray = [];
361
+
362
+  for (var i = 0; i < arr.length; i += 1) {
363
+    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
364
+  }
365
+
366
+  return uniqueArray;
367
+}
368
+
369
+function qsa(selector, context) {
370
+  if (typeof selector !== 'string') {
371
+    return [selector];
372
+  }
373
+
374
+  var a = [];
375
+  var res = context.querySelectorAll(selector);
376
+
377
+  for (var i = 0; i < res.length; i += 1) {
378
+    a.push(res[i]);
379
+  }
380
+
381
+  return a;
382
+}
383
+
384
+function $(selector, context) {
385
+  var window = getWindow();
386
+  var document = getDocument();
387
+  var arr = [];
388
+
389
+  if (!context && selector instanceof Dom7) {
390
+    return selector;
391
+  }
392
+
393
+  if (!selector) {
394
+    return new Dom7(arr);
395
+  }
396
+
397
+  if (typeof selector === 'string') {
398
+    var html = selector.trim();
399
+
400
+    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
401
+      var toCreate = 'div';
402
+      if (html.indexOf('<li') === 0) toCreate = 'ul';
403
+      if (html.indexOf('<tr') === 0) toCreate = 'tbody';
404
+      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
405
+      if (html.indexOf('<tbody') === 0) toCreate = 'table';
406
+      if (html.indexOf('<option') === 0) toCreate = 'select';
407
+      var tempParent = document.createElement(toCreate);
408
+      tempParent.innerHTML = html;
409
+
410
+      for (var i = 0; i < tempParent.childNodes.length; i += 1) {
411
+        arr.push(tempParent.childNodes[i]);
412
+      }
413
+    } else {
414
+      arr = qsa(selector.trim(), context || document);
415
+    } // arr = qsa(selector, document);
416
+
417
+  } else if (selector.nodeType || selector === window || selector === document) {
418
+    arr.push(selector);
419
+  } else if (Array.isArray(selector)) {
420
+    if (selector instanceof Dom7) return selector;
421
+    arr = selector;
422
+  }
423
+
424
+  return new Dom7(arrayUnique(arr));
425
+}
426
+
427
+$.fn = Dom7.prototype;
428
+
429
+function addClass() {
430
+  for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
431
+    classes[_key] = arguments[_key];
432
+  }
433
+
434
+  var classNames = arrayFlat(classes.map(function (c) {
435
+    return c.split(' ');
436
+  }));
437
+  this.forEach(function (el) {
438
+    var _el$classList;
439
+
440
+    (_el$classList = el.classList).add.apply(_el$classList, classNames);
441
+  });
442
+  return this;
443
+}
444
+
445
+function removeClass() {
446
+  for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
447
+    classes[_key2] = arguments[_key2];
448
+  }
449
+
450
+  var classNames = arrayFlat(classes.map(function (c) {
451
+    return c.split(' ');
452
+  }));
453
+  this.forEach(function (el) {
454
+    var _el$classList2;
455
+
456
+    (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);
457
+  });
458
+  return this;
459
+}
460
+
461
+function toggleClass() {
462
+  for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
463
+    classes[_key3] = arguments[_key3];
464
+  }
465
+
466
+  var classNames = arrayFlat(classes.map(function (c) {
467
+    return c.split(' ');
468
+  }));
469
+  this.forEach(function (el) {
470
+    classNames.forEach(function (className) {
471
+      el.classList.toggle(className);
472
+    });
473
+  });
474
+}
475
+
476
+function hasClass() {
477
+  for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
478
+    classes[_key4] = arguments[_key4];
479
+  }
480
+
481
+  var classNames = arrayFlat(classes.map(function (c) {
482
+    return c.split(' ');
483
+  }));
484
+  return arrayFilter(this, function (el) {
485
+    return classNames.filter(function (className) {
486
+      return el.classList.contains(className);
487
+    }).length > 0;
488
+  }).length > 0;
489
+}
490
+
491
+function attr(attrs, value) {
492
+  if (arguments.length === 1 && typeof attrs === 'string') {
493
+    // Get attr
494
+    if (this[0]) return this[0].getAttribute(attrs);
495
+    return undefined;
496
+  } // Set attrs
497
+
498
+
499
+  for (var i = 0; i < this.length; i += 1) {
500
+    if (arguments.length === 2) {
501
+      // String
502
+      this[i].setAttribute(attrs, value);
503
+    } else {
504
+      // Object
505
+      for (var attrName in attrs) {
506
+        this[i][attrName] = attrs[attrName];
507
+        this[i].setAttribute(attrName, attrs[attrName]);
508
+      }
509
+    }
510
+  }
511
+
512
+  return this;
513
+}
514
+
515
+function removeAttr(attr) {
516
+  for (var i = 0; i < this.length; i += 1) {
517
+    this[i].removeAttribute(attr);
518
+  }
519
+
520
+  return this;
521
+}
522
+
523
+function transform(transform) {
524
+  for (var i = 0; i < this.length; i += 1) {
525
+    this[i].style.transform = transform;
526
+  }
527
+
528
+  return this;
529
+}
530
+
531
+function transition(duration) {
532
+  for (var i = 0; i < this.length; i += 1) {
533
+    this[i].style.transition = typeof duration !== 'string' ? duration + "ms" : duration;
534
+  }
535
+
536
+  return this;
537
+}
538
+
539
+function on() {
540
+  for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
541
+    args[_key5] = arguments[_key5];
542
+  }
543
+
544
+  var eventType = args[0],
545
+      targetSelector = args[1],
546
+      listener = args[2],
547
+      capture = args[3];
548
+
549
+  if (typeof args[1] === 'function') {
550
+    eventType = args[0];
551
+    listener = args[1];
552
+    capture = args[2];
553
+    targetSelector = undefined;
554
+  }
555
+
556
+  if (!capture) capture = false;
557
+
558
+  function handleLiveEvent(e) {
559
+    var target = e.target;
560
+    if (!target) return;
561
+    var eventData = e.target.dom7EventData || [];
562
+
563
+    if (eventData.indexOf(e) < 0) {
564
+      eventData.unshift(e);
565
+    }
566
+
567
+    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
568
+      var _parents = $(target).parents(); // eslint-disable-line
569
+
570
+
571
+      for (var k = 0; k < _parents.length; k += 1) {
572
+        if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
573
+      }
574
+    }
575
+  }
576
+
577
+  function handleEvent(e) {
578
+    var eventData = e && e.target ? e.target.dom7EventData || [] : [];
579
+
580
+    if (eventData.indexOf(e) < 0) {
581
+      eventData.unshift(e);
582
+    }
583
+
584
+    listener.apply(this, eventData);
585
+  }
586
+
587
+  var events = eventType.split(' ');
588
+  var j;
589
+
590
+  for (var i = 0; i < this.length; i += 1) {
591
+    var el = this[i];
592
+
593
+    if (!targetSelector) {
594
+      for (j = 0; j < events.length; j += 1) {
595
+        var event = events[j];
596
+        if (!el.dom7Listeners) el.dom7Listeners = {};
597
+        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
598
+        el.dom7Listeners[event].push({
599
+          listener: listener,
600
+          proxyListener: handleEvent
601
+        });
602
+        el.addEventListener(event, handleEvent, capture);
603
+      }
604
+    } else {
605
+      // Live events
606
+      for (j = 0; j < events.length; j += 1) {
607
+        var _event = events[j];
608
+        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
609
+        if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
610
+
611
+        el.dom7LiveListeners[_event].push({
612
+          listener: listener,
613
+          proxyListener: handleLiveEvent
614
+        });
615
+
616
+        el.addEventListener(_event, handleLiveEvent, capture);
617
+      }
618
+    }
619
+  }
620
+
621
+  return this;
622
+}
623
+
624
+function off() {
625
+  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
626
+    args[_key6] = arguments[_key6];
627
+  }
628
+
629
+  var eventType = args[0],
630
+      targetSelector = args[1],
631
+      listener = args[2],
632
+      capture = args[3];
633
+
634
+  if (typeof args[1] === 'function') {
635
+    eventType = args[0];
636
+    listener = args[1];
637
+    capture = args[2];
638
+    targetSelector = undefined;
639
+  }
640
+
641
+  if (!capture) capture = false;
642
+  var events = eventType.split(' ');
643
+
644
+  for (var i = 0; i < events.length; i += 1) {
645
+    var event = events[i];
646
+
647
+    for (var j = 0; j < this.length; j += 1) {
648
+      var el = this[j];
649
+      var handlers = void 0;
650
+
651
+      if (!targetSelector && el.dom7Listeners) {
652
+        handlers = el.dom7Listeners[event];
653
+      } else if (targetSelector && el.dom7LiveListeners) {
654
+        handlers = el.dom7LiveListeners[event];
655
+      }
656
+
657
+      if (handlers && handlers.length) {
658
+        for (var k = handlers.length - 1; k >= 0; k -= 1) {
659
+          var handler = handlers[k];
660
+
661
+          if (listener && handler.listener === listener) {
662
+            el.removeEventListener(event, handler.proxyListener, capture);
663
+            handlers.splice(k, 1);
664
+          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
665
+            el.removeEventListener(event, handler.proxyListener, capture);
666
+            handlers.splice(k, 1);
667
+          } else if (!listener) {
668
+            el.removeEventListener(event, handler.proxyListener, capture);
669
+            handlers.splice(k, 1);
670
+          }
671
+        }
672
+      }
673
+    }
674
+  }
675
+
676
+  return this;
677
+}
678
+
679
+function trigger() {
680
+  var window = getWindow();
681
+
682
+  for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
683
+    args[_key9] = arguments[_key9];
684
+  }
685
+
686
+  var events = args[0].split(' ');
687
+  var eventData = args[1];
688
+
689
+  for (var i = 0; i < events.length; i += 1) {
690
+    var event = events[i];
691
+
692
+    for (var j = 0; j < this.length; j += 1) {
693
+      var el = this[j];
694
+
695
+      if (window.CustomEvent) {
696
+        var evt = new window.CustomEvent(event, {
697
+          detail: eventData,
698
+          bubbles: true,
699
+          cancelable: true
700
+        });
701
+        el.dom7EventData = args.filter(function (data, dataIndex) {
702
+          return dataIndex > 0;
703
+        });
704
+        el.dispatchEvent(evt);
705
+        el.dom7EventData = [];
706
+        delete el.dom7EventData;
707
+      }
708
+    }
709
+  }
710
+
711
+  return this;
712
+}
713
+
714
+function transitionEnd(callback) {
715
+  var dom = this;
716
+
717
+  function fireCallBack(e) {
718
+    if (e.target !== this) return;
719
+    callback.call(this, e);
720
+    dom.off('transitionend', fireCallBack);
721
+  }
722
+
723
+  if (callback) {
724
+    dom.on('transitionend', fireCallBack);
725
+  }
726
+
727
+  return this;
728
+}
729
+
730
+function outerWidth(includeMargins) {
731
+  if (this.length > 0) {
732
+    if (includeMargins) {
733
+      var _styles = this.styles();
734
+
735
+      return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
736
+    }
737
+
738
+    return this[0].offsetWidth;
739
+  }
740
+
741
+  return null;
742
+}
743
+
744
+function outerHeight(includeMargins) {
745
+  if (this.length > 0) {
746
+    if (includeMargins) {
747
+      var _styles2 = this.styles();
748
+
749
+      return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
750
+    }
751
+
752
+    return this[0].offsetHeight;
753
+  }
754
+
755
+  return null;
756
+}
757
+
758
+function offset() {
759
+  if (this.length > 0) {
760
+    var window = getWindow();
761
+    var document = getDocument();
762
+    var el = this[0];
763
+    var box = el.getBoundingClientRect();
764
+    var body = document.body;
765
+    var clientTop = el.clientTop || body.clientTop || 0;
766
+    var clientLeft = el.clientLeft || body.clientLeft || 0;
767
+    var scrollTop = el === window ? window.scrollY : el.scrollTop;
768
+    var scrollLeft = el === window ? window.scrollX : el.scrollLeft;
769
+    return {
770
+      top: box.top + scrollTop - clientTop,
771
+      left: box.left + scrollLeft - clientLeft
772
+    };
773
+  }
774
+
775
+  return null;
776
+}
777
+
778
+function styles() {
779
+  var window = getWindow();
780
+  if (this[0]) return window.getComputedStyle(this[0], null);
781
+  return {};
782
+}
783
+
784
+function css(props, value) {
785
+  var window = getWindow();
786
+  var i;
787
+
788
+  if (arguments.length === 1) {
789
+    if (typeof props === 'string') {
790
+      // .css('width')
791
+      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
792
+    } else {
793
+      // .css({ width: '100px' })
794
+      for (i = 0; i < this.length; i += 1) {
795
+        for (var _prop in props) {
796
+          this[i].style[_prop] = props[_prop];
797
+        }
798
+      }
799
+
800
+      return this;
801
+    }
802
+  }
803
+
804
+  if (arguments.length === 2 && typeof props === 'string') {
805
+    // .css('width', '100px')
806
+    for (i = 0; i < this.length; i += 1) {
807
+      this[i].style[props] = value;
808
+    }
809
+
810
+    return this;
811
+  }
812
+
813
+  return this;
814
+}
815
+
816
+function each(callback) {
817
+  if (!callback) return this;
818
+  this.forEach(function (el, index) {
819
+    callback.apply(el, [el, index]);
820
+  });
821
+  return this;
822
+}
823
+
824
+function filter(callback) {
825
+  var result = arrayFilter(this, callback);
826
+  return $(result);
827
+}
828
+
829
+function html(html) {
830
+  if (typeof html === 'undefined') {
831
+    return this[0] ? this[0].innerHTML : null;
832
+  }
833
+
834
+  for (var i = 0; i < this.length; i += 1) {
835
+    this[i].innerHTML = html;
836
+  }
837
+
838
+  return this;
839
+}
840
+
841
+function text(text) {
842
+  if (typeof text === 'undefined') {
843
+    return this[0] ? this[0].textContent.trim() : null;
844
+  }
845
+
846
+  for (var i = 0; i < this.length; i += 1) {
847
+    this[i].textContent = text;
848
+  }
849
+
850
+  return this;
851
+}
852
+
853
+function is(selector) {
854
+  var window = getWindow();
855
+  var document = getDocument();
856
+  var el = this[0];
857
+  var compareWith;
858
+  var i;
859
+  if (!el || typeof selector === 'undefined') return false;
860
+
861
+  if (typeof selector === 'string') {
862
+    if (el.matches) return el.matches(selector);
863
+    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
864
+    if (el.msMatchesSelector) return el.msMatchesSelector(selector);
865
+    compareWith = $(selector);
866
+
867
+    for (i = 0; i < compareWith.length; i += 1) {
868
+      if (compareWith[i] === el) return true;
869
+    }
870
+
871
+    return false;
872
+  }
873
+
874
+  if (selector === document) {
875
+    return el === document;
876
+  }
877
+
878
+  if (selector === window) {
879
+    return el === window;
880
+  }
881
+
882
+  if (selector.nodeType || selector instanceof Dom7) {
883
+    compareWith = selector.nodeType ? [selector] : selector;
884
+
885
+    for (i = 0; i < compareWith.length; i += 1) {
886
+      if (compareWith[i] === el) return true;
887
+    }
888
+
889
+    return false;
890
+  }
891
+
892
+  return false;
893
+}
894
+
895
+function index() {
896
+  var child = this[0];
897
+  var i;
898
+
899
+  if (child) {
900
+    i = 0; // eslint-disable-next-line
901
+
902
+    while ((child = child.previousSibling) !== null) {
903
+      if (child.nodeType === 1) i += 1;
904
+    }
905
+
906
+    return i;
907
+  }
908
+
909
+  return undefined;
910
+}
911
+
912
+function eq(index) {
913
+  if (typeof index === 'undefined') return this;
914
+  var length = this.length;
915
+
916
+  if (index > length - 1) {
917
+    return $([]);
918
+  }
919
+
920
+  if (index < 0) {
921
+    var returnIndex = length + index;
922
+    if (returnIndex < 0) return $([]);
923
+    return $([this[returnIndex]]);
924
+  }
925
+
926
+  return $([this[index]]);
927
+}
928
+
929
+function append() {
930
+  var newChild;
931
+  var document = getDocument();
932
+
933
+  for (var k = 0; k < arguments.length; k += 1) {
934
+    newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];
935
+
936
+    for (var i = 0; i < this.length; i += 1) {
937
+      if (typeof newChild === 'string') {
938
+        var tempDiv = document.createElement('div');
939
+        tempDiv.innerHTML = newChild;
940
+
941
+        while (tempDiv.firstChild) {
942
+          this[i].appendChild(tempDiv.firstChild);
943
+        }
944
+      } else if (newChild instanceof Dom7) {
945
+        for (var j = 0; j < newChild.length; j += 1) {
946
+          this[i].appendChild(newChild[j]);
947
+        }
948
+      } else {
949
+        this[i].appendChild(newChild);
950
+      }
951
+    }
952
+  }
953
+
954
+  return this;
955
+}
956
+
957
+function prepend(newChild) {
958
+  var document = getDocument();
959
+  var i;
960
+  var j;
961
+
962
+  for (i = 0; i < this.length; i += 1) {
963
+    if (typeof newChild === 'string') {
964
+      var tempDiv = document.createElement('div');
965
+      tempDiv.innerHTML = newChild;
966
+
967
+      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
968
+        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
969
+      }
970
+    } else if (newChild instanceof Dom7) {
971
+      for (j = 0; j < newChild.length; j += 1) {
972
+        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
973
+      }
974
+    } else {
975
+      this[i].insertBefore(newChild, this[i].childNodes[0]);
976
+    }
977
+  }
978
+
979
+  return this;
980
+}
981
+
982
+function next(selector) {
983
+  if (this.length > 0) {
984
+    if (selector) {
985
+      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
986
+        return $([this[0].nextElementSibling]);
987
+      }
988
+
989
+      return $([]);
990
+    }
991
+
992
+    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
993
+    return $([]);
994
+  }
995
+
996
+  return $([]);
997
+}
998
+
999
+function nextAll(selector) {
1000
+  var nextEls = [];
1001
+  var el = this[0];
1002
+  if (!el) return $([]);
1003
+
1004
+  while (el.nextElementSibling) {
1005
+    var _next = el.nextElementSibling; // eslint-disable-line
1006
+
1007
+    if (selector) {
1008
+      if ($(_next).is(selector)) nextEls.push(_next);
1009
+    } else nextEls.push(_next);
1010
+
1011
+    el = _next;
1012
+  }
1013
+
1014
+  return $(nextEls);
1015
+}
1016
+
1017
+function prev(selector) {
1018
+  if (this.length > 0) {
1019
+    var el = this[0];
1020
+
1021
+    if (selector) {
1022
+      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
1023
+        return $([el.previousElementSibling]);
1024
+      }
1025
+
1026
+      return $([]);
1027
+    }
1028
+
1029
+    if (el.previousElementSibling) return $([el.previousElementSibling]);
1030
+    return $([]);
1031
+  }
1032
+
1033
+  return $([]);
1034
+}
1035
+
1036
+function prevAll(selector) {
1037
+  var prevEls = [];
1038
+  var el = this[0];
1039
+  if (!el) return $([]);
1040
+
1041
+  while (el.previousElementSibling) {
1042
+    var _prev = el.previousElementSibling; // eslint-disable-line
1043
+
1044
+    if (selector) {
1045
+      if ($(_prev).is(selector)) prevEls.push(_prev);
1046
+    } else prevEls.push(_prev);
1047
+
1048
+    el = _prev;
1049
+  }
1050
+
1051
+  return $(prevEls);
1052
+}
1053
+
1054
+function parent(selector) {
1055
+  var parents = []; // eslint-disable-line
1056
+
1057
+  for (var i = 0; i < this.length; i += 1) {
1058
+    if (this[i].parentNode !== null) {
1059
+      if (selector) {
1060
+        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
1061
+      } else {
1062
+        parents.push(this[i].parentNode);
1063
+      }
1064
+    }
1065
+  }
1066
+
1067
+  return $(parents);
1068
+}
1069
+
1070
+function parents(selector) {
1071
+  var parents = []; // eslint-disable-line
1072
+
1073
+  for (var i = 0; i < this.length; i += 1) {
1074
+    var _parent = this[i].parentNode; // eslint-disable-line
1075
+
1076
+    while (_parent) {
1077
+      if (selector) {
1078
+        if ($(_parent).is(selector)) parents.push(_parent);
1079
+      } else {
1080
+        parents.push(_parent);
1081
+      }
1082
+
1083
+      _parent = _parent.parentNode;
1084
+    }
1085
+  }
1086
+
1087
+  return $(parents);
1088
+}
1089
+
1090
+function closest(selector) {
1091
+  var closest = this; // eslint-disable-line
1092
+
1093
+  if (typeof selector === 'undefined') {
1094
+    return $([]);
1095
+  }
1096
+
1097
+  if (!closest.is(selector)) {
1098
+    closest = closest.parents(selector).eq(0);
1099
+  }
1100
+
1101
+  return closest;
1102
+}
1103
+
1104
+function find(selector) {
1105
+  var foundElements = [];
1106
+
1107
+  for (var i = 0; i < this.length; i += 1) {
1108
+    var found = this[i].querySelectorAll(selector);
1109
+
1110
+    for (var j = 0; j < found.length; j += 1) {
1111
+      foundElements.push(found[j]);
1112
+    }
1113
+  }
1114
+
1115
+  return $(foundElements);
1116
+}
1117
+
1118
+function children(selector) {
1119
+  var children = []; // eslint-disable-line
1120
+
1121
+  for (var i = 0; i < this.length; i += 1) {
1122
+    var childNodes = this[i].children;
1123
+
1124
+    for (var j = 0; j < childNodes.length; j += 1) {
1125
+      if (!selector || $(childNodes[j]).is(selector)) {
1126
+        children.push(childNodes[j]);
1127
+      }
1128
+    }
1129
+  }
1130
+
1131
+  return $(children);
1132
+}
1133
+
1134
+function remove() {
1135
+  for (var i = 0; i < this.length; i += 1) {
1136
+    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
1137
+  }
1138
+
1139
+  return this;
1140
+}
1141
+
1142
+var Methods = {
1143
+  addClass: addClass,
1144
+  removeClass: removeClass,
1145
+  hasClass: hasClass,
1146
+  toggleClass: toggleClass,
1147
+  attr: attr,
1148
+  removeAttr: removeAttr,
1149
+  transform: transform,
1150
+  transition: transition,
1151
+  on: on,
1152
+  off: off,
1153
+  trigger: trigger,
1154
+  transitionEnd: transitionEnd,
1155
+  outerWidth: outerWidth,
1156
+  outerHeight: outerHeight,
1157
+  styles: styles,
1158
+  offset: offset,
1159
+  css: css,
1160
+  each: each,
1161
+  html: html,
1162
+  text: text,
1163
+  is: is,
1164
+  index: index,
1165
+  eq: eq,
1166
+  append: append,
1167
+  prepend: prepend,
1168
+  next: next,
1169
+  nextAll: nextAll,
1170
+  prev: prev,
1171
+  prevAll: prevAll,
1172
+  parent: parent,
1173
+  parents: parents,
1174
+  closest: closest,
1175
+  find: find,
1176
+  children: children,
1177
+  filter: filter,
1178
+  remove: remove
1179
+};
1180
+Object.keys(Methods).forEach(function (methodName) {
1181
+  $.fn[methodName] = Methods[methodName];
1182
+});
1183
+
1184
+function deleteProps(obj) {
1185
+  var object = obj;
1186
+  Object.keys(object).forEach(function (key) {
1187
+    try {
1188
+      object[key] = null;
1189
+    } catch (e) {// no getter for object
1190
+    }
1191
+
1192
+    try {
1193
+      delete object[key];
1194
+    } catch (e) {// something got wrong
1195
+    }
1196
+  });
1197
+}
1198
+
1199
+function nextTick(callback, delay) {
1200
+  if (delay === void 0) {
1201
+    delay = 0;
1202
+  }
1203
+
1204
+  return setTimeout(callback, delay);
1205
+}
1206
+
1207
+function now() {
1208
+  return Date.now();
1209
+}
1210
+
1211
+function getTranslate(el, axis) {
1212
+  if (axis === void 0) {
1213
+    axis = 'x';
1214
+  }
1215
+
1216
+  var window = getWindow();
1217
+  var matrix;
1218
+  var curTransform;
1219
+  var transformMatrix;
1220
+  var curStyle = window.getComputedStyle(el, null);
1221
+
1222
+  if (window.WebKitCSSMatrix) {
1223
+    curTransform = curStyle.transform || curStyle.webkitTransform;
1224
+
1225
+    if (curTransform.split(',').length > 6) {
1226
+      curTransform = curTransform.split(', ').map(function (a) {
1227
+        return a.replace(',', '.');
1228
+      }).join(', ');
1229
+    } // Some old versions of Webkit choke when 'none' is passed; pass
1230
+    // empty string instead in this case
1231
+
1232
+
1233
+    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
1234
+  } else {
1235
+    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
1236
+    matrix = transformMatrix.toString().split(',');
1237
+  }
1238
+
1239
+  if (axis === 'x') {
1240
+    // Latest Chrome and webkits Fix
1241
+    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
1242
+    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
1243
+      else curTransform = parseFloat(matrix[4]);
1244
+  }
1245
+
1246
+  if (axis === 'y') {
1247
+    // Latest Chrome and webkits Fix
1248
+    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
1249
+    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
1250
+      else curTransform = parseFloat(matrix[5]);
1251
+  }
1252
+
1253
+  return curTransform || 0;
1254
+}
1255
+
1256
+function isObject$1(o) {
1257
+  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
1258
+}
1259
+
1260
+function extend$1() {
1261
+  var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
1262
+
1263
+  for (var i = 1; i < arguments.length; i += 1) {
1264
+    var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
1265
+
1266
+    if (nextSource !== undefined && nextSource !== null) {
1267
+      var keysArray = Object.keys(Object(nextSource));
1268
+
1269
+      for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
1270
+        var nextKey = keysArray[nextIndex];
1271
+        var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
1272
+
1273
+        if (desc !== undefined && desc.enumerable) {
1274
+          if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1275
+            extend$1(to[nextKey], nextSource[nextKey]);
1276
+          } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1277
+            to[nextKey] = {};
1278
+            extend$1(to[nextKey], nextSource[nextKey]);
1279
+          } else {
1280
+            to[nextKey] = nextSource[nextKey];
1281
+          }
1282
+        }
1283
+      }
1284
+    }
1285
+  }
1286
+
1287
+  return to;
1288
+}
1289
+
1290
+function bindModuleMethods(instance, obj) {
1291
+  Object.keys(obj).forEach(function (key) {
1292
+    if (isObject$1(obj[key])) {
1293
+      Object.keys(obj[key]).forEach(function (subKey) {
1294
+        if (typeof obj[key][subKey] === 'function') {
1295
+          obj[key][subKey] = obj[key][subKey].bind(instance);
1296
+        }
1297
+      });
1298
+    }
1299
+
1300
+    instance[key] = obj[key];
1301
+  });
1302
+}
1303
+
1304
+var support;
1305
+
1306
+function calcSupport() {
1307
+  var window = getWindow();
1308
+  var document = getDocument();
1309
+  return {
1310
+    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
1311
+    pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
1312
+    observer: function checkObserver() {
1313
+      return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
1314
+    }(),
1315
+    passiveListener: function checkPassiveListener() {
1316
+      var supportsPassive = false;
1317
+
1318
+      try {
1319
+        var opts = Object.defineProperty({}, 'passive', {
1320
+          // eslint-disable-next-line
1321
+          get: function get() {
1322
+            supportsPassive = true;
1323
+          }
1324
+        });
1325
+        window.addEventListener('testPassiveListener', null, opts);
1326
+      } catch (e) {// No support
1327
+      }
1328
+
1329
+      return supportsPassive;
1330
+    }(),
1331
+    gestures: function checkGestures() {
1332
+      return 'ongesturestart' in window;
1333
+    }()
1334
+  };
1335
+}
1336
+
1337
+function getSupport() {
1338
+  if (!support) {
1339
+    support = calcSupport();
1340
+  }
1341
+
1342
+  return support;
1343
+}
1344
+
1345
+var device;
1346
+
1347
+function calcDevice(_temp) {
1348
+  var _ref = _temp === void 0 ? {} : _temp,
1349
+      userAgent = _ref.userAgent;
1350
+
1351
+  var support = getSupport();
1352
+  var window = getWindow();
1353
+  var platform = window.navigator.platform;
1354
+  var ua = userAgent || window.navigator.userAgent;
1355
+  var device = {
1356
+    ios: false,
1357
+    android: false
1358
+  };
1359
+  var screenWidth = window.screen.width;
1360
+  var screenHeight = window.screen.height;
1361
+  var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
1362
+
1363
+  var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1364
+  var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1365
+  var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1366
+  var windows = platform === 'Win32';
1367
+  var macos = platform === 'MacIntel'; // iPadOs 13 fix
1368
+
1369
+  var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
1370
+
1371
+  if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
1372
+    ipad = ua.match(/(Version)\/([\d.]+)/);
1373
+    if (!ipad) ipad = [0, 1, '13_0_0'];
1374
+    macos = false;
1375
+  } // Android
1376
+
1377
+
1378
+  if (android && !windows) {
1379
+    device.os = 'android';
1380
+    device.android = true;
1381
+  }
1382
+
1383
+  if (ipad || iphone || ipod) {
1384
+    device.os = 'ios';
1385
+    device.ios = true;
1386
+  } // Export object
1387
+
1388
+
1389
+  return device;
1390
+}
1391
+
1392
+function getDevice(overrides) {
1393
+  if (overrides === void 0) {
1394
+    overrides = {};
1395
+  }
1396
+
1397
+  if (!device) {
1398
+    device = calcDevice(overrides);
1399
+  }
1400
+
1401
+  return device;
1402
+}
1403
+
1404
+var browser;
1405
+
1406
+function calcBrowser() {
1407
+  var window = getWindow();
1408
+
1409
+  function isSafari() {
1410
+    var ua = window.navigator.userAgent.toLowerCase();
1411
+    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
1412
+  }
1413
+
1414
+  return {
1415
+    isEdge: !!window.navigator.userAgent.match(/Edge/g),
1416
+    isSafari: isSafari(),
1417
+    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
1418
+  };
1419
+}
1420
+
1421
+function getBrowser() {
1422
+  if (!browser) {
1423
+    browser = calcBrowser();
1424
+  }
1425
+
1426
+  return browser;
1427
+}
1428
+
1429
+var Resize = {
1430
+  name: 'resize',
1431
+  create: function create() {
1432
+    var swiper = this;
1433
+    extend$1(swiper, {
1434
+      resize: {
1435
+        resizeHandler: function resizeHandler() {
1436
+          if (!swiper || swiper.destroyed || !swiper.initialized) return;
1437
+          swiper.emit('beforeResize');
1438
+          swiper.emit('resize');
1439
+        },
1440
+        orientationChangeHandler: function orientationChangeHandler() {
1441
+          if (!swiper || swiper.destroyed || !swiper.initialized) return;
1442
+          swiper.emit('orientationchange');
1443
+        }
1444
+      }
1445
+    });
1446
+  },
1447
+  on: {
1448
+    init: function init(swiper) {
1449
+      var window = getWindow(); // Emit resize
1450
+
1451
+      window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange
1452
+
1453
+      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1454
+    },
1455
+    destroy: function destroy(swiper) {
1456
+      var window = getWindow();
1457
+      window.removeEventListener('resize', swiper.resize.resizeHandler);
1458
+      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1459
+    }
1460
+  }
1461
+};
1462
+
1463
+var Observer = {
1464
+  attach: function attach(target, options) {
1465
+    if (options === void 0) {
1466
+      options = {};
1467
+    }
1468
+
1469
+    var window = getWindow();
1470
+    var swiper = this;
1471
+    var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
1472
+    var observer = new ObserverFunc(function (mutations) {
1473
+      // The observerUpdate event should only be triggered
1474
+      // once despite the number of mutations.  Additional
1475
+      // triggers are redundant and are very costly
1476
+      if (mutations.length === 1) {
1477
+        swiper.emit('observerUpdate', mutations[0]);
1478
+        return;
1479
+      }
1480
+
1481
+      var observerUpdate = function observerUpdate() {
1482
+        swiper.emit('observerUpdate', mutations[0]);
1483
+      };
1484
+
1485
+      if (window.requestAnimationFrame) {
1486
+        window.requestAnimationFrame(observerUpdate);
1487
+      } else {
1488
+        window.setTimeout(observerUpdate, 0);
1489
+      }
1490
+    });
1491
+    observer.observe(target, {
1492
+      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
1493
+      childList: typeof options.childList === 'undefined' ? true : options.childList,
1494
+      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
1495
+    });
1496
+    swiper.observer.observers.push(observer);
1497
+  },
1498
+  init: function init() {
1499
+    var swiper = this;
1500
+    if (!swiper.support.observer || !swiper.params.observer) return;
1501
+
1502
+    if (swiper.params.observeParents) {
1503
+      var containerParents = swiper.$el.parents();
1504
+
1505
+      for (var i = 0; i < containerParents.length; i += 1) {
1506
+        swiper.observer.attach(containerParents[i]);
1507
+      }
1508
+    } // Observe container
1509
+
1510
+
1511
+    swiper.observer.attach(swiper.$el[0], {
1512
+      childList: swiper.params.observeSlideChildren
1513
+    }); // Observe wrapper
1514
+
1515
+    swiper.observer.attach(swiper.$wrapperEl[0], {
1516
+      attributes: false
1517
+    });
1518
+  },
1519
+  destroy: function destroy() {
1520
+    var swiper = this;
1521
+    swiper.observer.observers.forEach(function (observer) {
1522
+      observer.disconnect();
1523
+    });
1524
+    swiper.observer.observers = [];
1525
+  }
1526
+};
1527
+var Observer$1 = {
1528
+  name: 'observer',
1529
+  params: {
1530
+    observer: false,
1531
+    observeParents: false,
1532
+    observeSlideChildren: false
1533
+  },
1534
+  create: function create() {
1535
+    var swiper = this;
1536
+    bindModuleMethods(swiper, {
1537
+      observer: _extends(_extends({}, Observer), {}, {
1538
+        observers: []
1539
+      })
1540
+    });
1541
+  },
1542
+  on: {
1543
+    init: function init(swiper) {
1544
+      swiper.observer.init();
1545
+    },
1546
+    destroy: function destroy(swiper) {
1547
+      swiper.observer.destroy();
1548
+    }
1549
+  }
1550
+};
1551
+
1552
+var modular = {
1553
+  useParams: function useParams(instanceParams) {
1554
+    var instance = this;
1555
+    if (!instance.modules) return;
1556
+    Object.keys(instance.modules).forEach(function (moduleName) {
1557
+      var module = instance.modules[moduleName]; // Extend params
1558
+
1559
+      if (module.params) {
1560
+        extend$1(instanceParams, module.params);
1561
+      }
1562
+    });
1563
+  },
1564
+  useModules: function useModules(modulesParams) {
1565
+    if (modulesParams === void 0) {
1566
+      modulesParams = {};
1567
+    }
1568
+
1569
+    var instance = this;
1570
+    if (!instance.modules) return;
1571
+    Object.keys(instance.modules).forEach(function (moduleName) {
1572
+      var module = instance.modules[moduleName];
1573
+      var moduleParams = modulesParams[moduleName] || {}; // Add event listeners
1574
+
1575
+      if (module.on && instance.on) {
1576
+        Object.keys(module.on).forEach(function (moduleEventName) {
1577
+          instance.on(moduleEventName, module.on[moduleEventName]);
1578
+        });
1579
+      } // Module create callback
1580
+
1581
+
1582
+      if (module.create) {
1583
+        module.create.bind(instance)(moduleParams);
1584
+      }
1585
+    });
1586
+  }
1587
+};
1588
+
1589
+/* eslint-disable no-underscore-dangle */
1590
+var eventsEmitter = {
1591
+  on: function on(events, handler, priority) {
1592
+    var self = this;
1593
+    if (typeof handler !== 'function') return self;
1594
+    var method = priority ? 'unshift' : 'push';
1595
+    events.split(' ').forEach(function (event) {
1596
+      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
1597
+      self.eventsListeners[event][method](handler);
1598
+    });
1599
+    return self;
1600
+  },
1601
+  once: function once(events, handler, priority) {
1602
+    var self = this;
1603
+    if (typeof handler !== 'function') return self;
1604
+
1605
+    function onceHandler() {
1606
+      self.off(events, onceHandler);
1607
+
1608
+      if (onceHandler.__emitterProxy) {
1609
+        delete onceHandler.__emitterProxy;
1610
+      }
1611
+
1612
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1613
+        args[_key] = arguments[_key];
1614
+      }
1615
+
1616
+      handler.apply(self, args);
1617
+    }
1618
+
1619
+    onceHandler.__emitterProxy = handler;
1620
+    return self.on(events, onceHandler, priority);
1621
+  },
1622
+  onAny: function onAny(handler, priority) {
1623
+    var self = this;
1624
+    if (typeof handler !== 'function') return self;
1625
+    var method = priority ? 'unshift' : 'push';
1626
+
1627
+    if (self.eventsAnyListeners.indexOf(handler) < 0) {
1628
+      self.eventsAnyListeners[method](handler);
1629
+    }
1630
+
1631
+    return self;
1632
+  },
1633
+  offAny: function offAny(handler) {
1634
+    var self = this;
1635
+    if (!self.eventsAnyListeners) return self;
1636
+    var index = self.eventsAnyListeners.indexOf(handler);
1637
+
1638
+    if (index >= 0) {
1639
+      self.eventsAnyListeners.splice(index, 1);
1640
+    }
1641
+
1642
+    return self;
1643
+  },
1644
+  off: function off(events, handler) {
1645
+    var self = this;
1646
+    if (!self.eventsListeners) return self;
1647
+    events.split(' ').forEach(function (event) {
1648
+      if (typeof handler === 'undefined') {
1649
+        self.eventsListeners[event] = [];
1650
+      } else if (self.eventsListeners[event]) {
1651
+        self.eventsListeners[event].forEach(function (eventHandler, index) {
1652
+          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
1653
+            self.eventsListeners[event].splice(index, 1);
1654
+          }
1655
+        });
1656
+      }
1657
+    });
1658
+    return self;
1659
+  },
1660
+  emit: function emit() {
1661
+    var self = this;
1662
+    if (!self.eventsListeners) return self;
1663
+    var events;
1664
+    var data;
1665
+    var context;
1666
+
1667
+    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1668
+      args[_key2] = arguments[_key2];
1669
+    }
1670
+
1671
+    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1672
+      events = args[0];
1673
+      data = args.slice(1, args.length);
1674
+      context = self;
1675
+    } else {
1676
+      events = args[0].events;
1677
+      data = args[0].data;
1678
+      context = args[0].context || self;
1679
+    }
1680
+
1681
+    data.unshift(context);
1682
+    var eventsArray = Array.isArray(events) ? events : events.split(' ');
1683
+    eventsArray.forEach(function (event) {
1684
+      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
1685
+        self.eventsAnyListeners.forEach(function (eventHandler) {
1686
+          eventHandler.apply(context, [event].concat(data));
1687
+        });
1688
+      }
1689
+
1690
+      if (self.eventsListeners && self.eventsListeners[event]) {
1691
+        var handlers = [];
1692
+        self.eventsListeners[event].forEach(function (eventHandler) {
1693
+          handlers.push(eventHandler);
1694
+        });
1695
+        handlers.forEach(function (eventHandler) {
1696
+          eventHandler.apply(context, data);
1697
+        });
1698
+      }
1699
+    });
1700
+    return self;
1701
+  }
1702
+};
1703
+
1704
+function updateSize() {
1705
+  var swiper = this;
1706
+  var width;
1707
+  var height;
1708
+  var $el = swiper.$el;
1709
+
1710
+  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
1711
+    width = swiper.params.width;
1712
+  } else {
1713
+    width = $el[0].clientWidth;
1714
+  }
1715
+
1716
+  if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {
1717
+    height = swiper.params.height;
1718
+  } else {
1719
+    height = $el[0].clientHeight;
1720
+  }
1721
+
1722
+  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
1723
+    return;
1724
+  } // Subtract paddings
1725
+
1726
+
1727
+  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
1728
+  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
1729
+  if (Number.isNaN(width)) width = 0;
1730
+  if (Number.isNaN(height)) height = 0;
1731
+  extend$1(swiper, {
1732
+    width: width,
1733
+    height: height,
1734
+    size: swiper.isHorizontal() ? width : height
1735
+  });
1736
+}
1737
+
1738
+function updateSlides() {
1739
+  var swiper = this;
1740
+  var window = getWindow();
1741
+  var params = swiper.params;
1742
+  var $wrapperEl = swiper.$wrapperEl,
1743
+      swiperSize = swiper.size,
1744
+      rtl = swiper.rtlTranslate,
1745
+      wrongRTL = swiper.wrongRTL;
1746
+  var isVirtual = swiper.virtual && params.virtual.enabled;
1747
+  var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1748
+  var slides = $wrapperEl.children("." + swiper.params.slideClass);
1749
+  var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1750
+  var snapGrid = [];
1751
+  var slidesGrid = [];
1752
+  var slidesSizesGrid = [];
1753
+
1754
+  function slidesForMargin(slideEl, slideIndex) {
1755
+    if (!params.cssMode) return true;
1756
+
1757
+    if (slideIndex === slides.length - 1) {
1758
+      return false;
1759
+    }
1760
+
1761
+    return true;
1762
+  }
1763
+
1764
+  var offsetBefore = params.slidesOffsetBefore;
1765
+
1766
+  if (typeof offsetBefore === 'function') {
1767
+    offsetBefore = params.slidesOffsetBefore.call(swiper);
1768
+  }
1769
+
1770
+  var offsetAfter = params.slidesOffsetAfter;
1771
+
1772
+  if (typeof offsetAfter === 'function') {
1773
+    offsetAfter = params.slidesOffsetAfter.call(swiper);
1774
+  }
1775
+
1776
+  var previousSnapGridLength = swiper.snapGrid.length;
1777
+  var previousSlidesGridLength = swiper.snapGrid.length;
1778
+  var spaceBetween = params.spaceBetween;
1779
+  var slidePosition = -offsetBefore;
1780
+  var prevSlideSize = 0;
1781
+  var index = 0;
1782
+
1783
+  if (typeof swiperSize === 'undefined') {
1784
+    return;
1785
+  }
1786
+
1787
+  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1788
+    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
1789
+  }
1790
+
1791
+  swiper.virtualSize = -spaceBetween; // reset margins
1792
+
1793
+  if (rtl) slides.css({
1794
+    marginLeft: '',
1795
+    marginTop: ''
1796
+  });else slides.css({
1797
+    marginRight: '',
1798
+    marginBottom: ''
1799
+  });
1800
+  var slidesNumberEvenToRows;
1801
+
1802
+  if (params.slidesPerColumn > 1) {
1803
+    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1804
+      slidesNumberEvenToRows = slidesLength;
1805
+    } else {
1806
+      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1807
+    }
1808
+
1809
+    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1810
+      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1811
+    }
1812
+  } // Calc slides
1813
+
1814
+
1815
+  var slideSize;
1816
+  var slidesPerColumn = params.slidesPerColumn;
1817
+  var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1818
+  var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
1819
+
1820
+  for (var i = 0; i < slidesLength; i += 1) {
1821
+    slideSize = 0;
1822
+    var slide = slides.eq(i);
1823
+
1824
+    if (params.slidesPerColumn > 1) {
1825
+      // Set slides order
1826
+      var newSlideOrderIndex = void 0;
1827
+      var column = void 0;
1828
+      var row = void 0;
1829
+
1830
+      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
1831
+        var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
1832
+        var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
1833
+        var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
1834
+        row = Math.floor(slideIndexInGroup / columnsInGroup);
1835
+        column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
1836
+        newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
1837
+        slide.css({
1838
+          '-webkit-box-ordinal-group': newSlideOrderIndex,
1839
+          '-moz-box-ordinal-group': newSlideOrderIndex,
1840
+          '-ms-flex-order': newSlideOrderIndex,
1841
+          '-webkit-order': newSlideOrderIndex,
1842
+          order: newSlideOrderIndex
1843
+        });
1844
+      } else if (params.slidesPerColumnFill === 'column') {
1845
+        column = Math.floor(i / slidesPerColumn);
1846
+        row = i - column * slidesPerColumn;
1847
+
1848
+        if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
1849
+          row += 1;
1850
+
1851
+          if (row >= slidesPerColumn) {
1852
+            row = 0;
1853
+            column += 1;
1854
+          }
1855
+        }
1856
+      } else {
1857
+        row = Math.floor(i / slidesPerRow);
1858
+        column = i - row * slidesPerRow;
1859
+      }
1860
+
1861
+      slide.css("margin-" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
1862
+    }
1863
+
1864
+    if (slide.css('display') === 'none') continue; // eslint-disable-line
1865
+
1866
+    if (params.slidesPerView === 'auto') {
1867
+      var slideStyles = window.getComputedStyle(slide[0], null);
1868
+      var currentTransform = slide[0].style.transform;
1869
+      var currentWebKitTransform = slide[0].style.webkitTransform;
1870
+
1871
+      if (currentTransform) {
1872
+        slide[0].style.transform = 'none';
1873
+      }
1874
+
1875
+      if (currentWebKitTransform) {
1876
+        slide[0].style.webkitTransform = 'none';
1877
+      }
1878
+
1879
+      if (params.roundLengths) {
1880
+        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
1881
+      } else {
1882
+        // eslint-disable-next-line
1883
+        if (swiper.isHorizontal()) {
1884
+          var width = parseFloat(slideStyles.getPropertyValue('width') || 0);
1885
+          var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);
1886
+          var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);
1887
+          var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);
1888
+          var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);
1889
+          var boxSizing = slideStyles.getPropertyValue('box-sizing');
1890
+
1891
+          if (boxSizing && boxSizing === 'border-box') {
1892
+            slideSize = width + marginLeft + marginRight;
1893
+          } else {
1894
+            var _slide$ = slide[0],
1895
+                clientWidth = _slide$.clientWidth,
1896
+                offsetWidth = _slide$.offsetWidth;
1897
+            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
1898
+          }
1899
+        } else {
1900
+          var height = parseFloat(slideStyles.getPropertyValue('height') || 0);
1901
+          var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);
1902
+          var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);
1903
+          var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);
1904
+          var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);
1905
+
1906
+          var _boxSizing = slideStyles.getPropertyValue('box-sizing');
1907
+
1908
+          if (_boxSizing && _boxSizing === 'border-box') {
1909
+            slideSize = height + marginTop + marginBottom;
1910
+          } else {
1911
+            var _slide$2 = slide[0],
1912
+                clientHeight = _slide$2.clientHeight,
1913
+                offsetHeight = _slide$2.offsetHeight;
1914
+            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom + (offsetHeight - clientHeight);
1915
+          }
1916
+        }
1917
+      }
1918
+
1919
+      if (currentTransform) {
1920
+        slide[0].style.transform = currentTransform;
1921
+      }
1922
+
1923
+      if (currentWebKitTransform) {
1924
+        slide[0].style.webkitTransform = currentWebKitTransform;
1925
+      }
1926
+
1927
+      if (params.roundLengths) slideSize = Math.floor(slideSize);
1928
+    } else {
1929
+      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
1930
+      if (params.roundLengths) slideSize = Math.floor(slideSize);
1931
+
1932
+      if (slides[i]) {
1933
+        if (swiper.isHorizontal()) {
1934
+          slides[i].style.width = slideSize + "px";
1935
+        } else {
1936
+          slides[i].style.height = slideSize + "px";
1937
+        }
1938
+      }
1939
+    }
1940
+
1941
+    if (slides[i]) {
1942
+      slides[i].swiperSlideSize = slideSize;
1943
+    }
1944
+
1945
+    slidesSizesGrid.push(slideSize);
1946
+
1947
+    if (params.centeredSlides) {
1948
+      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
1949
+      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1950
+      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1951
+      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
1952
+      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1953
+      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1954
+      slidesGrid.push(slidePosition);
1955
+    } else {
1956
+      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1957
+      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1958
+      slidesGrid.push(slidePosition);
1959
+      slidePosition = slidePosition + slideSize + spaceBetween;
1960
+    }
1961
+
1962
+    swiper.virtualSize += slideSize + spaceBetween;
1963
+    prevSlideSize = slideSize;
1964
+    index += 1;
1965
+  }
1966
+
1967
+  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1968
+  var newSlidesGrid;
1969
+
1970
+  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
1971
+    $wrapperEl.css({
1972
+      width: swiper.virtualSize + params.spaceBetween + "px"
1973
+    });
1974
+  }
1975
+
1976
+  if (params.setWrapperSize) {
1977
+    if (swiper.isHorizontal()) $wrapperEl.css({
1978
+      width: swiper.virtualSize + params.spaceBetween + "px"
1979
+    });else $wrapperEl.css({
1980
+      height: swiper.virtualSize + params.spaceBetween + "px"
1981
+    });
1982
+  }
1983
+
1984
+  if (params.slidesPerColumn > 1) {
1985
+    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
1986
+    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
1987
+    if (swiper.isHorizontal()) $wrapperEl.css({
1988
+      width: swiper.virtualSize + params.spaceBetween + "px"
1989
+    });else $wrapperEl.css({
1990
+      height: swiper.virtualSize + params.spaceBetween + "px"
1991
+    });
1992
+
1993
+    if (params.centeredSlides) {
1994
+      newSlidesGrid = [];
1995
+
1996
+      for (var _i = 0; _i < snapGrid.length; _i += 1) {
1997
+        var slidesGridItem = snapGrid[_i];
1998
+        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
1999
+        if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
2000
+      }
2001
+
2002
+      snapGrid = newSlidesGrid;
2003
+    }
2004
+  } // Remove last grid elements depending on width
2005
+
2006
+
2007
+  if (!params.centeredSlides) {
2008
+    newSlidesGrid = [];
2009
+
2010
+    for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
2011
+      var _slidesGridItem = snapGrid[_i2];
2012
+      if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
2013
+
2014
+      if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
2015
+        newSlidesGrid.push(_slidesGridItem);
2016
+      }
2017
+    }
2018
+
2019
+    snapGrid = newSlidesGrid;
2020
+
2021
+    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
2022
+      snapGrid.push(swiper.virtualSize - swiperSize);
2023
+    }
2024
+  }
2025
+
2026
+  if (snapGrid.length === 0) snapGrid = [0];
2027
+
2028
+  if (params.spaceBetween !== 0) {
2029
+    if (swiper.isHorizontal()) {
2030
+      if (rtl) slides.filter(slidesForMargin).css({
2031
+        marginLeft: spaceBetween + "px"
2032
+      });else slides.filter(slidesForMargin).css({
2033
+        marginRight: spaceBetween + "px"
2034
+      });
2035
+    } else slides.filter(slidesForMargin).css({
2036
+      marginBottom: spaceBetween + "px"
2037
+    });
2038
+  }
2039
+
2040
+  if (params.centeredSlides && params.centeredSlidesBounds) {
2041
+    var allSlidesSize = 0;
2042
+    slidesSizesGrid.forEach(function (slideSizeValue) {
2043
+      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2044
+    });
2045
+    allSlidesSize -= params.spaceBetween;
2046
+    var maxSnap = allSlidesSize - swiperSize;
2047
+    snapGrid = snapGrid.map(function (snap) {
2048
+      if (snap < 0) return -offsetBefore;
2049
+      if (snap > maxSnap) return maxSnap + offsetAfter;
2050
+      return snap;
2051
+    });
2052
+  }
2053
+
2054
+  if (params.centerInsufficientSlides) {
2055
+    var _allSlidesSize = 0;
2056
+    slidesSizesGrid.forEach(function (slideSizeValue) {
2057
+      _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2058
+    });
2059
+    _allSlidesSize -= params.spaceBetween;
2060
+
2061
+    if (_allSlidesSize < swiperSize) {
2062
+      var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
2063
+      snapGrid.forEach(function (snap, snapIndex) {
2064
+        snapGrid[snapIndex] = snap - allSlidesOffset;
2065
+      });
2066
+      slidesGrid.forEach(function (snap, snapIndex) {
2067
+        slidesGrid[snapIndex] = snap + allSlidesOffset;
2068
+      });
2069
+    }
2070
+  }
2071
+
2072
+  extend$1(swiper, {
2073
+    slides: slides,
2074
+    snapGrid: snapGrid,
2075
+    slidesGrid: slidesGrid,
2076
+    slidesSizesGrid: slidesSizesGrid
2077
+  });
2078
+
2079
+  if (slidesLength !== previousSlidesLength) {
2080
+    swiper.emit('slidesLengthChange');
2081
+  }
2082
+
2083
+  if (snapGrid.length !== previousSnapGridLength) {
2084
+    if (swiper.params.watchOverflow) swiper.checkOverflow();
2085
+    swiper.emit('snapGridLengthChange');
2086
+  }
2087
+
2088
+  if (slidesGrid.length !== previousSlidesGridLength) {
2089
+    swiper.emit('slidesGridLengthChange');
2090
+  }
2091
+
2092
+  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
2093
+    swiper.updateSlidesOffset();
2094
+  }
2095
+}
2096
+
2097
+function updateAutoHeight(speed) {
2098
+  var swiper = this;
2099
+  var activeSlides = [];
2100
+  var newHeight = 0;
2101
+  var i;
2102
+
2103
+  if (typeof speed === 'number') {
2104
+    swiper.setTransition(speed);
2105
+  } else if (speed === true) {
2106
+    swiper.setTransition(swiper.params.speed);
2107
+  } // Find slides currently in view
2108
+
2109
+
2110
+  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
2111
+    if (swiper.params.centeredSlides) {
2112
+      swiper.visibleSlides.each(function (slide) {
2113
+        activeSlides.push(slide);
2114
+      });
2115
+    } else {
2116
+      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
2117
+        var index = swiper.activeIndex + i;
2118
+        if (index > swiper.slides.length) break;
2119
+        activeSlides.push(swiper.slides.eq(index)[0]);
2120
+      }
2121
+    }
2122
+  } else {
2123
+    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
2124
+  } // Find new height from highest slide in view
2125
+
2126
+
2127
+  for (i = 0; i < activeSlides.length; i += 1) {
2128
+    if (typeof activeSlides[i] !== 'undefined') {
2129
+      var height = activeSlides[i].offsetHeight;
2130
+      newHeight = height > newHeight ? height : newHeight;
2131
+    }
2132
+  } // Update Height
2133
+
2134
+
2135
+  if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
2136
+}
2137
+
2138
+function updateSlidesOffset() {
2139
+  var swiper = this;
2140
+  var slides = swiper.slides;
2141
+
2142
+  for (var i = 0; i < slides.length; i += 1) {
2143
+    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
2144
+  }
2145
+}
2146
+
2147
+function updateSlidesProgress(translate) {
2148
+  if (translate === void 0) {
2149
+    translate = this && this.translate || 0;
2150
+  }
2151
+
2152
+  var swiper = this;
2153
+  var params = swiper.params;
2154
+  var slides = swiper.slides,
2155
+      rtl = swiper.rtlTranslate;
2156
+  if (slides.length === 0) return;
2157
+  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
2158
+  var offsetCenter = -translate;
2159
+  if (rtl) offsetCenter = translate; // Visible Slides
2160
+
2161
+  slides.removeClass(params.slideVisibleClass);
2162
+  swiper.visibleSlidesIndexes = [];
2163
+  swiper.visibleSlides = [];
2164
+
2165
+  for (var i = 0; i < slides.length; i += 1) {
2166
+    var slide = slides[i];
2167
+    var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
2168
+
2169
+    if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
2170
+      var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
2171
+      var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
2172
+      var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
2173
+
2174
+      if (isVisible) {
2175
+        swiper.visibleSlides.push(slide);
2176
+        swiper.visibleSlidesIndexes.push(i);
2177
+        slides.eq(i).addClass(params.slideVisibleClass);
2178
+      }
2179
+    }
2180
+
2181
+    slide.progress = rtl ? -slideProgress : slideProgress;
2182
+  }
2183
+
2184
+  swiper.visibleSlides = $(swiper.visibleSlides);
2185
+}
2186
+
2187
+function updateProgress(translate) {
2188
+  var swiper = this;
2189
+
2190
+  if (typeof translate === 'undefined') {
2191
+    var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
2192
+
2193
+    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
2194
+  }
2195
+
2196
+  var params = swiper.params;
2197
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2198
+  var progress = swiper.progress,
2199
+      isBeginning = swiper.isBeginning,
2200
+      isEnd = swiper.isEnd;
2201
+  var wasBeginning = isBeginning;
2202
+  var wasEnd = isEnd;
2203
+
2204
+  if (translatesDiff === 0) {
2205
+    progress = 0;
2206
+    isBeginning = true;
2207
+    isEnd = true;
2208
+  } else {
2209
+    progress = (translate - swiper.minTranslate()) / translatesDiff;
2210
+    isBeginning = progress <= 0;
2211
+    isEnd = progress >= 1;
2212
+  }
2213
+
2214
+  extend$1(swiper, {
2215
+    progress: progress,
2216
+    isBeginning: isBeginning,
2217
+    isEnd: isEnd
2218
+  });
2219
+  if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
2220
+
2221
+  if (isBeginning && !wasBeginning) {
2222
+    swiper.emit('reachBeginning toEdge');
2223
+  }
2224
+
2225
+  if (isEnd && !wasEnd) {
2226
+    swiper.emit('reachEnd toEdge');
2227
+  }
2228
+
2229
+  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
2230
+    swiper.emit('fromEdge');
2231
+  }
2232
+
2233
+  swiper.emit('progress', progress);
2234
+}
2235
+
2236
+function updateSlidesClasses() {
2237
+  var swiper = this;
2238
+  var slides = swiper.slides,
2239
+      params = swiper.params,
2240
+      $wrapperEl = swiper.$wrapperEl,
2241
+      activeIndex = swiper.activeIndex,
2242
+      realIndex = swiper.realIndex;
2243
+  var isVirtual = swiper.virtual && params.virtual.enabled;
2244
+  slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
2245
+  var activeSlide;
2246
+
2247
+  if (isVirtual) {
2248
+    activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
2249
+  } else {
2250
+    activeSlide = slides.eq(activeIndex);
2251
+  } // Active classes
2252
+
2253
+
2254
+  activeSlide.addClass(params.slideActiveClass);
2255
+
2256
+  if (params.loop) {
2257
+    // Duplicate to all looped slides
2258
+    if (activeSlide.hasClass(params.slideDuplicateClass)) {
2259
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2260
+    } else {
2261
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2262
+    }
2263
+  } // Next Slide
2264
+
2265
+
2266
+  var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
2267
+
2268
+  if (params.loop && nextSlide.length === 0) {
2269
+    nextSlide = slides.eq(0);
2270
+    nextSlide.addClass(params.slideNextClass);
2271
+  } // Prev Slide
2272
+
2273
+
2274
+  var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
2275
+
2276
+  if (params.loop && prevSlide.length === 0) {
2277
+    prevSlide = slides.eq(-1);
2278
+    prevSlide.addClass(params.slidePrevClass);
2279
+  }
2280
+
2281
+  if (params.loop) {
2282
+    // Duplicate to all looped slides
2283
+    if (nextSlide.hasClass(params.slideDuplicateClass)) {
2284
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2285
+    } else {
2286
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2287
+    }
2288
+
2289
+    if (prevSlide.hasClass(params.slideDuplicateClass)) {
2290
+      $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2291
+    } else {
2292
+      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2293
+    }
2294
+  }
2295
+
2296
+  swiper.emitSlidesClasses();
2297
+}
2298
+
2299
+function updateActiveIndex(newActiveIndex) {
2300
+  var swiper = this;
2301
+  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2302
+  var slidesGrid = swiper.slidesGrid,
2303
+      snapGrid = swiper.snapGrid,
2304
+      params = swiper.params,
2305
+      previousIndex = swiper.activeIndex,
2306
+      previousRealIndex = swiper.realIndex,
2307
+      previousSnapIndex = swiper.snapIndex;
2308
+  var activeIndex = newActiveIndex;
2309
+  var snapIndex;
2310
+
2311
+  if (typeof activeIndex === 'undefined') {
2312
+    for (var i = 0; i < slidesGrid.length; i += 1) {
2313
+      if (typeof slidesGrid[i + 1] !== 'undefined') {
2314
+        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
2315
+          activeIndex = i;
2316
+        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
2317
+          activeIndex = i + 1;
2318
+        }
2319
+      } else if (translate >= slidesGrid[i]) {
2320
+        activeIndex = i;
2321
+      }
2322
+    } // Normalize slideIndex
2323
+
2324
+
2325
+    if (params.normalizeSlideIndex) {
2326
+      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
2327
+    }
2328
+  }
2329
+
2330
+  if (snapGrid.indexOf(translate) >= 0) {
2331
+    snapIndex = snapGrid.indexOf(translate);
2332
+  } else {
2333
+    var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
2334
+    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
2335
+  }
2336
+
2337
+  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2338
+
2339
+  if (activeIndex === previousIndex) {
2340
+    if (snapIndex !== previousSnapIndex) {
2341
+      swiper.snapIndex = snapIndex;
2342
+      swiper.emit('snapIndexChange');
2343
+    }
2344
+
2345
+    return;
2346
+  } // Get real index
2347
+
2348
+
2349
+  var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
2350
+  extend$1(swiper, {
2351
+    snapIndex: snapIndex,
2352
+    realIndex: realIndex,
2353
+    previousIndex: previousIndex,
2354
+    activeIndex: activeIndex
2355
+  });
2356
+  swiper.emit('activeIndexChange');
2357
+  swiper.emit('snapIndexChange');
2358
+
2359
+  if (previousRealIndex !== realIndex) {
2360
+    swiper.emit('realIndexChange');
2361
+  }
2362
+
2363
+  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
2364
+    swiper.emit('slideChange');
2365
+  }
2366
+}
2367
+
2368
+function updateClickedSlide(e) {
2369
+  var swiper = this;
2370
+  var params = swiper.params;
2371
+  var slide = $(e.target).closest("." + params.slideClass)[0];
2372
+  var slideFound = false;
2373
+
2374
+  if (slide) {
2375
+    for (var i = 0; i < swiper.slides.length; i += 1) {
2376
+      if (swiper.slides[i] === slide) slideFound = true;
2377
+    }
2378
+  }
2379
+
2380
+  if (slide && slideFound) {
2381
+    swiper.clickedSlide = slide;
2382
+
2383
+    if (swiper.virtual && swiper.params.virtual.enabled) {
2384
+      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
2385
+    } else {
2386
+      swiper.clickedIndex = $(slide).index();
2387
+    }
2388
+  } else {
2389
+    swiper.clickedSlide = undefined;
2390
+    swiper.clickedIndex = undefined;
2391
+    return;
2392
+  }
2393
+
2394
+  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
2395
+    swiper.slideToClickedSlide();
2396
+  }
2397
+}
2398
+
2399
+var update = {
2400
+  updateSize: updateSize,
2401
+  updateSlides: updateSlides,
2402
+  updateAutoHeight: updateAutoHeight,
2403
+  updateSlidesOffset: updateSlidesOffset,
2404
+  updateSlidesProgress: updateSlidesProgress,
2405
+  updateProgress: updateProgress,
2406
+  updateSlidesClasses: updateSlidesClasses,
2407
+  updateActiveIndex: updateActiveIndex,
2408
+  updateClickedSlide: updateClickedSlide
2409
+};
2410
+
2411
+function getSwiperTranslate(axis) {
2412
+  if (axis === void 0) {
2413
+    axis = this.isHorizontal() ? 'x' : 'y';
2414
+  }
2415
+
2416
+  var swiper = this;
2417
+  var params = swiper.params,
2418
+      rtl = swiper.rtlTranslate,
2419
+      translate = swiper.translate,
2420
+      $wrapperEl = swiper.$wrapperEl;
2421
+
2422
+  if (params.virtualTranslate) {
2423
+    return rtl ? -translate : translate;
2424
+  }
2425
+
2426
+  if (params.cssMode) {
2427
+    return translate;
2428
+  }
2429
+
2430
+  var currentTranslate = getTranslate($wrapperEl[0], axis);
2431
+  if (rtl) currentTranslate = -currentTranslate;
2432
+  return currentTranslate || 0;
2433
+}
2434
+
2435
+function setTranslate(translate, byController) {
2436
+  var swiper = this;
2437
+  var rtl = swiper.rtlTranslate,
2438
+      params = swiper.params,
2439
+      $wrapperEl = swiper.$wrapperEl,
2440
+      wrapperEl = swiper.wrapperEl,
2441
+      progress = swiper.progress;
2442
+  var x = 0;
2443
+  var y = 0;
2444
+  var z = 0;
2445
+
2446
+  if (swiper.isHorizontal()) {
2447
+    x = rtl ? -translate : translate;
2448
+  } else {
2449
+    y = translate;
2450
+  }
2451
+
2452
+  if (params.roundLengths) {
2453
+    x = Math.floor(x);
2454
+    y = Math.floor(y);
2455
+  }
2456
+
2457
+  if (params.cssMode) {
2458
+    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
2459
+  } else if (!params.virtualTranslate) {
2460
+    $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
2461
+  }
2462
+
2463
+  swiper.previousTranslate = swiper.translate;
2464
+  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
2465
+
2466
+  var newProgress;
2467
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2468
+
2469
+  if (translatesDiff === 0) {
2470
+    newProgress = 0;
2471
+  } else {
2472
+    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
2473
+  }
2474
+
2475
+  if (newProgress !== progress) {
2476
+    swiper.updateProgress(translate);
2477
+  }
2478
+
2479
+  swiper.emit('setTranslate', swiper.translate, byController);
2480
+}
2481
+
2482
+function minTranslate() {
2483
+  return -this.snapGrid[0];
2484
+}
2485
+
2486
+function maxTranslate() {
2487
+  return -this.snapGrid[this.snapGrid.length - 1];
2488
+}
2489
+
2490
+function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
2491
+  if (translate === void 0) {
2492
+    translate = 0;
2493
+  }
2494
+
2495
+  if (speed === void 0) {
2496
+    speed = this.params.speed;
2497
+  }
2498
+
2499
+  if (runCallbacks === void 0) {
2500
+    runCallbacks = true;
2501
+  }
2502
+
2503
+  if (translateBounds === void 0) {
2504
+    translateBounds = true;
2505
+  }
2506
+
2507
+  var swiper = this;
2508
+  var params = swiper.params,
2509
+      wrapperEl = swiper.wrapperEl;
2510
+
2511
+  if (swiper.animating && params.preventInteractionOnTransition) {
2512
+    return false;
2513
+  }
2514
+
2515
+  var minTranslate = swiper.minTranslate();
2516
+  var maxTranslate = swiper.maxTranslate();
2517
+  var newTranslate;
2518
+  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
2519
+
2520
+  swiper.updateProgress(newTranslate);
2521
+
2522
+  if (params.cssMode) {
2523
+    var isH = swiper.isHorizontal();
2524
+
2525
+    if (speed === 0) {
2526
+      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2527
+    } else {
2528
+      // eslint-disable-next-line
2529
+      if (wrapperEl.scrollTo) {
2530
+        var _wrapperEl$scrollTo;
2531
+
2532
+        wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2533
+      } else {
2534
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2535
+      }
2536
+    }
2537
+
2538
+    return true;
2539
+  }
2540
+
2541
+  if (speed === 0) {
2542
+    swiper.setTransition(0);
2543
+    swiper.setTranslate(newTranslate);
2544
+
2545
+    if (runCallbacks) {
2546
+      swiper.emit('beforeTransitionStart', speed, internal);
2547
+      swiper.emit('transitionEnd');
2548
+    }
2549
+  } else {
2550
+    swiper.setTransition(speed);
2551
+    swiper.setTranslate(newTranslate);
2552
+
2553
+    if (runCallbacks) {
2554
+      swiper.emit('beforeTransitionStart', speed, internal);
2555
+      swiper.emit('transitionStart');
2556
+    }
2557
+
2558
+    if (!swiper.animating) {
2559
+      swiper.animating = true;
2560
+
2561
+      if (!swiper.onTranslateToWrapperTransitionEnd) {
2562
+        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
2563
+          if (!swiper || swiper.destroyed) return;
2564
+          if (e.target !== this) return;
2565
+          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2566
+          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2567
+          swiper.onTranslateToWrapperTransitionEnd = null;
2568
+          delete swiper.onTranslateToWrapperTransitionEnd;
2569
+
2570
+          if (runCallbacks) {
2571
+            swiper.emit('transitionEnd');
2572
+          }
2573
+        };
2574
+      }
2575
+
2576
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2577
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2578
+    }
2579
+  }
2580
+
2581
+  return true;
2582
+}
2583
+
2584
+var translate = {
2585
+  getTranslate: getSwiperTranslate,
2586
+  setTranslate: setTranslate,
2587
+  minTranslate: minTranslate,
2588
+  maxTranslate: maxTranslate,
2589
+  translateTo: translateTo
2590
+};
2591
+
2592
+function setTransition(duration, byController) {
2593
+  var swiper = this;
2594
+
2595
+  if (!swiper.params.cssMode) {
2596
+    swiper.$wrapperEl.transition(duration);
2597
+  }
2598
+
2599
+  swiper.emit('setTransition', duration, byController);
2600
+}
2601
+
2602
+function transitionStart(runCallbacks, direction) {
2603
+  if (runCallbacks === void 0) {
2604
+    runCallbacks = true;
2605
+  }
2606
+
2607
+  var swiper = this;
2608
+  var activeIndex = swiper.activeIndex,
2609
+      params = swiper.params,
2610
+      previousIndex = swiper.previousIndex;
2611
+  if (params.cssMode) return;
2612
+
2613
+  if (params.autoHeight) {
2614
+    swiper.updateAutoHeight();
2615
+  }
2616
+
2617
+  var dir = direction;
2618
+
2619
+  if (!dir) {
2620
+    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2621
+  }
2622
+
2623
+  swiper.emit('transitionStart');
2624
+
2625
+  if (runCallbacks && activeIndex !== previousIndex) {
2626
+    if (dir === 'reset') {
2627
+      swiper.emit('slideResetTransitionStart');
2628
+      return;
2629
+    }
2630
+
2631
+    swiper.emit('slideChangeTransitionStart');
2632
+
2633
+    if (dir === 'next') {
2634
+      swiper.emit('slideNextTransitionStart');
2635
+    } else {
2636
+      swiper.emit('slidePrevTransitionStart');
2637
+    }
2638
+  }
2639
+}
2640
+
2641
+function transitionEnd$1(runCallbacks, direction) {
2642
+  if (runCallbacks === void 0) {
2643
+    runCallbacks = true;
2644
+  }
2645
+
2646
+  var swiper = this;
2647
+  var activeIndex = swiper.activeIndex,
2648
+      previousIndex = swiper.previousIndex,
2649
+      params = swiper.params;
2650
+  swiper.animating = false;
2651
+  if (params.cssMode) return;
2652
+  swiper.setTransition(0);
2653
+  var dir = direction;
2654
+
2655
+  if (!dir) {
2656
+    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2657
+  }
2658
+
2659
+  swiper.emit('transitionEnd');
2660
+
2661
+  if (runCallbacks && activeIndex !== previousIndex) {
2662
+    if (dir === 'reset') {
2663
+      swiper.emit('slideResetTransitionEnd');
2664
+      return;
2665
+    }
2666
+
2667
+    swiper.emit('slideChangeTransitionEnd');
2668
+
2669
+    if (dir === 'next') {
2670
+      swiper.emit('slideNextTransitionEnd');
2671
+    } else {
2672
+      swiper.emit('slidePrevTransitionEnd');
2673
+    }
2674
+  }
2675
+}
2676
+
2677
+var transition$1 = {
2678
+  setTransition: setTransition,
2679
+  transitionStart: transitionStart,
2680
+  transitionEnd: transitionEnd$1
2681
+};
2682
+
2683
+function slideTo(index, speed, runCallbacks, internal) {
2684
+  if (index === void 0) {
2685
+    index = 0;
2686
+  }
2687
+
2688
+  if (speed === void 0) {
2689
+    speed = this.params.speed;
2690
+  }
2691
+
2692
+  if (runCallbacks === void 0) {
2693
+    runCallbacks = true;
2694
+  }
2695
+
2696
+  var swiper = this;
2697
+  var slideIndex = index;
2698
+  if (slideIndex < 0) slideIndex = 0;
2699
+  var params = swiper.params,
2700
+      snapGrid = swiper.snapGrid,
2701
+      slidesGrid = swiper.slidesGrid,
2702
+      previousIndex = swiper.previousIndex,
2703
+      activeIndex = swiper.activeIndex,
2704
+      rtl = swiper.rtlTranslate,
2705
+      wrapperEl = swiper.wrapperEl;
2706
+
2707
+  if (swiper.animating && params.preventInteractionOnTransition) {
2708
+    return false;
2709
+  }
2710
+
2711
+  var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2712
+  var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2713
+  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2714
+
2715
+  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2716
+    swiper.emit('beforeSlideChangeStart');
2717
+  }
2718
+
2719
+  var translate = -snapGrid[snapIndex]; // Update progress
2720
+
2721
+  swiper.updateProgress(translate); // Normalize slideIndex
2722
+
2723
+  if (params.normalizeSlideIndex) {
2724
+    for (var i = 0; i < slidesGrid.length; i += 1) {
2725
+      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
2726
+        slideIndex = i;
2727
+      }
2728
+    }
2729
+  } // Directions locks
2730
+
2731
+
2732
+  if (swiper.initialized && slideIndex !== activeIndex) {
2733
+    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2734
+      return false;
2735
+    }
2736
+
2737
+    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2738
+      if ((activeIndex || 0) !== slideIndex) return false;
2739
+    }
2740
+  }
2741
+
2742
+  var direction;
2743
+  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
2744
+
2745
+  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
2746
+    swiper.updateActiveIndex(slideIndex); // Update Height
2747
+
2748
+    if (params.autoHeight) {
2749
+      swiper.updateAutoHeight();
2750
+    }
2751
+
2752
+    swiper.updateSlidesClasses();
2753
+
2754
+    if (params.effect !== 'slide') {
2755
+      swiper.setTranslate(translate);
2756
+    }
2757
+
2758
+    if (direction !== 'reset') {
2759
+      swiper.transitionStart(runCallbacks, direction);
2760
+      swiper.transitionEnd(runCallbacks, direction);
2761
+    }
2762
+
2763
+    return false;
2764
+  }
2765
+
2766
+  if (params.cssMode) {
2767
+    var isH = swiper.isHorizontal();
2768
+    var t = -translate;
2769
+
2770
+    if (rtl) {
2771
+      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
2772
+    }
2773
+
2774
+    if (speed === 0) {
2775
+      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2776
+    } else {
2777
+      // eslint-disable-next-line
2778
+      if (wrapperEl.scrollTo) {
2779
+        var _wrapperEl$scrollTo;
2780
+
2781
+        wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2782
+      } else {
2783
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2784
+      }
2785
+    }
2786
+
2787
+    return true;
2788
+  }
2789
+
2790
+  if (speed === 0) {
2791
+    swiper.setTransition(0);
2792
+    swiper.setTranslate(translate);
2793
+    swiper.updateActiveIndex(slideIndex);
2794
+    swiper.updateSlidesClasses();
2795
+    swiper.emit('beforeTransitionStart', speed, internal);
2796
+    swiper.transitionStart(runCallbacks, direction);
2797
+    swiper.transitionEnd(runCallbacks, direction);
2798
+  } else {
2799
+    swiper.setTransition(speed);
2800
+    swiper.setTranslate(translate);
2801
+    swiper.updateActiveIndex(slideIndex);
2802
+    swiper.updateSlidesClasses();
2803
+    swiper.emit('beforeTransitionStart', speed, internal);
2804
+    swiper.transitionStart(runCallbacks, direction);
2805
+
2806
+    if (!swiper.animating) {
2807
+      swiper.animating = true;
2808
+
2809
+      if (!swiper.onSlideToWrapperTransitionEnd) {
2810
+        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2811
+          if (!swiper || swiper.destroyed) return;
2812
+          if (e.target !== this) return;
2813
+          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2814
+          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2815
+          swiper.onSlideToWrapperTransitionEnd = null;
2816
+          delete swiper.onSlideToWrapperTransitionEnd;
2817
+          swiper.transitionEnd(runCallbacks, direction);
2818
+        };
2819
+      }
2820
+
2821
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2822
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2823
+    }
2824
+  }
2825
+
2826
+  return true;
2827
+}
2828
+
2829
+function slideToLoop(index, speed, runCallbacks, internal) {
2830
+  if (index === void 0) {
2831
+    index = 0;
2832
+  }
2833
+
2834
+  if (speed === void 0) {
2835
+    speed = this.params.speed;
2836
+  }
2837
+
2838
+  if (runCallbacks === void 0) {
2839
+    runCallbacks = true;
2840
+  }
2841
+
2842
+  var swiper = this;
2843
+  var newIndex = index;
2844
+
2845
+  if (swiper.params.loop) {
2846
+    newIndex += swiper.loopedSlides;
2847
+  }
2848
+
2849
+  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2850
+}
2851
+
2852
+/* eslint no-unused-vars: "off" */
2853
+function slideNext(speed, runCallbacks, internal) {
2854
+  if (speed === void 0) {
2855
+    speed = this.params.speed;
2856
+  }
2857
+
2858
+  if (runCallbacks === void 0) {
2859
+    runCallbacks = true;
2860
+  }
2861
+
2862
+  var swiper = this;
2863
+  var params = swiper.params,
2864
+      animating = swiper.animating;
2865
+  var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
2866
+
2867
+  if (params.loop) {
2868
+    if (animating && params.loopPreventsSlide) return false;
2869
+    swiper.loopFix(); // eslint-disable-next-line
2870
+
2871
+    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2872
+  }
2873
+
2874
+  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2875
+}
2876
+
2877
+/* eslint no-unused-vars: "off" */
2878
+function slidePrev(speed, runCallbacks, internal) {
2879
+  if (speed === void 0) {
2880
+    speed = this.params.speed;
2881
+  }
2882
+
2883
+  if (runCallbacks === void 0) {
2884
+    runCallbacks = true;
2885
+  }
2886
+
2887
+  var swiper = this;
2888
+  var params = swiper.params,
2889
+      animating = swiper.animating,
2890
+      snapGrid = swiper.snapGrid,
2891
+      slidesGrid = swiper.slidesGrid,
2892
+      rtlTranslate = swiper.rtlTranslate;
2893
+
2894
+  if (params.loop) {
2895
+    if (animating && params.loopPreventsSlide) return false;
2896
+    swiper.loopFix(); // eslint-disable-next-line
2897
+
2898
+    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2899
+  }
2900
+
2901
+  var translate = rtlTranslate ? swiper.translate : -swiper.translate;
2902
+
2903
+  function normalize(val) {
2904
+    if (val < 0) return -Math.floor(Math.abs(val));
2905
+    return Math.floor(val);
2906
+  }
2907
+
2908
+  var normalizedTranslate = normalize(translate);
2909
+  var normalizedSnapGrid = snapGrid.map(function (val) {
2910
+    return normalize(val);
2911
+  });
2912
+  var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2913
+  var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2914
+
2915
+  if (typeof prevSnap === 'undefined' && params.cssMode) {
2916
+    snapGrid.forEach(function (snap) {
2917
+      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
2918
+    });
2919
+  }
2920
+
2921
+  var prevIndex;
2922
+
2923
+  if (typeof prevSnap !== 'undefined') {
2924
+    prevIndex = slidesGrid.indexOf(prevSnap);
2925
+    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
2926
+  }
2927
+
2928
+  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2929
+}
2930
+
2931
+/* eslint no-unused-vars: "off" */
2932
+function slideReset(speed, runCallbacks, internal) {
2933
+  if (speed === void 0) {
2934
+    speed = this.params.speed;
2935
+  }
2936
+
2937
+  if (runCallbacks === void 0) {
2938
+    runCallbacks = true;
2939
+  }
2940
+
2941
+  var swiper = this;
2942
+  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2943
+}
2944
+
2945
+/* eslint no-unused-vars: "off" */
2946
+function slideToClosest(speed, runCallbacks, internal, threshold) {
2947
+  if (speed === void 0) {
2948
+    speed = this.params.speed;
2949
+  }
2950
+
2951
+  if (runCallbacks === void 0) {
2952
+    runCallbacks = true;
2953
+  }
2954
+
2955
+  if (threshold === void 0) {
2956
+    threshold = 0.5;
2957
+  }
2958
+
2959
+  var swiper = this;
2960
+  var index = swiper.activeIndex;
2961
+  var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
2962
+  var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
2963
+  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2964
+
2965
+  if (translate >= swiper.snapGrid[snapIndex]) {
2966
+    // The current translate is on or after the current snap index, so the choice
2967
+    // is between the current index and the one after it.
2968
+    var currentSnap = swiper.snapGrid[snapIndex];
2969
+    var nextSnap = swiper.snapGrid[snapIndex + 1];
2970
+
2971
+    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
2972
+      index += swiper.params.slidesPerGroup;
2973
+    }
2974
+  } else {
2975
+    // The current translate is before the current snap index, so the choice
2976
+    // is between the current index and the one before it.
2977
+    var prevSnap = swiper.snapGrid[snapIndex - 1];
2978
+    var _currentSnap = swiper.snapGrid[snapIndex];
2979
+
2980
+    if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
2981
+      index -= swiper.params.slidesPerGroup;
2982
+    }
2983
+  }
2984
+
2985
+  index = Math.max(index, 0);
2986
+  index = Math.min(index, swiper.slidesGrid.length - 1);
2987
+  return swiper.slideTo(index, speed, runCallbacks, internal);
2988
+}
2989
+
2990
+function slideToClickedSlide() {
2991
+  var swiper = this;
2992
+  var params = swiper.params,
2993
+      $wrapperEl = swiper.$wrapperEl;
2994
+  var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2995
+  var slideToIndex = swiper.clickedIndex;
2996
+  var realIndex;
2997
+
2998
+  if (params.loop) {
2999
+    if (swiper.animating) return;
3000
+    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
3001
+
3002
+    if (params.centeredSlides) {
3003
+      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
3004
+        swiper.loopFix();
3005
+        slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3006
+        nextTick(function () {
3007
+          swiper.slideTo(slideToIndex);
3008
+        });
3009
+      } else {
3010
+        swiper.slideTo(slideToIndex);
3011
+      }
3012
+    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
3013
+      swiper.loopFix();
3014
+      slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3015
+      nextTick(function () {
3016
+        swiper.slideTo(slideToIndex);
3017
+      });
3018
+    } else {
3019
+      swiper.slideTo(slideToIndex);
3020
+    }
3021
+  } else {
3022
+    swiper.slideTo(slideToIndex);
3023
+  }
3024
+}
3025
+
3026
+var slide = {
3027
+  slideTo: slideTo,
3028
+  slideToLoop: slideToLoop,
3029
+  slideNext: slideNext,
3030
+  slidePrev: slidePrev,
3031
+  slideReset: slideReset,
3032
+  slideToClosest: slideToClosest,
3033
+  slideToClickedSlide: slideToClickedSlide
3034
+};
3035
+
3036
+function loopCreate() {
3037
+  var swiper = this;
3038
+  var document = getDocument();
3039
+  var params = swiper.params,
3040
+      $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
3041
+
3042
+  $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
3043
+  var slides = $wrapperEl.children("." + params.slideClass);
3044
+
3045
+  if (params.loopFillGroupWithBlank) {
3046
+    var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
3047
+
3048
+    if (blankSlidesNum !== params.slidesPerGroup) {
3049
+      for (var i = 0; i < blankSlidesNum; i += 1) {
3050
+        var blankNode = $(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
3051
+        $wrapperEl.append(blankNode);
3052
+      }
3053
+
3054
+      slides = $wrapperEl.children("." + params.slideClass);
3055
+    }
3056
+  }
3057
+
3058
+  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
3059
+  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
3060
+  swiper.loopedSlides += params.loopAdditionalSlides;
3061
+
3062
+  if (swiper.loopedSlides > slides.length) {
3063
+    swiper.loopedSlides = slides.length;
3064
+  }
3065
+
3066
+  var prependSlides = [];
3067
+  var appendSlides = [];
3068
+  slides.each(function (el, index) {
3069
+    var slide = $(el);
3070
+
3071
+    if (index < swiper.loopedSlides) {
3072
+      appendSlides.push(el);
3073
+    }
3074
+
3075
+    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
3076
+      prependSlides.push(el);
3077
+    }
3078
+
3079
+    slide.attr('data-swiper-slide-index', index);
3080
+  });
3081
+
3082
+  for (var _i = 0; _i < appendSlides.length; _i += 1) {
3083
+    $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
3084
+  }
3085
+
3086
+  for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
3087
+    $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
3088
+  }
3089
+}
3090
+
3091
+function loopFix() {
3092
+  var swiper = this;
3093
+  swiper.emit('beforeLoopFix');
3094
+  var activeIndex = swiper.activeIndex,
3095
+      slides = swiper.slides,
3096
+      loopedSlides = swiper.loopedSlides,
3097
+      allowSlidePrev = swiper.allowSlidePrev,
3098
+      allowSlideNext = swiper.allowSlideNext,
3099
+      snapGrid = swiper.snapGrid,
3100
+      rtl = swiper.rtlTranslate;
3101
+  var newIndex;
3102
+  swiper.allowSlidePrev = true;
3103
+  swiper.allowSlideNext = true;
3104
+  var snapTranslate = -snapGrid[activeIndex];
3105
+  var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
3106
+
3107
+  if (activeIndex < loopedSlides) {
3108
+    newIndex = slides.length - loopedSlides * 3 + activeIndex;
3109
+    newIndex += loopedSlides;
3110
+    var slideChanged = swiper.slideTo(newIndex, 0, false, true);
3111
+
3112
+    if (slideChanged && diff !== 0) {
3113
+      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3114
+    }
3115
+  } else if (activeIndex >= slides.length - loopedSlides) {
3116
+    // Fix For Positive Oversliding
3117
+    newIndex = -slides.length + activeIndex + loopedSlides;
3118
+    newIndex += loopedSlides;
3119
+
3120
+    var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
3121
+
3122
+    if (_slideChanged && diff !== 0) {
3123
+      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3124
+    }
3125
+  }
3126
+
3127
+  swiper.allowSlidePrev = allowSlidePrev;
3128
+  swiper.allowSlideNext = allowSlideNext;
3129
+  swiper.emit('loopFix');
3130
+}
3131
+
3132
+function loopDestroy() {
3133
+  var swiper = this;
3134
+  var $wrapperEl = swiper.$wrapperEl,
3135
+      params = swiper.params,
3136
+      slides = swiper.slides;
3137
+  $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
3138
+  slides.removeAttr('data-swiper-slide-index');
3139
+}
3140
+
3141
+var loop = {
3142
+  loopCreate: loopCreate,
3143
+  loopFix: loopFix,
3144
+  loopDestroy: loopDestroy
3145
+};
3146
+
3147
+function setGrabCursor(moving) {
3148
+  var swiper = this;
3149
+  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
3150
+  var el = swiper.el;
3151
+  el.style.cursor = 'move';
3152
+  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
3153
+  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
3154
+  el.style.cursor = moving ? 'grabbing' : 'grab';
3155
+}
3156
+
3157
+function unsetGrabCursor() {
3158
+  var swiper = this;
3159
+
3160
+  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
3161
+    return;
3162
+  }
3163
+
3164
+  swiper.el.style.cursor = '';
3165
+}
3166
+
3167
+var grabCursor = {
3168
+  setGrabCursor: setGrabCursor,
3169
+  unsetGrabCursor: unsetGrabCursor
3170
+};
3171
+
3172
+function appendSlide(slides) {
3173
+  var swiper = this;
3174
+  var $wrapperEl = swiper.$wrapperEl,
3175
+      params = swiper.params;
3176
+
3177
+  if (params.loop) {
3178
+    swiper.loopDestroy();
3179
+  }
3180
+
3181
+  if (typeof slides === 'object' && 'length' in slides) {
3182
+    for (var i = 0; i < slides.length; i += 1) {
3183
+      if (slides[i]) $wrapperEl.append(slides[i]);
3184
+    }
3185
+  } else {
3186
+    $wrapperEl.append(slides);
3187
+  }
3188
+
3189
+  if (params.loop) {
3190
+    swiper.loopCreate();
3191
+  }
3192
+
3193
+  if (!(params.observer && swiper.support.observer)) {
3194
+    swiper.update();
3195
+  }
3196
+}
3197
+
3198
+function prependSlide(slides) {
3199
+  var swiper = this;
3200
+  var params = swiper.params,
3201
+      $wrapperEl = swiper.$wrapperEl,
3202
+      activeIndex = swiper.activeIndex;
3203
+
3204
+  if (params.loop) {
3205
+    swiper.loopDestroy();
3206
+  }
3207
+
3208
+  var newActiveIndex = activeIndex + 1;
3209
+
3210
+  if (typeof slides === 'object' && 'length' in slides) {
3211
+    for (var i = 0; i < slides.length; i += 1) {
3212
+      if (slides[i]) $wrapperEl.prepend(slides[i]);
3213
+    }
3214
+
3215
+    newActiveIndex = activeIndex + slides.length;
3216
+  } else {
3217
+    $wrapperEl.prepend(slides);
3218
+  }
3219
+
3220
+  if (params.loop) {
3221
+    swiper.loopCreate();
3222
+  }
3223
+
3224
+  if (!(params.observer && swiper.support.observer)) {
3225
+    swiper.update();
3226
+  }
3227
+
3228
+  swiper.slideTo(newActiveIndex, 0, false);
3229
+}
3230
+
3231
+function addSlide(index, slides) {
3232
+  var swiper = this;
3233
+  var $wrapperEl = swiper.$wrapperEl,
3234
+      params = swiper.params,
3235
+      activeIndex = swiper.activeIndex;
3236
+  var activeIndexBuffer = activeIndex;
3237
+
3238
+  if (params.loop) {
3239
+    activeIndexBuffer -= swiper.loopedSlides;
3240
+    swiper.loopDestroy();
3241
+    swiper.slides = $wrapperEl.children("." + params.slideClass);
3242
+  }
3243
+
3244
+  var baseLength = swiper.slides.length;
3245
+
3246
+  if (index <= 0) {
3247
+    swiper.prependSlide(slides);
3248
+    return;
3249
+  }
3250
+
3251
+  if (index >= baseLength) {
3252
+    swiper.appendSlide(slides);
3253
+    return;
3254
+  }
3255
+
3256
+  var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
3257
+  var slidesBuffer = [];
3258
+
3259
+  for (var i = baseLength - 1; i >= index; i -= 1) {
3260
+    var currentSlide = swiper.slides.eq(i);
3261
+    currentSlide.remove();
3262
+    slidesBuffer.unshift(currentSlide);
3263
+  }
3264
+
3265
+  if (typeof slides === 'object' && 'length' in slides) {
3266
+    for (var _i = 0; _i < slides.length; _i += 1) {
3267
+      if (slides[_i]) $wrapperEl.append(slides[_i]);
3268
+    }
3269
+
3270
+    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
3271
+  } else {
3272
+    $wrapperEl.append(slides);
3273
+  }
3274
+
3275
+  for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
3276
+    $wrapperEl.append(slidesBuffer[_i2]);
3277
+  }
3278
+
3279
+  if (params.loop) {
3280
+    swiper.loopCreate();
3281
+  }
3282
+
3283
+  if (!(params.observer && swiper.support.observer)) {
3284
+    swiper.update();
3285
+  }
3286
+
3287
+  if (params.loop) {
3288
+    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3289
+  } else {
3290
+    swiper.slideTo(newActiveIndex, 0, false);
3291
+  }
3292
+}
3293
+
3294
+function removeSlide(slidesIndexes) {
3295
+  var swiper = this;
3296
+  var params = swiper.params,
3297
+      $wrapperEl = swiper.$wrapperEl,
3298
+      activeIndex = swiper.activeIndex;
3299
+  var activeIndexBuffer = activeIndex;
3300
+
3301
+  if (params.loop) {
3302
+    activeIndexBuffer -= swiper.loopedSlides;
3303
+    swiper.loopDestroy();
3304
+    swiper.slides = $wrapperEl.children("." + params.slideClass);
3305
+  }
3306
+
3307
+  var newActiveIndex = activeIndexBuffer;
3308
+  var indexToRemove;
3309
+
3310
+  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
3311
+    for (var i = 0; i < slidesIndexes.length; i += 1) {
3312
+      indexToRemove = slidesIndexes[i];
3313
+      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3314
+      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3315
+    }
3316
+
3317
+    newActiveIndex = Math.max(newActiveIndex, 0);
3318
+  } else {
3319
+    indexToRemove = slidesIndexes;
3320
+    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3321
+    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3322
+    newActiveIndex = Math.max(newActiveIndex, 0);
3323
+  }
3324
+
3325
+  if (params.loop) {
3326
+    swiper.loopCreate();
3327
+  }
3328
+
3329
+  if (!(params.observer && swiper.support.observer)) {
3330
+    swiper.update();
3331
+  }
3332
+
3333
+  if (params.loop) {
3334
+    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3335
+  } else {
3336
+    swiper.slideTo(newActiveIndex, 0, false);
3337
+  }
3338
+}
3339
+
3340
+function removeAllSlides() {
3341
+  var swiper = this;
3342
+  var slidesIndexes = [];
3343
+
3344
+  for (var i = 0; i < swiper.slides.length; i += 1) {
3345
+    slidesIndexes.push(i);
3346
+  }
3347
+
3348
+  swiper.removeSlide(slidesIndexes);
3349
+}
3350
+
3351
+var manipulation = {
3352
+  appendSlide: appendSlide,
3353
+  prependSlide: prependSlide,
3354
+  addSlide: addSlide,
3355
+  removeSlide: removeSlide,
3356
+  removeAllSlides: removeAllSlides
3357
+};
3358
+
3359
+function onTouchStart(event) {
3360
+  var swiper = this;
3361
+  var document = getDocument();
3362
+  var window = getWindow();
3363
+  var data = swiper.touchEventsData;
3364
+  var params = swiper.params,
3365
+      touches = swiper.touches;
3366
+
3367
+  if (swiper.animating && params.preventInteractionOnTransition) {
3368
+    return;
3369
+  }
3370
+
3371
+  var e = event;
3372
+  if (e.originalEvent) e = e.originalEvent;
3373
+  var $targetEl = $(e.target);
3374
+
3375
+  if (params.touchEventsTarget === 'wrapper') {
3376
+    if (!$targetEl.closest(swiper.wrapperEl).length) return;
3377
+  }
3378
+
3379
+  data.isTouchEvent = e.type === 'touchstart';
3380
+  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
3381
+  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
3382
+  if (data.isTouched && data.isMoved) return;
3383
+
3384
+  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
3385
+    swiper.allowClick = true;
3386
+    return;
3387
+  }
3388
+
3389
+  if (params.swipeHandler) {
3390
+    if (!$targetEl.closest(params.swipeHandler)[0]) return;
3391
+  }
3392
+
3393
+  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
3394
+  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
3395
+  var startX = touches.currentX;
3396
+  var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
3397
+
3398
+  var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
3399
+  var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
3400
+
3401
+  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)) {
3402
+    return;
3403
+  }
3404
+
3405
+  extend$1(data, {
3406
+    isTouched: true,
3407
+    isMoved: false,
3408
+    allowTouchCallbacks: true,
3409
+    isScrolling: undefined,
3410
+    startMoving: undefined
3411
+  });
3412
+  touches.startX = startX;
3413
+  touches.startY = startY;
3414
+  data.touchStartTime = now();
3415
+  swiper.allowClick = true;
3416
+  swiper.updateSize();
3417
+  swiper.swipeDirection = undefined;
3418
+  if (params.threshold > 0) data.allowThresholdMove = false;
3419
+
3420
+  if (e.type !== 'touchstart') {
3421
+    var preventDefault = true;
3422
+    if ($targetEl.is(data.formElements)) preventDefault = false;
3423
+
3424
+    if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
3425
+      document.activeElement.blur();
3426
+    }
3427
+
3428
+    var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
3429
+
3430
+    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
3431
+      e.preventDefault();
3432
+    }
3433
+  }
3434
+
3435
+  swiper.emit('touchStart', e);
3436
+}
3437
+
3438
+function onTouchMove(event) {
3439
+  var document = getDocument();
3440
+  var swiper = this;
3441
+  var data = swiper.touchEventsData;
3442
+  var params = swiper.params,
3443
+      touches = swiper.touches,
3444
+      rtl = swiper.rtlTranslate;
3445
+  var e = event;
3446
+  if (e.originalEvent) e = e.originalEvent;
3447
+
3448
+  if (!data.isTouched) {
3449
+    if (data.startMoving && data.isScrolling) {
3450
+      swiper.emit('touchMoveOpposite', e);
3451
+    }
3452
+
3453
+    return;
3454
+  }
3455
+
3456
+  if (data.isTouchEvent && e.type !== 'touchmove') return;
3457
+  var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
3458
+  var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
3459
+  var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
3460
+
3461
+  if (e.preventedByNestedSwiper) {
3462
+    touches.startX = pageX;
3463
+    touches.startY = pageY;
3464
+    return;
3465
+  }
3466
+
3467
+  if (!swiper.allowTouchMove) {
3468
+    // isMoved = true;
3469
+    swiper.allowClick = false;
3470
+
3471
+    if (data.isTouched) {
3472
+      extend$1(touches, {
3473
+        startX: pageX,
3474
+        startY: pageY,
3475
+        currentX: pageX,
3476
+        currentY: pageY
3477
+      });
3478
+      data.touchStartTime = now();
3479
+    }
3480
+
3481
+    return;
3482
+  }
3483
+
3484
+  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
3485
+    if (swiper.isVertical()) {
3486
+      // Vertical
3487
+      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
3488
+        data.isTouched = false;
3489
+        data.isMoved = false;
3490
+        return;
3491
+      }
3492
+    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
3493
+      return;
3494
+    }
3495
+  }
3496
+
3497
+  if (data.isTouchEvent && document.activeElement) {
3498
+    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {
3499
+      data.isMoved = true;
3500
+      swiper.allowClick = false;
3501
+      return;
3502
+    }
3503
+  }
3504
+
3505
+  if (data.allowTouchCallbacks) {
3506
+    swiper.emit('touchMove', e);
3507
+  }
3508
+
3509
+  if (e.targetTouches && e.targetTouches.length > 1) return;
3510
+  touches.currentX = pageX;
3511
+  touches.currentY = pageY;
3512
+  var diffX = touches.currentX - touches.startX;
3513
+  var diffY = touches.currentY - touches.startY;
3514
+  if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
3515
+
3516
+  if (typeof data.isScrolling === 'undefined') {
3517
+    var touchAngle;
3518
+
3519
+    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
3520
+      data.isScrolling = false;
3521
+    } else {
3522
+      // eslint-disable-next-line
3523
+      if (diffX * diffX + diffY * diffY >= 25) {
3524
+        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
3525
+        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
3526
+      }
3527
+    }
3528
+  }
3529
+
3530
+  if (data.isScrolling) {
3531
+    swiper.emit('touchMoveOpposite', e);
3532
+  }
3533
+
3534
+  if (typeof data.startMoving === 'undefined') {
3535
+    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
3536
+      data.startMoving = true;
3537
+    }
3538
+  }
3539
+
3540
+  if (data.isScrolling) {
3541
+    data.isTouched = false;
3542
+    return;
3543
+  }
3544
+
3545
+  if (!data.startMoving) {
3546
+    return;
3547
+  }
3548
+
3549
+  swiper.allowClick = false;
3550
+
3551
+  if (!params.cssMode && e.cancelable) {
3552
+    e.preventDefault();
3553
+  }
3554
+
3555
+  if (params.touchMoveStopPropagation && !params.nested) {
3556
+    e.stopPropagation();
3557
+  }
3558
+
3559
+  if (!data.isMoved) {
3560
+    if (params.loop) {
3561
+      swiper.loopFix();
3562
+    }
3563
+
3564
+    data.startTranslate = swiper.getTranslate();
3565
+    swiper.setTransition(0);
3566
+
3567
+    if (swiper.animating) {
3568
+      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
3569
+    }
3570
+
3571
+    data.allowMomentumBounce = false; // Grab Cursor
3572
+
3573
+    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3574
+      swiper.setGrabCursor(true);
3575
+    }
3576
+
3577
+    swiper.emit('sliderFirstMove', e);
3578
+  }
3579
+
3580
+  swiper.emit('sliderMove', e);
3581
+  data.isMoved = true;
3582
+  var diff = swiper.isHorizontal() ? diffX : diffY;
3583
+  touches.diff = diff;
3584
+  diff *= params.touchRatio;
3585
+  if (rtl) diff = -diff;
3586
+  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
3587
+  data.currentTranslate = diff + data.startTranslate;
3588
+  var disableParentSwiper = true;
3589
+  var resistanceRatio = params.resistanceRatio;
3590
+
3591
+  if (params.touchReleaseOnEdges) {
3592
+    resistanceRatio = 0;
3593
+  }
3594
+
3595
+  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
3596
+    disableParentSwiper = false;
3597
+    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
3598
+  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
3599
+    disableParentSwiper = false;
3600
+    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
3601
+  }
3602
+
3603
+  if (disableParentSwiper) {
3604
+    e.preventedByNestedSwiper = true;
3605
+  } // Directions locks
3606
+
3607
+
3608
+  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
3609
+    data.currentTranslate = data.startTranslate;
3610
+  }
3611
+
3612
+  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
3613
+    data.currentTranslate = data.startTranslate;
3614
+  } // Threshold
3615
+
3616
+
3617
+  if (params.threshold > 0) {
3618
+    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
3619
+      if (!data.allowThresholdMove) {
3620
+        data.allowThresholdMove = true;
3621
+        touches.startX = touches.currentX;
3622
+        touches.startY = touches.currentY;
3623
+        data.currentTranslate = data.startTranslate;
3624
+        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
3625
+        return;
3626
+      }
3627
+    } else {
3628
+      data.currentTranslate = data.startTranslate;
3629
+      return;
3630
+    }
3631
+  }
3632
+
3633
+  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
3634
+
3635
+  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
3636
+    swiper.updateActiveIndex();
3637
+    swiper.updateSlidesClasses();
3638
+  }
3639
+
3640
+  if (params.freeMode) {
3641
+    // Velocity
3642
+    if (data.velocities.length === 0) {
3643
+      data.velocities.push({
3644
+        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
3645
+        time: data.touchStartTime
3646
+      });
3647
+    }
3648
+
3649
+    data.velocities.push({
3650
+      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
3651
+      time: now()
3652
+    });
3653
+  } // Update progress
3654
+
3655
+
3656
+  swiper.updateProgress(data.currentTranslate); // Update translate
3657
+
3658
+  swiper.setTranslate(data.currentTranslate);
3659
+}
3660
+
3661
+function onTouchEnd(event) {
3662
+  var swiper = this;
3663
+  var data = swiper.touchEventsData;
3664
+  var params = swiper.params,
3665
+      touches = swiper.touches,
3666
+      rtl = swiper.rtlTranslate,
3667
+      $wrapperEl = swiper.$wrapperEl,
3668
+      slidesGrid = swiper.slidesGrid,
3669
+      snapGrid = swiper.snapGrid;
3670
+  var e = event;
3671
+  if (e.originalEvent) e = e.originalEvent;
3672
+
3673
+  if (data.allowTouchCallbacks) {
3674
+    swiper.emit('touchEnd', e);
3675
+  }
3676
+
3677
+  data.allowTouchCallbacks = false;
3678
+
3679
+  if (!data.isTouched) {
3680
+    if (data.isMoved && params.grabCursor) {
3681
+      swiper.setGrabCursor(false);
3682
+    }
3683
+
3684
+    data.isMoved = false;
3685
+    data.startMoving = false;
3686
+    return;
3687
+  } // Return Grab Cursor
3688
+
3689
+
3690
+  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3691
+    swiper.setGrabCursor(false);
3692
+  } // Time diff
3693
+
3694
+
3695
+  var touchEndTime = now();
3696
+  var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
3697
+
3698
+  if (swiper.allowClick) {
3699
+    swiper.updateClickedSlide(e);
3700
+    swiper.emit('tap click', e);
3701
+
3702
+    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
3703
+      swiper.emit('doubleTap doubleClick', e);
3704
+    }
3705
+  }
3706
+
3707
+  data.lastClickTime = now();
3708
+  nextTick(function () {
3709
+    if (!swiper.destroyed) swiper.allowClick = true;
3710
+  });
3711
+
3712
+  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3713
+    data.isTouched = false;
3714
+    data.isMoved = false;
3715
+    data.startMoving = false;
3716
+    return;
3717
+  }
3718
+
3719
+  data.isTouched = false;
3720
+  data.isMoved = false;
3721
+  data.startMoving = false;
3722
+  var currentPos;
3723
+
3724
+  if (params.followFinger) {
3725
+    currentPos = rtl ? swiper.translate : -swiper.translate;
3726
+  } else {
3727
+    currentPos = -data.currentTranslate;
3728
+  }
3729
+
3730
+  if (params.cssMode) {
3731
+    return;
3732
+  }
3733
+
3734
+  if (params.freeMode) {
3735
+    if (currentPos < -swiper.minTranslate()) {
3736
+      swiper.slideTo(swiper.activeIndex);
3737
+      return;
3738
+    }
3739
+
3740
+    if (currentPos > -swiper.maxTranslate()) {
3741
+      if (swiper.slides.length < snapGrid.length) {
3742
+        swiper.slideTo(snapGrid.length - 1);
3743
+      } else {
3744
+        swiper.slideTo(swiper.slides.length - 1);
3745
+      }
3746
+
3747
+      return;
3748
+    }
3749
+
3750
+    if (params.freeModeMomentum) {
3751
+      if (data.velocities.length > 1) {
3752
+        var lastMoveEvent = data.velocities.pop();
3753
+        var velocityEvent = data.velocities.pop();
3754
+        var distance = lastMoveEvent.position - velocityEvent.position;
3755
+        var time = lastMoveEvent.time - velocityEvent.time;
3756
+        swiper.velocity = distance / time;
3757
+        swiper.velocity /= 2;
3758
+
3759
+        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3760
+          swiper.velocity = 0;
3761
+        } // this implies that the user stopped moving a finger then released.
3762
+        // There would be no events with distance zero, so the last event is stale.
3763
+
3764
+
3765
+        if (time > 150 || now() - lastMoveEvent.time > 300) {
3766
+          swiper.velocity = 0;
3767
+        }
3768
+      } else {
3769
+        swiper.velocity = 0;
3770
+      }
3771
+
3772
+      swiper.velocity *= params.freeModeMomentumVelocityRatio;
3773
+      data.velocities.length = 0;
3774
+      var momentumDuration = 1000 * params.freeModeMomentumRatio;
3775
+      var momentumDistance = swiper.velocity * momentumDuration;
3776
+      var newPosition = swiper.translate + momentumDistance;
3777
+      if (rtl) newPosition = -newPosition;
3778
+      var doBounce = false;
3779
+      var afterBouncePosition;
3780
+      var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3781
+      var needsLoopFix;
3782
+
3783
+      if (newPosition < swiper.maxTranslate()) {
3784
+        if (params.freeModeMomentumBounce) {
3785
+          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3786
+            newPosition = swiper.maxTranslate() - bounceAmount;
3787
+          }
3788
+
3789
+          afterBouncePosition = swiper.maxTranslate();
3790
+          doBounce = true;
3791
+          data.allowMomentumBounce = true;
3792
+        } else {
3793
+          newPosition = swiper.maxTranslate();
3794
+        }
3795
+
3796
+        if (params.loop && params.centeredSlides) needsLoopFix = true;
3797
+      } else if (newPosition > swiper.minTranslate()) {
3798
+        if (params.freeModeMomentumBounce) {
3799
+          if (newPosition - swiper.minTranslate() > bounceAmount) {
3800
+            newPosition = swiper.minTranslate() + bounceAmount;
3801
+          }
3802
+
3803
+          afterBouncePosition = swiper.minTranslate();
3804
+          doBounce = true;
3805
+          data.allowMomentumBounce = true;
3806
+        } else {
3807
+          newPosition = swiper.minTranslate();
3808
+        }
3809
+
3810
+        if (params.loop && params.centeredSlides) needsLoopFix = true;
3811
+      } else if (params.freeModeSticky) {
3812
+        var nextSlide;
3813
+
3814
+        for (var j = 0; j < snapGrid.length; j += 1) {
3815
+          if (snapGrid[j] > -newPosition) {
3816
+            nextSlide = j;
3817
+            break;
3818
+          }
3819
+        }
3820
+
3821
+        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3822
+          newPosition = snapGrid[nextSlide];
3823
+        } else {
3824
+          newPosition = snapGrid[nextSlide - 1];
3825
+        }
3826
+
3827
+        newPosition = -newPosition;
3828
+      }
3829
+
3830
+      if (needsLoopFix) {
3831
+        swiper.once('transitionEnd', function () {
3832
+          swiper.loopFix();
3833
+        });
3834
+      } // Fix duration
3835
+
3836
+
3837
+      if (swiper.velocity !== 0) {
3838
+        if (rtl) {
3839
+          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3840
+        } else {
3841
+          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3842
+        }
3843
+
3844
+        if (params.freeModeSticky) {
3845
+          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
3846
+          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
3847
+          // It's easy to see this when simulating touch with mouse events. To fix this,
3848
+          // limit single-slide swipes to the default slide duration. This also has the
3849
+          // nice side effect of matching slide speed if the user stopped moving before
3850
+          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
3851
+          // For faster swipes, also apply limits (albeit higher ones).
3852
+          var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
3853
+          var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
3854
+
3855
+          if (moveDistance < currentSlideSize) {
3856
+            momentumDuration = params.speed;
3857
+          } else if (moveDistance < 2 * currentSlideSize) {
3858
+            momentumDuration = params.speed * 1.5;
3859
+          } else {
3860
+            momentumDuration = params.speed * 2.5;
3861
+          }
3862
+        }
3863
+      } else if (params.freeModeSticky) {
3864
+        swiper.slideToClosest();
3865
+        return;
3866
+      }
3867
+
3868
+      if (params.freeModeMomentumBounce && doBounce) {
3869
+        swiper.updateProgress(afterBouncePosition);
3870
+        swiper.setTransition(momentumDuration);
3871
+        swiper.setTranslate(newPosition);
3872
+        swiper.transitionStart(true, swiper.swipeDirection);
3873
+        swiper.animating = true;
3874
+        $wrapperEl.transitionEnd(function () {
3875
+          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
3876
+          swiper.emit('momentumBounce');
3877
+          swiper.setTransition(params.speed);
3878
+          setTimeout(function () {
3879
+            swiper.setTranslate(afterBouncePosition);
3880
+            $wrapperEl.transitionEnd(function () {
3881
+              if (!swiper || swiper.destroyed) return;
3882
+              swiper.transitionEnd();
3883
+            });
3884
+          }, 0);
3885
+        });
3886
+      } else if (swiper.velocity) {
3887
+        swiper.updateProgress(newPosition);
3888
+        swiper.setTransition(momentumDuration);
3889
+        swiper.setTranslate(newPosition);
3890
+        swiper.transitionStart(true, swiper.swipeDirection);
3891
+
3892
+        if (!swiper.animating) {
3893
+          swiper.animating = true;
3894
+          $wrapperEl.transitionEnd(function () {
3895
+            if (!swiper || swiper.destroyed) return;
3896
+            swiper.transitionEnd();
3897
+          });
3898
+        }
3899
+      } else {
3900
+        swiper.updateProgress(newPosition);
3901
+      }
3902
+
3903
+      swiper.updateActiveIndex();
3904
+      swiper.updateSlidesClasses();
3905
+    } else if (params.freeModeSticky) {
3906
+      swiper.slideToClosest();
3907
+      return;
3908
+    }
3909
+
3910
+    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
3911
+      swiper.updateProgress();
3912
+      swiper.updateActiveIndex();
3913
+      swiper.updateSlidesClasses();
3914
+    }
3915
+
3916
+    return;
3917
+  } // Find current slide
3918
+
3919
+
3920
+  var stopIndex = 0;
3921
+  var groupSize = swiper.slidesSizesGrid[0];
3922
+
3923
+  for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
3924
+    var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3925
+
3926
+    if (typeof slidesGrid[i + _increment] !== 'undefined') {
3927
+      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
3928
+        stopIndex = i;
3929
+        groupSize = slidesGrid[i + _increment] - slidesGrid[i];
3930
+      }
3931
+    } else if (currentPos >= slidesGrid[i]) {
3932
+      stopIndex = i;
3933
+      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3934
+    }
3935
+  } // Find current slide size
3936
+
3937
+
3938
+  var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3939
+  var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3940
+
3941
+  if (timeDiff > params.longSwipesMs) {
3942
+    // Long touches
3943
+    if (!params.longSwipes) {
3944
+      swiper.slideTo(swiper.activeIndex);
3945
+      return;
3946
+    }
3947
+
3948
+    if (swiper.swipeDirection === 'next') {
3949
+      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
3950
+    }
3951
+
3952
+    if (swiper.swipeDirection === 'prev') {
3953
+      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
3954
+    }
3955
+  } else {
3956
+    // Short swipes
3957
+    if (!params.shortSwipes) {
3958
+      swiper.slideTo(swiper.activeIndex);
3959
+      return;
3960
+    }
3961
+
3962
+    var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
3963
+
3964
+    if (!isNavButtonTarget) {
3965
+      if (swiper.swipeDirection === 'next') {
3966
+        swiper.slideTo(stopIndex + increment);
3967
+      }
3968
+
3969
+      if (swiper.swipeDirection === 'prev') {
3970
+        swiper.slideTo(stopIndex);
3971
+      }
3972
+    } else if (e.target === swiper.navigation.nextEl) {
3973
+      swiper.slideTo(stopIndex + increment);
3974
+    } else {
3975
+      swiper.slideTo(stopIndex);
3976
+    }
3977
+  }
3978
+}
3979
+
3980
+function onResize() {
3981
+  var swiper = this;
3982
+  var params = swiper.params,
3983
+      el = swiper.el;
3984
+  if (el && el.offsetWidth === 0) return; // Breakpoints
3985
+
3986
+  if (params.breakpoints) {
3987
+    swiper.setBreakpoint();
3988
+  } // Save locks
3989
+
3990
+
3991
+  var allowSlideNext = swiper.allowSlideNext,
3992
+      allowSlidePrev = swiper.allowSlidePrev,
3993
+      snapGrid = swiper.snapGrid; // Disable locks on resize
3994
+
3995
+  swiper.allowSlideNext = true;
3996
+  swiper.allowSlidePrev = true;
3997
+  swiper.updateSize();
3998
+  swiper.updateSlides();
3999
+  swiper.updateSlidesClasses();
4000
+
4001
+  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
4002
+    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4003
+  } else {
4004
+    swiper.slideTo(swiper.activeIndex, 0, false, true);
4005
+  }
4006
+
4007
+  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
4008
+    swiper.autoplay.run();
4009
+  } // Return locks after resize
4010
+
4011
+
4012
+  swiper.allowSlidePrev = allowSlidePrev;
4013
+  swiper.allowSlideNext = allowSlideNext;
4014
+
4015
+  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
4016
+    swiper.checkOverflow();
4017
+  }
4018
+}
4019
+
4020
+function onClick(e) {
4021
+  var swiper = this;
4022
+
4023
+  if (!swiper.allowClick) {
4024
+    if (swiper.params.preventClicks) e.preventDefault();
4025
+
4026
+    if (swiper.params.preventClicksPropagation && swiper.animating) {
4027
+      e.stopPropagation();
4028
+      e.stopImmediatePropagation();
4029
+    }
4030
+  }
4031
+}
4032
+
4033
+function onScroll() {
4034
+  var swiper = this;
4035
+  var wrapperEl = swiper.wrapperEl,
4036
+      rtlTranslate = swiper.rtlTranslate;
4037
+  swiper.previousTranslate = swiper.translate;
4038
+
4039
+  if (swiper.isHorizontal()) {
4040
+    if (rtlTranslate) {
4041
+      swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
4042
+    } else {
4043
+      swiper.translate = -wrapperEl.scrollLeft;
4044
+    }
4045
+  } else {
4046
+    swiper.translate = -wrapperEl.scrollTop;
4047
+  } // eslint-disable-next-line
4048
+
4049
+
4050
+  if (swiper.translate === -0) swiper.translate = 0;
4051
+  swiper.updateActiveIndex();
4052
+  swiper.updateSlidesClasses();
4053
+  var newProgress;
4054
+  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
4055
+
4056
+  if (translatesDiff === 0) {
4057
+    newProgress = 0;
4058
+  } else {
4059
+    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
4060
+  }
4061
+
4062
+  if (newProgress !== swiper.progress) {
4063
+    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
4064
+  }
4065
+
4066
+  swiper.emit('setTranslate', swiper.translate, false);
4067
+}
4068
+
4069
+var dummyEventAttached = false;
4070
+
4071
+function dummyEventListener() {}
4072
+
4073
+function attachEvents() {
4074
+  var swiper = this;
4075
+  var document = getDocument();
4076
+  var params = swiper.params,
4077
+      touchEvents = swiper.touchEvents,
4078
+      el = swiper.el,
4079
+      wrapperEl = swiper.wrapperEl,
4080
+      device = swiper.device,
4081
+      support = swiper.support;
4082
+  swiper.onTouchStart = onTouchStart.bind(swiper);
4083
+  swiper.onTouchMove = onTouchMove.bind(swiper);
4084
+  swiper.onTouchEnd = onTouchEnd.bind(swiper);
4085
+
4086
+  if (params.cssMode) {
4087
+    swiper.onScroll = onScroll.bind(swiper);
4088
+  }
4089
+
4090
+  swiper.onClick = onClick.bind(swiper);
4091
+  var capture = !!params.nested; // Touch Events
4092
+
4093
+  if (!support.touch && support.pointerEvents) {
4094
+    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
4095
+    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
4096
+    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
4097
+  } else {
4098
+    if (support.touch) {
4099
+      var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
4100
+        passive: true,
4101
+        capture: false
4102
+      } : false;
4103
+      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4104
+      el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
4105
+        passive: false,
4106
+        capture: capture
4107
+      } : capture);
4108
+      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4109
+
4110
+      if (touchEvents.cancel) {
4111
+        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4112
+      }
4113
+
4114
+      if (!dummyEventAttached) {
4115
+        document.addEventListener('touchstart', dummyEventListener);
4116
+        dummyEventAttached = true;
4117
+      }
4118
+    }
4119
+
4120
+    if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4121
+      el.addEventListener('mousedown', swiper.onTouchStart, false);
4122
+      document.addEventListener('mousemove', swiper.onTouchMove, capture);
4123
+      document.addEventListener('mouseup', swiper.onTouchEnd, false);
4124
+    }
4125
+  } // Prevent Links Clicks
4126
+
4127
+
4128
+  if (params.preventClicks || params.preventClicksPropagation) {
4129
+    el.addEventListener('click', swiper.onClick, true);
4130
+  }
4131
+
4132
+  if (params.cssMode) {
4133
+    wrapperEl.addEventListener('scroll', swiper.onScroll);
4134
+  } // Resize handler
4135
+
4136
+
4137
+  if (params.updateOnWindowResize) {
4138
+    swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
4139
+  } else {
4140
+    swiper.on('observerUpdate', onResize, true);
4141
+  }
4142
+}
4143
+
4144
+function detachEvents() {
4145
+  var swiper = this;
4146
+  var document = getDocument();
4147
+  var params = swiper.params,
4148
+      touchEvents = swiper.touchEvents,
4149
+      el = swiper.el,
4150
+      wrapperEl = swiper.wrapperEl,
4151
+      device = swiper.device,
4152
+      support = swiper.support;
4153
+  var capture = !!params.nested; // Touch Events
4154
+
4155
+  if (!support.touch && support.pointerEvents) {
4156
+    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
4157
+    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4158
+    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
4159
+  } else {
4160
+    if (support.touch) {
4161
+      var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
4162
+        passive: true,
4163
+        capture: false
4164
+      } : false;
4165
+      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4166
+      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4167
+      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4168
+
4169
+      if (touchEvents.cancel) {
4170
+        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4171
+      }
4172
+    }
4173
+
4174
+    if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4175
+      el.removeEventListener('mousedown', swiper.onTouchStart, false);
4176
+      document.removeEventListener('mousemove', swiper.onTouchMove, capture);
4177
+      document.removeEventListener('mouseup', swiper.onTouchEnd, false);
4178
+    }
4179
+  } // Prevent Links Clicks
4180
+
4181
+
4182
+  if (params.preventClicks || params.preventClicksPropagation) {
4183
+    el.removeEventListener('click', swiper.onClick, true);
4184
+  }
4185
+
4186
+  if (params.cssMode) {
4187
+    wrapperEl.removeEventListener('scroll', swiper.onScroll);
4188
+  } // Resize handler
4189
+
4190
+
4191
+  swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
4192
+}
4193
+
4194
+var events = {
4195
+  attachEvents: attachEvents,
4196
+  detachEvents: detachEvents
4197
+};
4198
+
4199
+function setBreakpoint() {
4200
+  var swiper = this;
4201
+  var activeIndex = swiper.activeIndex,
4202
+      initialized = swiper.initialized,
4203
+      _swiper$loopedSlides = swiper.loopedSlides,
4204
+      loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
4205
+      params = swiper.params,
4206
+      $el = swiper.$el;
4207
+  var breakpoints = params.breakpoints;
4208
+  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
4209
+
4210
+  var breakpoint = swiper.getBreakpoint(breakpoints);
4211
+
4212
+  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
4213
+    var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
4214
+
4215
+    if (breakpointOnlyParams) {
4216
+      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
4217
+        var paramValue = breakpointOnlyParams[param];
4218
+        if (typeof paramValue === 'undefined') return;
4219
+
4220
+        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
4221
+          breakpointOnlyParams[param] = 'auto';
4222
+        } else if (param === 'slidesPerView') {
4223
+          breakpointOnlyParams[param] = parseFloat(paramValue);
4224
+        } else {
4225
+          breakpointOnlyParams[param] = parseInt(paramValue, 10);
4226
+        }
4227
+      });
4228
+    }
4229
+
4230
+    var breakpointParams = breakpointOnlyParams || swiper.originalParams;
4231
+    var wasMultiRow = params.slidesPerColumn > 1;
4232
+    var isMultiRow = breakpointParams.slidesPerColumn > 1;
4233
+
4234
+    if (wasMultiRow && !isMultiRow) {
4235
+      $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
4236
+      swiper.emitContainerClasses();
4237
+    } else if (!wasMultiRow && isMultiRow) {
4238
+      $el.addClass(params.containerModifierClass + "multirow");
4239
+
4240
+      if (breakpointParams.slidesPerColumnFill === 'column') {
4241
+        $el.addClass(params.containerModifierClass + "multirow-column");
4242
+      }
4243
+
4244
+      swiper.emitContainerClasses();
4245
+    }
4246
+
4247
+    var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
4248
+    var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
4249
+
4250
+    if (directionChanged && initialized) {
4251
+      swiper.changeDirection();
4252
+    }
4253
+
4254
+    extend$1(swiper.params, breakpointParams);
4255
+    extend$1(swiper, {
4256
+      allowTouchMove: swiper.params.allowTouchMove,
4257
+      allowSlideNext: swiper.params.allowSlideNext,
4258
+      allowSlidePrev: swiper.params.allowSlidePrev
4259
+    });
4260
+    swiper.currentBreakpoint = breakpoint;
4261
+    swiper.emit('_beforeBreakpoint', breakpointParams);
4262
+
4263
+    if (needsReLoop && initialized) {
4264
+      swiper.loopDestroy();
4265
+      swiper.loopCreate();
4266
+      swiper.updateSlides();
4267
+      swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
4268
+    }
4269
+
4270
+    swiper.emit('breakpoint', breakpointParams);
4271
+  }
4272
+}
4273
+
4274
+function getBreakpoints(breakpoints) {
4275
+  var window = getWindow(); // Get breakpoint for window width
4276
+
4277
+  if (!breakpoints) return undefined;
4278
+  var breakpoint = false;
4279
+  var points = Object.keys(breakpoints).map(function (point) {
4280
+    if (typeof point === 'string' && point.indexOf('@') === 0) {
4281
+      var minRatio = parseFloat(point.substr(1));
4282
+      var value = window.innerHeight * minRatio;
4283
+      return {
4284
+        value: value,
4285
+        point: point
4286
+      };
4287
+    }
4288
+
4289
+    return {
4290
+      value: point,
4291
+      point: point
4292
+    };
4293
+  });
4294
+  points.sort(function (a, b) {
4295
+    return parseInt(a.value, 10) - parseInt(b.value, 10);
4296
+  });
4297
+
4298
+  for (var i = 0; i < points.length; i += 1) {
4299
+    var _points$i = points[i],
4300
+        point = _points$i.point,
4301
+        value = _points$i.value;
4302
+
4303
+    if (value <= window.innerWidth) {
4304
+      breakpoint = point;
4305
+    }
4306
+  }
4307
+
4308
+  return breakpoint || 'max';
4309
+}
4310
+
4311
+var breakpoints = {
4312
+  setBreakpoint: setBreakpoint,
4313
+  getBreakpoint: getBreakpoints
4314
+};
4315
+
4316
+function addClasses() {
4317
+  var swiper = this;
4318
+  var classNames = swiper.classNames,
4319
+      params = swiper.params,
4320
+      rtl = swiper.rtl,
4321
+      $el = swiper.$el,
4322
+      device = swiper.device;
4323
+  var suffixes = [];
4324
+  suffixes.push('initialized');
4325
+  suffixes.push(params.direction);
4326
+
4327
+  if (params.freeMode) {
4328
+    suffixes.push('free-mode');
4329
+  }
4330
+
4331
+  if (params.autoHeight) {
4332
+    suffixes.push('autoheight');
4333
+  }
4334
+
4335
+  if (rtl) {
4336
+    suffixes.push('rtl');
4337
+  }
4338
+
4339
+  if (params.slidesPerColumn > 1) {
4340
+    suffixes.push('multirow');
4341
+
4342
+    if (params.slidesPerColumnFill === 'column') {
4343
+      suffixes.push('multirow-column');
4344
+    }
4345
+  }
4346
+
4347
+  if (device.android) {
4348
+    suffixes.push('android');
4349
+  }
4350
+
4351
+  if (device.ios) {
4352
+    suffixes.push('ios');
4353
+  }
4354
+
4355
+  if (params.cssMode) {
4356
+    suffixes.push('css-mode');
4357
+  }
4358
+
4359
+  suffixes.forEach(function (suffix) {
4360
+    classNames.push(params.containerModifierClass + suffix);
4361
+  });
4362
+  $el.addClass(classNames.join(' '));
4363
+  swiper.emitContainerClasses();
4364
+}
4365
+
4366
+function removeClasses() {
4367
+  var swiper = this;
4368
+  var $el = swiper.$el,
4369
+      classNames = swiper.classNames;
4370
+  $el.removeClass(classNames.join(' '));
4371
+  swiper.emitContainerClasses();
4372
+}
4373
+
4374
+var classes = {
4375
+  addClasses: addClasses,
4376
+  removeClasses: removeClasses
4377
+};
4378
+
4379
+function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
4380
+  var window = getWindow();
4381
+  var image;
4382
+
4383
+  function onReady() {
4384
+    if (callback) callback();
4385
+  }
4386
+
4387
+  var isPicture = $(imageEl).parent('picture')[0];
4388
+
4389
+  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
4390
+    if (src) {
4391
+      image = new window.Image();
4392
+      image.onload = onReady;
4393
+      image.onerror = onReady;
4394
+
4395
+      if (sizes) {
4396
+        image.sizes = sizes;
4397
+      }
4398
+
4399
+      if (srcset) {
4400
+        image.srcset = srcset;
4401
+      }
4402
+
4403
+      if (src) {
4404
+        image.src = src;
4405
+      }
4406
+    } else {
4407
+      onReady();
4408
+    }
4409
+  } else {
4410
+    // image already loaded...
4411
+    onReady();
4412
+  }
4413
+}
4414
+
4415
+function preloadImages() {
4416
+  var swiper = this;
4417
+  swiper.imagesToLoad = swiper.$el.find('img');
4418
+
4419
+  function onReady() {
4420
+    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
4421
+    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
4422
+
4423
+    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
4424
+      if (swiper.params.updateOnImagesReady) swiper.update();
4425
+      swiper.emit('imagesReady');
4426
+    }
4427
+  }
4428
+
4429
+  for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
4430
+    var imageEl = swiper.imagesToLoad[i];
4431
+    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
4432
+  }
4433
+}
4434
+
4435
+var images = {
4436
+  loadImage: loadImage,
4437
+  preloadImages: preloadImages
4438
+};
4439
+
4440
+function checkOverflow() {
4441
+  var swiper = this;
4442
+  var params = swiper.params;
4443
+  var wasLocked = swiper.isLocked;
4444
+  var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
4445
+
4446
+  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
4447
+    swiper.isLocked = lastSlidePosition <= swiper.size;
4448
+  } else {
4449
+    swiper.isLocked = swiper.snapGrid.length === 1;
4450
+  }
4451
+
4452
+  swiper.allowSlideNext = !swiper.isLocked;
4453
+  swiper.allowSlidePrev = !swiper.isLocked; // events
4454
+
4455
+  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
4456
+
4457
+  if (wasLocked && wasLocked !== swiper.isLocked) {
4458
+    swiper.isEnd = false;
4459
+    if (swiper.navigation) swiper.navigation.update();
4460
+  }
4461
+}
4462
+
4463
+var checkOverflow$1 = {
4464
+  checkOverflow: checkOverflow
4465
+};
4466
+
4467
+var defaults = {
4468
+  init: true,
4469
+  direction: 'horizontal',
4470
+  touchEventsTarget: 'container',
4471
+  initialSlide: 0,
4472
+  speed: 300,
4473
+  cssMode: false,
4474
+  updateOnWindowResize: true,
4475
+  nested: false,
4476
+  // Overrides
4477
+  width: null,
4478
+  height: null,
4479
+  //
4480
+  preventInteractionOnTransition: false,
4481
+  // ssr
4482
+  userAgent: null,
4483
+  url: null,
4484
+  // To support iOS's swipe-to-go-back gesture (when being used in-app).
4485
+  edgeSwipeDetection: false,
4486
+  edgeSwipeThreshold: 20,
4487
+  // Free mode
4488
+  freeMode: false,
4489
+  freeModeMomentum: true,
4490
+  freeModeMomentumRatio: 1,
4491
+  freeModeMomentumBounce: true,
4492
+  freeModeMomentumBounceRatio: 1,
4493
+  freeModeMomentumVelocityRatio: 1,
4494
+  freeModeSticky: false,
4495
+  freeModeMinimumVelocity: 0.02,
4496
+  // Autoheight
4497
+  autoHeight: false,
4498
+  // Set wrapper width
4499
+  setWrapperSize: false,
4500
+  // Virtual Translate
4501
+  virtualTranslate: false,
4502
+  // Effects
4503
+  effect: 'slide',
4504
+  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
4505
+  // Breakpoints
4506
+  breakpoints: undefined,
4507
+  // Slides grid
4508
+  spaceBetween: 0,
4509
+  slidesPerView: 1,
4510
+  slidesPerColumn: 1,
4511
+  slidesPerColumnFill: 'column',
4512
+  slidesPerGroup: 1,
4513
+  slidesPerGroupSkip: 0,
4514
+  centeredSlides: false,
4515
+  centeredSlidesBounds: false,
4516
+  slidesOffsetBefore: 0,
4517
+  // in px
4518
+  slidesOffsetAfter: 0,
4519
+  // in px
4520
+  normalizeSlideIndex: true,
4521
+  centerInsufficientSlides: false,
4522
+  // Disable swiper and hide navigation when container not overflow
4523
+  watchOverflow: false,
4524
+  // Round length
4525
+  roundLengths: false,
4526
+  // Touches
4527
+  touchRatio: 1,
4528
+  touchAngle: 45,
4529
+  simulateTouch: true,
4530
+  shortSwipes: true,
4531
+  longSwipes: true,
4532
+  longSwipesRatio: 0.5,
4533
+  longSwipesMs: 300,
4534
+  followFinger: true,
4535
+  allowTouchMove: true,
4536
+  threshold: 0,
4537
+  touchMoveStopPropagation: false,
4538
+  touchStartPreventDefault: true,
4539
+  touchStartForcePreventDefault: false,
4540
+  touchReleaseOnEdges: false,
4541
+  // Unique Navigation Elements
4542
+  uniqueNavElements: true,
4543
+  // Resistance
4544
+  resistance: true,
4545
+  resistanceRatio: 0.85,
4546
+  // Progress
4547
+  watchSlidesProgress: false,
4548
+  watchSlidesVisibility: false,
4549
+  // Cursor
4550
+  grabCursor: false,
4551
+  // Clicks
4552
+  preventClicks: true,
4553
+  preventClicksPropagation: true,
4554
+  slideToClickedSlide: false,
4555
+  // Images
4556
+  preloadImages: true,
4557
+  updateOnImagesReady: true,
4558
+  // loop
4559
+  loop: false,
4560
+  loopAdditionalSlides: 0,
4561
+  loopedSlides: null,
4562
+  loopFillGroupWithBlank: false,
4563
+  loopPreventsSlide: true,
4564
+  // Swiping/no swiping
4565
+  allowSlidePrev: true,
4566
+  allowSlideNext: true,
4567
+  swipeHandler: null,
4568
+  // '.swipe-handler',
4569
+  noSwiping: true,
4570
+  noSwipingClass: 'swiper-no-swiping',
4571
+  noSwipingSelector: null,
4572
+  // Passive Listeners
4573
+  passiveListeners: true,
4574
+  // NS
4575
+  containerModifierClass: 'swiper-container-',
4576
+  // NEW
4577
+  slideClass: 'swiper-slide',
4578
+  slideBlankClass: 'swiper-slide-invisible-blank',
4579
+  slideActiveClass: 'swiper-slide-active',
4580
+  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
4581
+  slideVisibleClass: 'swiper-slide-visible',
4582
+  slideDuplicateClass: 'swiper-slide-duplicate',
4583
+  slideNextClass: 'swiper-slide-next',
4584
+  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
4585
+  slidePrevClass: 'swiper-slide-prev',
4586
+  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
4587
+  wrapperClass: 'swiper-wrapper',
4588
+  // Callbacks
4589
+  runCallbacksOnInit: true,
4590
+  // Internals
4591
+  _emitClasses: false
4592
+};
4593
+
4594
+var prototypes = {
4595
+  modular: modular,
4596
+  eventsEmitter: eventsEmitter,
4597
+  update: update,
4598
+  translate: translate,
4599
+  transition: transition$1,
4600
+  slide: slide,
4601
+  loop: loop,
4602
+  grabCursor: grabCursor,
4603
+  manipulation: manipulation,
4604
+  events: events,
4605
+  breakpoints: breakpoints,
4606
+  checkOverflow: checkOverflow$1,
4607
+  classes: classes,
4608
+  images: images
4609
+};
4610
+var extendedDefaults = {};
4611
+
4612
+var Swiper = /*#__PURE__*/function () {
4613
+  function Swiper() {
4614
+    var el;
4615
+    var params;
4616
+
4617
+    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
4618
+      args[_key] = arguments[_key];
4619
+    }
4620
+
4621
+    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
4622
+      params = args[0];
4623
+    } else {
4624
+      el = args[0];
4625
+      params = args[1];
4626
+    }
4627
+
4628
+    if (!params) params = {};
4629
+    params = extend$1({}, params);
4630
+    if (el && !params.el) params.el = el; // Swiper Instance
4631
+
4632
+    var swiper = this;
4633
+    swiper.support = getSupport();
4634
+    swiper.device = getDevice({
4635
+      userAgent: params.userAgent
4636
+    });
4637
+    swiper.browser = getBrowser();
4638
+    swiper.eventsListeners = {};
4639
+    swiper.eventsAnyListeners = [];
4640
+
4641
+    if (typeof swiper.modules === 'undefined') {
4642
+      swiper.modules = {};
4643
+    }
4644
+
4645
+    Object.keys(swiper.modules).forEach(function (moduleName) {
4646
+      var module = swiper.modules[moduleName];
4647
+
4648
+      if (module.params) {
4649
+        var moduleParamName = Object.keys(module.params)[0];
4650
+        var moduleParams = module.params[moduleParamName];
4651
+        if (typeof moduleParams !== 'object' || moduleParams === null) return;
4652
+        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
4653
+
4654
+        if (params[moduleParamName] === true) {
4655
+          params[moduleParamName] = {
4656
+            enabled: true
4657
+          };
4658
+        }
4659
+
4660
+        if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
4661
+          params[moduleParamName].enabled = true;
4662
+        }
4663
+
4664
+        if (!params[moduleParamName]) params[moduleParamName] = {
4665
+          enabled: false
4666
+        };
4667
+      }
4668
+    }); // Extend defaults with modules params
4669
+
4670
+    var swiperParams = extend$1({}, defaults);
4671
+    swiper.useParams(swiperParams); // Extend defaults with passed params
4672
+
4673
+    swiper.params = extend$1({}, swiperParams, extendedDefaults, params);
4674
+    swiper.originalParams = extend$1({}, swiper.params);
4675
+    swiper.passedParams = extend$1({}, params); // add event listeners
4676
+
4677
+    if (swiper.params && swiper.params.on) {
4678
+      Object.keys(swiper.params.on).forEach(function (eventName) {
4679
+        swiper.on(eventName, swiper.params.on[eventName]);
4680
+      });
4681
+    }
4682
+
4683
+    if (swiper.params && swiper.params.onAny) {
4684
+      swiper.onAny(swiper.params.onAny);
4685
+    } // Save Dom lib
4686
+
4687
+
4688
+    swiper.$ = $; // Find el
4689
+
4690
+    var $el = $(swiper.params.el);
4691
+    el = $el[0];
4692
+
4693
+    if (!el) {
4694
+      return undefined;
4695
+    }
4696
+
4697
+    if ($el.length > 1) {
4698
+      var swipers = [];
4699
+      $el.each(function (containerEl) {
4700
+        var newParams = extend$1({}, params, {
4701
+          el: containerEl
4702
+        });
4703
+        swipers.push(new Swiper(newParams));
4704
+      });
4705
+      return swipers;
4706
+    }
4707
+
4708
+    el.swiper = swiper; // Find Wrapper
4709
+
4710
+    var $wrapperEl;
4711
+
4712
+    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
4713
+      $wrapperEl = $(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
4714
+
4715
+      $wrapperEl.children = function (options) {
4716
+        return $el.children(options);
4717
+      };
4718
+    } else {
4719
+      $wrapperEl = $el.children("." + swiper.params.wrapperClass);
4720
+    } // Extend Swiper
4721
+
4722
+
4723
+    extend$1(swiper, {
4724
+      $el: $el,
4725
+      el: el,
4726
+      $wrapperEl: $wrapperEl,
4727
+      wrapperEl: $wrapperEl[0],
4728
+      // Classes
4729
+      classNames: [],
4730
+      // Slides
4731
+      slides: $(),
4732
+      slidesGrid: [],
4733
+      snapGrid: [],
4734
+      slidesSizesGrid: [],
4735
+      // isDirection
4736
+      isHorizontal: function isHorizontal() {
4737
+        return swiper.params.direction === 'horizontal';
4738
+      },
4739
+      isVertical: function isVertical() {
4740
+        return swiper.params.direction === 'vertical';
4741
+      },
4742
+      // RTL
4743
+      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
4744
+      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
4745
+      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
4746
+      // Indexes
4747
+      activeIndex: 0,
4748
+      realIndex: 0,
4749
+      //
4750
+      isBeginning: true,
4751
+      isEnd: false,
4752
+      // Props
4753
+      translate: 0,
4754
+      previousTranslate: 0,
4755
+      progress: 0,
4756
+      velocity: 0,
4757
+      animating: false,
4758
+      // Locks
4759
+      allowSlideNext: swiper.params.allowSlideNext,
4760
+      allowSlidePrev: swiper.params.allowSlidePrev,
4761
+      // Touch Events
4762
+      touchEvents: function touchEvents() {
4763
+        var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
4764
+        var desktop = ['mousedown', 'mousemove', 'mouseup'];
4765
+
4766
+        if (swiper.support.pointerEvents) {
4767
+          desktop = ['pointerdown', 'pointermove', 'pointerup'];
4768
+        }
4769
+
4770
+        swiper.touchEventsTouch = {
4771
+          start: touch[0],
4772
+          move: touch[1],
4773
+          end: touch[2],
4774
+          cancel: touch[3]
4775
+        };
4776
+        swiper.touchEventsDesktop = {
4777
+          start: desktop[0],
4778
+          move: desktop[1],
4779
+          end: desktop[2]
4780
+        };
4781
+        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
4782
+      }(),
4783
+      touchEventsData: {
4784
+        isTouched: undefined,
4785
+        isMoved: undefined,
4786
+        allowTouchCallbacks: undefined,
4787
+        touchStartTime: undefined,
4788
+        isScrolling: undefined,
4789
+        currentTranslate: undefined,
4790
+        startTranslate: undefined,
4791
+        allowThresholdMove: undefined,
4792
+        // Form elements to match
4793
+        formElements: 'input, select, option, textarea, button, video, label',
4794
+        // Last click time
4795
+        lastClickTime: now(),
4796
+        clickTimeout: undefined,
4797
+        // Velocities
4798
+        velocities: [],
4799
+        allowMomentumBounce: undefined,
4800
+        isTouchEvent: undefined,
4801
+        startMoving: undefined
4802
+      },
4803
+      // Clicks
4804
+      allowClick: true,
4805
+      // Touches
4806
+      allowTouchMove: swiper.params.allowTouchMove,
4807
+      touches: {
4808
+        startX: 0,
4809
+        startY: 0,
4810
+        currentX: 0,
4811
+        currentY: 0,
4812
+        diff: 0
4813
+      },
4814
+      // Images
4815
+      imagesToLoad: [],
4816
+      imagesLoaded: 0
4817
+    }); // Install Modules
4818
+
4819
+    swiper.useModules();
4820
+    swiper.emit('_swiper'); // Init
4821
+
4822
+    if (swiper.params.init) {
4823
+      swiper.init();
4824
+    } // Return app instance
4825
+
4826
+
4827
+    return swiper;
4828
+  }
4829
+
4830
+  var _proto = Swiper.prototype;
4831
+
4832
+  _proto.emitContainerClasses = function emitContainerClasses() {
4833
+    var swiper = this;
4834
+    if (!swiper.params._emitClasses || !swiper.el) return;
4835
+    var classes = swiper.el.className.split(' ').filter(function (className) {
4836
+      return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
4837
+    });
4838
+    swiper.emit('_containerClasses', classes.join(' '));
4839
+  };
4840
+
4841
+  _proto.getSlideClasses = function getSlideClasses(slideEl) {
4842
+    var swiper = this;
4843
+    return slideEl.className.split(' ').filter(function (className) {
4844
+      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
4845
+    }).join(' ');
4846
+  };
4847
+
4848
+  _proto.emitSlidesClasses = function emitSlidesClasses() {
4849
+    var swiper = this;
4850
+    if (!swiper.params._emitClasses || !swiper.el) return;
4851
+    swiper.slides.each(function (slideEl) {
4852
+      var classNames = swiper.getSlideClasses(slideEl);
4853
+      swiper.emit('_slideClass', slideEl, classNames);
4854
+    });
4855
+  };
4856
+
4857
+  _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
4858
+    var swiper = this;
4859
+    var params = swiper.params,
4860
+        slides = swiper.slides,
4861
+        slidesGrid = swiper.slidesGrid,
4862
+        swiperSize = swiper.size,
4863
+        activeIndex = swiper.activeIndex;
4864
+    var spv = 1;
4865
+
4866
+    if (params.centeredSlides) {
4867
+      var slideSize = slides[activeIndex].swiperSlideSize;
4868
+      var breakLoop;
4869
+
4870
+      for (var i = activeIndex + 1; i < slides.length; i += 1) {
4871
+        if (slides[i] && !breakLoop) {
4872
+          slideSize += slides[i].swiperSlideSize;
4873
+          spv += 1;
4874
+          if (slideSize > swiperSize) breakLoop = true;
4875
+        }
4876
+      }
4877
+
4878
+      for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
4879
+        if (slides[_i] && !breakLoop) {
4880
+          slideSize += slides[_i].swiperSlideSize;
4881
+          spv += 1;
4882
+          if (slideSize > swiperSize) breakLoop = true;
4883
+        }
4884
+      }
4885
+    } else {
4886
+      for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
4887
+        if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
4888
+          spv += 1;
4889
+        }
4890
+      }
4891
+    }
4892
+
4893
+    return spv;
4894
+  };
4895
+
4896
+  _proto.update = function update() {
4897
+    var swiper = this;
4898
+    if (!swiper || swiper.destroyed) return;
4899
+    var snapGrid = swiper.snapGrid,
4900
+        params = swiper.params; // Breakpoints
4901
+
4902
+    if (params.breakpoints) {
4903
+      swiper.setBreakpoint();
4904
+    }
4905
+
4906
+    swiper.updateSize();
4907
+    swiper.updateSlides();
4908
+    swiper.updateProgress();
4909
+    swiper.updateSlidesClasses();
4910
+
4911
+    function setTranslate() {
4912
+      var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4913
+      var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4914
+      swiper.setTranslate(newTranslate);
4915
+      swiper.updateActiveIndex();
4916
+      swiper.updateSlidesClasses();
4917
+    }
4918
+
4919
+    var translated;
4920
+
4921
+    if (swiper.params.freeMode) {
4922
+      setTranslate();
4923
+
4924
+      if (swiper.params.autoHeight) {
4925
+        swiper.updateAutoHeight();
4926
+      }
4927
+    } else {
4928
+      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
4929
+        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4930
+      } else {
4931
+        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
4932
+      }
4933
+
4934
+      if (!translated) {
4935
+        setTranslate();
4936
+      }
4937
+    }
4938
+
4939
+    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
4940
+      swiper.checkOverflow();
4941
+    }
4942
+
4943
+    swiper.emit('update');
4944
+  };
4945
+
4946
+  _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
4947
+    if (needUpdate === void 0) {
4948
+      needUpdate = true;
4949
+    }
4950
+
4951
+    var swiper = this;
4952
+    var currentDirection = swiper.params.direction;
4953
+
4954
+    if (!newDirection) {
4955
+      // eslint-disable-next-line
4956
+      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
4957
+    }
4958
+
4959
+    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
4960
+      return swiper;
4961
+    }
4962
+
4963
+    swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
4964
+    swiper.emitContainerClasses();
4965
+    swiper.params.direction = newDirection;
4966
+    swiper.slides.each(function (slideEl) {
4967
+      if (newDirection === 'vertical') {
4968
+        slideEl.style.width = '';
4969
+      } else {
4970
+        slideEl.style.height = '';
4971
+      }
4972
+    });
4973
+    swiper.emit('changeDirection');
4974
+    if (needUpdate) swiper.update();
4975
+    return swiper;
4976
+  };
4977
+
4978
+  _proto.init = function init() {
4979
+    var swiper = this;
4980
+    if (swiper.initialized) return;
4981
+    swiper.emit('beforeInit'); // Set breakpoint
4982
+
4983
+    if (swiper.params.breakpoints) {
4984
+      swiper.setBreakpoint();
4985
+    } // Add Classes
4986
+
4987
+
4988
+    swiper.addClasses(); // Create loop
4989
+
4990
+    if (swiper.params.loop) {
4991
+      swiper.loopCreate();
4992
+    } // Update size
4993
+
4994
+
4995
+    swiper.updateSize(); // Update slides
4996
+
4997
+    swiper.updateSlides();
4998
+
4999
+    if (swiper.params.watchOverflow) {
5000
+      swiper.checkOverflow();
5001
+    } // Set Grab Cursor
5002
+
5003
+
5004
+    if (swiper.params.grabCursor) {
5005
+      swiper.setGrabCursor();
5006
+    }
5007
+
5008
+    if (swiper.params.preloadImages) {
5009
+      swiper.preloadImages();
5010
+    } // Slide To Initial Slide
5011
+
5012
+
5013
+    if (swiper.params.loop) {
5014
+      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
5015
+    } else {
5016
+      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
5017
+    } // Attach events
5018
+
5019
+
5020
+    swiper.attachEvents(); // Init Flag
5021
+
5022
+    swiper.initialized = true; // Emit
5023
+
5024
+    swiper.emit('init');
5025
+    swiper.emit('afterInit');
5026
+  };
5027
+
5028
+  _proto.destroy = function destroy(deleteInstance, cleanStyles) {
5029
+    if (deleteInstance === void 0) {
5030
+      deleteInstance = true;
5031
+    }
5032
+
5033
+    if (cleanStyles === void 0) {
5034
+      cleanStyles = true;
5035
+    }
5036
+
5037
+    var swiper = this;
5038
+    var params = swiper.params,
5039
+        $el = swiper.$el,
5040
+        $wrapperEl = swiper.$wrapperEl,
5041
+        slides = swiper.slides;
5042
+
5043
+    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
5044
+      return null;
5045
+    }
5046
+
5047
+    swiper.emit('beforeDestroy'); // Init Flag
5048
+
5049
+    swiper.initialized = false; // Detach events
5050
+
5051
+    swiper.detachEvents(); // Destroy loop
5052
+
5053
+    if (params.loop) {
5054
+      swiper.loopDestroy();
5055
+    } // Cleanup styles
5056
+
5057
+
5058
+    if (cleanStyles) {
5059
+      swiper.removeClasses();
5060
+      $el.removeAttr('style');
5061
+      $wrapperEl.removeAttr('style');
5062
+
5063
+      if (slides && slides.length) {
5064
+        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
5065
+      }
5066
+    }
5067
+
5068
+    swiper.emit('destroy'); // Detach emitter events
5069
+
5070
+    Object.keys(swiper.eventsListeners).forEach(function (eventName) {
5071
+      swiper.off(eventName);
5072
+    });
5073
+
5074
+    if (deleteInstance !== false) {
5075
+      swiper.$el[0].swiper = null;
5076
+      deleteProps(swiper);
5077
+    }
5078
+
5079
+    swiper.destroyed = true;
5080
+    return null;
5081
+  };
5082
+
5083
+  Swiper.extendDefaults = function extendDefaults(newDefaults) {
5084
+    extend$1(extendedDefaults, newDefaults);
5085
+  };
5086
+
5087
+  Swiper.installModule = function installModule(module) {
5088
+    if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
5089
+    var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now();
5090
+    Swiper.prototype.modules[name] = module;
5091
+  };
5092
+
5093
+  Swiper.use = function use(module) {
5094
+    if (Array.isArray(module)) {
5095
+      module.forEach(function (m) {
5096
+        return Swiper.installModule(m);
5097
+      });
5098
+      return Swiper;
5099
+    }
5100
+
5101
+    Swiper.installModule(module);
5102
+    return Swiper;
5103
+  };
5104
+
5105
+  _createClass(Swiper, null, [{
5106
+    key: "extendedDefaults",
5107
+    get: function get() {
5108
+      return extendedDefaults;
5109
+    }
5110
+  }, {
5111
+    key: "defaults",
5112
+    get: function get() {
5113
+      return defaults;
5114
+    }
5115
+  }]);
5116
+
5117
+  return Swiper;
5118
+}();
5119
+
5120
+Object.keys(prototypes).forEach(function (prototypeGroup) {
5121
+  Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
5122
+    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
5123
+  });
5124
+});
5125
+Swiper.use([Resize, Observer$1]);
5126
+
5127
+var Virtual = {
5128
+  update: function update(force) {
5129
+    var swiper = this;
5130
+    var _swiper$params = swiper.params,
5131
+        slidesPerView = _swiper$params.slidesPerView,
5132
+        slidesPerGroup = _swiper$params.slidesPerGroup,
5133
+        centeredSlides = _swiper$params.centeredSlides;
5134
+    var _swiper$params$virtua = swiper.params.virtual,
5135
+        addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
5136
+        addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
5137
+    var _swiper$virtual = swiper.virtual,
5138
+        previousFrom = _swiper$virtual.from,
5139
+        previousTo = _swiper$virtual.to,
5140
+        slides = _swiper$virtual.slides,
5141
+        previousSlidesGrid = _swiper$virtual.slidesGrid,
5142
+        renderSlide = _swiper$virtual.renderSlide,
5143
+        previousOffset = _swiper$virtual.offset;
5144
+    swiper.updateActiveIndex();
5145
+    var activeIndex = swiper.activeIndex || 0;
5146
+    var offsetProp;
5147
+    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
5148
+    var slidesAfter;
5149
+    var slidesBefore;
5150
+
5151
+    if (centeredSlides) {
5152
+      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
5153
+      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
5154
+    } else {
5155
+      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
5156
+      slidesBefore = slidesPerGroup + addSlidesBefore;
5157
+    }
5158
+
5159
+    var from = Math.max((activeIndex || 0) - slidesBefore, 0);
5160
+    var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
5161
+    var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
5162
+    extend$1(swiper.virtual, {
5163
+      from: from,
5164
+      to: to,
5165
+      offset: offset,
5166
+      slidesGrid: swiper.slidesGrid
5167
+    });
5168
+
5169
+    function onRendered() {
5170
+      swiper.updateSlides();
5171
+      swiper.updateProgress();
5172
+      swiper.updateSlidesClasses();
5173
+
5174
+      if (swiper.lazy && swiper.params.lazy.enabled) {
5175
+        swiper.lazy.load();
5176
+      }
5177
+    }
5178
+
5179
+    if (previousFrom === from && previousTo === to && !force) {
5180
+      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
5181
+        swiper.slides.css(offsetProp, offset + "px");
5182
+      }
5183
+
5184
+      swiper.updateProgress();
5185
+      return;
5186
+    }
5187
+
5188
+    if (swiper.params.virtual.renderExternal) {
5189
+      swiper.params.virtual.renderExternal.call(swiper, {
5190
+        offset: offset,
5191
+        from: from,
5192
+        to: to,
5193
+        slides: function getSlides() {
5194
+          var slidesToRender = [];
5195
+
5196
+          for (var i = from; i <= to; i += 1) {
5197
+            slidesToRender.push(slides[i]);
5198
+          }
5199
+
5200
+          return slidesToRender;
5201
+        }()
5202
+      });
5203
+
5204
+      if (swiper.params.virtual.renderExternalUpdate) {
5205
+        onRendered();
5206
+      }
5207
+
5208
+      return;
5209
+    }
5210
+
5211
+    var prependIndexes = [];
5212
+    var appendIndexes = [];
5213
+
5214
+    if (force) {
5215
+      swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
5216
+    } else {
5217
+      for (var i = previousFrom; i <= previousTo; i += 1) {
5218
+        if (i < from || i > to) {
5219
+          swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
5220
+        }
5221
+      }
5222
+    }
5223
+
5224
+    for (var _i = 0; _i < slides.length; _i += 1) {
5225
+      if (_i >= from && _i <= to) {
5226
+        if (typeof previousTo === 'undefined' || force) {
5227
+          appendIndexes.push(_i);
5228
+        } else {
5229
+          if (_i > previousTo) appendIndexes.push(_i);
5230
+          if (_i < previousFrom) prependIndexes.push(_i);
5231
+        }
5232
+      }
5233
+    }
5234
+
5235
+    appendIndexes.forEach(function (index) {
5236
+      swiper.$wrapperEl.append(renderSlide(slides[index], index));
5237
+    });
5238
+    prependIndexes.sort(function (a, b) {
5239
+      return b - a;
5240
+    }).forEach(function (index) {
5241
+      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
5242
+    });
5243
+    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
5244
+    onRendered();
5245
+  },
5246
+  renderSlide: function renderSlide(slide, index) {
5247
+    var swiper = this;
5248
+    var params = swiper.params.virtual;
5249
+
5250
+    if (params.cache && swiper.virtual.cache[index]) {
5251
+      return swiper.virtual.cache[index];
5252
+    }
5253
+
5254
+    var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
5255
+    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
5256
+    if (params.cache) swiper.virtual.cache[index] = $slideEl;
5257
+    return $slideEl;
5258
+  },
5259
+  appendSlide: function appendSlide(slides) {
5260
+    var swiper = this;
5261
+
5262
+    if (typeof slides === 'object' && 'length' in slides) {
5263
+      for (var i = 0; i < slides.length; i += 1) {
5264
+        if (slides[i]) swiper.virtual.slides.push(slides[i]);
5265
+      }
5266
+    } else {
5267
+      swiper.virtual.slides.push(slides);
5268
+    }
5269
+
5270
+    swiper.virtual.update(true);
5271
+  },
5272
+  prependSlide: function prependSlide(slides) {
5273
+    var swiper = this;
5274
+    var activeIndex = swiper.activeIndex;
5275
+    var newActiveIndex = activeIndex + 1;
5276
+    var numberOfNewSlides = 1;
5277
+
5278
+    if (Array.isArray(slides)) {
5279
+      for (var i = 0; i < slides.length; i += 1) {
5280
+        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
5281
+      }
5282
+
5283
+      newActiveIndex = activeIndex + slides.length;
5284
+      numberOfNewSlides = slides.length;
5285
+    } else {
5286
+      swiper.virtual.slides.unshift(slides);
5287
+    }
5288
+
5289
+    if (swiper.params.virtual.cache) {
5290
+      var cache = swiper.virtual.cache;
5291
+      var newCache = {};
5292
+      Object.keys(cache).forEach(function (cachedIndex) {
5293
+        var $cachedEl = cache[cachedIndex];
5294
+        var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
5295
+
5296
+        if (cachedElIndex) {
5297
+          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
5298
+        }
5299
+
5300
+        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
5301
+      });
5302
+      swiper.virtual.cache = newCache;
5303
+    }
5304
+
5305
+    swiper.virtual.update(true);
5306
+    swiper.slideTo(newActiveIndex, 0);
5307
+  },
5308
+  removeSlide: function removeSlide(slidesIndexes) {
5309
+    var swiper = this;
5310
+    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
5311
+    var activeIndex = swiper.activeIndex;
5312
+
5313
+    if (Array.isArray(slidesIndexes)) {
5314
+      for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
5315
+        swiper.virtual.slides.splice(slidesIndexes[i], 1);
5316
+
5317
+        if (swiper.params.virtual.cache) {
5318
+          delete swiper.virtual.cache[slidesIndexes[i]];
5319
+        }
5320
+
5321
+        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
5322
+        activeIndex = Math.max(activeIndex, 0);
5323
+      }
5324
+    } else {
5325
+      swiper.virtual.slides.splice(slidesIndexes, 1);
5326
+
5327
+      if (swiper.params.virtual.cache) {
5328
+        delete swiper.virtual.cache[slidesIndexes];
5329
+      }
5330
+
5331
+      if (slidesIndexes < activeIndex) activeIndex -= 1;
5332
+      activeIndex = Math.max(activeIndex, 0);
5333
+    }
5334
+
5335
+    swiper.virtual.update(true);
5336
+    swiper.slideTo(activeIndex, 0);
5337
+  },
5338
+  removeAllSlides: function removeAllSlides() {
5339
+    var swiper = this;
5340
+    swiper.virtual.slides = [];
5341
+
5342
+    if (swiper.params.virtual.cache) {
5343
+      swiper.virtual.cache = {};
5344
+    }
5345
+
5346
+    swiper.virtual.update(true);
5347
+    swiper.slideTo(0, 0);
5348
+  }
5349
+};
5350
+var Virtual$1 = {
5351
+  name: 'virtual',
5352
+  params: {
5353
+    virtual: {
5354
+      enabled: false,
5355
+      slides: [],
5356
+      cache: true,
5357
+      renderSlide: null,
5358
+      renderExternal: null,
5359
+      renderExternalUpdate: true,
5360
+      addSlidesBefore: 0,
5361
+      addSlidesAfter: 0
5362
+    }
5363
+  },
5364
+  create: function create() {
5365
+    var swiper = this;
5366
+    bindModuleMethods(swiper, {
5367
+      virtual: _extends(_extends({}, Virtual), {}, {
5368
+        slides: swiper.params.virtual.slides,
5369
+        cache: {}
5370
+      })
5371
+    });
5372
+  },
5373
+  on: {
5374
+    beforeInit: function beforeInit(swiper) {
5375
+      if (!swiper.params.virtual.enabled) return;
5376
+      swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
5377
+      var overwriteParams = {
5378
+        watchSlidesProgress: true
5379
+      };
5380
+      extend$1(swiper.params, overwriteParams);
5381
+      extend$1(swiper.originalParams, overwriteParams);
5382
+
5383
+      if (!swiper.params.initialSlide) {
5384
+        swiper.virtual.update();
5385
+      }
5386
+    },
5387
+    setTranslate: function setTranslate(swiper) {
5388
+      if (!swiper.params.virtual.enabled) return;
5389
+      swiper.virtual.update();
5390
+    }
5391
+  }
5392
+};
5393
+
5394
+var Keyboard = {
5395
+  handle: function handle(event) {
5396
+    var swiper = this;
5397
+    var window = getWindow();
5398
+    var document = getDocument();
5399
+    var rtl = swiper.rtlTranslate;
5400
+    var e = event;
5401
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
5402
+
5403
+    var kc = e.keyCode || e.charCode;
5404
+    var pageUpDown = swiper.params.keyboard.pageUpDown;
5405
+    var isPageUp = pageUpDown && kc === 33;
5406
+    var isPageDown = pageUpDown && kc === 34;
5407
+    var isArrowLeft = kc === 37;
5408
+    var isArrowRight = kc === 39;
5409
+    var isArrowUp = kc === 38;
5410
+    var isArrowDown = kc === 40; // Directions locks
5411
+
5412
+    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
5413
+      return false;
5414
+    }
5415
+
5416
+    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
5417
+      return false;
5418
+    }
5419
+
5420
+    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
5421
+      return undefined;
5422
+    }
5423
+
5424
+    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
5425
+      return undefined;
5426
+    }
5427
+
5428
+    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
5429
+      var inView = false; // Check that swiper should be inside of visible area of window
5430
+
5431
+      if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
5432
+        return undefined;
5433
+      }
5434
+
5435
+      var windowWidth = window.innerWidth;
5436
+      var windowHeight = window.innerHeight;
5437
+      var swiperOffset = swiper.$el.offset();
5438
+      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
5439
+      var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
5440
+
5441
+      for (var i = 0; i < swiperCoord.length; i += 1) {
5442
+        var point = swiperCoord[i];
5443
+
5444
+        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
5445
+          inView = true;
5446
+        }
5447
+      }
5448
+
5449
+      if (!inView) return undefined;
5450
+    }
5451
+
5452
+    if (swiper.isHorizontal()) {
5453
+      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
5454
+        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5455
+      }
5456
+
5457
+      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
5458
+      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
5459
+    } else {
5460
+      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
5461
+        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5462
+      }
5463
+
5464
+      if (isPageDown || isArrowDown) swiper.slideNext();
5465
+      if (isPageUp || isArrowUp) swiper.slidePrev();
5466
+    }
5467
+
5468
+    swiper.emit('keyPress', kc);
5469
+    return undefined;
5470
+  },
5471
+  enable: function enable() {
5472
+    var swiper = this;
5473
+    var document = getDocument();
5474
+    if (swiper.keyboard.enabled) return;
5475
+    $(document).on('keydown', swiper.keyboard.handle);
5476
+    swiper.keyboard.enabled = true;
5477
+  },
5478
+  disable: function disable() {
5479
+    var swiper = this;
5480
+    var document = getDocument();
5481
+    if (!swiper.keyboard.enabled) return;
5482
+    $(document).off('keydown', swiper.keyboard.handle);
5483
+    swiper.keyboard.enabled = false;
5484
+  }
5485
+};
5486
+var Keyboard$1 = {
5487
+  name: 'keyboard',
5488
+  params: {
5489
+    keyboard: {
5490
+      enabled: false,
5491
+      onlyInViewport: true,
5492
+      pageUpDown: true
5493
+    }
5494
+  },
5495
+  create: function create() {
5496
+    var swiper = this;
5497
+    bindModuleMethods(swiper, {
5498
+      keyboard: _extends({
5499
+        enabled: false
5500
+      }, Keyboard)
5501
+    });
5502
+  },
5503
+  on: {
5504
+    init: function init(swiper) {
5505
+      if (swiper.params.keyboard.enabled) {
5506
+        swiper.keyboard.enable();
5507
+      }
5508
+    },
5509
+    destroy: function destroy(swiper) {
5510
+      if (swiper.keyboard.enabled) {
5511
+        swiper.keyboard.disable();
5512
+      }
5513
+    }
5514
+  }
5515
+};
5516
+
5517
+function isEventSupported() {
5518
+  var document = getDocument();
5519
+  var eventName = 'onwheel';
5520
+  var isSupported = (eventName in document);
5521
+
5522
+  if (!isSupported) {
5523
+    var element = document.createElement('div');
5524
+    element.setAttribute(eventName, 'return;');
5525
+    isSupported = typeof element[eventName] === 'function';
5526
+  }
5527
+
5528
+  if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
5529
+  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
5530
+  document.implementation.hasFeature('', '') !== true) {
5531
+    // This is the only way to test support for the `wheel` event in IE9+.
5532
+    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
5533
+  }
5534
+
5535
+  return isSupported;
5536
+}
5537
+
5538
+var Mousewheel = {
5539
+  lastScrollTime: now(),
5540
+  lastEventBeforeSnap: undefined,
5541
+  recentWheelEvents: [],
5542
+  event: function event() {
5543
+    var window = getWindow();
5544
+    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
5545
+    return isEventSupported() ? 'wheel' : 'mousewheel';
5546
+  },
5547
+  normalize: function normalize(e) {
5548
+    // Reasonable defaults
5549
+    var PIXEL_STEP = 10;
5550
+    var LINE_HEIGHT = 40;
5551
+    var PAGE_HEIGHT = 800;
5552
+    var sX = 0;
5553
+    var sY = 0; // spinX, spinY
5554
+
5555
+    var pX = 0;
5556
+    var pY = 0; // pixelX, pixelY
5557
+    // Legacy
5558
+
5559
+    if ('detail' in e) {
5560
+      sY = e.detail;
5561
+    }
5562
+
5563
+    if ('wheelDelta' in e) {
5564
+      sY = -e.wheelDelta / 120;
5565
+    }
5566
+
5567
+    if ('wheelDeltaY' in e) {
5568
+      sY = -e.wheelDeltaY / 120;
5569
+    }
5570
+
5571
+    if ('wheelDeltaX' in e) {
5572
+      sX = -e.wheelDeltaX / 120;
5573
+    } // side scrolling on FF with DOMMouseScroll
5574
+
5575
+
5576
+    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
5577
+      sX = sY;
5578
+      sY = 0;
5579
+    }
5580
+
5581
+    pX = sX * PIXEL_STEP;
5582
+    pY = sY * PIXEL_STEP;
5583
+
5584
+    if ('deltaY' in e) {
5585
+      pY = e.deltaY;
5586
+    }
5587
+
5588
+    if ('deltaX' in e) {
5589
+      pX = e.deltaX;
5590
+    }
5591
+
5592
+    if (e.shiftKey && !pX) {
5593
+      // if user scrolls with shift he wants horizontal scroll
5594
+      pX = pY;
5595
+      pY = 0;
5596
+    }
5597
+
5598
+    if ((pX || pY) && e.deltaMode) {
5599
+      if (e.deltaMode === 1) {
5600
+        // delta in LINE units
5601
+        pX *= LINE_HEIGHT;
5602
+        pY *= LINE_HEIGHT;
5603
+      } else {
5604
+        // delta in PAGE units
5605
+        pX *= PAGE_HEIGHT;
5606
+        pY *= PAGE_HEIGHT;
5607
+      }
5608
+    } // Fall-back if spin cannot be determined
5609
+
5610
+
5611
+    if (pX && !sX) {
5612
+      sX = pX < 1 ? -1 : 1;
5613
+    }
5614
+
5615
+    if (pY && !sY) {
5616
+      sY = pY < 1 ? -1 : 1;
5617
+    }
5618
+
5619
+    return {
5620
+      spinX: sX,
5621
+      spinY: sY,
5622
+      pixelX: pX,
5623
+      pixelY: pY
5624
+    };
5625
+  },
5626
+  handleMouseEnter: function handleMouseEnter() {
5627
+    var swiper = this;
5628
+    swiper.mouseEntered = true;
5629
+  },
5630
+  handleMouseLeave: function handleMouseLeave() {
5631
+    var swiper = this;
5632
+    swiper.mouseEntered = false;
5633
+  },
5634
+  handle: function handle(event) {
5635
+    var e = event;
5636
+    var swiper = this;
5637
+    var params = swiper.params.mousewheel;
5638
+
5639
+    if (swiper.params.cssMode) {
5640
+      e.preventDefault();
5641
+    }
5642
+
5643
+    var target = swiper.$el;
5644
+
5645
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
5646
+      target = $(swiper.params.mousewheel.eventsTarget);
5647
+    }
5648
+
5649
+    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
5650
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
5651
+
5652
+    var delta = 0;
5653
+    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
5654
+    var data = Mousewheel.normalize(e);
5655
+
5656
+    if (params.forceToAxis) {
5657
+      if (swiper.isHorizontal()) {
5658
+        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
5659
+      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
5660
+    } else {
5661
+      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
5662
+    }
5663
+
5664
+    if (delta === 0) return true;
5665
+    if (params.invert) delta = -delta;
5666
+
5667
+    if (!swiper.params.freeMode) {
5668
+      // Register the new event in a variable which stores the relevant data
5669
+      var newEvent = {
5670
+        time: now(),
5671
+        delta: Math.abs(delta),
5672
+        direction: Math.sign(delta),
5673
+        raw: event
5674
+      }; // Keep the most recent events
5675
+
5676
+      var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5677
+
5678
+      if (recentWheelEvents.length >= 2) {
5679
+        recentWheelEvents.shift(); // only store the last N events
5680
+      }
5681
+
5682
+      var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5683
+      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
5684
+      //   If direction has changed or
5685
+      //   if the scroll is quicker than the previous one:
5686
+      //     Animate the slider.
5687
+      // Else (this is the first time the wheel is moved):
5688
+      //     Animate the slider.
5689
+
5690
+      if (prevEvent) {
5691
+        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5692
+          swiper.mousewheel.animateSlider(newEvent);
5693
+        }
5694
+      } else {
5695
+        swiper.mousewheel.animateSlider(newEvent);
5696
+      } // If it's time to release the scroll:
5697
+      //   Return now so you don't hit the preventDefault.
5698
+
5699
+
5700
+      if (swiper.mousewheel.releaseScroll(newEvent)) {
5701
+        return true;
5702
+      }
5703
+    } else {
5704
+      // Freemode or scrollContainer:
5705
+      // If we recently snapped after a momentum scroll, then ignore wheel events
5706
+      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5707
+      // or if it's a new scroll (larger delta or inverse sign as last event before
5708
+      // an end-of-momentum snap).
5709
+      var _newEvent = {
5710
+        time: now(),
5711
+        delta: Math.abs(delta),
5712
+        direction: Math.sign(delta)
5713
+      };
5714
+      var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
5715
+      var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
5716
+
5717
+      if (!ignoreWheelEvents) {
5718
+        swiper.mousewheel.lastEventBeforeSnap = undefined;
5719
+
5720
+        if (swiper.params.loop) {
5721
+          swiper.loopFix();
5722
+        }
5723
+
5724
+        var position = swiper.getTranslate() + delta * params.sensitivity;
5725
+        var wasBeginning = swiper.isBeginning;
5726
+        var wasEnd = swiper.isEnd;
5727
+        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
5728
+        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
5729
+        swiper.setTransition(0);
5730
+        swiper.setTranslate(position);
5731
+        swiper.updateProgress();
5732
+        swiper.updateActiveIndex();
5733
+        swiper.updateSlidesClasses();
5734
+
5735
+        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
5736
+          swiper.updateSlidesClasses();
5737
+        }
5738
+
5739
+        if (swiper.params.freeModeSticky) {
5740
+          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5741
+          // the end of a momentum scroll by storing recent (N=15?) wheel events.
5742
+          // 1. do all N events have decreasing or same (absolute value) delta?
5743
+          // 2. did all N events arrive in the last M (M=500?) msecs?
5744
+          // 3. does the earliest event have an (absolute value) delta that's
5745
+          //    at least P (P=1?) larger than the most recent event's delta?
5746
+          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5747
+          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
5748
+          // Snap immediately and ignore remaining wheel events in this scroll.
5749
+          // See comment above for "remaining wheel events in this scroll" determination.
5750
+          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5751
+          clearTimeout(swiper.mousewheel.timeout);
5752
+          swiper.mousewheel.timeout = undefined;
5753
+          var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5754
+
5755
+          if (_recentWheelEvents.length >= 15) {
5756
+            _recentWheelEvents.shift(); // only store the last N events
5757
+
5758
+          }
5759
+
5760
+          var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
5761
+
5762
+          var firstEvent = _recentWheelEvents[0];
5763
+
5764
+          _recentWheelEvents.push(_newEvent);
5765
+
5766
+          if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
5767
+            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5768
+            _recentWheelEvents.splice(0);
5769
+          } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
5770
+            // We're at the end of the deceleration of a momentum scroll, so there's no need
5771
+            // to wait for more events. Snap ASAP on the next tick.
5772
+            // Also, because there's some remaining momentum we'll bias the snap in the
5773
+            // direction of the ongoing scroll because it's better UX for the scroll to snap
5774
+            // in the same direction as the scroll instead of reversing to snap.  Therefore,
5775
+            // if it's already scrolled more than 20% in the current direction, keep going.
5776
+            var snapToThreshold = delta > 0 ? 0.8 : 0.2;
5777
+            swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5778
+
5779
+            _recentWheelEvents.splice(0);
5780
+
5781
+            swiper.mousewheel.timeout = nextTick(function () {
5782
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5783
+            }, 0); // no delay; move on next tick
5784
+          }
5785
+
5786
+          if (!swiper.mousewheel.timeout) {
5787
+            // if we get here, then we haven't detected the end of a momentum scroll, so
5788
+            // we'll consider a scroll "complete" when there haven't been any wheel events
5789
+            // for 500ms.
5790
+            swiper.mousewheel.timeout = nextTick(function () {
5791
+              var snapToThreshold = 0.5;
5792
+              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5793
+
5794
+              _recentWheelEvents.splice(0);
5795
+
5796
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5797
+            }, 500);
5798
+          }
5799
+        } // Emit event
5800
+
5801
+
5802
+        if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
5803
+
5804
+        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
5805
+
5806
+        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
5807
+      }
5808
+    }
5809
+
5810
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5811
+    return false;
5812
+  },
5813
+  animateSlider: function animateSlider(newEvent) {
5814
+    var swiper = this;
5815
+    var window = getWindow();
5816
+
5817
+    if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
5818
+      // Prevent if delta of wheel scroll delta is below configured threshold
5819
+      return false;
5820
+    }
5821
+
5822
+    if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
5823
+      // Prevent if time between scrolls is below configured threshold
5824
+      return false;
5825
+    } // If the movement is NOT big enough and
5826
+    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5827
+    //   Don't go any further (avoid insignificant scroll movement).
5828
+
5829
+
5830
+    if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {
5831
+      // Return false as a default
5832
+      return true;
5833
+    } // If user is scrolling towards the end:
5834
+    //   If the slider hasn't hit the latest slide or
5835
+    //   if the slider is a loop and
5836
+    //   if the slider isn't moving right now:
5837
+    //     Go to next slide and
5838
+    //     emit a scroll event.
5839
+    // Else (the user is scrolling towards the beginning) and
5840
+    // if the slider hasn't hit the first slide or
5841
+    // if the slider is a loop and
5842
+    // if the slider isn't moving right now:
5843
+    //   Go to prev slide and
5844
+    //   emit a scroll event.
5845
+
5846
+
5847
+    if (newEvent.direction < 0) {
5848
+      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5849
+        swiper.slideNext();
5850
+        swiper.emit('scroll', newEvent.raw);
5851
+      }
5852
+    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5853
+      swiper.slidePrev();
5854
+      swiper.emit('scroll', newEvent.raw);
5855
+    } // If you got here is because an animation has been triggered so store the current time
5856
+
5857
+
5858
+    swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
5859
+
5860
+    return false;
5861
+  },
5862
+  releaseScroll: function releaseScroll(newEvent) {
5863
+    var swiper = this;
5864
+    var params = swiper.params.mousewheel;
5865
+
5866
+    if (newEvent.direction < 0) {
5867
+      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
5868
+        // Return true to animate scroll on edges
5869
+        return true;
5870
+      }
5871
+    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
5872
+      // Return true to animate scroll on edges
5873
+      return true;
5874
+    }
5875
+
5876
+    return false;
5877
+  },
5878
+  enable: function enable() {
5879
+    var swiper = this;
5880
+    var event = Mousewheel.event();
5881
+
5882
+    if (swiper.params.cssMode) {
5883
+      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
5884
+      return true;
5885
+    }
5886
+
5887
+    if (!event) return false;
5888
+    if (swiper.mousewheel.enabled) return false;
5889
+    var target = swiper.$el;
5890
+
5891
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
5892
+      target = $(swiper.params.mousewheel.eventsTarget);
5893
+    }
5894
+
5895
+    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
5896
+    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
5897
+    target.on(event, swiper.mousewheel.handle);
5898
+    swiper.mousewheel.enabled = true;
5899
+    return true;
5900
+  },
5901
+  disable: function disable() {
5902
+    var swiper = this;
5903
+    var event = Mousewheel.event();
5904
+
5905
+    if (swiper.params.cssMode) {
5906
+      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
5907
+      return true;
5908
+    }
5909
+
5910
+    if (!event) return false;
5911
+    if (!swiper.mousewheel.enabled) return false;
5912
+    var target = swiper.$el;
5913
+
5914
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
5915
+      target = $(swiper.params.mousewheel.eventsTarget);
5916
+    }
5917
+
5918
+    target.off(event, swiper.mousewheel.handle);
5919
+    swiper.mousewheel.enabled = false;
5920
+    return true;
5921
+  }
5922
+};
5923
+var Mousewheel$1 = {
5924
+  name: 'mousewheel',
5925
+  params: {
5926
+    mousewheel: {
5927
+      enabled: false,
5928
+      releaseOnEdges: false,
5929
+      invert: false,
5930
+      forceToAxis: false,
5931
+      sensitivity: 1,
5932
+      eventsTarget: 'container',
5933
+      thresholdDelta: null,
5934
+      thresholdTime: null
5935
+    }
5936
+  },
5937
+  create: function create() {
5938
+    var swiper = this;
5939
+    bindModuleMethods(swiper, {
5940
+      mousewheel: {
5941
+        enabled: false,
5942
+        lastScrollTime: now(),
5943
+        lastEventBeforeSnap: undefined,
5944
+        recentWheelEvents: [],
5945
+        enable: Mousewheel.enable,
5946
+        disable: Mousewheel.disable,
5947
+        handle: Mousewheel.handle,
5948
+        handleMouseEnter: Mousewheel.handleMouseEnter,
5949
+        handleMouseLeave: Mousewheel.handleMouseLeave,
5950
+        animateSlider: Mousewheel.animateSlider,
5951
+        releaseScroll: Mousewheel.releaseScroll
5952
+      }
5953
+    });
5954
+  },
5955
+  on: {
5956
+    init: function init(swiper) {
5957
+      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
5958
+        swiper.mousewheel.disable();
5959
+      }
5960
+
5961
+      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
5962
+    },
5963
+    destroy: function destroy(swiper) {
5964
+      if (swiper.params.cssMode) {
5965
+        swiper.mousewheel.enable();
5966
+      }
5967
+
5968
+      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
5969
+    }
5970
+  }
5971
+};
5972
+
5973
+var Navigation = {
5974
+  update: function update() {
5975
+    // Update Navigation Buttons
5976
+    var swiper = this;
5977
+    var params = swiper.params.navigation;
5978
+    if (swiper.params.loop) return;
5979
+    var _swiper$navigation = swiper.navigation,
5980
+        $nextEl = _swiper$navigation.$nextEl,
5981
+        $prevEl = _swiper$navigation.$prevEl;
5982
+
5983
+    if ($prevEl && $prevEl.length > 0) {
5984
+      if (swiper.isBeginning) {
5985
+        $prevEl.addClass(params.disabledClass);
5986
+      } else {
5987
+        $prevEl.removeClass(params.disabledClass);
5988
+      }
5989
+
5990
+      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5991
+    }
5992
+
5993
+    if ($nextEl && $nextEl.length > 0) {
5994
+      if (swiper.isEnd) {
5995
+        $nextEl.addClass(params.disabledClass);
5996
+      } else {
5997
+        $nextEl.removeClass(params.disabledClass);
5998
+      }
5999
+
6000
+      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6001
+    }
6002
+  },
6003
+  onPrevClick: function onPrevClick(e) {
6004
+    var swiper = this;
6005
+    e.preventDefault();
6006
+    if (swiper.isBeginning && !swiper.params.loop) return;
6007
+    swiper.slidePrev();
6008
+  },
6009
+  onNextClick: function onNextClick(e) {
6010
+    var swiper = this;
6011
+    e.preventDefault();
6012
+    if (swiper.isEnd && !swiper.params.loop) return;
6013
+    swiper.slideNext();
6014
+  },
6015
+  init: function init() {
6016
+    var swiper = this;
6017
+    var params = swiper.params.navigation;
6018
+    if (!(params.nextEl || params.prevEl)) return;
6019
+    var $nextEl;
6020
+    var $prevEl;
6021
+
6022
+    if (params.nextEl) {
6023
+      $nextEl = $(params.nextEl);
6024
+
6025
+      if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
6026
+        $nextEl = swiper.$el.find(params.nextEl);
6027
+      }
6028
+    }
6029
+
6030
+    if (params.prevEl) {
6031
+      $prevEl = $(params.prevEl);
6032
+
6033
+      if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
6034
+        $prevEl = swiper.$el.find(params.prevEl);
6035
+      }
6036
+    }
6037
+
6038
+    if ($nextEl && $nextEl.length > 0) {
6039
+      $nextEl.on('click', swiper.navigation.onNextClick);
6040
+    }
6041
+
6042
+    if ($prevEl && $prevEl.length > 0) {
6043
+      $prevEl.on('click', swiper.navigation.onPrevClick);
6044
+    }
6045
+
6046
+    extend$1(swiper.navigation, {
6047
+      $nextEl: $nextEl,
6048
+      nextEl: $nextEl && $nextEl[0],
6049
+      $prevEl: $prevEl,
6050
+      prevEl: $prevEl && $prevEl[0]
6051
+    });
6052
+  },
6053
+  destroy: function destroy() {
6054
+    var swiper = this;
6055
+    var _swiper$navigation2 = swiper.navigation,
6056
+        $nextEl = _swiper$navigation2.$nextEl,
6057
+        $prevEl = _swiper$navigation2.$prevEl;
6058
+
6059
+    if ($nextEl && $nextEl.length) {
6060
+      $nextEl.off('click', swiper.navigation.onNextClick);
6061
+      $nextEl.removeClass(swiper.params.navigation.disabledClass);
6062
+    }
6063
+
6064
+    if ($prevEl && $prevEl.length) {
6065
+      $prevEl.off('click', swiper.navigation.onPrevClick);
6066
+      $prevEl.removeClass(swiper.params.navigation.disabledClass);
6067
+    }
6068
+  }
6069
+};
6070
+var Navigation$1 = {
6071
+  name: 'navigation',
6072
+  params: {
6073
+    navigation: {
6074
+      nextEl: null,
6075
+      prevEl: null,
6076
+      hideOnClick: false,
6077
+      disabledClass: 'swiper-button-disabled',
6078
+      hiddenClass: 'swiper-button-hidden',
6079
+      lockClass: 'swiper-button-lock'
6080
+    }
6081
+  },
6082
+  create: function create() {
6083
+    var swiper = this;
6084
+    bindModuleMethods(swiper, {
6085
+      navigation: _extends({}, Navigation)
6086
+    });
6087
+  },
6088
+  on: {
6089
+    init: function init(swiper) {
6090
+      swiper.navigation.init();
6091
+      swiper.navigation.update();
6092
+    },
6093
+    toEdge: function toEdge(swiper) {
6094
+      swiper.navigation.update();
6095
+    },
6096
+    fromEdge: function fromEdge(swiper) {
6097
+      swiper.navigation.update();
6098
+    },
6099
+    destroy: function destroy(swiper) {
6100
+      swiper.navigation.destroy();
6101
+    },
6102
+    click: function click(swiper, e) {
6103
+      var _swiper$navigation3 = swiper.navigation,
6104
+          $nextEl = _swiper$navigation3.$nextEl,
6105
+          $prevEl = _swiper$navigation3.$prevEl;
6106
+
6107
+      if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {
6108
+        var isHidden;
6109
+
6110
+        if ($nextEl) {
6111
+          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
6112
+        } else if ($prevEl) {
6113
+          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
6114
+        }
6115
+
6116
+        if (isHidden === true) {
6117
+          swiper.emit('navigationShow');
6118
+        } else {
6119
+          swiper.emit('navigationHide');
6120
+        }
6121
+
6122
+        if ($nextEl) {
6123
+          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
6124
+        }
6125
+
6126
+        if ($prevEl) {
6127
+          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
6128
+        }
6129
+      }
6130
+    }
6131
+  }
6132
+};
6133
+
6134
+var Pagination = {
6135
+  update: function update() {
6136
+    // Render || Update Pagination bullets/items
6137
+    var swiper = this;
6138
+    var rtl = swiper.rtl;
6139
+    var params = swiper.params.pagination;
6140
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6141
+    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6142
+    var $el = swiper.pagination.$el; // Current/Total
6143
+
6144
+    var current;
6145
+    var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6146
+
6147
+    if (swiper.params.loop) {
6148
+      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
6149
+
6150
+      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
6151
+        current -= slidesLength - swiper.loopedSlides * 2;
6152
+      }
6153
+
6154
+      if (current > total - 1) current -= total;
6155
+      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
6156
+    } else if (typeof swiper.snapIndex !== 'undefined') {
6157
+      current = swiper.snapIndex;
6158
+    } else {
6159
+      current = swiper.activeIndex || 0;
6160
+    } // Types
6161
+
6162
+
6163
+    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
6164
+      var bullets = swiper.pagination.bullets;
6165
+      var firstIndex;
6166
+      var lastIndex;
6167
+      var midIndex;
6168
+
6169
+      if (params.dynamicBullets) {
6170
+        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
6171
+        $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
6172
+
6173
+        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
6174
+          swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
6175
+
6176
+          if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
6177
+            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
6178
+          } else if (swiper.pagination.dynamicBulletIndex < 0) {
6179
+            swiper.pagination.dynamicBulletIndex = 0;
6180
+          }
6181
+        }
6182
+
6183
+        firstIndex = current - swiper.pagination.dynamicBulletIndex;
6184
+        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
6185
+        midIndex = (lastIndex + firstIndex) / 2;
6186
+      }
6187
+
6188
+      bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
6189
+
6190
+      if ($el.length > 1) {
6191
+        bullets.each(function (bullet) {
6192
+          var $bullet = $(bullet);
6193
+          var bulletIndex = $bullet.index();
6194
+
6195
+          if (bulletIndex === current) {
6196
+            $bullet.addClass(params.bulletActiveClass);
6197
+          }
6198
+
6199
+          if (params.dynamicBullets) {
6200
+            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
6201
+              $bullet.addClass(params.bulletActiveClass + "-main");
6202
+            }
6203
+
6204
+            if (bulletIndex === firstIndex) {
6205
+              $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6206
+            }
6207
+
6208
+            if (bulletIndex === lastIndex) {
6209
+              $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6210
+            }
6211
+          }
6212
+        });
6213
+      } else {
6214
+        var $bullet = bullets.eq(current);
6215
+        var bulletIndex = $bullet.index();
6216
+        $bullet.addClass(params.bulletActiveClass);
6217
+
6218
+        if (params.dynamicBullets) {
6219
+          var $firstDisplayedBullet = bullets.eq(firstIndex);
6220
+          var $lastDisplayedBullet = bullets.eq(lastIndex);
6221
+
6222
+          for (var i = firstIndex; i <= lastIndex; i += 1) {
6223
+            bullets.eq(i).addClass(params.bulletActiveClass + "-main");
6224
+          }
6225
+
6226
+          if (swiper.params.loop) {
6227
+            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
6228
+              for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
6229
+                bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
6230
+              }
6231
+
6232
+              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
6233
+            } else {
6234
+              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6235
+              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6236
+            }
6237
+          } else {
6238
+            $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6239
+            $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6240
+          }
6241
+        }
6242
+      }
6243
+
6244
+      if (params.dynamicBullets) {
6245
+        var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
6246
+        var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
6247
+        var offsetProp = rtl ? 'right' : 'left';
6248
+        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
6249
+      }
6250
+    }
6251
+
6252
+    if (params.type === 'fraction') {
6253
+      $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
6254
+      $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
6255
+    }
6256
+
6257
+    if (params.type === 'progressbar') {
6258
+      var progressbarDirection;
6259
+
6260
+      if (params.progressbarOpposite) {
6261
+        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
6262
+      } else {
6263
+        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
6264
+      }
6265
+
6266
+      var scale = (current + 1) / total;
6267
+      var scaleX = 1;
6268
+      var scaleY = 1;
6269
+
6270
+      if (progressbarDirection === 'horizontal') {
6271
+        scaleX = scale;
6272
+      } else {
6273
+        scaleY = scale;
6274
+      }
6275
+
6276
+      $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
6277
+    }
6278
+
6279
+    if (params.type === 'custom' && params.renderCustom) {
6280
+      $el.html(params.renderCustom(swiper, current + 1, total));
6281
+      swiper.emit('paginationRender', $el[0]);
6282
+    } else {
6283
+      swiper.emit('paginationUpdate', $el[0]);
6284
+    }
6285
+
6286
+    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6287
+  },
6288
+  render: function render() {
6289
+    // Render Container
6290
+    var swiper = this;
6291
+    var params = swiper.params.pagination;
6292
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6293
+    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6294
+    var $el = swiper.pagination.$el;
6295
+    var paginationHTML = '';
6296
+
6297
+    if (params.type === 'bullets') {
6298
+      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6299
+
6300
+      for (var i = 0; i < numberOfBullets; i += 1) {
6301
+        if (params.renderBullet) {
6302
+          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
6303
+        } else {
6304
+          paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
6305
+        }
6306
+      }
6307
+
6308
+      $el.html(paginationHTML);
6309
+      swiper.pagination.bullets = $el.find("." + params.bulletClass);
6310
+    }
6311
+
6312
+    if (params.type === 'fraction') {
6313
+      if (params.renderFraction) {
6314
+        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
6315
+      } else {
6316
+        paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
6317
+      }
6318
+
6319
+      $el.html(paginationHTML);
6320
+    }
6321
+
6322
+    if (params.type === 'progressbar') {
6323
+      if (params.renderProgressbar) {
6324
+        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
6325
+      } else {
6326
+        paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
6327
+      }
6328
+
6329
+      $el.html(paginationHTML);
6330
+    }
6331
+
6332
+    if (params.type !== 'custom') {
6333
+      swiper.emit('paginationRender', swiper.pagination.$el[0]);
6334
+    }
6335
+  },
6336
+  init: function init() {
6337
+    var swiper = this;
6338
+    var params = swiper.params.pagination;
6339
+    if (!params.el) return;
6340
+    var $el = $(params.el);
6341
+    if ($el.length === 0) return;
6342
+
6343
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
6344
+      $el = swiper.$el.find(params.el);
6345
+    }
6346
+
6347
+    if (params.type === 'bullets' && params.clickable) {
6348
+      $el.addClass(params.clickableClass);
6349
+    }
6350
+
6351
+    $el.addClass(params.modifierClass + params.type);
6352
+
6353
+    if (params.type === 'bullets' && params.dynamicBullets) {
6354
+      $el.addClass("" + params.modifierClass + params.type + "-dynamic");
6355
+      swiper.pagination.dynamicBulletIndex = 0;
6356
+
6357
+      if (params.dynamicMainBullets < 1) {
6358
+        params.dynamicMainBullets = 1;
6359
+      }
6360
+    }
6361
+
6362
+    if (params.type === 'progressbar' && params.progressbarOpposite) {
6363
+      $el.addClass(params.progressbarOppositeClass);
6364
+    }
6365
+
6366
+    if (params.clickable) {
6367
+      $el.on('click', "." + params.bulletClass, function onClick(e) {
6368
+        e.preventDefault();
6369
+        var index = $(this).index() * swiper.params.slidesPerGroup;
6370
+        if (swiper.params.loop) index += swiper.loopedSlides;
6371
+        swiper.slideTo(index);
6372
+      });
6373
+    }
6374
+
6375
+    extend$1(swiper.pagination, {
6376
+      $el: $el,
6377
+      el: $el[0]
6378
+    });
6379
+  },
6380
+  destroy: function destroy() {
6381
+    var swiper = this;
6382
+    var params = swiper.params.pagination;
6383
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6384
+    var $el = swiper.pagination.$el;
6385
+    $el.removeClass(params.hiddenClass);
6386
+    $el.removeClass(params.modifierClass + params.type);
6387
+    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
6388
+
6389
+    if (params.clickable) {
6390
+      $el.off('click', "." + params.bulletClass);
6391
+    }
6392
+  }
6393
+};
6394
+var Pagination$1 = {
6395
+  name: 'pagination',
6396
+  params: {
6397
+    pagination: {
6398
+      el: null,
6399
+      bulletElement: 'span',
6400
+      clickable: false,
6401
+      hideOnClick: false,
6402
+      renderBullet: null,
6403
+      renderProgressbar: null,
6404
+      renderFraction: null,
6405
+      renderCustom: null,
6406
+      progressbarOpposite: false,
6407
+      type: 'bullets',
6408
+      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
6409
+      dynamicBullets: false,
6410
+      dynamicMainBullets: 1,
6411
+      formatFractionCurrent: function formatFractionCurrent(number) {
6412
+        return number;
6413
+      },
6414
+      formatFractionTotal: function formatFractionTotal(number) {
6415
+        return number;
6416
+      },
6417
+      bulletClass: 'swiper-pagination-bullet',
6418
+      bulletActiveClass: 'swiper-pagination-bullet-active',
6419
+      modifierClass: 'swiper-pagination-',
6420
+      // NEW
6421
+      currentClass: 'swiper-pagination-current',
6422
+      totalClass: 'swiper-pagination-total',
6423
+      hiddenClass: 'swiper-pagination-hidden',
6424
+      progressbarFillClass: 'swiper-pagination-progressbar-fill',
6425
+      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
6426
+      clickableClass: 'swiper-pagination-clickable',
6427
+      // NEW
6428
+      lockClass: 'swiper-pagination-lock'
6429
+    }
6430
+  },
6431
+  create: function create() {
6432
+    var swiper = this;
6433
+    bindModuleMethods(swiper, {
6434
+      pagination: _extends({
6435
+        dynamicBulletIndex: 0
6436
+      }, Pagination)
6437
+    });
6438
+  },
6439
+  on: {
6440
+    init: function init(swiper) {
6441
+      swiper.pagination.init();
6442
+      swiper.pagination.render();
6443
+      swiper.pagination.update();
6444
+    },
6445
+    activeIndexChange: function activeIndexChange(swiper) {
6446
+      if (swiper.params.loop) {
6447
+        swiper.pagination.update();
6448
+      } else if (typeof swiper.snapIndex === 'undefined') {
6449
+        swiper.pagination.update();
6450
+      }
6451
+    },
6452
+    snapIndexChange: function snapIndexChange(swiper) {
6453
+      if (!swiper.params.loop) {
6454
+        swiper.pagination.update();
6455
+      }
6456
+    },
6457
+    slidesLengthChange: function slidesLengthChange(swiper) {
6458
+      if (swiper.params.loop) {
6459
+        swiper.pagination.render();
6460
+        swiper.pagination.update();
6461
+      }
6462
+    },
6463
+    snapGridLengthChange: function snapGridLengthChange(swiper) {
6464
+      if (!swiper.params.loop) {
6465
+        swiper.pagination.render();
6466
+        swiper.pagination.update();
6467
+      }
6468
+    },
6469
+    destroy: function destroy(swiper) {
6470
+      swiper.pagination.destroy();
6471
+    },
6472
+    click: function click(swiper, e) {
6473
+      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {
6474
+        var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
6475
+
6476
+        if (isHidden === true) {
6477
+          swiper.emit('paginationShow');
6478
+        } else {
6479
+          swiper.emit('paginationHide');
6480
+        }
6481
+
6482
+        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
6483
+      }
6484
+    }
6485
+  }
6486
+};
6487
+
6488
+var Scrollbar = {
6489
+  setTranslate: function setTranslate() {
6490
+    var swiper = this;
6491
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6492
+    var scrollbar = swiper.scrollbar,
6493
+        rtl = swiper.rtlTranslate,
6494
+        progress = swiper.progress;
6495
+    var dragSize = scrollbar.dragSize,
6496
+        trackSize = scrollbar.trackSize,
6497
+        $dragEl = scrollbar.$dragEl,
6498
+        $el = scrollbar.$el;
6499
+    var params = swiper.params.scrollbar;
6500
+    var newSize = dragSize;
6501
+    var newPos = (trackSize - dragSize) * progress;
6502
+
6503
+    if (rtl) {
6504
+      newPos = -newPos;
6505
+
6506
+      if (newPos > 0) {
6507
+        newSize = dragSize - newPos;
6508
+        newPos = 0;
6509
+      } else if (-newPos + dragSize > trackSize) {
6510
+        newSize = trackSize + newPos;
6511
+      }
6512
+    } else if (newPos < 0) {
6513
+      newSize = dragSize + newPos;
6514
+      newPos = 0;
6515
+    } else if (newPos + dragSize > trackSize) {
6516
+      newSize = trackSize - newPos;
6517
+    }
6518
+
6519
+    if (swiper.isHorizontal()) {
6520
+      $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
6521
+      $dragEl[0].style.width = newSize + "px";
6522
+    } else {
6523
+      $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
6524
+      $dragEl[0].style.height = newSize + "px";
6525
+    }
6526
+
6527
+    if (params.hide) {
6528
+      clearTimeout(swiper.scrollbar.timeout);
6529
+      $el[0].style.opacity = 1;
6530
+      swiper.scrollbar.timeout = setTimeout(function () {
6531
+        $el[0].style.opacity = 0;
6532
+        $el.transition(400);
6533
+      }, 1000);
6534
+    }
6535
+  },
6536
+  setTransition: function setTransition(duration) {
6537
+    var swiper = this;
6538
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6539
+    swiper.scrollbar.$dragEl.transition(duration);
6540
+  },
6541
+  updateSize: function updateSize() {
6542
+    var swiper = this;
6543
+    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6544
+    var scrollbar = swiper.scrollbar;
6545
+    var $dragEl = scrollbar.$dragEl,
6546
+        $el = scrollbar.$el;
6547
+    $dragEl[0].style.width = '';
6548
+    $dragEl[0].style.height = '';
6549
+    var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
6550
+    var divider = swiper.size / swiper.virtualSize;
6551
+    var moveDivider = divider * (trackSize / swiper.size);
6552
+    var dragSize;
6553
+
6554
+    if (swiper.params.scrollbar.dragSize === 'auto') {
6555
+      dragSize = trackSize * divider;
6556
+    } else {
6557
+      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
6558
+    }
6559
+
6560
+    if (swiper.isHorizontal()) {
6561
+      $dragEl[0].style.width = dragSize + "px";
6562
+    } else {
6563
+      $dragEl[0].style.height = dragSize + "px";
6564
+    }
6565
+
6566
+    if (divider >= 1) {
6567
+      $el[0].style.display = 'none';
6568
+    } else {
6569
+      $el[0].style.display = '';
6570
+    }
6571
+
6572
+    if (swiper.params.scrollbar.hide) {
6573
+      $el[0].style.opacity = 0;
6574
+    }
6575
+
6576
+    extend$1(scrollbar, {
6577
+      trackSize: trackSize,
6578
+      divider: divider,
6579
+      moveDivider: moveDivider,
6580
+      dragSize: dragSize
6581
+    });
6582
+    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
6583
+  },
6584
+  getPointerPosition: function getPointerPosition(e) {
6585
+    var swiper = this;
6586
+
6587
+    if (swiper.isHorizontal()) {
6588
+      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
6589
+    }
6590
+
6591
+    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
6592
+  },
6593
+  setDragPosition: function setDragPosition(e) {
6594
+    var swiper = this;
6595
+    var scrollbar = swiper.scrollbar,
6596
+        rtl = swiper.rtlTranslate;
6597
+    var $el = scrollbar.$el,
6598
+        dragSize = scrollbar.dragSize,
6599
+        trackSize = scrollbar.trackSize,
6600
+        dragStartPos = scrollbar.dragStartPos;
6601
+    var positionRatio;
6602
+    positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
6603
+    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
6604
+
6605
+    if (rtl) {
6606
+      positionRatio = 1 - positionRatio;
6607
+    }
6608
+
6609
+    var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
6610
+    swiper.updateProgress(position);
6611
+    swiper.setTranslate(position);
6612
+    swiper.updateActiveIndex();
6613
+    swiper.updateSlidesClasses();
6614
+  },
6615
+  onDragStart: function onDragStart(e) {
6616
+    var swiper = this;
6617
+    var params = swiper.params.scrollbar;
6618
+    var scrollbar = swiper.scrollbar,
6619
+        $wrapperEl = swiper.$wrapperEl;
6620
+    var $el = scrollbar.$el,
6621
+        $dragEl = scrollbar.$dragEl;
6622
+    swiper.scrollbar.isTouched = true;
6623
+    swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
6624
+    e.preventDefault();
6625
+    e.stopPropagation();
6626
+    $wrapperEl.transition(100);
6627
+    $dragEl.transition(100);
6628
+    scrollbar.setDragPosition(e);
6629
+    clearTimeout(swiper.scrollbar.dragTimeout);
6630
+    $el.transition(0);
6631
+
6632
+    if (params.hide) {
6633
+      $el.css('opacity', 1);
6634
+    }
6635
+
6636
+    if (swiper.params.cssMode) {
6637
+      swiper.$wrapperEl.css('scroll-snap-type', 'none');
6638
+    }
6639
+
6640
+    swiper.emit('scrollbarDragStart', e);
6641
+  },
6642
+  onDragMove: function onDragMove(e) {
6643
+    var swiper = this;
6644
+    var scrollbar = swiper.scrollbar,
6645
+        $wrapperEl = swiper.$wrapperEl;
6646
+    var $el = scrollbar.$el,
6647
+        $dragEl = scrollbar.$dragEl;
6648
+    if (!swiper.scrollbar.isTouched) return;
6649
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
6650
+    scrollbar.setDragPosition(e);
6651
+    $wrapperEl.transition(0);
6652
+    $el.transition(0);
6653
+    $dragEl.transition(0);
6654
+    swiper.emit('scrollbarDragMove', e);
6655
+  },
6656
+  onDragEnd: function onDragEnd(e) {
6657
+    var swiper = this;
6658
+    var params = swiper.params.scrollbar;
6659
+    var scrollbar = swiper.scrollbar,
6660
+        $wrapperEl = swiper.$wrapperEl;
6661
+    var $el = scrollbar.$el;
6662
+    if (!swiper.scrollbar.isTouched) return;
6663
+    swiper.scrollbar.isTouched = false;
6664
+
6665
+    if (swiper.params.cssMode) {
6666
+      swiper.$wrapperEl.css('scroll-snap-type', '');
6667
+      $wrapperEl.transition('');
6668
+    }
6669
+
6670
+    if (params.hide) {
6671
+      clearTimeout(swiper.scrollbar.dragTimeout);
6672
+      swiper.scrollbar.dragTimeout = nextTick(function () {
6673
+        $el.css('opacity', 0);
6674
+        $el.transition(400);
6675
+      }, 1000);
6676
+    }
6677
+
6678
+    swiper.emit('scrollbarDragEnd', e);
6679
+
6680
+    if (params.snapOnRelease) {
6681
+      swiper.slideToClosest();
6682
+    }
6683
+  },
6684
+  enableDraggable: function enableDraggable() {
6685
+    var swiper = this;
6686
+    if (!swiper.params.scrollbar.el) return;
6687
+    var document = getDocument();
6688
+    var scrollbar = swiper.scrollbar,
6689
+        touchEventsTouch = swiper.touchEventsTouch,
6690
+        touchEventsDesktop = swiper.touchEventsDesktop,
6691
+        params = swiper.params,
6692
+        support = swiper.support;
6693
+    var $el = scrollbar.$el;
6694
+    var target = $el[0];
6695
+    var activeListener = support.passiveListener && params.passiveListeners ? {
6696
+      passive: false,
6697
+      capture: false
6698
+    } : false;
6699
+    var passiveListener = support.passiveListener && params.passiveListeners ? {
6700
+      passive: true,
6701
+      capture: false
6702
+    } : false;
6703
+
6704
+    if (!support.touch) {
6705
+      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6706
+      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6707
+      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6708
+    } else {
6709
+      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6710
+      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6711
+      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6712
+    }
6713
+  },
6714
+  disableDraggable: function disableDraggable() {
6715
+    var swiper = this;
6716
+    if (!swiper.params.scrollbar.el) return;
6717
+    var document = getDocument();
6718
+    var scrollbar = swiper.scrollbar,
6719
+        touchEventsTouch = swiper.touchEventsTouch,
6720
+        touchEventsDesktop = swiper.touchEventsDesktop,
6721
+        params = swiper.params,
6722
+        support = swiper.support;
6723
+    var $el = scrollbar.$el;
6724
+    var target = $el[0];
6725
+    var activeListener = support.passiveListener && params.passiveListeners ? {
6726
+      passive: false,
6727
+      capture: false
6728
+    } : false;
6729
+    var passiveListener = support.passiveListener && params.passiveListeners ? {
6730
+      passive: true,
6731
+      capture: false
6732
+    } : false;
6733
+
6734
+    if (!support.touch) {
6735
+      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6736
+      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6737
+      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6738
+    } else {
6739
+      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6740
+      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6741
+      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6742
+    }
6743
+  },
6744
+  init: function init() {
6745
+    var swiper = this;
6746
+    if (!swiper.params.scrollbar.el) return;
6747
+    var scrollbar = swiper.scrollbar,
6748
+        $swiperEl = swiper.$el;
6749
+    var params = swiper.params.scrollbar;
6750
+    var $el = $(params.el);
6751
+
6752
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
6753
+      $el = $swiperEl.find(params.el);
6754
+    }
6755
+
6756
+    var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
6757
+
6758
+    if ($dragEl.length === 0) {
6759
+      $dragEl = $("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
6760
+      $el.append($dragEl);
6761
+    }
6762
+
6763
+    extend$1(scrollbar, {
6764
+      $el: $el,
6765
+      el: $el[0],
6766
+      $dragEl: $dragEl,
6767
+      dragEl: $dragEl[0]
6768
+    });
6769
+
6770
+    if (params.draggable) {
6771
+      scrollbar.enableDraggable();
6772
+    }
6773
+  },
6774
+  destroy: function destroy() {
6775
+    var swiper = this;
6776
+    swiper.scrollbar.disableDraggable();
6777
+  }
6778
+};
6779
+var Scrollbar$1 = {
6780
+  name: 'scrollbar',
6781
+  params: {
6782
+    scrollbar: {
6783
+      el: null,
6784
+      dragSize: 'auto',
6785
+      hide: false,
6786
+      draggable: false,
6787
+      snapOnRelease: true,
6788
+      lockClass: 'swiper-scrollbar-lock',
6789
+      dragClass: 'swiper-scrollbar-drag'
6790
+    }
6791
+  },
6792
+  create: function create() {
6793
+    var swiper = this;
6794
+    bindModuleMethods(swiper, {
6795
+      scrollbar: _extends({
6796
+        isTouched: false,
6797
+        timeout: null,
6798
+        dragTimeout: null
6799
+      }, Scrollbar)
6800
+    });
6801
+  },
6802
+  on: {
6803
+    init: function init(swiper) {
6804
+      swiper.scrollbar.init();
6805
+      swiper.scrollbar.updateSize();
6806
+      swiper.scrollbar.setTranslate();
6807
+    },
6808
+    update: function update(swiper) {
6809
+      swiper.scrollbar.updateSize();
6810
+    },
6811
+    resize: function resize(swiper) {
6812
+      swiper.scrollbar.updateSize();
6813
+    },
6814
+    observerUpdate: function observerUpdate(swiper) {
6815
+      swiper.scrollbar.updateSize();
6816
+    },
6817
+    setTranslate: function setTranslate(swiper) {
6818
+      swiper.scrollbar.setTranslate();
6819
+    },
6820
+    setTransition: function setTransition(swiper, duration) {
6821
+      swiper.scrollbar.setTransition(duration);
6822
+    },
6823
+    destroy: function destroy(swiper) {
6824
+      swiper.scrollbar.destroy();
6825
+    }
6826
+  }
6827
+};
6828
+
6829
+var Parallax = {
6830
+  setTransform: function setTransform(el, progress) {
6831
+    var swiper = this;
6832
+    var rtl = swiper.rtl;
6833
+    var $el = $(el);
6834
+    var rtlFactor = rtl ? -1 : 1;
6835
+    var p = $el.attr('data-swiper-parallax') || '0';
6836
+    var x = $el.attr('data-swiper-parallax-x');
6837
+    var y = $el.attr('data-swiper-parallax-y');
6838
+    var scale = $el.attr('data-swiper-parallax-scale');
6839
+    var opacity = $el.attr('data-swiper-parallax-opacity');
6840
+
6841
+    if (x || y) {
6842
+      x = x || '0';
6843
+      y = y || '0';
6844
+    } else if (swiper.isHorizontal()) {
6845
+      x = p;
6846
+      y = '0';
6847
+    } else {
6848
+      y = p;
6849
+      x = '0';
6850
+    }
6851
+
6852
+    if (x.indexOf('%') >= 0) {
6853
+      x = parseInt(x, 10) * progress * rtlFactor + "%";
6854
+    } else {
6855
+      x = x * progress * rtlFactor + "px";
6856
+    }
6857
+
6858
+    if (y.indexOf('%') >= 0) {
6859
+      y = parseInt(y, 10) * progress + "%";
6860
+    } else {
6861
+      y = y * progress + "px";
6862
+    }
6863
+
6864
+    if (typeof opacity !== 'undefined' && opacity !== null) {
6865
+      var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
6866
+      $el[0].style.opacity = currentOpacity;
6867
+    }
6868
+
6869
+    if (typeof scale === 'undefined' || scale === null) {
6870
+      $el.transform("translate3d(" + x + ", " + y + ", 0px)");
6871
+    } else {
6872
+      var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
6873
+      $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
6874
+    }
6875
+  },
6876
+  setTranslate: function setTranslate() {
6877
+    var swiper = this;
6878
+    var $el = swiper.$el,
6879
+        slides = swiper.slides,
6880
+        progress = swiper.progress,
6881
+        snapGrid = swiper.snapGrid;
6882
+    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
6883
+      swiper.parallax.setTransform(el, progress);
6884
+    });
6885
+    slides.each(function (slideEl, slideIndex) {
6886
+      var slideProgress = slideEl.progress;
6887
+
6888
+      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
6889
+        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
6890
+      }
6891
+
6892
+      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
6893
+      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
6894
+        swiper.parallax.setTransform(el, slideProgress);
6895
+      });
6896
+    });
6897
+  },
6898
+  setTransition: function setTransition(duration) {
6899
+    if (duration === void 0) {
6900
+      duration = this.params.speed;
6901
+    }
6902
+
6903
+    var swiper = this;
6904
+    var $el = swiper.$el;
6905
+    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
6906
+      var $parallaxEl = $(parallaxEl);
6907
+      var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
6908
+      if (duration === 0) parallaxDuration = 0;
6909
+      $parallaxEl.transition(parallaxDuration);
6910
+    });
6911
+  }
6912
+};
6913
+var Parallax$1 = {
6914
+  name: 'parallax',
6915
+  params: {
6916
+    parallax: {
6917
+      enabled: false
6918
+    }
6919
+  },
6920
+  create: function create() {
6921
+    var swiper = this;
6922
+    bindModuleMethods(swiper, {
6923
+      parallax: _extends({}, Parallax)
6924
+    });
6925
+  },
6926
+  on: {
6927
+    beforeInit: function beforeInit(swiper) {
6928
+      if (!swiper.params.parallax.enabled) return;
6929
+      swiper.params.watchSlidesProgress = true;
6930
+      swiper.originalParams.watchSlidesProgress = true;
6931
+    },
6932
+    init: function init(swiper) {
6933
+      if (!swiper.params.parallax.enabled) return;
6934
+      swiper.parallax.setTranslate();
6935
+    },
6936
+    setTranslate: function setTranslate(swiper) {
6937
+      if (!swiper.params.parallax.enabled) return;
6938
+      swiper.parallax.setTranslate();
6939
+    },
6940
+    setTransition: function setTransition(swiper, duration) {
6941
+      if (!swiper.params.parallax.enabled) return;
6942
+      swiper.parallax.setTransition(duration);
6943
+    }
6944
+  }
6945
+};
6946
+
6947
+var Zoom = {
6948
+  // Calc Scale From Multi-touches
6949
+  getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
6950
+    if (e.targetTouches.length < 2) return 1;
6951
+    var x1 = e.targetTouches[0].pageX;
6952
+    var y1 = e.targetTouches[0].pageY;
6953
+    var x2 = e.targetTouches[1].pageX;
6954
+    var y2 = e.targetTouches[1].pageY;
6955
+    var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
6956
+    return distance;
6957
+  },
6958
+  // Events
6959
+  onGestureStart: function onGestureStart(e) {
6960
+    var swiper = this;
6961
+    var support = swiper.support;
6962
+    var params = swiper.params.zoom;
6963
+    var zoom = swiper.zoom;
6964
+    var gesture = zoom.gesture;
6965
+    zoom.fakeGestureTouched = false;
6966
+    zoom.fakeGestureMoved = false;
6967
+
6968
+    if (!support.gestures) {
6969
+      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
6970
+        return;
6971
+      }
6972
+
6973
+      zoom.fakeGestureTouched = true;
6974
+      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
6975
+    }
6976
+
6977
+    if (!gesture.$slideEl || !gesture.$slideEl.length) {
6978
+      gesture.$slideEl = $(e.target).closest("." + swiper.params.slideClass);
6979
+      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6980
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6981
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
6982
+      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6983
+
6984
+      if (gesture.$imageWrapEl.length === 0) {
6985
+        gesture.$imageEl = undefined;
6986
+        return;
6987
+      }
6988
+    }
6989
+
6990
+    if (gesture.$imageEl) {
6991
+      gesture.$imageEl.transition(0);
6992
+    }
6993
+
6994
+    swiper.zoom.isScaling = true;
6995
+  },
6996
+  onGestureChange: function onGestureChange(e) {
6997
+    var swiper = this;
6998
+    var support = swiper.support;
6999
+    var params = swiper.params.zoom;
7000
+    var zoom = swiper.zoom;
7001
+    var gesture = zoom.gesture;
7002
+
7003
+    if (!support.gestures) {
7004
+      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
7005
+        return;
7006
+      }
7007
+
7008
+      zoom.fakeGestureMoved = true;
7009
+      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
7010
+    }
7011
+
7012
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
7013
+      if (e.type === 'gesturechange') zoom.onGestureStart(e);
7014
+      return;
7015
+    }
7016
+
7017
+    if (support.gestures) {
7018
+      zoom.scale = e.scale * zoom.currentScale;
7019
+    } else {
7020
+      zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
7021
+    }
7022
+
7023
+    if (zoom.scale > gesture.maxRatio) {
7024
+      zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
7025
+    }
7026
+
7027
+    if (zoom.scale < params.minRatio) {
7028
+      zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
7029
+    }
7030
+
7031
+    gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7032
+  },
7033
+  onGestureEnd: function onGestureEnd(e) {
7034
+    var swiper = this;
7035
+    var device = swiper.device;
7036
+    var support = swiper.support;
7037
+    var params = swiper.params.zoom;
7038
+    var zoom = swiper.zoom;
7039
+    var gesture = zoom.gesture;
7040
+
7041
+    if (!support.gestures) {
7042
+      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
7043
+        return;
7044
+      }
7045
+
7046
+      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
7047
+        return;
7048
+      }
7049
+
7050
+      zoom.fakeGestureTouched = false;
7051
+      zoom.fakeGestureMoved = false;
7052
+    }
7053
+
7054
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7055
+    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
7056
+    gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7057
+    zoom.currentScale = zoom.scale;
7058
+    zoom.isScaling = false;
7059
+    if (zoom.scale === 1) gesture.$slideEl = undefined;
7060
+  },
7061
+  onTouchStart: function onTouchStart(e) {
7062
+    var swiper = this;
7063
+    var device = swiper.device;
7064
+    var zoom = swiper.zoom;
7065
+    var gesture = zoom.gesture,
7066
+        image = zoom.image;
7067
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7068
+    if (image.isTouched) return;
7069
+    if (device.android && e.cancelable) e.preventDefault();
7070
+    image.isTouched = true;
7071
+    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
7072
+    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
7073
+  },
7074
+  onTouchMove: function onTouchMove(e) {
7075
+    var swiper = this;
7076
+    var zoom = swiper.zoom;
7077
+    var gesture = zoom.gesture,
7078
+        image = zoom.image,
7079
+        velocity = zoom.velocity;
7080
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7081
+    swiper.allowClick = false;
7082
+    if (!image.isTouched || !gesture.$slideEl) return;
7083
+
7084
+    if (!image.isMoved) {
7085
+      image.width = gesture.$imageEl[0].offsetWidth;
7086
+      image.height = gesture.$imageEl[0].offsetHeight;
7087
+      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
7088
+      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
7089
+      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
7090
+      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
7091
+      gesture.$imageWrapEl.transition(0);
7092
+
7093
+      if (swiper.rtl) {
7094
+        image.startX = -image.startX;
7095
+        image.startY = -image.startY;
7096
+      }
7097
+    } // Define if we need image drag
7098
+
7099
+
7100
+    var scaledWidth = image.width * zoom.scale;
7101
+    var scaledHeight = image.height * zoom.scale;
7102
+    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
7103
+    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7104
+    image.maxX = -image.minX;
7105
+    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7106
+    image.maxY = -image.minY;
7107
+    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
7108
+    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
7109
+
7110
+    if (!image.isMoved && !zoom.isScaling) {
7111
+      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
7112
+        image.isTouched = false;
7113
+        return;
7114
+      }
7115
+
7116
+      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
7117
+        image.isTouched = false;
7118
+        return;
7119
+      }
7120
+    }
7121
+
7122
+    if (e.cancelable) {
7123
+      e.preventDefault();
7124
+    }
7125
+
7126
+    e.stopPropagation();
7127
+    image.isMoved = true;
7128
+    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
7129
+    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
7130
+
7131
+    if (image.currentX < image.minX) {
7132
+      image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
7133
+    }
7134
+
7135
+    if (image.currentX > image.maxX) {
7136
+      image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
7137
+    }
7138
+
7139
+    if (image.currentY < image.minY) {
7140
+      image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
7141
+    }
7142
+
7143
+    if (image.currentY > image.maxY) {
7144
+      image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
7145
+    } // Velocity
7146
+
7147
+
7148
+    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
7149
+    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
7150
+    if (!velocity.prevTime) velocity.prevTime = Date.now();
7151
+    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
7152
+    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
7153
+    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
7154
+    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
7155
+    velocity.prevPositionX = image.touchesCurrent.x;
7156
+    velocity.prevPositionY = image.touchesCurrent.y;
7157
+    velocity.prevTime = Date.now();
7158
+    gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7159
+  },
7160
+  onTouchEnd: function onTouchEnd() {
7161
+    var swiper = this;
7162
+    var zoom = swiper.zoom;
7163
+    var gesture = zoom.gesture,
7164
+        image = zoom.image,
7165
+        velocity = zoom.velocity;
7166
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7167
+
7168
+    if (!image.isTouched || !image.isMoved) {
7169
+      image.isTouched = false;
7170
+      image.isMoved = false;
7171
+      return;
7172
+    }
7173
+
7174
+    image.isTouched = false;
7175
+    image.isMoved = false;
7176
+    var momentumDurationX = 300;
7177
+    var momentumDurationY = 300;
7178
+    var momentumDistanceX = velocity.x * momentumDurationX;
7179
+    var newPositionX = image.currentX + momentumDistanceX;
7180
+    var momentumDistanceY = velocity.y * momentumDurationY;
7181
+    var newPositionY = image.currentY + momentumDistanceY; // Fix duration
7182
+
7183
+    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
7184
+    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
7185
+    var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
7186
+    image.currentX = newPositionX;
7187
+    image.currentY = newPositionY; // Define if we need image drag
7188
+
7189
+    var scaledWidth = image.width * zoom.scale;
7190
+    var scaledHeight = image.height * zoom.scale;
7191
+    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7192
+    image.maxX = -image.minX;
7193
+    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7194
+    image.maxY = -image.minY;
7195
+    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
7196
+    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
7197
+    gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7198
+  },
7199
+  onTransitionEnd: function onTransitionEnd() {
7200
+    var swiper = this;
7201
+    var zoom = swiper.zoom;
7202
+    var gesture = zoom.gesture;
7203
+
7204
+    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
7205
+      if (gesture.$imageEl) {
7206
+        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
7207
+      }
7208
+
7209
+      if (gesture.$imageWrapEl) {
7210
+        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
7211
+      }
7212
+
7213
+      zoom.scale = 1;
7214
+      zoom.currentScale = 1;
7215
+      gesture.$slideEl = undefined;
7216
+      gesture.$imageEl = undefined;
7217
+      gesture.$imageWrapEl = undefined;
7218
+    }
7219
+  },
7220
+  // Toggle Zoom
7221
+  toggle: function toggle(e) {
7222
+    var swiper = this;
7223
+    var zoom = swiper.zoom;
7224
+
7225
+    if (zoom.scale && zoom.scale !== 1) {
7226
+      // Zoom Out
7227
+      zoom.out();
7228
+    } else {
7229
+      // Zoom In
7230
+      zoom.in(e);
7231
+    }
7232
+  },
7233
+  in: function _in(e) {
7234
+    var swiper = this;
7235
+    var zoom = swiper.zoom;
7236
+    var params = swiper.params.zoom;
7237
+    var gesture = zoom.gesture,
7238
+        image = zoom.image;
7239
+
7240
+    if (!gesture.$slideEl) {
7241
+      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7242
+        gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7243
+      } else {
7244
+        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7245
+      }
7246
+
7247
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7248
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7249
+    }
7250
+
7251
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7252
+    gesture.$slideEl.addClass("" + params.zoomedSlideClass);
7253
+    var touchX;
7254
+    var touchY;
7255
+    var offsetX;
7256
+    var offsetY;
7257
+    var diffX;
7258
+    var diffY;
7259
+    var translateX;
7260
+    var translateY;
7261
+    var imageWidth;
7262
+    var imageHeight;
7263
+    var scaledWidth;
7264
+    var scaledHeight;
7265
+    var translateMinX;
7266
+    var translateMinY;
7267
+    var translateMaxX;
7268
+    var translateMaxY;
7269
+    var slideWidth;
7270
+    var slideHeight;
7271
+
7272
+    if (typeof image.touchesStart.x === 'undefined' && e) {
7273
+      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
7274
+      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
7275
+    } else {
7276
+      touchX = image.touchesStart.x;
7277
+      touchY = image.touchesStart.y;
7278
+    }
7279
+
7280
+    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7281
+    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7282
+
7283
+    if (e) {
7284
+      slideWidth = gesture.$slideEl[0].offsetWidth;
7285
+      slideHeight = gesture.$slideEl[0].offsetHeight;
7286
+      offsetX = gesture.$slideEl.offset().left;
7287
+      offsetY = gesture.$slideEl.offset().top;
7288
+      diffX = offsetX + slideWidth / 2 - touchX;
7289
+      diffY = offsetY + slideHeight / 2 - touchY;
7290
+      imageWidth = gesture.$imageEl[0].offsetWidth;
7291
+      imageHeight = gesture.$imageEl[0].offsetHeight;
7292
+      scaledWidth = imageWidth * zoom.scale;
7293
+      scaledHeight = imageHeight * zoom.scale;
7294
+      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
7295
+      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
7296
+      translateMaxX = -translateMinX;
7297
+      translateMaxY = -translateMinY;
7298
+      translateX = diffX * zoom.scale;
7299
+      translateY = diffY * zoom.scale;
7300
+
7301
+      if (translateX < translateMinX) {
7302
+        translateX = translateMinX;
7303
+      }
7304
+
7305
+      if (translateX > translateMaxX) {
7306
+        translateX = translateMaxX;
7307
+      }
7308
+
7309
+      if (translateY < translateMinY) {
7310
+        translateY = translateMinY;
7311
+      }
7312
+
7313
+      if (translateY > translateMaxY) {
7314
+        translateY = translateMaxY;
7315
+      }
7316
+    } else {
7317
+      translateX = 0;
7318
+      translateY = 0;
7319
+    }
7320
+
7321
+    gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
7322
+    gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7323
+  },
7324
+  out: function out() {
7325
+    var swiper = this;
7326
+    var zoom = swiper.zoom;
7327
+    var params = swiper.params.zoom;
7328
+    var gesture = zoom.gesture;
7329
+
7330
+    if (!gesture.$slideEl) {
7331
+      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7332
+        gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7333
+      } else {
7334
+        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7335
+      }
7336
+
7337
+      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7338
+      gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7339
+    }
7340
+
7341
+    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7342
+    zoom.scale = 1;
7343
+    zoom.currentScale = 1;
7344
+    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
7345
+    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
7346
+    gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
7347
+    gesture.$slideEl = undefined;
7348
+  },
7349
+  toggleGestures: function toggleGestures(method) {
7350
+    var swiper = this;
7351
+    var zoom = swiper.zoom;
7352
+    var selector = zoom.slideSelector,
7353
+        passive = zoom.passiveListener;
7354
+    swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
7355
+    swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
7356
+    swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
7357
+  },
7358
+  enableGestures: function enableGestures() {
7359
+    if (this.zoom.gesturesEnabled) return;
7360
+    this.zoom.gesturesEnabled = true;
7361
+    this.zoom.toggleGestures('on');
7362
+  },
7363
+  disableGestures: function disableGestures() {
7364
+    if (!this.zoom.gesturesEnabled) return;
7365
+    this.zoom.gesturesEnabled = false;
7366
+    this.zoom.toggleGestures('off');
7367
+  },
7368
+  // Attach/Detach Events
7369
+  enable: function enable() {
7370
+    var swiper = this;
7371
+    var support = swiper.support;
7372
+    var zoom = swiper.zoom;
7373
+    if (zoom.enabled) return;
7374
+    zoom.enabled = true;
7375
+    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7376
+      passive: true,
7377
+      capture: false
7378
+    } : false;
7379
+    var activeListenerWithCapture = support.passiveListener ? {
7380
+      passive: false,
7381
+      capture: true
7382
+    } : true;
7383
+    var slideSelector = "." + swiper.params.slideClass;
7384
+    swiper.zoom.passiveListener = passiveListener;
7385
+    swiper.zoom.slideSelector = slideSelector; // Scale image
7386
+
7387
+    if (support.gestures) {
7388
+      swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7389
+      swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7390
+    } else if (swiper.touchEvents.start === 'touchstart') {
7391
+      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7392
+      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7393
+      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7394
+
7395
+      if (swiper.touchEvents.cancel) {
7396
+        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7397
+      }
7398
+    } // Move image
7399
+
7400
+
7401
+    swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7402
+  },
7403
+  disable: function disable() {
7404
+    var swiper = this;
7405
+    var zoom = swiper.zoom;
7406
+    if (!zoom.enabled) return;
7407
+    var support = swiper.support;
7408
+    swiper.zoom.enabled = false;
7409
+    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7410
+      passive: true,
7411
+      capture: false
7412
+    } : false;
7413
+    var activeListenerWithCapture = support.passiveListener ? {
7414
+      passive: false,
7415
+      capture: true
7416
+    } : true;
7417
+    var slideSelector = "." + swiper.params.slideClass; // Scale image
7418
+
7419
+    if (support.gestures) {
7420
+      swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7421
+      swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7422
+    } else if (swiper.touchEvents.start === 'touchstart') {
7423
+      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7424
+      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7425
+      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7426
+
7427
+      if (swiper.touchEvents.cancel) {
7428
+        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7429
+      }
7430
+    } // Move image
7431
+
7432
+
7433
+    swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7434
+  }
7435
+};
7436
+var Zoom$1 = {
7437
+  name: 'zoom',
7438
+  params: {
7439
+    zoom: {
7440
+      enabled: false,
7441
+      maxRatio: 3,
7442
+      minRatio: 1,
7443
+      toggle: true,
7444
+      containerClass: 'swiper-zoom-container',
7445
+      zoomedSlideClass: 'swiper-slide-zoomed'
7446
+    }
7447
+  },
7448
+  create: function create() {
7449
+    var swiper = this;
7450
+    bindModuleMethods(swiper, {
7451
+      zoom: _extends({
7452
+        enabled: false,
7453
+        scale: 1,
7454
+        currentScale: 1,
7455
+        isScaling: false,
7456
+        gesture: {
7457
+          $slideEl: undefined,
7458
+          slideWidth: undefined,
7459
+          slideHeight: undefined,
7460
+          $imageEl: undefined,
7461
+          $imageWrapEl: undefined,
7462
+          maxRatio: 3
7463
+        },
7464
+        image: {
7465
+          isTouched: undefined,
7466
+          isMoved: undefined,
7467
+          currentX: undefined,
7468
+          currentY: undefined,
7469
+          minX: undefined,
7470
+          minY: undefined,
7471
+          maxX: undefined,
7472
+          maxY: undefined,
7473
+          width: undefined,
7474
+          height: undefined,
7475
+          startX: undefined,
7476
+          startY: undefined,
7477
+          touchesStart: {},
7478
+          touchesCurrent: {}
7479
+        },
7480
+        velocity: {
7481
+          x: undefined,
7482
+          y: undefined,
7483
+          prevPositionX: undefined,
7484
+          prevPositionY: undefined,
7485
+          prevTime: undefined
7486
+        }
7487
+      }, Zoom)
7488
+    });
7489
+    var scale = 1;
7490
+    Object.defineProperty(swiper.zoom, 'scale', {
7491
+      get: function get() {
7492
+        return scale;
7493
+      },
7494
+      set: function set(value) {
7495
+        if (scale !== value) {
7496
+          var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
7497
+          var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
7498
+          swiper.emit('zoomChange', value, imageEl, slideEl);
7499
+        }
7500
+
7501
+        scale = value;
7502
+      }
7503
+    });
7504
+  },
7505
+  on: {
7506
+    init: function init(swiper) {
7507
+      if (swiper.params.zoom.enabled) {
7508
+        swiper.zoom.enable();
7509
+      }
7510
+    },
7511
+    destroy: function destroy(swiper) {
7512
+      swiper.zoom.disable();
7513
+    },
7514
+    touchStart: function touchStart(swiper, e) {
7515
+      if (!swiper.zoom.enabled) return;
7516
+      swiper.zoom.onTouchStart(e);
7517
+    },
7518
+    touchEnd: function touchEnd(swiper, e) {
7519
+      if (!swiper.zoom.enabled) return;
7520
+      swiper.zoom.onTouchEnd(e);
7521
+    },
7522
+    doubleTap: function doubleTap(swiper, e) {
7523
+      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
7524
+        swiper.zoom.toggle(e);
7525
+      }
7526
+    },
7527
+    transitionEnd: function transitionEnd(swiper) {
7528
+      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
7529
+        swiper.zoom.onTransitionEnd();
7530
+      }
7531
+    },
7532
+    slideChange: function slideChange(swiper) {
7533
+      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
7534
+        swiper.zoom.onTransitionEnd();
7535
+      }
7536
+    }
7537
+  }
7538
+};
7539
+
7540
+var Lazy = {
7541
+  loadInSlide: function loadInSlide(index, loadInDuplicate) {
7542
+    if (loadInDuplicate === void 0) {
7543
+      loadInDuplicate = true;
7544
+    }
7545
+
7546
+    var swiper = this;
7547
+    var params = swiper.params.lazy;
7548
+    if (typeof index === 'undefined') return;
7549
+    if (swiper.slides.length === 0) return;
7550
+    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7551
+    var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
7552
+    var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
7553
+
7554
+    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
7555
+      $images.push($slideEl[0]);
7556
+    }
7557
+
7558
+    if ($images.length === 0) return;
7559
+    $images.each(function (imageEl) {
7560
+      var $imageEl = $(imageEl);
7561
+      $imageEl.addClass(params.loadingClass);
7562
+      var background = $imageEl.attr('data-background');
7563
+      var src = $imageEl.attr('data-src');
7564
+      var srcset = $imageEl.attr('data-srcset');
7565
+      var sizes = $imageEl.attr('data-sizes');
7566
+      var $pictureEl = $imageEl.parent('picture');
7567
+      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
7568
+        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
7569
+
7570
+        if (background) {
7571
+          $imageEl.css('background-image', "url(\"" + background + "\")");
7572
+          $imageEl.removeAttr('data-background');
7573
+        } else {
7574
+          if (srcset) {
7575
+            $imageEl.attr('srcset', srcset);
7576
+            $imageEl.removeAttr('data-srcset');
7577
+          }
7578
+
7579
+          if (sizes) {
7580
+            $imageEl.attr('sizes', sizes);
7581
+            $imageEl.removeAttr('data-sizes');
7582
+          }
7583
+
7584
+          if ($pictureEl.length) {
7585
+            $pictureEl.children('source').each(function (sourceEl) {
7586
+              var $source = $(sourceEl);
7587
+
7588
+              if ($source.attr('data-srcset')) {
7589
+                $source.attr('srcset', $source.attr('data-srcset'));
7590
+                $source.removeAttr('data-srcset');
7591
+              }
7592
+            });
7593
+          }
7594
+
7595
+          if (src) {
7596
+            $imageEl.attr('src', src);
7597
+            $imageEl.removeAttr('data-src');
7598
+          }
7599
+        }
7600
+
7601
+        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
7602
+        $slideEl.find("." + params.preloaderClass).remove();
7603
+
7604
+        if (swiper.params.loop && loadInDuplicate) {
7605
+          var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
7606
+
7607
+          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
7608
+            var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
7609
+            swiper.lazy.loadInSlide(originalSlide.index(), false);
7610
+          } else {
7611
+            var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
7612
+            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
7613
+          }
7614
+        }
7615
+
7616
+        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
7617
+
7618
+        if (swiper.params.autoHeight) {
7619
+          swiper.updateAutoHeight();
7620
+        }
7621
+      });
7622
+      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
7623
+    });
7624
+  },
7625
+  load: function load() {
7626
+    var swiper = this;
7627
+    var $wrapperEl = swiper.$wrapperEl,
7628
+        swiperParams = swiper.params,
7629
+        slides = swiper.slides,
7630
+        activeIndex = swiper.activeIndex;
7631
+    var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
7632
+    var params = swiperParams.lazy;
7633
+    var slidesPerView = swiperParams.slidesPerView;
7634
+
7635
+    if (slidesPerView === 'auto') {
7636
+      slidesPerView = 0;
7637
+    }
7638
+
7639
+    function slideExist(index) {
7640
+      if (isVirtual) {
7641
+        if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
7642
+          return true;
7643
+        }
7644
+      } else if (slides[index]) return true;
7645
+
7646
+      return false;
7647
+    }
7648
+
7649
+    function slideIndex(slideEl) {
7650
+      if (isVirtual) {
7651
+        return $(slideEl).attr('data-swiper-slide-index');
7652
+      }
7653
+
7654
+      return $(slideEl).index();
7655
+    }
7656
+
7657
+    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
7658
+
7659
+    if (swiper.params.watchSlidesVisibility) {
7660
+      $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
7661
+        var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
7662
+        swiper.lazy.loadInSlide(index);
7663
+      });
7664
+    } else if (slidesPerView > 1) {
7665
+      for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
7666
+        if (slideExist(i)) swiper.lazy.loadInSlide(i);
7667
+      }
7668
+    } else {
7669
+      swiper.lazy.loadInSlide(activeIndex);
7670
+    }
7671
+
7672
+    if (params.loadPrevNext) {
7673
+      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
7674
+        var amount = params.loadPrevNextAmount;
7675
+        var spv = slidesPerView;
7676
+        var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
7677
+        var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
7678
+
7679
+        for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
7680
+          if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
7681
+        } // Prev Slides
7682
+
7683
+
7684
+        for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
7685
+          if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
7686
+        }
7687
+      } else {
7688
+        var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
7689
+        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
7690
+        var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
7691
+        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
7692
+      }
7693
+    }
7694
+  }
7695
+};
7696
+var Lazy$1 = {
7697
+  name: 'lazy',
7698
+  params: {
7699
+    lazy: {
7700
+      enabled: false,
7701
+      loadPrevNext: false,
7702
+      loadPrevNextAmount: 1,
7703
+      loadOnTransitionStart: false,
7704
+      elementClass: 'swiper-lazy',
7705
+      loadingClass: 'swiper-lazy-loading',
7706
+      loadedClass: 'swiper-lazy-loaded',
7707
+      preloaderClass: 'swiper-lazy-preloader'
7708
+    }
7709
+  },
7710
+  create: function create() {
7711
+    var swiper = this;
7712
+    bindModuleMethods(swiper, {
7713
+      lazy: _extends({
7714
+        initialImageLoaded: false
7715
+      }, Lazy)
7716
+    });
7717
+  },
7718
+  on: {
7719
+    beforeInit: function beforeInit(swiper) {
7720
+      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
7721
+        swiper.params.preloadImages = false;
7722
+      }
7723
+    },
7724
+    init: function init(swiper) {
7725
+      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
7726
+        swiper.lazy.load();
7727
+      }
7728
+    },
7729
+    scroll: function scroll(swiper) {
7730
+      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
7731
+        swiper.lazy.load();
7732
+      }
7733
+    },
7734
+    resize: function resize(swiper) {
7735
+      if (swiper.params.lazy.enabled) {
7736
+        swiper.lazy.load();
7737
+      }
7738
+    },
7739
+    scrollbarDragMove: function scrollbarDragMove(swiper) {
7740
+      if (swiper.params.lazy.enabled) {
7741
+        swiper.lazy.load();
7742
+      }
7743
+    },
7744
+    transitionStart: function transitionStart(swiper) {
7745
+      if (swiper.params.lazy.enabled) {
7746
+        if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
7747
+          swiper.lazy.load();
7748
+        }
7749
+      }
7750
+    },
7751
+    transitionEnd: function transitionEnd(swiper) {
7752
+      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
7753
+        swiper.lazy.load();
7754
+      }
7755
+    },
7756
+    slideChange: function slideChange(swiper) {
7757
+      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
7758
+        swiper.lazy.load();
7759
+      }
7760
+    }
7761
+  }
7762
+};
7763
+
7764
+var Controller = {
7765
+  LinearSpline: function LinearSpline(x, y) {
7766
+    var binarySearch = function search() {
7767
+      var maxIndex;
7768
+      var minIndex;
7769
+      var guess;
7770
+      return function (array, val) {
7771
+        minIndex = -1;
7772
+        maxIndex = array.length;
7773
+
7774
+        while (maxIndex - minIndex > 1) {
7775
+          guess = maxIndex + minIndex >> 1;
7776
+
7777
+          if (array[guess] <= val) {
7778
+            minIndex = guess;
7779
+          } else {
7780
+            maxIndex = guess;
7781
+          }
7782
+        }
7783
+
7784
+        return maxIndex;
7785
+      };
7786
+    }();
7787
+
7788
+    this.x = x;
7789
+    this.y = y;
7790
+    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
7791
+    // (x1,y1) is the known point before given value,
7792
+    // (x3,y3) is the known point after given value.
7793
+
7794
+    var i1;
7795
+    var i3;
7796
+
7797
+    this.interpolate = function interpolate(x2) {
7798
+      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7799
+
7800
+      i3 = binarySearch(this.x, x2);
7801
+      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
7802
+      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7803
+
7804
+      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
7805
+    };
7806
+
7807
+    return this;
7808
+  },
7809
+  // xxx: for now i will just save one spline function to to
7810
+  getInterpolateFunction: function getInterpolateFunction(c) {
7811
+    var swiper = this;
7812
+
7813
+    if (!swiper.controller.spline) {
7814
+      swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
7815
+    }
7816
+  },
7817
+  setTranslate: function setTranslate(_setTranslate, byController) {
7818
+    var swiper = this;
7819
+    var controlled = swiper.controller.control;
7820
+    var multiplier;
7821
+    var controlledTranslate;
7822
+    var Swiper = swiper.constructor;
7823
+
7824
+    function setControlledTranslate(c) {
7825
+      // this will create an Interpolate function based on the snapGrids
7826
+      // x is the Grid of the scrolled scroller and y will be the controlled scroller
7827
+      // it makes sense to create this only once and recall it for the interpolation
7828
+      // the function does a lot of value caching for performance
7829
+      var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
7830
+
7831
+      if (swiper.params.controller.by === 'slide') {
7832
+        swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
7833
+        // but it did not work out
7834
+
7835
+        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
7836
+      }
7837
+
7838
+      if (!controlledTranslate || swiper.params.controller.by === 'container') {
7839
+        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
7840
+        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
7841
+      }
7842
+
7843
+      if (swiper.params.controller.inverse) {
7844
+        controlledTranslate = c.maxTranslate() - controlledTranslate;
7845
+      }
7846
+
7847
+      c.updateProgress(controlledTranslate);
7848
+      c.setTranslate(controlledTranslate, swiper);
7849
+      c.updateActiveIndex();
7850
+      c.updateSlidesClasses();
7851
+    }
7852
+
7853
+    if (Array.isArray(controlled)) {
7854
+      for (var i = 0; i < controlled.length; i += 1) {
7855
+        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7856
+          setControlledTranslate(controlled[i]);
7857
+        }
7858
+      }
7859
+    } else if (controlled instanceof Swiper && byController !== controlled) {
7860
+      setControlledTranslate(controlled);
7861
+    }
7862
+  },
7863
+  setTransition: function setTransition(duration, byController) {
7864
+    var swiper = this;
7865
+    var Swiper = swiper.constructor;
7866
+    var controlled = swiper.controller.control;
7867
+    var i;
7868
+
7869
+    function setControlledTransition(c) {
7870
+      c.setTransition(duration, swiper);
7871
+
7872
+      if (duration !== 0) {
7873
+        c.transitionStart();
7874
+
7875
+        if (c.params.autoHeight) {
7876
+          nextTick(function () {
7877
+            c.updateAutoHeight();
7878
+          });
7879
+        }
7880
+
7881
+        c.$wrapperEl.transitionEnd(function () {
7882
+          if (!controlled) return;
7883
+
7884
+          if (c.params.loop && swiper.params.controller.by === 'slide') {
7885
+            c.loopFix();
7886
+          }
7887
+
7888
+          c.transitionEnd();
7889
+        });
7890
+      }
7891
+    }
7892
+
7893
+    if (Array.isArray(controlled)) {
7894
+      for (i = 0; i < controlled.length; i += 1) {
7895
+        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7896
+          setControlledTransition(controlled[i]);
7897
+        }
7898
+      }
7899
+    } else if (controlled instanceof Swiper && byController !== controlled) {
7900
+      setControlledTransition(controlled);
7901
+    }
7902
+  }
7903
+};
7904
+var Controller$1 = {
7905
+  name: 'controller',
7906
+  params: {
7907
+    controller: {
7908
+      control: undefined,
7909
+      inverse: false,
7910
+      by: 'slide' // or 'container'
7911
+
7912
+    }
7913
+  },
7914
+  create: function create() {
7915
+    var swiper = this;
7916
+    bindModuleMethods(swiper, {
7917
+      controller: _extends({
7918
+        control: swiper.params.controller.control
7919
+      }, Controller)
7920
+    });
7921
+  },
7922
+  on: {
7923
+    update: function update(swiper) {
7924
+      if (!swiper.controller.control) return;
7925
+
7926
+      if (swiper.controller.spline) {
7927
+        swiper.controller.spline = undefined;
7928
+        delete swiper.controller.spline;
7929
+      }
7930
+    },
7931
+    resize: function resize(swiper) {
7932
+      if (!swiper.controller.control) return;
7933
+
7934
+      if (swiper.controller.spline) {
7935
+        swiper.controller.spline = undefined;
7936
+        delete swiper.controller.spline;
7937
+      }
7938
+    },
7939
+    observerUpdate: function observerUpdate(swiper) {
7940
+      if (!swiper.controller.control) return;
7941
+
7942
+      if (swiper.controller.spline) {
7943
+        swiper.controller.spline = undefined;
7944
+        delete swiper.controller.spline;
7945
+      }
7946
+    },
7947
+    setTranslate: function setTranslate(swiper, translate, byController) {
7948
+      if (!swiper.controller.control) return;
7949
+      swiper.controller.setTranslate(translate, byController);
7950
+    },
7951
+    setTransition: function setTransition(swiper, duration, byController) {
7952
+      if (!swiper.controller.control) return;
7953
+      swiper.controller.setTransition(duration, byController);
7954
+    }
7955
+  }
7956
+};
7957
+
7958
+var A11y = {
7959
+  getRandomNumber: function getRandomNumber(size) {
7960
+    if (size === void 0) {
7961
+      size = 16;
7962
+    }
7963
+
7964
+    var randomChar = function randomChar() {
7965
+      return Math.round(16 * Math.random()).toString(16);
7966
+    };
7967
+
7968
+    return 'x'.repeat(size).replace(/x/g, randomChar);
7969
+  },
7970
+  makeElFocusable: function makeElFocusable($el) {
7971
+    $el.attr('tabIndex', '0');
7972
+    return $el;
7973
+  },
7974
+  makeElNotFocusable: function makeElNotFocusable($el) {
7975
+    $el.attr('tabIndex', '-1');
7976
+    return $el;
7977
+  },
7978
+  addElRole: function addElRole($el, role) {
7979
+    $el.attr('role', role);
7980
+    return $el;
7981
+  },
7982
+  addElRoleDescription: function addElRoleDescription($el, description) {
7983
+    $el.attr('aria-role-description', description);
7984
+    return $el;
7985
+  },
7986
+  addElControls: function addElControls($el, controls) {
7987
+    $el.attr('aria-controls', controls);
7988
+    return $el;
7989
+  },
7990
+  addElLabel: function addElLabel($el, label) {
7991
+    $el.attr('aria-label', label);
7992
+    return $el;
7993
+  },
7994
+  addElId: function addElId($el, id) {
7995
+    $el.attr('id', id);
7996
+    return $el;
7997
+  },
7998
+  addElLive: function addElLive($el, live) {
7999
+    $el.attr('aria-live', live);
8000
+    return $el;
8001
+  },
8002
+  disableEl: function disableEl($el) {
8003
+    $el.attr('aria-disabled', true);
8004
+    return $el;
8005
+  },
8006
+  enableEl: function enableEl($el) {
8007
+    $el.attr('aria-disabled', false);
8008
+    return $el;
8009
+  },
8010
+  onEnterKey: function onEnterKey(e) {
8011
+    var swiper = this;
8012
+    var params = swiper.params.a11y;
8013
+    if (e.keyCode !== 13) return;
8014
+    var $targetEl = $(e.target);
8015
+
8016
+    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
8017
+      if (!(swiper.isEnd && !swiper.params.loop)) {
8018
+        swiper.slideNext();
8019
+      }
8020
+
8021
+      if (swiper.isEnd) {
8022
+        swiper.a11y.notify(params.lastSlideMessage);
8023
+      } else {
8024
+        swiper.a11y.notify(params.nextSlideMessage);
8025
+      }
8026
+    }
8027
+
8028
+    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
8029
+      if (!(swiper.isBeginning && !swiper.params.loop)) {
8030
+        swiper.slidePrev();
8031
+      }
8032
+
8033
+      if (swiper.isBeginning) {
8034
+        swiper.a11y.notify(params.firstSlideMessage);
8035
+      } else {
8036
+        swiper.a11y.notify(params.prevSlideMessage);
8037
+      }
8038
+    }
8039
+
8040
+    if (swiper.pagination && $targetEl.is("." + swiper.params.pagination.bulletClass)) {
8041
+      $targetEl[0].click();
8042
+    }
8043
+  },
8044
+  notify: function notify(message) {
8045
+    var swiper = this;
8046
+    var notification = swiper.a11y.liveRegion;
8047
+    if (notification.length === 0) return;
8048
+    notification.html('');
8049
+    notification.html(message);
8050
+  },
8051
+  updateNavigation: function updateNavigation() {
8052
+    var swiper = this;
8053
+    if (swiper.params.loop || !swiper.navigation) return;
8054
+    var _swiper$navigation = swiper.navigation,
8055
+        $nextEl = _swiper$navigation.$nextEl,
8056
+        $prevEl = _swiper$navigation.$prevEl;
8057
+
8058
+    if ($prevEl && $prevEl.length > 0) {
8059
+      if (swiper.isBeginning) {
8060
+        swiper.a11y.disableEl($prevEl);
8061
+        swiper.a11y.makeElNotFocusable($prevEl);
8062
+      } else {
8063
+        swiper.a11y.enableEl($prevEl);
8064
+        swiper.a11y.makeElFocusable($prevEl);
8065
+      }
8066
+    }
8067
+
8068
+    if ($nextEl && $nextEl.length > 0) {
8069
+      if (swiper.isEnd) {
8070
+        swiper.a11y.disableEl($nextEl);
8071
+        swiper.a11y.makeElNotFocusable($nextEl);
8072
+      } else {
8073
+        swiper.a11y.enableEl($nextEl);
8074
+        swiper.a11y.makeElFocusable($nextEl);
8075
+      }
8076
+    }
8077
+  },
8078
+  updatePagination: function updatePagination() {
8079
+    var swiper = this;
8080
+    var params = swiper.params.a11y;
8081
+
8082
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8083
+      swiper.pagination.bullets.each(function (bulletEl) {
8084
+        var $bulletEl = $(bulletEl);
8085
+        swiper.a11y.makeElFocusable($bulletEl);
8086
+
8087
+        if (!swiper.params.pagination.renderBullet) {
8088
+          swiper.a11y.addElRole($bulletEl, 'button');
8089
+          swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
8090
+        }
8091
+      });
8092
+    }
8093
+  },
8094
+  init: function init() {
8095
+    var swiper = this;
8096
+    var params = swiper.params.a11y;
8097
+    swiper.$el.append(swiper.a11y.liveRegion); // Container
8098
+
8099
+    var $containerEl = swiper.$el;
8100
+
8101
+    if (params.containerRoleDescriptionMessage) {
8102
+      swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
8103
+    }
8104
+
8105
+    if (params.containerMessage) {
8106
+      swiper.a11y.addElLabel($containerEl, params.containerMessage);
8107
+    } // Wrapper
8108
+
8109
+
8110
+    var $wrapperEl = swiper.$wrapperEl;
8111
+    var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
8112
+    var live;
8113
+    swiper.a11y.addElId($wrapperEl, wrapperId);
8114
+
8115
+    if (swiper.params.autoplay && swiper.params.autoplay.enabled) {
8116
+      live = 'off';
8117
+    } else {
8118
+      live = 'polite';
8119
+    }
8120
+
8121
+    swiper.a11y.addElLive($wrapperEl, live); // Slide
8122
+
8123
+    if (params.itemRoleDescriptionMessage) {
8124
+      swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);
8125
+    }
8126
+
8127
+    swiper.a11y.addElRole($(swiper.slides), 'group');
8128
+    swiper.slides.each(function (slideEl) {
8129
+      var $slideEl = $(slideEl);
8130
+      swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + " / " + swiper.slides.length);
8131
+    }); // Navigation
8132
+
8133
+    var $nextEl;
8134
+    var $prevEl;
8135
+
8136
+    if (swiper.navigation && swiper.navigation.$nextEl) {
8137
+      $nextEl = swiper.navigation.$nextEl;
8138
+    }
8139
+
8140
+    if (swiper.navigation && swiper.navigation.$prevEl) {
8141
+      $prevEl = swiper.navigation.$prevEl;
8142
+    }
8143
+
8144
+    if ($nextEl && $nextEl.length) {
8145
+      swiper.a11y.makeElFocusable($nextEl);
8146
+
8147
+      if ($nextEl[0].tagName !== 'BUTTON') {
8148
+        swiper.a11y.addElRole($nextEl, 'button');
8149
+        $nextEl.on('keydown', swiper.a11y.onEnterKey);
8150
+      }
8151
+
8152
+      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
8153
+      swiper.a11y.addElControls($nextEl, wrapperId);
8154
+    }
8155
+
8156
+    if ($prevEl && $prevEl.length) {
8157
+      swiper.a11y.makeElFocusable($prevEl);
8158
+
8159
+      if ($prevEl[0].tagName !== 'BUTTON') {
8160
+        swiper.a11y.addElRole($prevEl, 'button');
8161
+        $prevEl.on('keydown', swiper.a11y.onEnterKey);
8162
+      }
8163
+
8164
+      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
8165
+      swiper.a11y.addElControls($prevEl, wrapperId);
8166
+    } // Pagination
8167
+
8168
+
8169
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8170
+      swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
8171
+    }
8172
+  },
8173
+  destroy: function destroy() {
8174
+    var swiper = this;
8175
+    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
8176
+    var $nextEl;
8177
+    var $prevEl;
8178
+
8179
+    if (swiper.navigation && swiper.navigation.$nextEl) {
8180
+      $nextEl = swiper.navigation.$nextEl;
8181
+    }
8182
+
8183
+    if (swiper.navigation && swiper.navigation.$prevEl) {
8184
+      $prevEl = swiper.navigation.$prevEl;
8185
+    }
8186
+
8187
+    if ($nextEl) {
8188
+      $nextEl.off('keydown', swiper.a11y.onEnterKey);
8189
+    }
8190
+
8191
+    if ($prevEl) {
8192
+      $prevEl.off('keydown', swiper.a11y.onEnterKey);
8193
+    } // Pagination
8194
+
8195
+
8196
+    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8197
+      swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
8198
+    }
8199
+  }
8200
+};
8201
+var A11y$1 = {
8202
+  name: 'a11y',
8203
+  params: {
8204
+    a11y: {
8205
+      enabled: true,
8206
+      notificationClass: 'swiper-notification',
8207
+      prevSlideMessage: 'Previous slide',
8208
+      nextSlideMessage: 'Next slide',
8209
+      firstSlideMessage: 'This is the first slide',
8210
+      lastSlideMessage: 'This is the last slide',
8211
+      paginationBulletMessage: 'Go to slide {{index}}',
8212
+      containerMessage: null,
8213
+      containerRoleDescriptionMessage: null,
8214
+      itemRoleDescriptionMessage: null
8215
+    }
8216
+  },
8217
+  create: function create() {
8218
+    var swiper = this;
8219
+    bindModuleMethods(swiper, {
8220
+      a11y: _extends(_extends({}, A11y), {}, {
8221
+        liveRegion: $("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
8222
+      })
8223
+    });
8224
+  },
8225
+  on: {
8226
+    afterInit: function afterInit(swiper) {
8227
+      if (!swiper.params.a11y.enabled) return;
8228
+      swiper.a11y.init();
8229
+      swiper.a11y.updateNavigation();
8230
+    },
8231
+    toEdge: function toEdge(swiper) {
8232
+      if (!swiper.params.a11y.enabled) return;
8233
+      swiper.a11y.updateNavigation();
8234
+    },
8235
+    fromEdge: function fromEdge(swiper) {
8236
+      if (!swiper.params.a11y.enabled) return;
8237
+      swiper.a11y.updateNavigation();
8238
+    },
8239
+    paginationUpdate: function paginationUpdate(swiper) {
8240
+      if (!swiper.params.a11y.enabled) return;
8241
+      swiper.a11y.updatePagination();
8242
+    },
8243
+    destroy: function destroy(swiper) {
8244
+      if (!swiper.params.a11y.enabled) return;
8245
+      swiper.a11y.destroy();
8246
+    }
8247
+  }
8248
+};
8249
+
8250
+var History = {
8251
+  init: function init() {
8252
+    var swiper = this;
8253
+    var window = getWindow();
8254
+    if (!swiper.params.history) return;
8255
+
8256
+    if (!window.history || !window.history.pushState) {
8257
+      swiper.params.history.enabled = false;
8258
+      swiper.params.hashNavigation.enabled = true;
8259
+      return;
8260
+    }
8261
+
8262
+    var history = swiper.history;
8263
+    history.initialized = true;
8264
+    history.paths = History.getPathValues(swiper.params.url);
8265
+    if (!history.paths.key && !history.paths.value) return;
8266
+    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
8267
+
8268
+    if (!swiper.params.history.replaceState) {
8269
+      window.addEventListener('popstate', swiper.history.setHistoryPopState);
8270
+    }
8271
+  },
8272
+  destroy: function destroy() {
8273
+    var swiper = this;
8274
+    var window = getWindow();
8275
+
8276
+    if (!swiper.params.history.replaceState) {
8277
+      window.removeEventListener('popstate', swiper.history.setHistoryPopState);
8278
+    }
8279
+  },
8280
+  setHistoryPopState: function setHistoryPopState() {
8281
+    var swiper = this;
8282
+    swiper.history.paths = History.getPathValues(swiper.params.url);
8283
+    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
8284
+  },
8285
+  getPathValues: function getPathValues(urlOverride) {
8286
+    var window = getWindow();
8287
+    var location;
8288
+
8289
+    if (urlOverride) {
8290
+      location = new URL(urlOverride);
8291
+    } else {
8292
+      location = window.location;
8293
+    }
8294
+
8295
+    var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
8296
+      return part !== '';
8297
+    });
8298
+    var total = pathArray.length;
8299
+    var key = pathArray[total - 2];
8300
+    var value = pathArray[total - 1];
8301
+    return {
8302
+      key: key,
8303
+      value: value
8304
+    };
8305
+  },
8306
+  setHistory: function setHistory(key, index) {
8307
+    var swiper = this;
8308
+    var window = getWindow();
8309
+    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
8310
+    var location;
8311
+
8312
+    if (swiper.params.url) {
8313
+      location = new URL(swiper.params.url);
8314
+    } else {
8315
+      location = window.location;
8316
+    }
8317
+
8318
+    var slide = swiper.slides.eq(index);
8319
+    var value = History.slugify(slide.attr('data-history'));
8320
+
8321
+    if (!location.pathname.includes(key)) {
8322
+      value = key + "/" + value;
8323
+    }
8324
+
8325
+    var currentState = window.history.state;
8326
+
8327
+    if (currentState && currentState.value === value) {
8328
+      return;
8329
+    }
8330
+
8331
+    if (swiper.params.history.replaceState) {
8332
+      window.history.replaceState({
8333
+        value: value
8334
+      }, null, value);
8335
+    } else {
8336
+      window.history.pushState({
8337
+        value: value
8338
+      }, null, value);
8339
+    }
8340
+  },
8341
+  slugify: function slugify(text) {
8342
+    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
8343
+  },
8344
+  scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
8345
+    var swiper = this;
8346
+
8347
+    if (value) {
8348
+      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8349
+        var slide = swiper.slides.eq(i);
8350
+        var slideHistory = History.slugify(slide.attr('data-history'));
8351
+
8352
+        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8353
+          var index = slide.index();
8354
+          swiper.slideTo(index, speed, runCallbacks);
8355
+        }
8356
+      }
8357
+    } else {
8358
+      swiper.slideTo(0, speed, runCallbacks);
8359
+    }
8360
+  }
8361
+};
8362
+var History$1 = {
8363
+  name: 'history',
8364
+  params: {
8365
+    history: {
8366
+      enabled: false,
8367
+      replaceState: false,
8368
+      key: 'slides'
8369
+    }
8370
+  },
8371
+  create: function create() {
8372
+    var swiper = this;
8373
+    bindModuleMethods(swiper, {
8374
+      history: _extends({}, History)
8375
+    });
8376
+  },
8377
+  on: {
8378
+    init: function init(swiper) {
8379
+      if (swiper.params.history.enabled) {
8380
+        swiper.history.init();
8381
+      }
8382
+    },
8383
+    destroy: function destroy(swiper) {
8384
+      if (swiper.params.history.enabled) {
8385
+        swiper.history.destroy();
8386
+      }
8387
+    },
8388
+    transitionEnd: function transitionEnd(swiper) {
8389
+      if (swiper.history.initialized) {
8390
+        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8391
+      }
8392
+    },
8393
+    slideChange: function slideChange(swiper) {
8394
+      if (swiper.history.initialized && swiper.params.cssMode) {
8395
+        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8396
+      }
8397
+    }
8398
+  }
8399
+};
8400
+
8401
+var HashNavigation = {
8402
+  onHashCange: function onHashCange() {
8403
+    var swiper = this;
8404
+    var document = getDocument();
8405
+    swiper.emit('hashChange');
8406
+    var newHash = document.location.hash.replace('#', '');
8407
+    var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
8408
+
8409
+    if (newHash !== activeSlideHash) {
8410
+      var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
8411
+      if (typeof newIndex === 'undefined') return;
8412
+      swiper.slideTo(newIndex);
8413
+    }
8414
+  },
8415
+  setHash: function setHash() {
8416
+    var swiper = this;
8417
+    var window = getWindow();
8418
+    var document = getDocument();
8419
+    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
8420
+
8421
+    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
8422
+      window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
8423
+      swiper.emit('hashSet');
8424
+    } else {
8425
+      var slide = swiper.slides.eq(swiper.activeIndex);
8426
+      var hash = slide.attr('data-hash') || slide.attr('data-history');
8427
+      document.location.hash = hash || '';
8428
+      swiper.emit('hashSet');
8429
+    }
8430
+  },
8431
+  init: function init() {
8432
+    var swiper = this;
8433
+    var document = getDocument();
8434
+    var window = getWindow();
8435
+    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
8436
+    swiper.hashNavigation.initialized = true;
8437
+    var hash = document.location.hash.replace('#', '');
8438
+
8439
+    if (hash) {
8440
+      var speed = 0;
8441
+
8442
+      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8443
+        var slide = swiper.slides.eq(i);
8444
+        var slideHash = slide.attr('data-hash') || slide.attr('data-history');
8445
+
8446
+        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8447
+          var index = slide.index();
8448
+          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
8449
+        }
8450
+      }
8451
+    }
8452
+
8453
+    if (swiper.params.hashNavigation.watchState) {
8454
+      $(window).on('hashchange', swiper.hashNavigation.onHashCange);
8455
+    }
8456
+  },
8457
+  destroy: function destroy() {
8458
+    var swiper = this;
8459
+    var window = getWindow();
8460
+
8461
+    if (swiper.params.hashNavigation.watchState) {
8462
+      $(window).off('hashchange', swiper.hashNavigation.onHashCange);
8463
+    }
8464
+  }
8465
+};
8466
+var HashNavigation$1 = {
8467
+  name: 'hash-navigation',
8468
+  params: {
8469
+    hashNavigation: {
8470
+      enabled: false,
8471
+      replaceState: false,
8472
+      watchState: false
8473
+    }
8474
+  },
8475
+  create: function create() {
8476
+    var swiper = this;
8477
+    bindModuleMethods(swiper, {
8478
+      hashNavigation: _extends({
8479
+        initialized: false
8480
+      }, HashNavigation)
8481
+    });
8482
+  },
8483
+  on: {
8484
+    init: function init(swiper) {
8485
+      if (swiper.params.hashNavigation.enabled) {
8486
+        swiper.hashNavigation.init();
8487
+      }
8488
+    },
8489
+    destroy: function destroy(swiper) {
8490
+      if (swiper.params.hashNavigation.enabled) {
8491
+        swiper.hashNavigation.destroy();
8492
+      }
8493
+    },
8494
+    transitionEnd: function transitionEnd(swiper) {
8495
+      if (swiper.hashNavigation.initialized) {
8496
+        swiper.hashNavigation.setHash();
8497
+      }
8498
+    },
8499
+    slideChange: function slideChange(swiper) {
8500
+      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
8501
+        swiper.hashNavigation.setHash();
8502
+      }
8503
+    }
8504
+  }
8505
+};
8506
+
8507
+var Autoplay = {
8508
+  run: function run() {
8509
+    var swiper = this;
8510
+    var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
8511
+    var delay = swiper.params.autoplay.delay;
8512
+
8513
+    if ($activeSlideEl.attr('data-swiper-autoplay')) {
8514
+      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
8515
+    }
8516
+
8517
+    clearTimeout(swiper.autoplay.timeout);
8518
+    swiper.autoplay.timeout = nextTick(function () {
8519
+      var autoplayResult;
8520
+
8521
+      if (swiper.params.autoplay.reverseDirection) {
8522
+        if (swiper.params.loop) {
8523
+          swiper.loopFix();
8524
+          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
8525
+          swiper.emit('autoplay');
8526
+        } else if (!swiper.isBeginning) {
8527
+          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
8528
+          swiper.emit('autoplay');
8529
+        } else if (!swiper.params.autoplay.stopOnLastSlide) {
8530
+          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
8531
+          swiper.emit('autoplay');
8532
+        } else {
8533
+          swiper.autoplay.stop();
8534
+        }
8535
+      } else if (swiper.params.loop) {
8536
+        swiper.loopFix();
8537
+        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
8538
+        swiper.emit('autoplay');
8539
+      } else if (!swiper.isEnd) {
8540
+        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
8541
+        swiper.emit('autoplay');
8542
+      } else if (!swiper.params.autoplay.stopOnLastSlide) {
8543
+        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
8544
+        swiper.emit('autoplay');
8545
+      } else {
8546
+        swiper.autoplay.stop();
8547
+      }
8548
+
8549
+      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {
8550
+        swiper.autoplay.run();
8551
+      }
8552
+    }, delay);
8553
+  },
8554
+  start: function start() {
8555
+    var swiper = this;
8556
+    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
8557
+    if (swiper.autoplay.running) return false;
8558
+    swiper.autoplay.running = true;
8559
+    swiper.emit('autoplayStart');
8560
+    swiper.autoplay.run();
8561
+    return true;
8562
+  },
8563
+  stop: function stop() {
8564
+    var swiper = this;
8565
+    if (!swiper.autoplay.running) return false;
8566
+    if (typeof swiper.autoplay.timeout === 'undefined') return false;
8567
+
8568
+    if (swiper.autoplay.timeout) {
8569
+      clearTimeout(swiper.autoplay.timeout);
8570
+      swiper.autoplay.timeout = undefined;
8571
+    }
8572
+
8573
+    swiper.autoplay.running = false;
8574
+    swiper.emit('autoplayStop');
8575
+    return true;
8576
+  },
8577
+  pause: function pause(speed) {
8578
+    var swiper = this;
8579
+    if (!swiper.autoplay.running) return;
8580
+    if (swiper.autoplay.paused) return;
8581
+    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
8582
+    swiper.autoplay.paused = true;
8583
+
8584
+    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
8585
+      swiper.autoplay.paused = false;
8586
+      swiper.autoplay.run();
8587
+    } else {
8588
+      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8589
+      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8590
+    }
8591
+  },
8592
+  onVisibilityChange: function onVisibilityChange() {
8593
+    var swiper = this;
8594
+    var document = getDocument();
8595
+
8596
+    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
8597
+      swiper.autoplay.pause();
8598
+    }
8599
+
8600
+    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
8601
+      swiper.autoplay.run();
8602
+      swiper.autoplay.paused = false;
8603
+    }
8604
+  },
8605
+  onTransitionEnd: function onTransitionEnd(e) {
8606
+    var swiper = this;
8607
+    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
8608
+    if (e.target !== swiper.$wrapperEl[0]) return;
8609
+    swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8610
+    swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8611
+    swiper.autoplay.paused = false;
8612
+
8613
+    if (!swiper.autoplay.running) {
8614
+      swiper.autoplay.stop();
8615
+    } else {
8616
+      swiper.autoplay.run();
8617
+    }
8618
+  }
8619
+};
8620
+var Autoplay$1 = {
8621
+  name: 'autoplay',
8622
+  params: {
8623
+    autoplay: {
8624
+      enabled: false,
8625
+      delay: 3000,
8626
+      waitForTransition: true,
8627
+      disableOnInteraction: true,
8628
+      stopOnLastSlide: false,
8629
+      reverseDirection: false
8630
+    }
8631
+  },
8632
+  create: function create() {
8633
+    var swiper = this;
8634
+    bindModuleMethods(swiper, {
8635
+      autoplay: _extends(_extends({}, Autoplay), {}, {
8636
+        running: false,
8637
+        paused: false
8638
+      })
8639
+    });
8640
+  },
8641
+  on: {
8642
+    init: function init(swiper) {
8643
+      if (swiper.params.autoplay.enabled) {
8644
+        swiper.autoplay.start();
8645
+        var document = getDocument();
8646
+        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8647
+      }
8648
+    },
8649
+    beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
8650
+      if (swiper.autoplay.running) {
8651
+        if (internal || !swiper.params.autoplay.disableOnInteraction) {
8652
+          swiper.autoplay.pause(speed);
8653
+        } else {
8654
+          swiper.autoplay.stop();
8655
+        }
8656
+      }
8657
+    },
8658
+    sliderFirstMove: function sliderFirstMove(swiper) {
8659
+      if (swiper.autoplay.running) {
8660
+        if (swiper.params.autoplay.disableOnInteraction) {
8661
+          swiper.autoplay.stop();
8662
+        } else {
8663
+          swiper.autoplay.pause();
8664
+        }
8665
+      }
8666
+    },
8667
+    touchEnd: function touchEnd(swiper) {
8668
+      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
8669
+        swiper.autoplay.run();
8670
+      }
8671
+    },
8672
+    destroy: function destroy(swiper) {
8673
+      if (swiper.autoplay.running) {
8674
+        swiper.autoplay.stop();
8675
+      }
8676
+
8677
+      var document = getDocument();
8678
+      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8679
+    }
8680
+  }
8681
+};
8682
+
8683
+var Fade = {
8684
+  setTranslate: function setTranslate() {
8685
+    var swiper = this;
8686
+    var slides = swiper.slides;
8687
+
8688
+    for (var i = 0; i < slides.length; i += 1) {
8689
+      var $slideEl = swiper.slides.eq(i);
8690
+      var offset = $slideEl[0].swiperSlideOffset;
8691
+      var tx = -offset;
8692
+      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
8693
+      var ty = 0;
8694
+
8695
+      if (!swiper.isHorizontal()) {
8696
+        ty = tx;
8697
+        tx = 0;
8698
+      }
8699
+
8700
+      var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
8701
+      $slideEl.css({
8702
+        opacity: slideOpacity
8703
+      }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
8704
+    }
8705
+  },
8706
+  setTransition: function setTransition(duration) {
8707
+    var swiper = this;
8708
+    var slides = swiper.slides,
8709
+        $wrapperEl = swiper.$wrapperEl;
8710
+    slides.transition(duration);
8711
+
8712
+    if (swiper.params.virtualTranslate && duration !== 0) {
8713
+      var eventTriggered = false;
8714
+      slides.transitionEnd(function () {
8715
+        if (eventTriggered) return;
8716
+        if (!swiper || swiper.destroyed) return;
8717
+        eventTriggered = true;
8718
+        swiper.animating = false;
8719
+        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8720
+
8721
+        for (var i = 0; i < triggerEvents.length; i += 1) {
8722
+          $wrapperEl.trigger(triggerEvents[i]);
8723
+        }
8724
+      });
8725
+    }
8726
+  }
8727
+};
8728
+var EffectFade = {
8729
+  name: 'effect-fade',
8730
+  params: {
8731
+    fadeEffect: {
8732
+      crossFade: false
8733
+    }
8734
+  },
8735
+  create: function create() {
8736
+    var swiper = this;
8737
+    bindModuleMethods(swiper, {
8738
+      fadeEffect: _extends({}, Fade)
8739
+    });
8740
+  },
8741
+  on: {
8742
+    beforeInit: function beforeInit(swiper) {
8743
+      if (swiper.params.effect !== 'fade') return;
8744
+      swiper.classNames.push(swiper.params.containerModifierClass + "fade");
8745
+      var overwriteParams = {
8746
+        slidesPerView: 1,
8747
+        slidesPerColumn: 1,
8748
+        slidesPerGroup: 1,
8749
+        watchSlidesProgress: true,
8750
+        spaceBetween: 0,
8751
+        virtualTranslate: true
8752
+      };
8753
+      extend$1(swiper.params, overwriteParams);
8754
+      extend$1(swiper.originalParams, overwriteParams);
8755
+    },
8756
+    setTranslate: function setTranslate(swiper) {
8757
+      if (swiper.params.effect !== 'fade') return;
8758
+      swiper.fadeEffect.setTranslate();
8759
+    },
8760
+    setTransition: function setTransition(swiper, duration) {
8761
+      if (swiper.params.effect !== 'fade') return;
8762
+      swiper.fadeEffect.setTransition(duration);
8763
+    }
8764
+  }
8765
+};
8766
+
8767
+var Cube = {
8768
+  setTranslate: function setTranslate() {
8769
+    var swiper = this;
8770
+    var $el = swiper.$el,
8771
+        $wrapperEl = swiper.$wrapperEl,
8772
+        slides = swiper.slides,
8773
+        swiperWidth = swiper.width,
8774
+        swiperHeight = swiper.height,
8775
+        rtl = swiper.rtlTranslate,
8776
+        swiperSize = swiper.size,
8777
+        browser = swiper.browser;
8778
+    var params = swiper.params.cubeEffect;
8779
+    var isHorizontal = swiper.isHorizontal();
8780
+    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8781
+    var wrapperRotate = 0;
8782
+    var $cubeShadowEl;
8783
+
8784
+    if (params.shadow) {
8785
+      if (isHorizontal) {
8786
+        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
8787
+
8788
+        if ($cubeShadowEl.length === 0) {
8789
+          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8790
+          $wrapperEl.append($cubeShadowEl);
8791
+        }
8792
+
8793
+        $cubeShadowEl.css({
8794
+          height: swiperWidth + "px"
8795
+        });
8796
+      } else {
8797
+        $cubeShadowEl = $el.find('.swiper-cube-shadow');
8798
+
8799
+        if ($cubeShadowEl.length === 0) {
8800
+          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8801
+          $el.append($cubeShadowEl);
8802
+        }
8803
+      }
8804
+    }
8805
+
8806
+    for (var i = 0; i < slides.length; i += 1) {
8807
+      var $slideEl = slides.eq(i);
8808
+      var slideIndex = i;
8809
+
8810
+      if (isVirtual) {
8811
+        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
8812
+      }
8813
+
8814
+      var slideAngle = slideIndex * 90;
8815
+      var round = Math.floor(slideAngle / 360);
8816
+
8817
+      if (rtl) {
8818
+        slideAngle = -slideAngle;
8819
+        round = Math.floor(-slideAngle / 360);
8820
+      }
8821
+
8822
+      var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8823
+      var tx = 0;
8824
+      var ty = 0;
8825
+      var tz = 0;
8826
+
8827
+      if (slideIndex % 4 === 0) {
8828
+        tx = -round * 4 * swiperSize;
8829
+        tz = 0;
8830
+      } else if ((slideIndex - 1) % 4 === 0) {
8831
+        tx = 0;
8832
+        tz = -round * 4 * swiperSize;
8833
+      } else if ((slideIndex - 2) % 4 === 0) {
8834
+        tx = swiperSize + round * 4 * swiperSize;
8835
+        tz = swiperSize;
8836
+      } else if ((slideIndex - 3) % 4 === 0) {
8837
+        tx = -swiperSize;
8838
+        tz = 3 * swiperSize + swiperSize * 4 * round;
8839
+      }
8840
+
8841
+      if (rtl) {
8842
+        tx = -tx;
8843
+      }
8844
+
8845
+      if (!isHorizontal) {
8846
+        ty = tx;
8847
+        tx = 0;
8848
+      }
8849
+
8850
+      var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
8851
+
8852
+      if (progress <= 1 && progress > -1) {
8853
+        wrapperRotate = slideIndex * 90 + progress * 90;
8854
+        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
8855
+      }
8856
+
8857
+      $slideEl.transform(transform);
8858
+
8859
+      if (params.slideShadows) {
8860
+        // Set shadows
8861
+        var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8862
+        var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8863
+
8864
+        if (shadowBefore.length === 0) {
8865
+          shadowBefore = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
8866
+          $slideEl.append(shadowBefore);
8867
+        }
8868
+
8869
+        if (shadowAfter.length === 0) {
8870
+          shadowAfter = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
8871
+          $slideEl.append(shadowAfter);
8872
+        }
8873
+
8874
+        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
8875
+        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
8876
+      }
8877
+    }
8878
+
8879
+    $wrapperEl.css({
8880
+      '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8881
+      '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8882
+      '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8883
+      'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
8884
+    });
8885
+
8886
+    if (params.shadow) {
8887
+      if (isHorizontal) {
8888
+        $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
8889
+      } else {
8890
+        var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
8891
+        var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
8892
+        var scale1 = params.shadowScale;
8893
+        var scale2 = params.shadowScale / multiplier;
8894
+        var offset = params.shadowOffset;
8895
+        $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
8896
+      }
8897
+    }
8898
+
8899
+    var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
8900
+    $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
8901
+  },
8902
+  setTransition: function setTransition(duration) {
8903
+    var swiper = this;
8904
+    var $el = swiper.$el,
8905
+        slides = swiper.slides;
8906
+    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
8907
+
8908
+    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
8909
+      $el.find('.swiper-cube-shadow').transition(duration);
8910
+    }
8911
+  }
8912
+};
8913
+var EffectCube = {
8914
+  name: 'effect-cube',
8915
+  params: {
8916
+    cubeEffect: {
8917
+      slideShadows: true,
8918
+      shadow: true,
8919
+      shadowOffset: 20,
8920
+      shadowScale: 0.94
8921
+    }
8922
+  },
8923
+  create: function create() {
8924
+    var swiper = this;
8925
+    bindModuleMethods(swiper, {
8926
+      cubeEffect: _extends({}, Cube)
8927
+    });
8928
+  },
8929
+  on: {
8930
+    beforeInit: function beforeInit(swiper) {
8931
+      if (swiper.params.effect !== 'cube') return;
8932
+      swiper.classNames.push(swiper.params.containerModifierClass + "cube");
8933
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
8934
+      var overwriteParams = {
8935
+        slidesPerView: 1,
8936
+        slidesPerColumn: 1,
8937
+        slidesPerGroup: 1,
8938
+        watchSlidesProgress: true,
8939
+        resistanceRatio: 0,
8940
+        spaceBetween: 0,
8941
+        centeredSlides: false,
8942
+        virtualTranslate: true
8943
+      };
8944
+      extend$1(swiper.params, overwriteParams);
8945
+      extend$1(swiper.originalParams, overwriteParams);
8946
+    },
8947
+    setTranslate: function setTranslate(swiper) {
8948
+      if (swiper.params.effect !== 'cube') return;
8949
+      swiper.cubeEffect.setTranslate();
8950
+    },
8951
+    setTransition: function setTransition(swiper, duration) {
8952
+      if (swiper.params.effect !== 'cube') return;
8953
+      swiper.cubeEffect.setTransition(duration);
8954
+    }
8955
+  }
8956
+};
8957
+
8958
+var Flip = {
8959
+  setTranslate: function setTranslate() {
8960
+    var swiper = this;
8961
+    var slides = swiper.slides,
8962
+        rtl = swiper.rtlTranslate;
8963
+
8964
+    for (var i = 0; i < slides.length; i += 1) {
8965
+      var $slideEl = slides.eq(i);
8966
+      var progress = $slideEl[0].progress;
8967
+
8968
+      if (swiper.params.flipEffect.limitRotation) {
8969
+        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8970
+      }
8971
+
8972
+      var offset = $slideEl[0].swiperSlideOffset;
8973
+      var rotate = -180 * progress;
8974
+      var rotateY = rotate;
8975
+      var rotateX = 0;
8976
+      var tx = -offset;
8977
+      var ty = 0;
8978
+
8979
+      if (!swiper.isHorizontal()) {
8980
+        ty = tx;
8981
+        tx = 0;
8982
+        rotateX = -rotateY;
8983
+        rotateY = 0;
8984
+      } else if (rtl) {
8985
+        rotateY = -rotateY;
8986
+      }
8987
+
8988
+      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
8989
+
8990
+      if (swiper.params.flipEffect.slideShadows) {
8991
+        // Set shadows
8992
+        var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8993
+        var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8994
+
8995
+        if (shadowBefore.length === 0) {
8996
+          shadowBefore = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
8997
+          $slideEl.append(shadowBefore);
8998
+        }
8999
+
9000
+        if (shadowAfter.length === 0) {
9001
+          shadowAfter = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
9002
+          $slideEl.append(shadowAfter);
9003
+        }
9004
+
9005
+        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
9006
+        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
9007
+      }
9008
+
9009
+      $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
9010
+    }
9011
+  },
9012
+  setTransition: function setTransition(duration) {
9013
+    var swiper = this;
9014
+    var slides = swiper.slides,
9015
+        activeIndex = swiper.activeIndex,
9016
+        $wrapperEl = swiper.$wrapperEl;
9017
+    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9018
+
9019
+    if (swiper.params.virtualTranslate && duration !== 0) {
9020
+      var eventTriggered = false; // eslint-disable-next-line
9021
+
9022
+      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
9023
+        if (eventTriggered) return;
9024
+        if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
9025
+
9026
+        eventTriggered = true;
9027
+        swiper.animating = false;
9028
+        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
9029
+
9030
+        for (var i = 0; i < triggerEvents.length; i += 1) {
9031
+          $wrapperEl.trigger(triggerEvents[i]);
9032
+        }
9033
+      });
9034
+    }
9035
+  }
9036
+};
9037
+var EffectFlip = {
9038
+  name: 'effect-flip',
9039
+  params: {
9040
+    flipEffect: {
9041
+      slideShadows: true,
9042
+      limitRotation: true
9043
+    }
9044
+  },
9045
+  create: function create() {
9046
+    var swiper = this;
9047
+    bindModuleMethods(swiper, {
9048
+      flipEffect: _extends({}, Flip)
9049
+    });
9050
+  },
9051
+  on: {
9052
+    beforeInit: function beforeInit(swiper) {
9053
+      if (swiper.params.effect !== 'flip') return;
9054
+      swiper.classNames.push(swiper.params.containerModifierClass + "flip");
9055
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9056
+      var overwriteParams = {
9057
+        slidesPerView: 1,
9058
+        slidesPerColumn: 1,
9059
+        slidesPerGroup: 1,
9060
+        watchSlidesProgress: true,
9061
+        spaceBetween: 0,
9062
+        virtualTranslate: true
9063
+      };
9064
+      extend$1(swiper.params, overwriteParams);
9065
+      extend$1(swiper.originalParams, overwriteParams);
9066
+    },
9067
+    setTranslate: function setTranslate(swiper) {
9068
+      if (swiper.params.effect !== 'flip') return;
9069
+      swiper.flipEffect.setTranslate();
9070
+    },
9071
+    setTransition: function setTransition(swiper, duration) {
9072
+      if (swiper.params.effect !== 'flip') return;
9073
+      swiper.flipEffect.setTransition(duration);
9074
+    }
9075
+  }
9076
+};
9077
+
9078
+var Coverflow = {
9079
+  setTranslate: function setTranslate() {
9080
+    var swiper = this;
9081
+    var swiperWidth = swiper.width,
9082
+        swiperHeight = swiper.height,
9083
+        slides = swiper.slides,
9084
+        slidesSizesGrid = swiper.slidesSizesGrid;
9085
+    var params = swiper.params.coverflowEffect;
9086
+    var isHorizontal = swiper.isHorizontal();
9087
+    var transform = swiper.translate;
9088
+    var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
9089
+    var rotate = isHorizontal ? params.rotate : -params.rotate;
9090
+    var translate = params.depth; // Each slide offset from center
9091
+
9092
+    for (var i = 0, length = slides.length; i < length; i += 1) {
9093
+      var $slideEl = slides.eq(i);
9094
+      var slideSize = slidesSizesGrid[i];
9095
+      var slideOffset = $slideEl[0].swiperSlideOffset;
9096
+      var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
9097
+      var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
9098
+      var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
9099
+
9100
+      var translateZ = -translate * Math.abs(offsetMultiplier);
9101
+      var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
9102
+
9103
+      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
9104
+        stretch = parseFloat(params.stretch) / 100 * slideSize;
9105
+      }
9106
+
9107
+      var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
9108
+      var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
9109
+      var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
9110
+
9111
+      if (Math.abs(translateX) < 0.001) translateX = 0;
9112
+      if (Math.abs(translateY) < 0.001) translateY = 0;
9113
+      if (Math.abs(translateZ) < 0.001) translateZ = 0;
9114
+      if (Math.abs(rotateY) < 0.001) rotateY = 0;
9115
+      if (Math.abs(rotateX) < 0.001) rotateX = 0;
9116
+      if (Math.abs(scale) < 0.001) scale = 0;
9117
+      var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
9118
+      $slideEl.transform(slideTransform);
9119
+      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
9120
+
9121
+      if (params.slideShadows) {
9122
+        // Set shadows
9123
+        var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
9124
+        var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9125
+
9126
+        if ($shadowBeforeEl.length === 0) {
9127
+          $shadowBeforeEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
9128
+          $slideEl.append($shadowBeforeEl);
9129
+        }
9130
+
9131
+        if ($shadowAfterEl.length === 0) {
9132
+          $shadowAfterEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
9133
+          $slideEl.append($shadowAfterEl);
9134
+        }
9135
+
9136
+        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
9137
+        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
9138
+      }
9139
+    }
9140
+  },
9141
+  setTransition: function setTransition(duration) {
9142
+    var swiper = this;
9143
+    swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9144
+  }
9145
+};
9146
+var EffectCoverflow = {
9147
+  name: 'effect-coverflow',
9148
+  params: {
9149
+    coverflowEffect: {
9150
+      rotate: 50,
9151
+      stretch: 0,
9152
+      depth: 100,
9153
+      scale: 1,
9154
+      modifier: 1,
9155
+      slideShadows: true
9156
+    }
9157
+  },
9158
+  create: function create() {
9159
+    var swiper = this;
9160
+    bindModuleMethods(swiper, {
9161
+      coverflowEffect: _extends({}, Coverflow)
9162
+    });
9163
+  },
9164
+  on: {
9165
+    beforeInit: function beforeInit(swiper) {
9166
+      if (swiper.params.effect !== 'coverflow') return;
9167
+      swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
9168
+      swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9169
+      swiper.params.watchSlidesProgress = true;
9170
+      swiper.originalParams.watchSlidesProgress = true;
9171
+    },
9172
+    setTranslate: function setTranslate(swiper) {
9173
+      if (swiper.params.effect !== 'coverflow') return;
9174
+      swiper.coverflowEffect.setTranslate();
9175
+    },
9176
+    setTransition: function setTransition(swiper, duration) {
9177
+      if (swiper.params.effect !== 'coverflow') return;
9178
+      swiper.coverflowEffect.setTransition(duration);
9179
+    }
9180
+  }
9181
+};
9182
+
9183
+var Thumbs = {
9184
+  init: function init() {
9185
+    var swiper = this;
9186
+    var thumbsParams = swiper.params.thumbs;
9187
+    if (swiper.thumbs.initialized) return false;
9188
+    swiper.thumbs.initialized = true;
9189
+    var SwiperClass = swiper.constructor;
9190
+
9191
+    if (thumbsParams.swiper instanceof SwiperClass) {
9192
+      swiper.thumbs.swiper = thumbsParams.swiper;
9193
+      extend$1(swiper.thumbs.swiper.originalParams, {
9194
+        watchSlidesProgress: true,
9195
+        slideToClickedSlide: false
9196
+      });
9197
+      extend$1(swiper.thumbs.swiper.params, {
9198
+        watchSlidesProgress: true,
9199
+        slideToClickedSlide: false
9200
+      });
9201
+    } else if (isObject$1(thumbsParams.swiper)) {
9202
+      swiper.thumbs.swiper = new SwiperClass(extend$1({}, thumbsParams.swiper, {
9203
+        watchSlidesVisibility: true,
9204
+        watchSlidesProgress: true,
9205
+        slideToClickedSlide: false
9206
+      }));
9207
+      swiper.thumbs.swiperCreated = true;
9208
+    }
9209
+
9210
+    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
9211
+    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
9212
+    return true;
9213
+  },
9214
+  onThumbClick: function onThumbClick() {
9215
+    var swiper = this;
9216
+    var thumbsSwiper = swiper.thumbs.swiper;
9217
+    if (!thumbsSwiper) return;
9218
+    var clickedIndex = thumbsSwiper.clickedIndex;
9219
+    var clickedSlide = thumbsSwiper.clickedSlide;
9220
+    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
9221
+    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
9222
+    var slideToIndex;
9223
+
9224
+    if (thumbsSwiper.params.loop) {
9225
+      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
9226
+    } else {
9227
+      slideToIndex = clickedIndex;
9228
+    }
9229
+
9230
+    if (swiper.params.loop) {
9231
+      var currentIndex = swiper.activeIndex;
9232
+
9233
+      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
9234
+        swiper.loopFix(); // eslint-disable-next-line
9235
+
9236
+        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
9237
+        currentIndex = swiper.activeIndex;
9238
+      }
9239
+
9240
+      var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9241
+      var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9242
+      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
9243
+    }
9244
+
9245
+    swiper.slideTo(slideToIndex);
9246
+  },
9247
+  update: function update(initial) {
9248
+    var swiper = this;
9249
+    var thumbsSwiper = swiper.thumbs.swiper;
9250
+    if (!thumbsSwiper) return;
9251
+    var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
9252
+    var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
9253
+    var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
9254
+
9255
+    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
9256
+      var currentThumbsIndex = thumbsSwiper.activeIndex;
9257
+      var newThumbsIndex;
9258
+      var direction;
9259
+
9260
+      if (thumbsSwiper.params.loop) {
9261
+        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
9262
+          thumbsSwiper.loopFix(); // eslint-disable-next-line
9263
+
9264
+          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
9265
+          currentThumbsIndex = thumbsSwiper.activeIndex;
9266
+        } // Find actual thumbs index to slide to
9267
+
9268
+
9269
+        var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9270
+        var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9271
+        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
9272
+        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
9273
+      } else {
9274
+        newThumbsIndex = swiper.realIndex;
9275
+        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
9276
+      }
9277
+
9278
+      if (useOffset) {
9279
+        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
9280
+      }
9281
+
9282
+      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
9283
+        if (thumbsSwiper.params.centeredSlides) {
9284
+          if (newThumbsIndex > currentThumbsIndex) {
9285
+            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
9286
+          } else {
9287
+            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
9288
+          }
9289
+        } else if (newThumbsIndex > currentThumbsIndex) {
9290
+          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
9291
+        }
9292
+
9293
+        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
9294
+      }
9295
+    } // Activate thumbs
9296
+
9297
+
9298
+    var thumbsToActivate = 1;
9299
+    var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
9300
+
9301
+    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
9302
+      thumbsToActivate = swiper.params.slidesPerView;
9303
+    }
9304
+
9305
+    if (!swiper.params.thumbs.multipleActiveThumbs) {
9306
+      thumbsToActivate = 1;
9307
+    }
9308
+
9309
+    thumbsToActivate = Math.floor(thumbsToActivate);
9310
+    thumbsSwiper.slides.removeClass(thumbActiveClass);
9311
+
9312
+    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
9313
+      for (var i = 0; i < thumbsToActivate; i += 1) {
9314
+        thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
9315
+      }
9316
+    } else {
9317
+      for (var _i = 0; _i < thumbsToActivate; _i += 1) {
9318
+        thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
9319
+      }
9320
+    }
9321
+  }
9322
+};
9323
+var Thumbs$1 = {
9324
+  name: 'thumbs',
9325
+  params: {
9326
+    thumbs: {
9327
+      swiper: null,
9328
+      multipleActiveThumbs: true,
9329
+      autoScrollOffset: 0,
9330
+      slideThumbActiveClass: 'swiper-slide-thumb-active',
9331
+      thumbsContainerClass: 'swiper-container-thumbs'
9332
+    }
9333
+  },
9334
+  create: function create() {
9335
+    var swiper = this;
9336
+    bindModuleMethods(swiper, {
9337
+      thumbs: _extends({
9338
+        swiper: null,
9339
+        initialized: false
9340
+      }, Thumbs)
9341
+    });
9342
+  },
9343
+  on: {
9344
+    beforeInit: function beforeInit(swiper) {
9345
+      var thumbs = swiper.params.thumbs;
9346
+      if (!thumbs || !thumbs.swiper) return;
9347
+      swiper.thumbs.init();
9348
+      swiper.thumbs.update(true);
9349
+    },
9350
+    slideChange: function slideChange(swiper) {
9351
+      if (!swiper.thumbs.swiper) return;
9352
+      swiper.thumbs.update();
9353
+    },
9354
+    update: function update(swiper) {
9355
+      if (!swiper.thumbs.swiper) return;
9356
+      swiper.thumbs.update();
9357
+    },
9358
+    resize: function resize(swiper) {
9359
+      if (!swiper.thumbs.swiper) return;
9360
+      swiper.thumbs.update();
9361
+    },
9362
+    observerUpdate: function observerUpdate(swiper) {
9363
+      if (!swiper.thumbs.swiper) return;
9364
+      swiper.thumbs.update();
9365
+    },
9366
+    setTransition: function setTransition(swiper, duration) {
9367
+      var thumbsSwiper = swiper.thumbs.swiper;
9368
+      if (!thumbsSwiper) return;
9369
+      thumbsSwiper.setTransition(duration);
9370
+    },
9371
+    beforeDestroy: function beforeDestroy(swiper) {
9372
+      var thumbsSwiper = swiper.thumbs.swiper;
9373
+      if (!thumbsSwiper) return;
9374
+
9375
+      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
9376
+        thumbsSwiper.destroy();
9377
+      }
9378
+    }
9379
+  }
9380
+};
9381
+
9382
+// Swiper Class
9383
+var components = [Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y$1, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];
9384
+Swiper.use(components);
9385
+
9386
+export default Swiper;
9387
+export { Swiper };
0 9388
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+function _defineProperties(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function _createClass(e,t,i){return t&&_defineProperties(e.prototype,t),i&&_defineProperties(e,i),e}function _extends(){return(_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(e[s]=i[s])}return e}).apply(this,arguments)}function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((function(i){void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0&&extend(e[i],t[i])}))}var ssrDocument={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){var e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}var ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}},requestAnimationFrame:function(e){return"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0)},cancelAnimationFrame:function(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){var e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function _construct(e,t,i){return(_construct=_isNativeReflectConstruct()?Reflect.construct:function(e,t,i){var s=[null];s.push.apply(s,t);var a=new(Function.bind.apply(e,s));return i&&_setPrototypeOf(a,i.prototype),a}).apply(null,arguments)}function _isNativeFunction(e){return-1!==Function.toString.call(e).indexOf("[native code]")}function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function(e){if(null===e||!_isNativeFunction(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(i,e)})(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function makeReactive(e){var t=e.__proto__;Object.defineProperty(e,"__proto__",{get:function(){return t},set:function(e){t.__proto__=e}})}var Dom7=function(e){function t(t){var i;return makeReactive(_assertThisInitialized(i=e.call.apply(e,[this].concat(t))||this)),i}return _inheritsLoose(t,e),t}(_wrapNativeSuper(Array));function arrayFlat(e){void 0===e&&(e=[]);var t=[];return e.forEach((function(e){Array.isArray(e)?t.push.apply(t,arrayFlat(e)):t.push(e)})),t}function arrayFilter(e,t){return Array.prototype.filter.call(e,t)}function arrayUnique(e){for(var t=[],i=0;i<e.length;i+=1)-1===t.indexOf(e[i])&&t.push(e[i]);return t}function qsa(e,t){if("string"!=typeof e)return[e];for(var i=[],s=t.querySelectorAll(e),a=0;a<s.length;a+=1)i.push(s[a]);return i}function $(e,t){var i=getWindow(),s=getDocument(),a=[];if(!t&&e instanceof Dom7)return e;if(!e)return new Dom7(a);if("string"==typeof e){var r=e.trim();if(r.indexOf("<")>=0&&r.indexOf(">")>=0){var n="div";0===r.indexOf("<li")&&(n="ul"),0===r.indexOf("<tr")&&(n="tbody"),0!==r.indexOf("<td")&&0!==r.indexOf("<th")||(n="tr"),0===r.indexOf("<tbody")&&(n="table"),0===r.indexOf("<option")&&(n="select");var o=s.createElement(n);o.innerHTML=r;for(var l=0;l<o.childNodes.length;l+=1)a.push(o.childNodes[l])}else a=qsa(e.trim(),t||s)}else if(e.nodeType||e===i||e===s)a.push(e);else if(Array.isArray(e)){if(e instanceof Dom7)return e;a=e}return new Dom7(arrayUnique(a))}function addClass(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=arrayFlat(t.map((function(e){return e.split(" ")})));return this.forEach((function(e){var t;(t=e.classList).add.apply(t,s)})),this}function removeClass(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=arrayFlat(t.map((function(e){return e.split(" ")})));return this.forEach((function(e){var t;(t=e.classList).remove.apply(t,s)})),this}function toggleClass(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=arrayFlat(t.map((function(e){return e.split(" ")})));this.forEach((function(e){s.forEach((function(t){e.classList.toggle(t)}))}))}function hasClass(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=arrayFlat(t.map((function(e){return e.split(" ")})));return arrayFilter(this,(function(e){return s.filter((function(t){return e.classList.contains(t)})).length>0})).length>0}function attr(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(var i=0;i<this.length;i+=1)if(2===arguments.length)this[i].setAttribute(e,t);else for(var s in e)this[i][s]=e[s],this[i].setAttribute(s,e[s]);return this}function removeAttr(e){for(var t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this}function transform(e){for(var t=0;t<this.length;t+=1)this[t].style.transform=e;return this}function transition(e){for(var t=0;t<this.length;t+=1)this[t].style.transition="string"!=typeof e?e+"ms":e;return this}function on(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],n=t[3];function o(e){var t=e.target;if(t){var i=e.target.dom7EventData||[];if(i.indexOf(e)<0&&i.unshift(e),$(t).is(a))r.apply(t,i);else for(var s=$(t).parents(),n=0;n<s.length;n+=1)$(s[n]).is(a)&&r.apply(s[n],i)}}function l(e){var t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&(s=t[0],r=t[1],n=t[2],a=void 0),n||(n=!1);for(var d,h=s.split(" "),p=0;p<this.length;p+=1){var u=this[p];if(a)for(d=0;d<h.length;d+=1){var c=h[d];u.dom7LiveListeners||(u.dom7LiveListeners={}),u.dom7LiveListeners[c]||(u.dom7LiveListeners[c]=[]),u.dom7LiveListeners[c].push({listener:r,proxyListener:o}),u.addEventListener(c,o,n)}else for(d=0;d<h.length;d+=1){var v=h[d];u.dom7Listeners||(u.dom7Listeners={}),u.dom7Listeners[v]||(u.dom7Listeners[v]=[]),u.dom7Listeners[v].push({listener:r,proxyListener:l}),u.addEventListener(v,l,n)}}return this}function off(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],n=t[3];"function"==typeof t[1]&&(s=t[0],r=t[1],n=t[2],a=void 0),n||(n=!1);for(var o=s.split(" "),l=0;l<o.length;l+=1)for(var d=o[l],h=0;h<this.length;h+=1){var p=this[h],u=void 0;if(!a&&p.dom7Listeners?u=p.dom7Listeners[d]:a&&p.dom7LiveListeners&&(u=p.dom7LiveListeners[d]),u&&u.length)for(var c=u.length-1;c>=0;c-=1){var v=u[c];r&&v.listener===r||r&&v.listener&&v.listener.dom7proxy&&v.listener.dom7proxy===r?(p.removeEventListener(d,v.proxyListener,n),u.splice(c,1)):r||(p.removeEventListener(d,v.proxyListener,n),u.splice(c,1))}}return this}function trigger(){for(var e=getWindow(),t=arguments.length,i=new Array(t),s=0;s<t;s++)i[s]=arguments[s];for(var a=i[0].split(" "),r=i[1],n=0;n<a.length;n+=1)for(var o=a[n],l=0;l<this.length;l+=1){var d=this[l];if(e.CustomEvent){var h=new e.CustomEvent(o,{detail:r,bubbles:!0,cancelable:!0});d.dom7EventData=i.filter((function(e,t){return t>0})),d.dispatchEvent(h),d.dom7EventData=[],delete d.dom7EventData}}return this}function transitionEnd(e){var t=this;return e&&t.on("transitionend",(function i(s){s.target===this&&(e.call(this,s),t.off("transitionend",i))})),this}function outerWidth(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null}function outerHeight(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null}function offset(){if(this.length>0){var e=getWindow(),t=getDocument(),i=this[0],s=i.getBoundingClientRect(),a=t.body,r=i.clientTop||a.clientTop||0,n=i.clientLeft||a.clientLeft||0,o=i===e?e.scrollY:i.scrollTop,l=i===e?e.scrollX:i.scrollLeft;return{top:s.top+o-r,left:s.left+l-n}}return null}function styles(){var e=getWindow();return this[0]?e.getComputedStyle(this[0],null):{}}function css(e,t){var i,s=getWindow();if(1===arguments.length){if("string"!=typeof e){for(i=0;i<this.length;i+=1)for(var a in e)this[i].style[a]=e[a];return this}if(this[0])return s.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(i=0;i<this.length;i+=1)this[i].style[e]=t;return this}return this}function each(e){return e?(this.forEach((function(t,i){e.apply(t,[t,i])})),this):this}function filter(e){return $(arrayFilter(this,e))}function html(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(var t=0;t<this.length;t+=1)this[t].innerHTML=e;return this}function text(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(var t=0;t<this.length;t+=1)this[t].textContent=e;return this}function is(e){var t,i,s=getWindow(),a=getDocument(),r=this[0];if(!r||void 0===e)return!1;if("string"==typeof e){if(r.matches)return r.matches(e);if(r.webkitMatchesSelector)return r.webkitMatchesSelector(e);if(r.msMatchesSelector)return r.msMatchesSelector(e);for(t=$(e),i=0;i<t.length;i+=1)if(t[i]===r)return!0;return!1}if(e===a)return r===a;if(e===s)return r===s;if(e.nodeType||e instanceof Dom7){for(t=e.nodeType?[e]:e,i=0;i<t.length;i+=1)if(t[i]===r)return!0;return!1}return!1}function index(){var e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}}function eq(e){if(void 0===e)return this;var t=this.length;if(e>t-1)return $([]);if(e<0){var i=t+e;return $(i<0?[]:[this[i]])}return $([this[e]])}function append(){for(var e,t=getDocument(),i=0;i<arguments.length;i+=1){e=i<0||arguments.length<=i?void 0:arguments[i];for(var s=0;s<this.length;s+=1)if("string"==typeof e){var a=t.createElement("div");for(a.innerHTML=e;a.firstChild;)this[s].appendChild(a.firstChild)}else if(e instanceof Dom7)for(var r=0;r<e.length;r+=1)this[s].appendChild(e[r]);else this[s].appendChild(e)}return this}function prepend(e){var t,i,s=getDocument();for(t=0;t<this.length;t+=1)if("string"==typeof e){var a=s.createElement("div");for(a.innerHTML=e,i=a.childNodes.length-1;i>=0;i-=1)this[t].insertBefore(a.childNodes[i],this[t].childNodes[0])}else if(e instanceof Dom7)for(i=0;i<e.length;i+=1)this[t].insertBefore(e[i],this[t].childNodes[0]);else this[t].insertBefore(e,this[t].childNodes[0]);return this}function next(e){return this.length>0?e?this[0].nextElementSibling&&$(this[0].nextElementSibling).is(e)?$([this[0].nextElementSibling]):$([]):this[0].nextElementSibling?$([this[0].nextElementSibling]):$([]):$([])}function nextAll(e){var t=[],i=this[0];if(!i)return $([]);for(;i.nextElementSibling;){var s=i.nextElementSibling;e?$(s).is(e)&&t.push(s):t.push(s),i=s}return $(t)}function prev(e){if(this.length>0){var t=this[0];return e?t.previousElementSibling&&$(t.previousElementSibling).is(e)?$([t.previousElementSibling]):$([]):t.previousElementSibling?$([t.previousElementSibling]):$([])}return $([])}function prevAll(e){var t=[],i=this[0];if(!i)return $([]);for(;i.previousElementSibling;){var s=i.previousElementSibling;e?$(s).is(e)&&t.push(s):t.push(s),i=s}return $(t)}function parent(e){for(var t=[],i=0;i<this.length;i+=1)null!==this[i].parentNode&&(e?$(this[i].parentNode).is(e)&&t.push(this[i].parentNode):t.push(this[i].parentNode));return $(t)}function parents(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].parentNode;s;)e?$(s).is(e)&&t.push(s):t.push(s),s=s.parentNode;return $(t)}function closest(e){var t=this;return void 0===e?$([]):(t.is(e)||(t=t.parents(e).eq(0)),t)}function find(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].querySelectorAll(e),a=0;a<s.length;a+=1)t.push(s[a]);return $(t)}function children(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].children,a=0;a<s.length;a+=1)e&&!$(s[a]).is(e)||t.push(s[a]);return $(t)}function remove(){for(var e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}$.fn=Dom7.prototype;var support,device,browser,Methods={addClass:addClass,removeClass:removeClass,hasClass:hasClass,toggleClass:toggleClass,attr:attr,removeAttr:removeAttr,transform:transform,transition:transition,on:on,off:off,trigger:trigger,transitionEnd:transitionEnd,outerWidth:outerWidth,outerHeight:outerHeight,styles:styles,offset:offset,css:css,each:each,html:html,text:text,is:is,index:index,eq:eq,append:append,prepend:prepend,next:next,nextAll:nextAll,prev:prev,prevAll:prevAll,parent:parent,parents:parents,closest:closest,find:find,children:children,filter:filter,remove:remove};function deleteProps(e){var t=e;Object.keys(t).forEach((function(e){try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getTranslate(e,t){void 0===t&&(t="x");var i,s,a,r=getWindow(),n=r.getComputedStyle(e,null);return r.WebKitCSSMatrix?((s=n.transform||n.webkitTransform).split(",").length>6&&(s=s.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),a=new r.WebKitCSSMatrix("none"===s?"":s)):i=(a=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(s=r.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(s=r.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),s||0}function isObject$1(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object}function extend$1(){for(var e=Object(arguments.length<=0?void 0:arguments[0]),t=1;t<arguments.length;t+=1){var i=t<0||arguments.length<=t?void 0:arguments[t];if(null!=i)for(var s=Object.keys(Object(i)),a=0,r=s.length;a<r;a+=1){var n=s[a],o=Object.getOwnPropertyDescriptor(i,n);void 0!==o&&o.enumerable&&(isObject$1(e[n])&&isObject$1(i[n])?extend$1(e[n],i[n]):!isObject$1(e[n])&&isObject$1(i[n])?(e[n]={},extend$1(e[n],i[n])):e[n]=i[n])}}return e}function bindModuleMethods(e,t){Object.keys(t).forEach((function(i){isObject$1(t[i])&&Object.keys(t[i]).forEach((function(s){"function"==typeof t[i][s]&&(t[i][s]=t[i][s].bind(e))})),e[i]=t[i]}))}function calcSupport(){var e=getWindow(),t=getDocument();return{touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),pointerEvents:!!e.PointerEvent&&"maxTouchPoints"in e.navigator&&e.navigator.maxTouchPoints>=0,observer:"MutationObserver"in e||"WebkitMutationObserver"in e,passiveListener:function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassiveListener",null,i)}catch(e){}return t}(),gestures:"ongesturestart"in e}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){var t=(void 0===e?{}:e).userAgent,i=getSupport(),s=getWindow(),a=s.navigator.platform,r=t||s.navigator.userAgent,n={ios:!1,android:!1},o=s.screen.width,l=s.screen.height,d=r.match(/(Android);?[\s\/]+([\d.]+)?/),h=r.match(/(iPad).*OS\s([\d_]+)/),p=r.match(/(iPod)(.*OS\s([\d_]+))?/),u=!h&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),c="Win32"===a,v="MacIntel"===a;return!h&&v&&i.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(o+"x"+l)>=0&&((h=r.match(/(Version)\/([\d.]+)/))||(h=[0,1,"13_0_0"]),v=!1),d&&!c&&(n.os="android",n.android=!0),(h||u||p)&&(n.os="ios",n.ios=!0),n}function getDevice(e){return void 0===e&&(e={}),device||(device=calcDevice(e)),device}function calcBrowser(){var e,t=getWindow();return{isEdge:!!t.navigator.userAgent.match(/Edge/g),isSafari:(e=t.navigator.userAgent.toLowerCase(),e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent)}}function getBrowser(){return browser||(browser=calcBrowser()),browser}Object.keys(Methods).forEach((function(e){$.fn[e]=Methods[e]}));var Resize={name:"resize",create:function(){var e=this;extend$1(e,{resize:{resizeHandler:function(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init:function(e){var t=getWindow();t.addEventListener("resize",e.resize.resizeHandler),t.addEventListener("orientationchange",e.resize.orientationChangeHandler)},destroy:function(e){var t=getWindow();t.removeEventListener("resize",e.resize.resizeHandler),t.removeEventListener("orientationchange",e.resize.orientationChangeHandler)}}},Observer={attach:function(e,t){void 0===t&&(t={});var i=getWindow(),s=this,a=new(i.MutationObserver||i.WebkitMutationObserver)((function(e){if(1!==e.length){var t=function(){s.emit("observerUpdate",e[0])};i.requestAnimationFrame?i.requestAnimationFrame(t):i.setTimeout(t,0)}else s.emit("observerUpdate",e[0])}));a.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),s.observer.observers.push(a)},init:function(){if(this.support.observer&&this.params.observer){if(this.params.observeParents)for(var e=this.$el.parents(),t=0;t<e.length;t+=1)this.observer.attach(e[t]);this.observer.attach(this.$el[0],{childList:this.params.observeSlideChildren}),this.observer.attach(this.$wrapperEl[0],{attributes:!1})}},destroy:function(){this.observer.observers.forEach((function(e){e.disconnect()})),this.observer.observers=[]}},Observer$1={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create:function(){bindModuleMethods(this,{observer:_extends(_extends({},Observer),{},{observers:[]})})},on:{init:function(e){e.observer.init()},destroy:function(e){e.observer.destroy()}}},modular={useParams:function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i];s.params&&extend$1(e,s.params)}))},useModules:function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i],a=e[i]||{};s.on&&t.on&&Object.keys(s.on).forEach((function(e){t.on(e,s.on[e])})),s.create&&s.create.bind(t)(a)}))}},eventsEmitter={on:function(e,t,i){var s=this;if("function"!=typeof t)return s;var a=i?"unshift":"push";return e.split(" ").forEach((function(e){s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][a](t)})),s},once:function(e,t,i){var s=this;if("function"!=typeof t)return s;function a(){s.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];t.apply(s,r)}return a.__emitterProxy=t,s.on(e,a,i)},onAny:function(e,t){if("function"!=typeof e)return this;var i=t?"unshift":"push";return this.eventsAnyListeners.indexOf(e)<0&&this.eventsAnyListeners[i](e),this},offAny:function(e){if(!this.eventsAnyListeners)return this;var t=this.eventsAnyListeners.indexOf(e);return t>=0&&this.eventsAnyListeners.splice(t,1),this},off:function(e,t){var i=this;return i.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].forEach((function(s,a){(s===t||s.__emitterProxy&&s.__emitterProxy===t)&&i.eventsListeners[e].splice(a,1)}))})),i):i},emit:function(){var e,t,i,s=this;if(!s.eventsListeners)return s;for(var a=arguments.length,r=new Array(a),n=0;n<a;n++)r[n]=arguments[n];"string"==typeof r[0]||Array.isArray(r[0])?(e=r[0],t=r.slice(1,r.length),i=s):(e=r[0].events,t=r[0].data,i=r[0].context||s),t.unshift(i);var o=Array.isArray(e)?e:e.split(" ");return o.forEach((function(e){if(s.eventsAnyListeners&&s.eventsAnyListeners.length&&s.eventsAnyListeners.forEach((function(s){s.apply(i,[e].concat(t))})),s.eventsListeners&&s.eventsListeners[e]){var a=[];s.eventsListeners[e].forEach((function(e){a.push(e)})),a.forEach((function(e){e.apply(i,t)}))}})),s}};function updateSize(){var e,t,i=this.$el;e=void 0!==this.params.width&&null!==this.params.width?this.params.width:i[0].clientWidth,t=void 0!==this.params.height&&null!==this.params.width?this.params.height:i[0].clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(i.css("padding-left")||0,10)-parseInt(i.css("padding-right")||0,10),t=t-parseInt(i.css("padding-top")||0,10)-parseInt(i.css("padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(t)&&(t=0),extend$1(this,{width:e,height:t,size:this.isHorizontal()?e:t}))}function updateSlides(){var e=getWindow(),t=this.params,i=this.$wrapperEl,s=this.size,a=this.rtlTranslate,r=this.wrongRTL,n=this.virtual&&t.virtual.enabled,o=n?this.virtual.slides.length:this.slides.length,l=i.children("."+this.params.slideClass),d=n?this.virtual.slides.length:l.length,h=[],p=[],u=[];function c(e,i){return!t.cssMode||i!==l.length-1}var v=t.slidesOffsetBefore;"function"==typeof v&&(v=t.slidesOffsetBefore.call(this));var f=t.slidesOffsetAfter;"function"==typeof f&&(f=t.slidesOffsetAfter.call(this));var m=this.snapGrid.length,g=this.snapGrid.length,w=t.spaceBetween,b=-v,y=0,x=0;if(void 0!==s){var E,T;"string"==typeof w&&w.indexOf("%")>=0&&(w=parseFloat(w.replace("%",""))/100*s),this.virtualSize=-w,a?l.css({marginLeft:"",marginTop:""}):l.css({marginRight:"",marginBottom:""}),t.slidesPerColumn>1&&(E=Math.floor(d/t.slidesPerColumn)===d/this.params.slidesPerColumn?d:Math.ceil(d/t.slidesPerColumn)*t.slidesPerColumn,"auto"!==t.slidesPerView&&"row"===t.slidesPerColumnFill&&(E=Math.max(E,t.slidesPerView*t.slidesPerColumn)));for(var C,S=t.slidesPerColumn,M=E/S,$=Math.floor(d/t.slidesPerColumn),P=0;P<d;P+=1){T=0;var z=l.eq(P);if(t.slidesPerColumn>1){var k=void 0,L=void 0,I=void 0;if("row"===t.slidesPerColumnFill&&t.slidesPerGroup>1){var D=Math.floor(P/(t.slidesPerGroup*t.slidesPerColumn)),O=P-t.slidesPerColumn*t.slidesPerGroup*D,A=0===D?t.slidesPerGroup:Math.min(Math.ceil((d-D*S*t.slidesPerGroup)/S),t.slidesPerGroup);k=(L=O-(I=Math.floor(O/A))*A+D*t.slidesPerGroup)+I*E/S,z.css({"-webkit-box-ordinal-group":k,"-moz-box-ordinal-group":k,"-ms-flex-order":k,"-webkit-order":k,order:k})}else"column"===t.slidesPerColumnFill?(I=P-(L=Math.floor(P/S))*S,(L>$||L===$&&I===S-1)&&(I+=1)>=S&&(I=0,L+=1)):L=P-(I=Math.floor(P/M))*M;z.css("margin-"+(this.isHorizontal()?"top":"left"),0!==I&&t.spaceBetween&&t.spaceBetween+"px")}if("none"!==z.css("display")){if("auto"===t.slidesPerView){var N=e.getComputedStyle(z[0],null),G=z[0].style.transform,B=z[0].style.webkitTransform;if(G&&(z[0].style.transform="none"),B&&(z[0].style.webkitTransform="none"),t.roundLengths)T=this.isHorizontal()?z.outerWidth(!0):z.outerHeight(!0);else if(this.isHorizontal()){var H=parseFloat(N.getPropertyValue("width")||0),W=parseFloat(N.getPropertyValue("padding-left")||0),F=parseFloat(N.getPropertyValue("padding-right")||0),X=parseFloat(N.getPropertyValue("margin-left")||0),_=parseFloat(N.getPropertyValue("margin-right")||0),R=N.getPropertyValue("box-sizing");if(R&&"border-box"===R)T=H+X+_;else{var Y=z[0],V=Y.clientWidth;T=H+W+F+X+_+(Y.offsetWidth-V)}}else{var q=parseFloat(N.getPropertyValue("height")||0),j=parseFloat(N.getPropertyValue("padding-top")||0),U=parseFloat(N.getPropertyValue("padding-bottom")||0),K=parseFloat(N.getPropertyValue("margin-top")||0),Z=parseFloat(N.getPropertyValue("margin-bottom")||0),J=N.getPropertyValue("box-sizing");if(J&&"border-box"===J)T=q+K+Z;else{var Q=z[0],ee=Q.clientHeight;T=q+j+U+K+Z+(Q.offsetHeight-ee)}}G&&(z[0].style.transform=G),B&&(z[0].style.webkitTransform=B),t.roundLengths&&(T=Math.floor(T))}else T=(s-(t.slidesPerView-1)*w)/t.slidesPerView,t.roundLengths&&(T=Math.floor(T)),l[P]&&(this.isHorizontal()?l[P].style.width=T+"px":l[P].style.height=T+"px");l[P]&&(l[P].swiperSlideSize=T),u.push(T),t.centeredSlides?(b=b+T/2+y/2+w,0===y&&0!==P&&(b=b-s/2-w),0===P&&(b=b-s/2-w),Math.abs(b)<.001&&(b=0),t.roundLengths&&(b=Math.floor(b)),x%t.slidesPerGroup==0&&h.push(b),p.push(b)):(t.roundLengths&&(b=Math.floor(b)),(x-Math.min(this.params.slidesPerGroupSkip,x))%this.params.slidesPerGroup==0&&h.push(b),p.push(b),b=b+T+w),this.virtualSize+=T+w,y=T,x+=1}}if(this.virtualSize=Math.max(this.virtualSize,s)+f,a&&r&&("slide"===t.effect||"coverflow"===t.effect)&&i.css({width:this.virtualSize+t.spaceBetween+"px"}),t.setWrapperSize&&(this.isHorizontal()?i.css({width:this.virtualSize+t.spaceBetween+"px"}):i.css({height:this.virtualSize+t.spaceBetween+"px"})),t.slidesPerColumn>1&&(this.virtualSize=(T+t.spaceBetween)*E,this.virtualSize=Math.ceil(this.virtualSize/t.slidesPerColumn)-t.spaceBetween,this.isHorizontal()?i.css({width:this.virtualSize+t.spaceBetween+"px"}):i.css({height:this.virtualSize+t.spaceBetween+"px"}),t.centeredSlides)){C=[];for(var te=0;te<h.length;te+=1){var ie=h[te];t.roundLengths&&(ie=Math.floor(ie)),h[te]<this.virtualSize+h[0]&&C.push(ie)}h=C}if(!t.centeredSlides){C=[];for(var se=0;se<h.length;se+=1){var ae=h[se];t.roundLengths&&(ae=Math.floor(ae)),h[se]<=this.virtualSize-s&&C.push(ae)}h=C,Math.floor(this.virtualSize-s)-Math.floor(h[h.length-1])>1&&h.push(this.virtualSize-s)}if(0===h.length&&(h=[0]),0!==t.spaceBetween&&(this.isHorizontal()?a?l.filter(c).css({marginLeft:w+"px"}):l.filter(c).css({marginRight:w+"px"}):l.filter(c).css({marginBottom:w+"px"})),t.centeredSlides&&t.centeredSlidesBounds){var re=0;u.forEach((function(e){re+=e+(t.spaceBetween?t.spaceBetween:0)}));var ne=(re-=t.spaceBetween)-s;h=h.map((function(e){return e<0?-v:e>ne?ne+f:e}))}if(t.centerInsufficientSlides){var oe=0;if(u.forEach((function(e){oe+=e+(t.spaceBetween?t.spaceBetween:0)})),(oe-=t.spaceBetween)<s){var le=(s-oe)/2;h.forEach((function(e,t){h[t]=e-le})),p.forEach((function(e,t){p[t]=e+le}))}}extend$1(this,{slides:l,snapGrid:h,slidesGrid:p,slidesSizesGrid:u}),d!==o&&this.emit("slidesLengthChange"),h.length!==m&&(this.params.watchOverflow&&this.checkOverflow(),this.emit("snapGridLengthChange")),p.length!==g&&this.emit("slidesGridLengthChange"),(t.watchSlidesProgress||t.watchSlidesVisibility)&&this.updateSlidesOffset()}}function updateAutoHeight(e){var t,i=[],s=0;if("number"==typeof e?this.setTransition(e):!0===e&&this.setTransition(this.params.speed),"auto"!==this.params.slidesPerView&&this.params.slidesPerView>1)if(this.params.centeredSlides)this.visibleSlides.each((function(e){i.push(e)}));else for(t=0;t<Math.ceil(this.params.slidesPerView);t+=1){var a=this.activeIndex+t;if(a>this.slides.length)break;i.push(this.slides.eq(a)[0])}else i.push(this.slides.eq(this.activeIndex)[0]);for(t=0;t<i.length;t+=1)if(void 0!==i[t]){var r=i[t].offsetHeight;s=r>s?r:s}s&&this.$wrapperEl.css("height",s+"px")}function updateSlidesOffset(){for(var e=this.slides,t=0;t<e.length;t+=1)e[t].swiperSlideOffset=this.isHorizontal()?e[t].offsetLeft:e[t].offsetTop}function updateSlidesProgress(e){void 0===e&&(e=this&&this.translate||0);var t=this.params,i=this.slides,s=this.rtlTranslate;if(0!==i.length){void 0===i[0].swiperSlideOffset&&this.updateSlidesOffset();var a=-e;s&&(a=e),i.removeClass(t.slideVisibleClass),this.visibleSlidesIndexes=[],this.visibleSlides=[];for(var r=0;r<i.length;r+=1){var n=i[r],o=(a+(t.centeredSlides?this.minTranslate():0)-n.swiperSlideOffset)/(n.swiperSlideSize+t.spaceBetween);if(t.watchSlidesVisibility||t.centeredSlides&&t.autoHeight){var l=-(a-n.swiperSlideOffset),d=l+this.slidesSizesGrid[r];(l>=0&&l<this.size-1||d>1&&d<=this.size||l<=0&&d>=this.size)&&(this.visibleSlides.push(n),this.visibleSlidesIndexes.push(r),i.eq(r).addClass(t.slideVisibleClass))}n.progress=s?-o:o}this.visibleSlides=$(this.visibleSlides)}}function updateProgress(e){if(void 0===e){var t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}var i=this.params,s=this.maxTranslate()-this.minTranslate(),a=this.progress,r=this.isBeginning,n=this.isEnd,o=r,l=n;0===s?(a=0,r=!0,n=!0):(r=(a=(e-this.minTranslate())/s)<=0,n=a>=1),extend$1(this,{progress:a,isBeginning:r,isEnd:n}),(i.watchSlidesProgress||i.watchSlidesVisibility||i.centeredSlides&&i.autoHeight)&&this.updateSlidesProgress(e),r&&!o&&this.emit("reachBeginning toEdge"),n&&!l&&this.emit("reachEnd toEdge"),(o&&!r||l&&!n)&&this.emit("fromEdge"),this.emit("progress",a)}function updateSlidesClasses(){var e,t=this.slides,i=this.params,s=this.$wrapperEl,a=this.activeIndex,r=this.realIndex,n=this.virtual&&i.virtual.enabled;t.removeClass(i.slideActiveClass+" "+i.slideNextClass+" "+i.slidePrevClass+" "+i.slideDuplicateActiveClass+" "+i.slideDuplicateNextClass+" "+i.slideDuplicatePrevClass),(e=n?this.$wrapperEl.find("."+i.slideClass+'[data-swiper-slide-index="'+a+'"]'):t.eq(a)).addClass(i.slideActiveClass),i.loop&&(e.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass));var o=e.nextAll("."+i.slideClass).eq(0).addClass(i.slideNextClass);i.loop&&0===o.length&&(o=t.eq(0)).addClass(i.slideNextClass);var l=e.prevAll("."+i.slideClass).eq(0).addClass(i.slidePrevClass);i.loop&&0===l.length&&(l=t.eq(-1)).addClass(i.slidePrevClass),i.loop&&(o.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass),l.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass)),this.emitSlidesClasses()}function updateActiveIndex(e){var t,i=this.rtlTranslate?this.translate:-this.translate,s=this.slidesGrid,a=this.snapGrid,r=this.params,n=this.activeIndex,o=this.realIndex,l=this.snapIndex,d=e;if(void 0===d){for(var h=0;h<s.length;h+=1)void 0!==s[h+1]?i>=s[h]&&i<s[h+1]-(s[h+1]-s[h])/2?d=h:i>=s[h]&&i<s[h+1]&&(d=h+1):i>=s[h]&&(d=h);r.normalizeSlideIndex&&(d<0||void 0===d)&&(d=0)}if(a.indexOf(i)>=0)t=a.indexOf(i);else{var p=Math.min(r.slidesPerGroupSkip,d);t=p+Math.floor((d-p)/r.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),d!==n){var u=parseInt(this.slides.eq(d).attr("data-swiper-slide-index")||d,10);extend$1(this,{snapIndex:t,realIndex:u,previousIndex:n,activeIndex:d}),this.emit("activeIndexChange"),this.emit("snapIndexChange"),o!==u&&this.emit("realIndexChange"),(this.initialized||this.params.runCallbacksOnInit)&&this.emit("slideChange")}else t!==l&&(this.snapIndex=t,this.emit("snapIndexChange"))}function updateClickedSlide(e){var t=this.params,i=$(e.target).closest("."+t.slideClass)[0],s=!1;if(i)for(var a=0;a<this.slides.length;a+=1)this.slides[a]===i&&(s=!0);if(!i||!s)return this.clickedSlide=void 0,void(this.clickedIndex=void 0);this.clickedSlide=i,this.virtual&&this.params.virtual.enabled?this.clickedIndex=parseInt($(i).attr("data-swiper-slide-index"),10):this.clickedIndex=$(i).index(),t.slideToClickedSlide&&void 0!==this.clickedIndex&&this.clickedIndex!==this.activeIndex&&this.slideToClickedSlide()}var update={updateSize:updateSize,updateSlides:updateSlides,updateAutoHeight:updateAutoHeight,updateSlidesOffset:updateSlidesOffset,updateSlidesProgress:updateSlidesProgress,updateProgress:updateProgress,updateSlidesClasses:updateSlidesClasses,updateActiveIndex:updateActiveIndex,updateClickedSlide:updateClickedSlide};function getSwiperTranslate(e){void 0===e&&(e=this.isHorizontal()?"x":"y");var t=this.params,i=this.rtlTranslate,s=this.translate,a=this.$wrapperEl;if(t.virtualTranslate)return i?-s:s;if(t.cssMode)return s;var r=getTranslate(a[0],e);return i&&(r=-r),r||0}function setTranslate(e,t){var i=this.rtlTranslate,s=this.params,a=this.$wrapperEl,r=this.wrapperEl,n=this.progress,o=0,l=0;this.isHorizontal()?o=i?-e:e:l=e,s.roundLengths&&(o=Math.floor(o),l=Math.floor(l)),s.cssMode?r[this.isHorizontal()?"scrollLeft":"scrollTop"]=this.isHorizontal()?-o:-l:s.virtualTranslate||a.transform("translate3d("+o+"px, "+l+"px, 0px)"),this.previousTranslate=this.translate,this.translate=this.isHorizontal()?o:l;var d=this.maxTranslate()-this.minTranslate();(0===d?0:(e-this.minTranslate())/d)!==n&&this.updateProgress(e),this.emit("setTranslate",this.translate,t)}function minTranslate(){return-this.snapGrid[0]}function maxTranslate(){return-this.snapGrid[this.snapGrid.length-1]}function translateTo(e,t,i,s,a){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0),void 0===s&&(s=!0);var r=this,n=r.params,o=r.wrapperEl;if(r.animating&&n.preventInteractionOnTransition)return!1;var l,d=r.minTranslate(),h=r.maxTranslate();if(l=s&&e>d?d:s&&e<h?h:e,r.updateProgress(l),n.cssMode){var p,u=r.isHorizontal();if(0===t)o[u?"scrollLeft":"scrollTop"]=-l;else if(o.scrollTo)o.scrollTo(((p={})[u?"left":"top"]=-l,p.behavior="smooth",p));else o[u?"scrollLeft":"scrollTop"]=-l;return!0}return 0===t?(r.setTransition(0),r.setTranslate(l),i&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(l),i&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,i&&r.emit("transitionEnd"))}),r.$wrapperEl[0].addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd))),!0}var translate={getTranslate:getSwiperTranslate,setTranslate:setTranslate,minTranslate:minTranslate,maxTranslate:maxTranslate,translateTo:translateTo};function setTransition(e,t){this.params.cssMode||this.$wrapperEl.transition(e),this.emit("setTransition",e,t)}function transitionStart(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.params,a=this.previousIndex;if(!s.cssMode){s.autoHeight&&this.updateAutoHeight();var r=t;if(r||(r=i>a?"next":i<a?"prev":"reset"),this.emit("transitionStart"),e&&i!==a){if("reset"===r)return void this.emit("slideResetTransitionStart");this.emit("slideChangeTransitionStart"),"next"===r?this.emit("slideNextTransitionStart"):this.emit("slidePrevTransitionStart")}}}function transitionEnd$1(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.previousIndex,a=this.params;if(this.animating=!1,!a.cssMode){this.setTransition(0);var r=t;if(r||(r=i>s?"next":i<s?"prev":"reset"),this.emit("transitionEnd"),e&&i!==s){if("reset"===r)return void this.emit("slideResetTransitionEnd");this.emit("slideChangeTransitionEnd"),"next"===r?this.emit("slideNextTransitionEnd"):this.emit("slidePrevTransitionEnd")}}}var transition$1={setTransition:setTransition,transitionStart:transitionStart,transitionEnd:transitionEnd$1};function slideTo(e,t,i,s){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var a=this,r=e;r<0&&(r=0);var n=a.params,o=a.snapGrid,l=a.slidesGrid,d=a.previousIndex,h=a.activeIndex,p=a.rtlTranslate,u=a.wrapperEl;if(a.animating&&n.preventInteractionOnTransition)return!1;var c=Math.min(a.params.slidesPerGroupSkip,r),v=c+Math.floor((r-c)/a.params.slidesPerGroup);v>=o.length&&(v=o.length-1),(h||n.initialSlide||0)===(d||0)&&i&&a.emit("beforeSlideChangeStart");var f,m=-o[v];if(a.updateProgress(m),n.normalizeSlideIndex)for(var g=0;g<l.length;g+=1)-Math.floor(100*m)>=Math.floor(100*l[g])&&(r=g);if(a.initialized&&r!==h){if(!a.allowSlideNext&&m<a.translate&&m<a.minTranslate())return!1;if(!a.allowSlidePrev&&m>a.translate&&m>a.maxTranslate()&&(h||0)!==r)return!1}if(f=r>h?"next":r<h?"prev":"reset",p&&-m===a.translate||!p&&m===a.translate)return a.updateActiveIndex(r),n.autoHeight&&a.updateAutoHeight(),a.updateSlidesClasses(),"slide"!==n.effect&&a.setTranslate(m),"reset"!==f&&(a.transitionStart(i,f),a.transitionEnd(i,f)),!1;if(n.cssMode){var w,b=a.isHorizontal(),y=-m;if(p&&(y=u.scrollWidth-u.offsetWidth-y),0===t)u[b?"scrollLeft":"scrollTop"]=y;else if(u.scrollTo)u.scrollTo(((w={})[b?"left":"top"]=y,w.behavior="smooth",w));else u[b?"scrollLeft":"scrollTop"]=y;return!0}return 0===t?(a.setTransition(0),a.setTranslate(m),a.updateActiveIndex(r),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,s),a.transitionStart(i,f),a.transitionEnd(i,f)):(a.setTransition(t),a.setTranslate(m),a.updateActiveIndex(r),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,s),a.transitionStart(i,f),a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.$wrapperEl[0].removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.$wrapperEl[0].removeEventListener("webkitTransitionEnd",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(i,f))}),a.$wrapperEl[0].addEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.$wrapperEl[0].addEventListener("webkitTransitionEnd",a.onSlideToWrapperTransitionEnd))),!0}function slideToLoop(e,t,i,s){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var a=e;return this.params.loop&&(a+=this.loopedSlides),this.slideTo(a,t,i,s)}function slideNext(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.activeIndex<s.slidesPerGroupSkip?1:s.slidesPerGroup;if(s.loop){if(a&&s.loopPreventsSlide)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}return this.slideTo(this.activeIndex+r,e,t,i)}function slidePrev(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.snapGrid,n=this.slidesGrid,o=this.rtlTranslate;if(s.loop){if(a&&s.loopPreventsSlide)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}function l(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}var d,h=l(o?this.translate:-this.translate),p=r.map((function(e){return l(e)})),u=(r[p.indexOf(h)],r[p.indexOf(h)-1]);return void 0===u&&s.cssMode&&r.forEach((function(e){!u&&h>=e&&(u=e)})),void 0!==u&&(d=n.indexOf(u))<0&&(d=this.activeIndex-1),this.slideTo(d,e,t,i)}function slideReset(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);return this.slideTo(this.activeIndex,e,t,i)}function slideToClosest(e,t,i,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===s&&(s=.5);var a=this.activeIndex,r=Math.min(this.params.slidesPerGroupSkip,a),n=r+Math.floor((a-r)/this.params.slidesPerGroup),o=this.rtlTranslate?this.translate:-this.translate;if(o>=this.snapGrid[n]){var l=this.snapGrid[n];o-l>(this.snapGrid[n+1]-l)*s&&(a+=this.params.slidesPerGroup)}else{var d=this.snapGrid[n-1];o-d<=(this.snapGrid[n]-d)*s&&(a-=this.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,this.slidesGrid.length-1),this.slideTo(a,e,t,i)}function slideToClickedSlide(){var e,t=this,i=t.params,s=t.$wrapperEl,a="auto"===i.slidesPerView?t.slidesPerViewDynamic():i.slidesPerView,r=t.clickedIndex;if(i.loop){if(t.animating)return;e=parseInt($(t.clickedSlide).attr("data-swiper-slide-index"),10),i.centeredSlides?r<t.loopedSlides-a/2||r>t.slides.length-t.loopedSlides+a/2?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),nextTick((function(){t.slideTo(r)}))):t.slideTo(r):r>t.slides.length-a?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),nextTick((function(){t.slideTo(r)}))):t.slideTo(r)}else t.slideTo(r)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(){var e=this,t=getDocument(),i=e.params,s=e.$wrapperEl;s.children("."+i.slideClass+"."+i.slideDuplicateClass).remove();var a=s.children("."+i.slideClass);if(i.loopFillGroupWithBlank){var r=i.slidesPerGroup-a.length%i.slidesPerGroup;if(r!==i.slidesPerGroup){for(var n=0;n<r;n+=1){var o=$(t.createElement("div")).addClass(i.slideClass+" "+i.slideBlankClass);s.append(o)}a=s.children("."+i.slideClass)}}"auto"!==i.slidesPerView||i.loopedSlides||(i.loopedSlides=a.length),e.loopedSlides=Math.ceil(parseFloat(i.loopedSlides||i.slidesPerView,10)),e.loopedSlides+=i.loopAdditionalSlides,e.loopedSlides>a.length&&(e.loopedSlides=a.length);var l=[],d=[];a.each((function(t,i){var s=$(t);i<e.loopedSlides&&d.push(t),i<a.length&&i>=a.length-e.loopedSlides&&l.push(t),s.attr("data-swiper-slide-index",i)}));for(var h=0;h<d.length;h+=1)s.append($(d[h].cloneNode(!0)).addClass(i.slideDuplicateClass));for(var p=l.length-1;p>=0;p-=1)s.prepend($(l[p].cloneNode(!0)).addClass(i.slideDuplicateClass))}function loopFix(){this.emit("beforeLoopFix");var e,t=this.activeIndex,i=this.slides,s=this.loopedSlides,a=this.allowSlidePrev,r=this.allowSlideNext,n=this.snapGrid,o=this.rtlTranslate;this.allowSlidePrev=!0,this.allowSlideNext=!0;var l=-n[t]-this.getTranslate();if(t<s)e=i.length-3*s+t,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l);else if(t>=i.length-s){e=-i.length+t+s,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l)}this.allowSlidePrev=a,this.allowSlideNext=r,this.emit("loopFix")}function loopDestroy(){var e=this.$wrapperEl,t=this.params,i=this.slides;e.children("."+t.slideClass+"."+t.slideDuplicateClass+",."+t.slideClass+"."+t.slideBlankClass).remove(),i.removeAttr("data-swiper-slide-index")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){if(!(this.support.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)){var t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}}function unsetGrabCursor(){this.support.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function appendSlide(e){var t=this.$wrapperEl,i=this.params;if(i.loop&&this.loopDestroy(),"object"==typeof e&&"length"in e)for(var s=0;s<e.length;s+=1)e[s]&&t.append(e[s]);else t.append(e);i.loop&&this.loopCreate(),i.observer&&this.support.observer||this.update()}function prependSlide(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&this.loopDestroy();var a=s+1;if("object"==typeof e&&"length"in e){for(var r=0;r<e.length;r+=1)e[r]&&i.prepend(e[r]);a=s+e.length}else i.prepend(e);t.loop&&this.loopCreate(),t.observer&&this.support.observer||this.update(),this.slideTo(a,0,!1)}function addSlide(e,t){var i=this.$wrapperEl,s=this.params,a=this.activeIndex;s.loop&&(a-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+s.slideClass));var r=this.slides.length;if(e<=0)this.prependSlide(t);else if(e>=r)this.appendSlide(t);else{for(var n=a>e?a+1:a,o=[],l=r-1;l>=e;l-=1){var d=this.slides.eq(l);d.remove(),o.unshift(d)}if("object"==typeof t&&"length"in t){for(var h=0;h<t.length;h+=1)t[h]&&i.append(t[h]);n=a>e?a+t.length:a}else i.append(t);for(var p=0;p<o.length;p+=1)i.append(o[p]);s.loop&&this.loopCreate(),s.observer&&this.support.observer||this.update(),s.loop?this.slideTo(n+this.loopedSlides,0,!1):this.slideTo(n,0,!1)}}function removeSlide(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&(s-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+t.slideClass));var a,r=s;if("object"==typeof e&&"length"in e){for(var n=0;n<e.length;n+=1)a=e[n],this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1);r=Math.max(r,0)}else a=e,this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1),r=Math.max(r,0);t.loop&&this.loopCreate(),t.observer&&this.support.observer||this.update(),t.loop?this.slideTo(r+this.loopedSlides,0,!1):this.slideTo(r,0,!1)}function removeAllSlides(){for(var e=[],t=0;t<this.slides.length;t+=1)e.push(t);this.removeSlide(e)}var manipulation={appendSlide:appendSlide,prependSlide:prependSlide,addSlide:addSlide,removeSlide:removeSlide,removeAllSlides:removeAllSlides};function onTouchStart(e){var t=getDocument(),i=getWindow(),s=this.touchEventsData,a=this.params,r=this.touches;if(!this.animating||!a.preventInteractionOnTransition){var n=e;n.originalEvent&&(n=n.originalEvent);var o=$(n.target);if(("wrapper"!==a.touchEventsTarget||o.closest(this.wrapperEl).length)&&(s.isTouchEvent="touchstart"===n.type,(s.isTouchEvent||!("which"in n)||3!==n.which)&&!(!s.isTouchEvent&&"button"in n&&n.button>0||s.isTouched&&s.isMoved)))if(a.noSwiping&&o.closest(a.noSwipingSelector?a.noSwipingSelector:"."+a.noSwipingClass)[0])this.allowClick=!0;else if(!a.swipeHandler||o.closest(a.swipeHandler)[0]){r.currentX="touchstart"===n.type?n.targetTouches[0].pageX:n.pageX,r.currentY="touchstart"===n.type?n.targetTouches[0].pageY:n.pageY;var l=r.currentX,d=r.currentY,h=a.edgeSwipeDetection||a.iOSEdgeSwipeDetection,p=a.edgeSwipeThreshold||a.iOSEdgeSwipeThreshold;if(!h||!(l<=p||l>=i.screen.width-p)){if(extend$1(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),r.startX=l,r.startY=d,s.touchStartTime=now(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,a.threshold>0&&(s.allowThresholdMove=!1),"touchstart"!==n.type){var u=!0;o.is(s.formElements)&&(u=!1),t.activeElement&&$(t.activeElement).is(s.formElements)&&t.activeElement!==o[0]&&t.activeElement.blur();var c=u&&this.allowTouchMove&&a.touchStartPreventDefault;(a.touchStartForcePreventDefault||c)&&n.preventDefault()}this.emit("touchStart",n)}}}}function onTouchMove(e){var t=getDocument(),i=this.touchEventsData,s=this.params,a=this.touches,r=this.rtlTranslate,n=e;if(n.originalEvent&&(n=n.originalEvent),i.isTouched){if(!i.isTouchEvent||"touchmove"===n.type){var o="touchmove"===n.type&&n.targetTouches&&(n.targetTouches[0]||n.changedTouches[0]),l="touchmove"===n.type?o.pageX:n.pageX,d="touchmove"===n.type?o.pageY:n.pageY;if(n.preventedByNestedSwiper)return a.startX=l,void(a.startY=d);if(!this.allowTouchMove)return this.allowClick=!1,void(i.isTouched&&(extend$1(a,{startX:l,startY:d,currentX:l,currentY:d}),i.touchStartTime=now()));if(i.isTouchEvent&&s.touchReleaseOnEdges&&!s.loop)if(this.isVertical()){if(d<a.startY&&this.translate<=this.maxTranslate()||d>a.startY&&this.translate>=this.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(l<a.startX&&this.translate<=this.maxTranslate()||l>a.startX&&this.translate>=this.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&n.target===t.activeElement&&$(n.target).is(i.formElements))return i.isMoved=!0,void(this.allowClick=!1);if(i.allowTouchCallbacks&&this.emit("touchMove",n),!(n.targetTouches&&n.targetTouches.length>1)){a.currentX=l,a.currentY=d;var h=a.currentX-a.startX,p=a.currentY-a.startY;if(!(this.params.threshold&&Math.sqrt(Math.pow(h,2)+Math.pow(p,2))<this.params.threshold)){var u;if(void 0===i.isScrolling)this.isHorizontal()&&a.currentY===a.startY||this.isVertical()&&a.currentX===a.startX?i.isScrolling=!1:h*h+p*p>=25&&(u=180*Math.atan2(Math.abs(p),Math.abs(h))/Math.PI,i.isScrolling=this.isHorizontal()?u>s.touchAngle:90-u>s.touchAngle);if(i.isScrolling&&this.emit("touchMoveOpposite",n),void 0===i.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(i.startMoving=!0)),i.isScrolling)i.isTouched=!1;else if(i.startMoving){this.allowClick=!1,!s.cssMode&&n.cancelable&&n.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&n.stopPropagation(),i.isMoved||(s.loop&&this.loopFix(),i.startTranslate=this.getTranslate(),this.setTransition(0),this.animating&&this.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!s.grabCursor||!0!==this.allowSlideNext&&!0!==this.allowSlidePrev||this.setGrabCursor(!0),this.emit("sliderFirstMove",n)),this.emit("sliderMove",n),i.isMoved=!0;var c=this.isHorizontal()?h:p;a.diff=c,c*=s.touchRatio,r&&(c=-c),this.swipeDirection=c>0?"prev":"next",i.currentTranslate=c+i.startTranslate;var v=!0,f=s.resistanceRatio;if(s.touchReleaseOnEdges&&(f=0),c>0&&i.currentTranslate>this.minTranslate()?(v=!1,s.resistance&&(i.currentTranslate=this.minTranslate()-1+Math.pow(-this.minTranslate()+i.startTranslate+c,f))):c<0&&i.currentTranslate<this.maxTranslate()&&(v=!1,s.resistance&&(i.currentTranslate=this.maxTranslate()+1-Math.pow(this.maxTranslate()-i.startTranslate-c,f))),v&&(n.preventedByNestedSwiper=!0),!this.allowSlideNext&&"next"===this.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!this.allowSlidePrev&&"prev"===this.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),s.threshold>0){if(!(Math.abs(c)>s.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,i.currentTranslate=i.startTranslate,void(a.diff=this.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}s.followFinger&&!s.cssMode&&((s.freeMode||s.watchSlidesProgress||s.watchSlidesVisibility)&&(this.updateActiveIndex(),this.updateSlidesClasses()),s.freeMode&&(0===i.velocities.length&&i.velocities.push({position:a[this.isHorizontal()?"startX":"startY"],time:i.touchStartTime}),i.velocities.push({position:a[this.isHorizontal()?"currentX":"currentY"],time:now()})),this.updateProgress(i.currentTranslate),this.setTranslate(i.currentTranslate))}}}}}else i.startMoving&&i.isScrolling&&this.emit("touchMoveOpposite",n)}function onTouchEnd(e){var t=this,i=t.touchEventsData,s=t.params,a=t.touches,r=t.rtlTranslate,n=t.$wrapperEl,o=t.slidesGrid,l=t.snapGrid,d=e;if(d.originalEvent&&(d=d.originalEvent),i.allowTouchCallbacks&&t.emit("touchEnd",d),i.allowTouchCallbacks=!1,!i.isTouched)return i.isMoved&&s.grabCursor&&t.setGrabCursor(!1),i.isMoved=!1,void(i.startMoving=!1);s.grabCursor&&i.isMoved&&i.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);var h,p=now(),u=p-i.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(d),t.emit("tap click",d),u<300&&p-i.lastClickTime<300&&t.emit("doubleTap doubleClick",d)),i.lastClickTime=now(),nextTick((function(){t.destroyed||(t.allowClick=!0)})),!i.isTouched||!i.isMoved||!t.swipeDirection||0===a.diff||i.currentTranslate===i.startTranslate)return i.isTouched=!1,i.isMoved=!1,void(i.startMoving=!1);if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,h=s.followFinger?r?t.translate:-t.translate:-i.currentTranslate,!s.cssMode)if(s.freeMode){if(h<-t.minTranslate())return void t.slideTo(t.activeIndex);if(h>-t.maxTranslate())return void(t.slides.length<l.length?t.slideTo(l.length-1):t.slideTo(t.slides.length-1));if(s.freeModeMomentum){if(i.velocities.length>1){var c=i.velocities.pop(),v=i.velocities.pop(),f=c.position-v.position,m=c.time-v.time;t.velocity=f/m,t.velocity/=2,Math.abs(t.velocity)<s.freeModeMinimumVelocity&&(t.velocity=0),(m>150||now()-c.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=s.freeModeMomentumVelocityRatio,i.velocities.length=0;var g=1e3*s.freeModeMomentumRatio,w=t.velocity*g,b=t.translate+w;r&&(b=-b);var y,x,E=!1,T=20*Math.abs(t.velocity)*s.freeModeMomentumBounceRatio;if(b<t.maxTranslate())s.freeModeMomentumBounce?(b+t.maxTranslate()<-T&&(b=t.maxTranslate()-T),y=t.maxTranslate(),E=!0,i.allowMomentumBounce=!0):b=t.maxTranslate(),s.loop&&s.centeredSlides&&(x=!0);else if(b>t.minTranslate())s.freeModeMomentumBounce?(b-t.minTranslate()>T&&(b=t.minTranslate()+T),y=t.minTranslate(),E=!0,i.allowMomentumBounce=!0):b=t.minTranslate(),s.loop&&s.centeredSlides&&(x=!0);else if(s.freeModeSticky){for(var C,S=0;S<l.length;S+=1)if(l[S]>-b){C=S;break}b=-(b=Math.abs(l[C]-b)<Math.abs(l[C-1]-b)||"next"===t.swipeDirection?l[C]:l[C-1])}if(x&&t.once("transitionEnd",(function(){t.loopFix()})),0!==t.velocity){if(g=r?Math.abs((-b-t.translate)/t.velocity):Math.abs((b-t.translate)/t.velocity),s.freeModeSticky){var M=Math.abs((r?-b:b)-t.translate),$=t.slidesSizesGrid[t.activeIndex];g=M<$?s.speed:M<2*$?1.5*s.speed:2.5*s.speed}}else if(s.freeModeSticky)return void t.slideToClosest();s.freeModeMomentumBounce&&E?(t.updateProgress(y),t.setTransition(g),t.setTranslate(b),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&i.allowMomentumBounce&&(t.emit("momentumBounce"),t.setTransition(s.speed),setTimeout((function(){t.setTranslate(y),n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(t.updateProgress(b),t.setTransition(g),t.setTranslate(b),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(b),t.updateActiveIndex(),t.updateSlidesClasses()}else if(s.freeModeSticky)return void t.slideToClosest();(!s.freeModeMomentum||u>=s.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var P=0,z=t.slidesSizesGrid[0],k=0;k<o.length;k+=k<s.slidesPerGroupSkip?1:s.slidesPerGroup){var L=k<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;void 0!==o[k+L]?h>=o[k]&&h<o[k+L]&&(P=k,z=o[k+L]-o[k]):h>=o[k]&&(P=k,z=o[o.length-1]-o[o.length-2])}var I=(h-o[P])/z,D=P<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;if(u>s.longSwipesMs){if(!s.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(I>=s.longSwipesRatio?t.slideTo(P+D):t.slideTo(P)),"prev"===t.swipeDirection&&(I>1-s.longSwipesRatio?t.slideTo(P+D):t.slideTo(P))}else{if(!s.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(d.target===t.navigation.nextEl||d.target===t.navigation.prevEl)?d.target===t.navigation.nextEl?t.slideTo(P+D):t.slideTo(P):("next"===t.swipeDirection&&t.slideTo(P+D),"prev"===t.swipeDirection&&t.slideTo(P))}}}function onResize(){var e=this.params,t=this.el;if(!t||0!==t.offsetWidth){e.breakpoints&&this.setBreakpoint();var i=this.allowSlideNext,s=this.allowSlidePrev,a=this.snapGrid;this.allowSlideNext=!0,this.allowSlidePrev=!0,this.updateSize(),this.updateSlides(),this.updateSlidesClasses(),("auto"===e.slidesPerView||e.slidesPerView>1)&&this.isEnd&&!this.isBeginning&&!this.params.centeredSlides?this.slideTo(this.slides.length-1,0,!1,!0):this.slideTo(this.activeIndex,0,!1,!0),this.autoplay&&this.autoplay.running&&this.autoplay.paused&&this.autoplay.run(),this.allowSlidePrev=s,this.allowSlideNext=i,this.params.watchOverflow&&a!==this.snapGrid&&this.checkOverflow()}}function onClick(e){this.allowClick||(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function onScroll(){var e=this.wrapperEl,t=this.rtlTranslate;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=t?e.scrollWidth-e.offsetWidth-e.scrollLeft:-e.scrollLeft:this.translate=-e.scrollTop,-0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();var i=this.maxTranslate()-this.minTranslate();(0===i?0:(this.translate-this.minTranslate())/i)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}var dummyEventAttached=!1;function dummyEventListener(){}function attachEvents(){var e=getDocument(),t=this.params,i=this.touchEvents,s=this.el,a=this.wrapperEl,r=this.device,n=this.support;this.onTouchStart=onTouchStart.bind(this),this.onTouchMove=onTouchMove.bind(this),this.onTouchEnd=onTouchEnd.bind(this),t.cssMode&&(this.onScroll=onScroll.bind(this)),this.onClick=onClick.bind(this);var o=!!t.nested;if(!n.touch&&n.pointerEvents)s.addEventListener(i.start,this.onTouchStart,!1),e.addEventListener(i.move,this.onTouchMove,o),e.addEventListener(i.end,this.onTouchEnd,!1);else{if(n.touch){var l=!("touchstart"!==i.start||!n.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};s.addEventListener(i.start,this.onTouchStart,l),s.addEventListener(i.move,this.onTouchMove,n.passiveListener?{passive:!1,capture:o}:o),s.addEventListener(i.end,this.onTouchEnd,l),i.cancel&&s.addEventListener(i.cancel,this.onTouchEnd,l),dummyEventAttached||(e.addEventListener("touchstart",dummyEventListener),dummyEventAttached=!0)}(t.simulateTouch&&!r.ios&&!r.android||t.simulateTouch&&!n.touch&&r.ios)&&(s.addEventListener("mousedown",this.onTouchStart,!1),e.addEventListener("mousemove",this.onTouchMove,o),e.addEventListener("mouseup",this.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&s.addEventListener("click",this.onClick,!0),t.cssMode&&a.addEventListener("scroll",this.onScroll),t.updateOnWindowResize?this.on(r.ios||r.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):this.on("observerUpdate",onResize,!0)}function detachEvents(){var e=getDocument(),t=this.params,i=this.touchEvents,s=this.el,a=this.wrapperEl,r=this.device,n=this.support,o=!!t.nested;if(!n.touch&&n.pointerEvents)s.removeEventListener(i.start,this.onTouchStart,!1),e.removeEventListener(i.move,this.onTouchMove,o),e.removeEventListener(i.end,this.onTouchEnd,!1);else{if(n.touch){var l=!("onTouchStart"!==i.start||!n.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};s.removeEventListener(i.start,this.onTouchStart,l),s.removeEventListener(i.move,this.onTouchMove,o),s.removeEventListener(i.end,this.onTouchEnd,l),i.cancel&&s.removeEventListener(i.cancel,this.onTouchEnd,l)}(t.simulateTouch&&!r.ios&&!r.android||t.simulateTouch&&!n.touch&&r.ios)&&(s.removeEventListener("mousedown",this.onTouchStart,!1),e.removeEventListener("mousemove",this.onTouchMove,o),e.removeEventListener("mouseup",this.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&s.removeEventListener("click",this.onClick,!0),t.cssMode&&a.removeEventListener("scroll",this.onScroll),this.off(r.ios||r.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize)}var events={attachEvents:attachEvents,detachEvents:detachEvents};function setBreakpoint(){var e=this.activeIndex,t=this.initialized,i=this.loopedSlides,s=void 0===i?0:i,a=this.params,r=this.$el,n=a.breakpoints;if(n&&(!n||0!==Object.keys(n).length)){var o=this.getBreakpoint(n);if(o&&this.currentBreakpoint!==o){var l=o in n?n[o]:void 0;l&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach((function(e){var t=l[e];void 0!==t&&(l[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")}));var d=l||this.originalParams,h=a.slidesPerColumn>1,p=d.slidesPerColumn>1;h&&!p?(r.removeClass(a.containerModifierClass+"multirow "+a.containerModifierClass+"multirow-column"),this.emitContainerClasses()):!h&&p&&(r.addClass(a.containerModifierClass+"multirow"),"column"===d.slidesPerColumnFill&&r.addClass(a.containerModifierClass+"multirow-column"),this.emitContainerClasses());var u=d.direction&&d.direction!==a.direction,c=a.loop&&(d.slidesPerView!==a.slidesPerView||u);u&&t&&this.changeDirection(),extend$1(this.params,d),extend$1(this,{allowTouchMove:this.params.allowTouchMove,allowSlideNext:this.params.allowSlideNext,allowSlidePrev:this.params.allowSlidePrev}),this.currentBreakpoint=o,this.emit("_beforeBreakpoint",d),c&&t&&(this.loopDestroy(),this.loopCreate(),this.updateSlides(),this.slideTo(e-s+this.loopedSlides,0,!1)),this.emit("breakpoint",d)}}}function getBreakpoints(e){var t=getWindow();if(e){var i=!1,s=Object.keys(e).map((function(e){if("string"==typeof e&&0===e.indexOf("@")){var i=parseFloat(e.substr(1));return{value:t.innerHeight*i,point:e}}return{value:e,point:e}}));s.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var a=0;a<s.length;a+=1){var r=s[a],n=r.point;r.value<=t.innerWidth&&(i=n)}return i||"max"}}var breakpoints={setBreakpoint:setBreakpoint,getBreakpoint:getBreakpoints};function addClasses(){var e=this.classNames,t=this.params,i=this.rtl,s=this.$el,a=this.device,r=[];r.push("initialized"),r.push(t.direction),t.freeMode&&r.push("free-mode"),t.autoHeight&&r.push("autoheight"),i&&r.push("rtl"),t.slidesPerColumn>1&&(r.push("multirow"),"column"===t.slidesPerColumnFill&&r.push("multirow-column")),a.android&&r.push("android"),a.ios&&r.push("ios"),t.cssMode&&r.push("css-mode"),r.forEach((function(i){e.push(t.containerModifierClass+i)})),s.addClass(e.join(" ")),this.emitContainerClasses()}function removeClasses(){var e=this.$el,t=this.classNames;e.removeClass(t.join(" ")),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function loadImage(e,t,i,s,a,r){var n,o=getWindow();function l(){r&&r()}$(e).parent("picture")[0]||e.complete&&a?l():t?((n=new o.Image).onload=l,n.onerror=l,s&&(n.sizes=s),i&&(n.srcset=i),t&&(n.src=t)):l()}function preloadImages(){var e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(var i=0;i<e.imagesToLoad.length;i+=1){var s=e.imagesToLoad[i];e.loadImage(s,s.currentSrc||s.getAttribute("src"),s.srcset||s.getAttribute("srcset"),s.sizes||s.getAttribute("sizes"),!0,t)}}var images={loadImage:loadImage,preloadImages:preloadImages};function checkOverflow(){var e=this.params,t=this.isLocked,i=this.slides.length>0&&e.slidesOffsetBefore+e.spaceBetween*(this.slides.length-1)+this.slides[0].offsetWidth*this.slides.length;e.slidesOffsetBefore&&e.slidesOffsetAfter&&i?this.isLocked=i<=this.size:this.isLocked=1===this.snapGrid.length,this.allowSlideNext=!this.isLocked,this.allowSlidePrev=!this.isLocked,t!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock"),t&&t!==this.isLocked&&(this.isEnd=!1,this.navigation&&this.navigation.update())}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,nested:!1,width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1},prototypes={modular:modular,eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition$1,slide:slide,loop:loop,grabCursor:grabCursor,manipulation:manipulation,events:events,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes,images:images},extendedDefaults={},Swiper=function(){function e(){for(var t,i,s=arguments.length,a=new Array(s),r=0;r<s;r++)a[r]=arguments[r];1===a.length&&a[0].constructor&&a[0].constructor===Object?i=a[0]:(t=a[0],i=a[1]),i||(i={}),i=extend$1({},i),t&&!i.el&&(i.el=t);var n=this;n.support=getSupport(),n.device=getDevice({userAgent:i.userAgent}),n.browser=getBrowser(),n.eventsListeners={},n.eventsAnyListeners=[],void 0===n.modules&&(n.modules={}),Object.keys(n.modules).forEach((function(e){var t=n.modules[e];if(t.params){var s=Object.keys(t.params)[0],a=t.params[s];if("object"!=typeof a||null===a)return;if(!(s in i)||!("enabled"in a))return;!0===i[s]&&(i[s]={enabled:!0}),"object"!=typeof i[s]||"enabled"in i[s]||(i[s].enabled=!0),i[s]||(i[s]={enabled:!1})}}));var o=extend$1({},defaults);n.useParams(o),n.params=extend$1({},o,extendedDefaults,i),n.originalParams=extend$1({},n.params),n.passedParams=extend$1({},i),n.params&&n.params.on&&Object.keys(n.params.on).forEach((function(e){n.on(e,n.params.on[e])})),n.params&&n.params.onAny&&n.onAny(n.params.onAny),n.$=$;var l=$(n.params.el);if(t=l[0]){if(l.length>1){var d=[];return l.each((function(t){var s=extend$1({},i,{el:t});d.push(new e(s))})),d}var h,p,u;return t.swiper=n,t&&t.shadowRoot&&t.shadowRoot.querySelector?(h=$(t.shadowRoot.querySelector("."+n.params.wrapperClass))).children=function(e){return l.children(e)}:h=l.children("."+n.params.wrapperClass),extend$1(n,{$el:l,el:t,$wrapperEl:h,wrapperEl:h[0],classNames:[],slides:$(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===n.params.direction},isVertical:function(){return"vertical"===n.params.direction},rtl:"rtl"===t.dir.toLowerCase()||"rtl"===l.css("direction"),rtlTranslate:"horizontal"===n.params.direction&&("rtl"===t.dir.toLowerCase()||"rtl"===l.css("direction")),wrongRTL:"-webkit-box"===h.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:n.params.allowSlideNext,allowSlidePrev:n.params.allowSlidePrev,touchEvents:(p=["touchstart","touchmove","touchend","touchcancel"],u=["mousedown","mousemove","mouseup"],n.support.pointerEvents&&(u=["pointerdown","pointermove","pointerup"]),n.touchEventsTouch={start:p[0],move:p[1],end:p[2],cancel:p[3]},n.touchEventsDesktop={start:u[0],move:u[1],end:u[2]},n.support.touch||!n.params.simulateTouch?n.touchEventsTouch:n.touchEventsDesktop),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,formElements:"input, select, option, textarea, button, video, label",lastClickTime:now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:n.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),n.useModules(),n.emit("_swiper"),n.params.init&&n.init(),n}}var t=e.prototype;return t.emitContainerClasses=function(){var e=this;if(e.params._emitClasses&&e.el){var t=e.el.className.split(" ").filter((function(t){return 0===t.indexOf("swiper-container")||0===t.indexOf(e.params.containerModifierClass)}));e.emit("_containerClasses",t.join(" "))}},t.getSlideClasses=function(e){var t=this;return e.className.split(" ").filter((function(e){return 0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)})).join(" ")},t.emitSlidesClasses=function(){var e=this;e.params._emitClasses&&e.el&&e.slides.each((function(t){var i=e.getSlideClasses(t);e.emit("_slideClass",t,i)}))},t.slidesPerViewDynamic=function(){var e=this.params,t=this.slides,i=this.slidesGrid,s=this.size,a=this.activeIndex,r=1;if(e.centeredSlides){for(var n,o=t[a].swiperSlideSize,l=a+1;l<t.length;l+=1)t[l]&&!n&&(r+=1,(o+=t[l].swiperSlideSize)>s&&(n=!0));for(var d=a-1;d>=0;d-=1)t[d]&&!n&&(r+=1,(o+=t[d].swiperSlideSize)>s&&(n=!0))}else for(var h=a+1;h<t.length;h+=1)i[h]-i[a]<s&&(r+=1);return r},t.update=function(){var e=this;if(e&&!e.destroyed){var t=e.snapGrid,i=e.params;i.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode?(s(),e.params.autoHeight&&e.updateAutoHeight()):(("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||s(),i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function s(){var t=e.rtlTranslate?-1*e.translate:e.translate,i=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(i),e.updateActiveIndex(),e.updateSlidesClasses()}},t.changeDirection=function(e,t){void 0===t&&(t=!0);var i=this.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(this.$el.removeClass(""+this.params.containerModifierClass+i).addClass(""+this.params.containerModifierClass+e),this.emitContainerClasses(),this.params.direction=e,this.slides.each((function(t){"vertical"===e?t.style.width="":t.style.height=""})),this.emit("changeDirection"),t&&this.update()),this},t.init=function(){this.initialized||(this.emit("beforeInit"),this.params.breakpoints&&this.setBreakpoint(),this.addClasses(),this.params.loop&&this.loopCreate(),this.updateSize(),this.updateSlides(),this.params.watchOverflow&&this.checkOverflow(),this.params.grabCursor&&this.setGrabCursor(),this.params.preloadImages&&this.preloadImages(),this.params.loop?this.slideTo(this.params.initialSlide+this.loopedSlides,0,this.params.runCallbacksOnInit):this.slideTo(this.params.initialSlide,0,this.params.runCallbacksOnInit),this.attachEvents(),this.initialized=!0,this.emit("init"),this.emit("afterInit"))},t.destroy=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);var i=this,s=i.params,a=i.$el,r=i.$wrapperEl,n=i.slides;return void 0===i.params||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),s.loop&&i.loopDestroy(),t&&(i.removeClasses(),a.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([s.slideVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),i.emit("destroy"),Object.keys(i.eventsListeners).forEach((function(e){i.off(e)})),!1!==e&&(i.$el[0].swiper=null,deleteProps(i)),i.destroyed=!0),null},e.extendDefaults=function(e){extend$1(extendedDefaults,e)},e.installModule=function(t){e.prototype.modules||(e.prototype.modules={});var i=t.name||Object.keys(e.prototype.modules).length+"_"+now();e.prototype.modules[i]=t},e.use=function(t){return Array.isArray(t)?(t.forEach((function(t){return e.installModule(t)})),e):(e.installModule(t),e)},_createClass(e,null,[{key:"extendedDefaults",get:function(){return extendedDefaults}},{key:"defaults",get:function(){return defaults}}]),e}();Object.keys(prototypes).forEach((function(e){Object.keys(prototypes[e]).forEach((function(t){Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer$1]);var Virtual={update:function(e){var t=this,i=t.params,s=i.slidesPerView,a=i.slidesPerGroup,r=i.centeredSlides,n=t.params.virtual,o=n.addSlidesBefore,l=n.addSlidesAfter,d=t.virtual,h=d.from,p=d.to,u=d.slides,c=d.slidesGrid,v=d.renderSlide,f=d.offset;t.updateActiveIndex();var m,g,w,b=t.activeIndex||0;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",r?(g=Math.floor(s/2)+a+l,w=Math.floor(s/2)+a+o):(g=s+(a-1)+l,w=a+o);var y=Math.max((b||0)-w,0),x=Math.min((b||0)+g,u.length-1),E=(t.slidesGrid[y]||0)-(t.slidesGrid[0]||0);function T(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(extend$1(t.virtual,{from:y,to:x,offset:E,slidesGrid:t.slidesGrid}),h===y&&p===x&&!e)return t.slidesGrid!==c&&E!==f&&t.slides.css(m,E+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:E,from:y,to:x,slides:function(){for(var e=[],t=y;t<=x;t+=1)e.push(u[t]);return e}()}),void(t.params.virtual.renderExternalUpdate&&T());var C=[],S=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(var M=h;M<=p;M+=1)(M<y||M>x)&&t.$wrapperEl.find("."+t.params.slideClass+'[data-swiper-slide-index="'+M+'"]').remove();for(var $=0;$<u.length;$+=1)$>=y&&$<=x&&(void 0===p||e?S.push($):($>p&&S.push($),$<h&&C.push($)));S.forEach((function(e){t.$wrapperEl.append(v(u[e],e))})),C.sort((function(e,t){return t-e})).forEach((function(e){t.$wrapperEl.prepend(v(u[e],e))})),t.$wrapperEl.children(".swiper-slide").css(m,E+"px"),T()},renderSlide:function(e,t){var i=this.params.virtual;if(i.cache&&this.virtual.cache[t])return this.virtual.cache[t];var s=i.renderSlide?$(i.renderSlide.call(this,e,t)):$('<div class="'+this.params.slideClass+'" data-swiper-slide-index="'+t+'">'+e+"</div>");return s.attr("data-swiper-slide-index")||s.attr("data-swiper-slide-index",t),i.cache&&(this.virtual.cache[t]=s),s},appendSlide:function(e){if("object"==typeof e&&"length"in e)for(var t=0;t<e.length;t+=1)e[t]&&this.virtual.slides.push(e[t]);else this.virtual.slides.push(e);this.virtual.update(!0)},prependSlide:function(e){var t=this.activeIndex,i=t+1,s=1;if(Array.isArray(e)){for(var a=0;a<e.length;a+=1)e[a]&&this.virtual.slides.unshift(e[a]);i=t+e.length,s=e.length}else this.virtual.slides.unshift(e);if(this.params.virtual.cache){var r=this.virtual.cache,n={};Object.keys(r).forEach((function(e){var t=r[e],i=t.attr("data-swiper-slide-index");i&&t.attr("data-swiper-slide-index",parseInt(i,10)+1),n[parseInt(e,10)+s]=t})),this.virtual.cache=n}this.virtual.update(!0),this.slideTo(i,0)},removeSlide:function(e){if(null!=e){var t=this.activeIndex;if(Array.isArray(e))for(var i=e.length-1;i>=0;i-=1)this.virtual.slides.splice(e[i],1),this.params.virtual.cache&&delete this.virtual.cache[e[i]],e[i]<t&&(t-=1),t=Math.max(t,0);else this.virtual.slides.splice(e,1),this.params.virtual.cache&&delete this.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);this.virtual.update(!0),this.slideTo(t,0)}},removeAllSlides:function(){this.virtual.slides=[],this.params.virtual.cache&&(this.virtual.cache={}),this.virtual.update(!0),this.slideTo(0,0)}},Virtual$1={name:"virtual",params:{virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}},create:function(){bindModuleMethods(this,{virtual:_extends(_extends({},Virtual),{},{slides:this.params.virtual.slides,cache:{}})})},on:{beforeInit:function(e){if(e.params.virtual.enabled){e.classNames.push(e.params.containerModifierClass+"virtual");var t={watchSlidesProgress:!0};extend$1(e.params,t),extend$1(e.originalParams,t),e.params.initialSlide||e.virtual.update()}},setTranslate:function(e){e.params.virtual.enabled&&e.virtual.update()}}},Keyboard={handle:function(e){var t=getWindow(),i=getDocument(),s=this.rtlTranslate,a=e;a.originalEvent&&(a=a.originalEvent);var r=a.keyCode||a.charCode,n=this.params.keyboard.pageUpDown,o=n&&33===r,l=n&&34===r,d=37===r,h=39===r,p=38===r,u=40===r;if(!this.allowSlideNext&&(this.isHorizontal()&&h||this.isVertical()&&u||l))return!1;if(!this.allowSlidePrev&&(this.isHorizontal()&&d||this.isVertical()&&p||o))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||i.activeElement&&i.activeElement.nodeName&&("input"===i.activeElement.nodeName.toLowerCase()||"textarea"===i.activeElement.nodeName.toLowerCase()))){if(this.params.keyboard.onlyInViewport&&(o||l||d||h||p||u)){var c=!1;if(this.$el.parents("."+this.params.slideClass).length>0&&0===this.$el.parents("."+this.params.slideActiveClass).length)return;var v=t.innerWidth,f=t.innerHeight,m=this.$el.offset();s&&(m.left-=this.$el[0].scrollLeft);for(var g=[[m.left,m.top],[m.left+this.width,m.top],[m.left,m.top+this.height],[m.left+this.width,m.top+this.height]],w=0;w<g.length;w+=1){var b=g[w];b[0]>=0&&b[0]<=v&&b[1]>=0&&b[1]<=f&&(c=!0)}if(!c)return}this.isHorizontal()?((o||l||d||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((l||h)&&!s||(o||d)&&s)&&this.slideNext(),((o||d)&&!s||(l||h)&&s)&&this.slidePrev()):((o||l||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(l||u)&&this.slideNext(),(o||p)&&this.slidePrev()),this.emit("keyPress",r)}},enable:function(){var e=getDocument();this.keyboard.enabled||($(e).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable:function(){var e=getDocument();this.keyboard.enabled&&($(e).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}},Keyboard$1={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}},create:function(){bindModuleMethods(this,{keyboard:_extends({enabled:!1},Keyboard)})},on:{init:function(e){e.params.keyboard.enabled&&e.keyboard.enable()},destroy:function(e){e.keyboard.enabled&&e.keyboard.disable()}}};function isEventSupported(){var e=getDocument(),t="onwheel"in e;if(!t){var i=e.createElement("div");i.setAttribute("onwheel","return;"),t="function"==typeof i.onwheel}return!t&&e.implementation&&e.implementation.hasFeature&&!0!==e.implementation.hasFeature("","")&&(t=e.implementation.hasFeature("Events.wheel","3.0")),t}var Mousewheel={lastScrollTime:now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:function(){return getWindow().navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":isEventSupported()?"wheel":"mousewheel"},normalize:function(e){var t=0,i=0,s=0,a=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),s=10*t,a=10*i,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=a,a=0),(s||a)&&e.deltaMode&&(1===e.deltaMode?(s*=40,a*=40):(s*=800,a*=800)),s&&!t&&(t=s<1?-1:1),a&&!i&&(i=a<1?-1:1),{spinX:t,spinY:i,pixelX:s,pixelY:a}},handleMouseEnter:function(){this.mouseEntered=!0},handleMouseLeave:function(){this.mouseEntered=!1},handle:function(e){var t=e,i=this,s=i.params.mousewheel;i.params.cssMode&&t.preventDefault();var a=i.$el;if("container"!==i.params.mousewheel.eventsTarget&&(a=$(i.params.mousewheel.eventsTarget)),!i.mouseEntered&&!a[0].contains(t.target)&&!s.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);var r=0,n=i.rtlTranslate?-1:1,o=Mousewheel.normalize(t);if(s.forceToAxis)if(i.isHorizontal()){if(!(Math.abs(o.pixelX)>Math.abs(o.pixelY)))return!0;r=-o.pixelX*n}else{if(!(Math.abs(o.pixelY)>Math.abs(o.pixelX)))return!0;r=-o.pixelY}else r=Math.abs(o.pixelX)>Math.abs(o.pixelY)?-o.pixelX*n:-o.pixelY;if(0===r)return!0;if(s.invert&&(r=-r),i.params.freeMode){var l={time:now(),delta:Math.abs(r),direction:Math.sign(r)},d=i.mousewheel.lastEventBeforeSnap,h=d&&l.time<d.time+500&&l.delta<=d.delta&&l.direction===d.direction;if(!h){i.mousewheel.lastEventBeforeSnap=void 0,i.params.loop&&i.loopFix();var p=i.getTranslate()+r*s.sensitivity,u=i.isBeginning,c=i.isEnd;if(p>=i.minTranslate()&&(p=i.minTranslate()),p<=i.maxTranslate()&&(p=i.maxTranslate()),i.setTransition(0),i.setTranslate(p),i.updateProgress(),i.updateActiveIndex(),i.updateSlidesClasses(),(!u&&i.isBeginning||!c&&i.isEnd)&&i.updateSlidesClasses(),i.params.freeModeSticky){clearTimeout(i.mousewheel.timeout),i.mousewheel.timeout=void 0;var v=i.mousewheel.recentWheelEvents;v.length>=15&&v.shift();var f=v.length?v[v.length-1]:void 0,m=v[0];if(v.push(l),f&&(l.delta>f.delta||l.direction!==f.direction))v.splice(0);else if(v.length>=15&&l.time-m.time<500&&m.delta-l.delta>=1&&l.delta<=6){var g=r>0?.8:.2;i.mousewheel.lastEventBeforeSnap=l,v.splice(0),i.mousewheel.timeout=nextTick((function(){i.slideToClosest(i.params.speed,!0,void 0,g)}),0)}i.mousewheel.timeout||(i.mousewheel.timeout=nextTick((function(){i.mousewheel.lastEventBeforeSnap=l,v.splice(0),i.slideToClosest(i.params.speed,!0,void 0,.5)}),500))}if(h||i.emit("scroll",t),i.params.autoplay&&i.params.autoplayDisableOnInteraction&&i.autoplay.stop(),p===i.minTranslate()||p===i.maxTranslate())return!0}}else{var w={time:now(),delta:Math.abs(r),direction:Math.sign(r),raw:e},b=i.mousewheel.recentWheelEvents;b.length>=2&&b.shift();var y=b.length?b[b.length-1]:void 0;if(b.push(w),y?(w.direction!==y.direction||w.delta>y.delta||w.time>y.time+150)&&i.mousewheel.animateSlider(w):i.mousewheel.animateSlider(w),i.mousewheel.releaseScroll(w))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider:function(e){var t=getWindow();return!(this.params.mousewheel.thresholdDelta&&e.delta<this.params.mousewheel.thresholdDelta)&&(!(this.params.mousewheel.thresholdTime&&now()-this.mousewheel.lastScrollTime<this.params.mousewheel.thresholdTime)&&(e.delta>=6&&now()-this.mousewheel.lastScrollTime<60||(e.direction<0?this.isEnd&&!this.params.loop||this.animating||(this.slideNext(),this.emit("scroll",e.raw)):this.isBeginning&&!this.params.loop||this.animating||(this.slidePrev(),this.emit("scroll",e.raw)),this.mousewheel.lastScrollTime=(new t.Date).getTime(),!1)))},releaseScroll:function(e){var t=this.params.mousewheel;if(e.direction<0){if(this.isEnd&&!this.params.loop&&t.releaseOnEdges)return!0}else if(this.isBeginning&&!this.params.loop&&t.releaseOnEdges)return!0;return!1},enable:function(){var e=Mousewheel.event();if(this.params.cssMode)return this.wrapperEl.removeEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarget&&(t=$(this.params.mousewheel.eventsTarget)),t.on("mouseenter",this.mousewheel.handleMouseEnter),t.on("mouseleave",this.mousewheel.handleMouseLeave),t.on(e,this.mousewheel.handle),this.mousewheel.enabled=!0,!0},disable:function(){var e=Mousewheel.event();if(this.params.cssMode)return this.wrapperEl.addEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(!this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarget&&(t=$(this.params.mousewheel.eventsTarget)),t.off(e,this.mousewheel.handle),this.mousewheel.enabled=!1,!0}},Mousewheel$1={name:"mousewheel",params:{mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}},create:function(){bindModuleMethods(this,{mousewheel:{enabled:!1,lastScrollTime:now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],enable:Mousewheel.enable,disable:Mousewheel.disable,handle:Mousewheel.handle,handleMouseEnter:Mousewheel.handleMouseEnter,handleMouseLeave:Mousewheel.handleMouseLeave,animateSlider:Mousewheel.animateSlider,releaseScroll:Mousewheel.releaseScroll}})},on:{init:function(e){!e.params.mousewheel.enabled&&e.params.cssMode&&e.mousewheel.disable(),e.params.mousewheel.enabled&&e.mousewheel.enable()},destroy:function(e){e.params.cssMode&&e.mousewheel.enable(),e.mousewheel.enabled&&e.mousewheel.disable()}}},Navigation={update:function(){var e=this.params.navigation;if(!this.params.loop){var t=this.navigation,i=t.$nextEl,s=t.$prevEl;s&&s.length>0&&(this.isBeginning?s.addClass(e.disabledClass):s.removeClass(e.disabledClass),s[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass)),i&&i.length>0&&(this.isEnd?i.addClass(e.disabledClass):i.removeClass(e.disabledClass),i[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass))}},onPrevClick:function(e){e.preventDefault(),this.isBeginning&&!this.params.loop||this.slidePrev()},onNextClick:function(e){e.preventDefault(),this.isEnd&&!this.params.loop||this.slideNext()},init:function(){var e,t,i=this.params.navigation;(i.nextEl||i.prevEl)&&(i.nextEl&&(e=$(i.nextEl),this.params.uniqueNavElements&&"string"==typeof i.nextEl&&e.length>1&&1===this.$el.find(i.nextEl).length&&(e=this.$el.find(i.nextEl))),i.prevEl&&(t=$(i.prevEl),this.params.uniqueNavElements&&"string"==typeof i.prevEl&&t.length>1&&1===this.$el.find(i.prevEl).length&&(t=this.$el.find(i.prevEl))),e&&e.length>0&&e.on("click",this.navigation.onNextClick),t&&t.length>0&&t.on("click",this.navigation.onPrevClick),extend$1(this.navigation,{$nextEl:e,nextEl:e&&e[0],$prevEl:t,prevEl:t&&t[0]}))},destroy:function(){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;t&&t.length&&(t.off("click",this.navigation.onNextClick),t.removeClass(this.params.navigation.disabledClass)),i&&i.length&&(i.off("click",this.navigation.onPrevClick),i.removeClass(this.params.navigation.disabledClass))}},Navigation$1={name:"navigation",params:{navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}},create:function(){bindModuleMethods(this,{navigation:_extends({},Navigation)})},on:{init:function(e){e.navigation.init(),e.navigation.update()},toEdge:function(e){e.navigation.update()},fromEdge:function(e){e.navigation.update()},destroy:function(e){e.navigation.destroy()},click:function(e,t){var i,s=e.navigation,a=s.$nextEl,r=s.$prevEl;!e.params.navigation.hideOnClick||$(t.target).is(r)||$(t.target).is(a)||(a?i=a.hasClass(e.params.navigation.hiddenClass):r&&(i=r.hasClass(e.params.navigation.hiddenClass)),!0===i?e.emit("navigationShow"):e.emit("navigationHide"),a&&a.toggleClass(e.params.navigation.hiddenClass),r&&r.toggleClass(e.params.navigation.hiddenClass))}}},Pagination={update:function(){var e=this.rtl,t=this.params.pagination;if(t.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var i,s=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,a=this.pagination.$el,r=this.params.loop?Math.ceil((s-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length;if(this.params.loop?((i=Math.ceil((this.activeIndex-this.loopedSlides)/this.params.slidesPerGroup))>s-1-2*this.loopedSlides&&(i-=s-2*this.loopedSlides),i>r-1&&(i-=r),i<0&&"bullets"!==this.params.paginationType&&(i=r+i)):i=void 0!==this.snapIndex?this.snapIndex:this.activeIndex||0,"bullets"===t.type&&this.pagination.bullets&&this.pagination.bullets.length>0){var n,o,l,d=this.pagination.bullets;if(t.dynamicBullets&&(this.pagination.bulletSize=d.eq(0)[this.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(this.isHorizontal()?"width":"height",this.pagination.bulletSize*(t.dynamicMainBullets+4)+"px"),t.dynamicMainBullets>1&&void 0!==this.previousIndex&&(this.pagination.dynamicBulletIndex+=i-this.previousIndex,this.pagination.dynamicBulletIndex>t.dynamicMainBullets-1?this.pagination.dynamicBulletIndex=t.dynamicMainBullets-1:this.pagination.dynamicBulletIndex<0&&(this.pagination.dynamicBulletIndex=0)),n=i-this.pagination.dynamicBulletIndex,l=((o=n+(Math.min(d.length,t.dynamicMainBullets)-1))+n)/2),d.removeClass(t.bulletActiveClass+" "+t.bulletActiveClass+"-next "+t.bulletActiveClass+"-next-next "+t.bulletActiveClass+"-prev "+t.bulletActiveClass+"-prev-prev "+t.bulletActiveClass+"-main"),a.length>1)d.each((function(e){var s=$(e),a=s.index();a===i&&s.addClass(t.bulletActiveClass),t.dynamicBullets&&(a>=n&&a<=o&&s.addClass(t.bulletActiveClass+"-main"),a===n&&s.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),a===o&&s.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next"))}));else{var h=d.eq(i),p=h.index();if(h.addClass(t.bulletActiveClass),t.dynamicBullets){for(var u=d.eq(n),c=d.eq(o),v=n;v<=o;v+=1)d.eq(v).addClass(t.bulletActiveClass+"-main");if(this.params.loop)if(p>=d.length-t.dynamicMainBullets){for(var f=t.dynamicMainBullets;f>=0;f-=1)d.eq(d.length-f).addClass(t.bulletActiveClass+"-main");d.eq(d.length-t.dynamicMainBullets-1).addClass(t.bulletActiveClass+"-prev")}else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),c.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next");else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),c.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next")}}if(t.dynamicBullets){var m=Math.min(d.length,t.dynamicMainBullets+4),g=(this.pagination.bulletSize*m-this.pagination.bulletSize)/2-l*this.pagination.bulletSize,w=e?"right":"left";d.css(this.isHorizontal()?w:"top",g+"px")}}if("fraction"===t.type&&(a.find("."+t.currentClass).text(t.formatFractionCurrent(i+1)),a.find("."+t.totalClass).text(t.formatFractionTotal(r))),"progressbar"===t.type){var b;b=t.progressbarOpposite?this.isHorizontal()?"vertical":"horizontal":this.isHorizontal()?"horizontal":"vertical";var y=(i+1)/r,x=1,E=1;"horizontal"===b?x=y:E=y,a.find("."+t.progressbarFillClass).transform("translate3d(0,0,0) scaleX("+x+") scaleY("+E+")").transition(this.params.speed)}"custom"===t.type&&t.renderCustom?(a.html(t.renderCustom(this,i+1,r)),this.emit("paginationRender",a[0])):this.emit("paginationUpdate",a[0]),a[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](t.lockClass)}},render:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,i=this.pagination.$el,s="";if("bullets"===e.type){for(var a=this.params.loop?Math.ceil((t-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length,r=0;r<a;r+=1)e.renderBullet?s+=e.renderBullet.call(this,r,e.bulletClass):s+="<"+e.bulletElement+' class="'+e.bulletClass+'"></'+e.bulletElement+">";i.html(s),this.pagination.bullets=i.find("."+e.bulletClass)}"fraction"===e.type&&(s=e.renderFraction?e.renderFraction.call(this,e.currentClass,e.totalClass):'<span class="'+e.currentClass+'"></span> / <span class="'+e.totalClass+'"></span>',i.html(s)),"progressbar"===e.type&&(s=e.renderProgressbar?e.renderProgressbar.call(this,e.progressbarFillClass):'<span class="'+e.progressbarFillClass+'"></span>',i.html(s)),"custom"!==e.type&&this.emit("paginationRender",this.pagination.$el[0])}},init:function(){var e=this,t=e.params.pagination;if(t.el){var i=$(t.el);0!==i.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&i.length>1&&(i=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&i.addClass(t.clickableClass),i.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(i.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&i.addClass(t.progressbarOppositeClass),t.clickable&&i.on("click","."+t.bulletClass,(function(t){t.preventDefault();var i=$(this).index()*e.params.slidesPerGroup;e.params.loop&&(i+=e.loopedSlides),e.slideTo(i)})),extend$1(e.pagination,{$el:i,el:i[0]}))}},destroy:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}}},Pagination$1={name:"pagination",params:{pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:function(e){return e},formatFractionTotal:function(e){return e},bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",modifierClass:"swiper-pagination-",currentClass:"swiper-pagination-current",totalClass:"swiper-pagination-total",hiddenClass:"swiper-pagination-hidden",progressbarFillClass:"swiper-pagination-progressbar-fill",progressbarOppositeClass:"swiper-pagination-progressbar-opposite",clickableClass:"swiper-pagination-clickable",lockClass:"swiper-pagination-lock"}},create:function(){bindModuleMethods(this,{pagination:_extends({dynamicBulletIndex:0},Pagination)})},on:{init:function(e){e.pagination.init(),e.pagination.render(),e.pagination.update()},activeIndexChange:function(e){(e.params.loop||void 0===e.snapIndex)&&e.pagination.update()},snapIndexChange:function(e){e.params.loop||e.pagination.update()},slidesLengthChange:function(e){e.params.loop&&(e.pagination.render(),e.pagination.update())},snapGridLengthChange:function(e){e.params.loop||(e.pagination.render(),e.pagination.update())},destroy:function(e){e.pagination.destroy()},click:function(e,t){e.params.pagination.el&&e.params.pagination.hideOnClick&&e.pagination.$el.length>0&&!$(t.target).hasClass(e.params.pagination.bulletClass)&&(!0===e.pagination.$el.hasClass(e.params.pagination.hiddenClass)?e.emit("paginationShow"):e.emit("paginationHide"),e.pagination.$el.toggleClass(e.params.pagination.hiddenClass))}}},Scrollbar={setTranslate:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=this.rtlTranslate,i=this.progress,s=e.dragSize,a=e.trackSize,r=e.$dragEl,n=e.$el,o=this.params.scrollbar,l=s,d=(a-s)*i;t?(d=-d)>0?(l=s-d,d=0):-d+s>a&&(l=a+d):d<0?(l=s+d,d=0):d+s>a&&(l=a-d),this.isHorizontal()?(r.transform("translate3d("+d+"px, 0, 0)"),r[0].style.width=l+"px"):(r.transform("translate3d(0px, "+d+"px, 0)"),r[0].style.height=l+"px"),o.hide&&(clearTimeout(this.scrollbar.timeout),n[0].style.opacity=1,this.scrollbar.timeout=setTimeout((function(){n[0].style.opacity=0,n.transition(400)}),1e3))}},setTransition:function(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=e.$dragEl,i=e.$el;t[0].style.width="",t[0].style.height="";var s,a=this.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,r=this.size/this.virtualSize,n=r*(a/this.size);s="auto"===this.params.scrollbar.dragSize?a*r:parseInt(this.params.scrollbar.dragSize,10),this.isHorizontal()?t[0].style.width=s+"px":t[0].style.height=s+"px",i[0].style.display=r>=1?"none":"",this.params.scrollbar.hide&&(i[0].style.opacity=0),extend$1(e,{trackSize:a,divider:r,moveDivider:n,dragSize:s}),e.$el[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](this.params.scrollbar.lockClass)}},getPointerPosition:function(e){return this.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition:function(e){var t,i=this.scrollbar,s=this.rtlTranslate,a=i.$el,r=i.dragSize,n=i.trackSize,o=i.dragStartPos;t=(i.getPointerPosition(e)-a.offset()[this.isHorizontal()?"left":"top"]-(null!==o?o:r/2))/(n-r),t=Math.max(Math.min(t,1),0),s&&(t=1-t);var l=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*t;this.updateProgress(l),this.setTranslate(l),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el,r=i.$dragEl;this.scrollbar.isTouched=!0,this.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[this.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),s.transition(100),r.transition(100),i.setDragPosition(e),clearTimeout(this.scrollbar.dragTimeout),a.transition(0),t.hide&&a.css("opacity",1),this.params.cssMode&&this.$wrapperEl.css("scroll-snap-type","none"),this.emit("scrollbarDragStart",e)},onDragMove:function(e){var t=this.scrollbar,i=this.$wrapperEl,s=t.$el,a=t.$dragEl;this.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,t.setDragPosition(e),i.transition(0),s.transition(0),a.transition(0),this.emit("scrollbarDragMove",e))},onDragEnd:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el;this.scrollbar.isTouched&&(this.scrollbar.isTouched=!1,this.params.cssMode&&(this.$wrapperEl.css("scroll-snap-type",""),s.transition("")),t.hide&&(clearTimeout(this.scrollbar.dragTimeout),this.scrollbar.dragTimeout=nextTick((function(){a.css("opacity",0),a.transition(400)}),1e3)),this.emit("scrollbarDragEnd",e),t.snapOnRelease&&this.slideToClosest())},enableDraggable:function(){if(this.params.scrollbar.el){var e=getDocument(),t=this.scrollbar,i=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=this.support,n=t.$el[0],o=!(!r.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!r.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};r.touch?(n.addEventListener(i.start,this.scrollbar.onDragStart,o),n.addEventListener(i.move,this.scrollbar.onDragMove,o),n.addEventListener(i.end,this.scrollbar.onDragEnd,l)):(n.addEventListener(s.start,this.scrollbar.onDragStart,o),e.addEventListener(s.move,this.scrollbar.onDragMove,o),e.addEventListener(s.end,this.scrollbar.onDragEnd,l))}},disableDraggable:function(){if(this.params.scrollbar.el){var e=getDocument(),t=this.scrollbar,i=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=this.support,n=t.$el[0],o=!(!r.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!r.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};r.touch?(n.removeEventListener(i.start,this.scrollbar.onDragStart,o),n.removeEventListener(i.move,this.scrollbar.onDragMove,o),n.removeEventListener(i.end,this.scrollbar.onDragEnd,l)):(n.removeEventListener(s.start,this.scrollbar.onDragStart,o),e.removeEventListener(s.move,this.scrollbar.onDragMove,o),e.removeEventListener(s.end,this.scrollbar.onDragEnd,l))}},init:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.$el,i=this.params.scrollbar,s=$(i.el);this.params.uniqueNavElements&&"string"==typeof i.el&&s.length>1&&1===t.find(i.el).length&&(s=t.find(i.el));var a=s.find("."+this.params.scrollbar.dragClass);0===a.length&&(a=$('<div class="'+this.params.scrollbar.dragClass+'"></div>'),s.append(a)),extend$1(e,{$el:s,el:s[0],$dragEl:a,dragEl:a[0]}),i.draggable&&e.enableDraggable()}},destroy:function(){this.scrollbar.disableDraggable()}},Scrollbar$1={name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create:function(){bindModuleMethods(this,{scrollbar:_extends({isTouched:!1,timeout:null,dragTimeout:null},Scrollbar)})},on:{init:function(e){e.scrollbar.init(),e.scrollbar.updateSize(),e.scrollbar.setTranslate()},update:function(e){e.scrollbar.updateSize()},resize:function(e){e.scrollbar.updateSize()},observerUpdate:function(e){e.scrollbar.updateSize()},setTranslate:function(e){e.scrollbar.setTranslate()},setTransition:function(e,t){e.scrollbar.setTransition(t)},destroy:function(e){e.scrollbar.destroy()}}},Parallax={setTransform:function(e,t){var i=this.rtl,s=$(e),a=i?-1:1,r=s.attr("data-swiper-parallax")||"0",n=s.attr("data-swiper-parallax-x"),o=s.attr("data-swiper-parallax-y"),l=s.attr("data-swiper-parallax-scale"),d=s.attr("data-swiper-parallax-opacity");if(n||o?(n=n||"0",o=o||"0"):this.isHorizontal()?(n=r,o="0"):(o=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*t*a+"%":n*t*a+"px",o=o.indexOf("%")>=0?parseInt(o,10)*t+"%":o*t+"px",null!=d){var h=d-(d-1)*(1-Math.abs(t));s[0].style.opacity=h}if(null==l)s.transform("translate3d("+n+", "+o+", 0px)");else{var p=l-(l-1)*(1-Math.abs(t));s.transform("translate3d("+n+", "+o+", 0px) scale("+p+")")}},setTranslate:function(){var e=this,t=e.$el,i=e.slides,s=e.progress,a=e.snapGrid;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){e.parallax.setTransform(t,s)})),i.each((function(t,i){var r=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(r+=Math.ceil(i/2)-s*(a.length-1)),r=Math.min(Math.max(r,-1),1),$(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){e.parallax.setTransform(t,r)}))}))},setTransition:function(e){void 0===e&&(e=this.params.speed);this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){var i=$(t),s=parseInt(i.attr("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),i.transition(s)}))}},Parallax$1={name:"parallax",params:{parallax:{enabled:!1}},create:function(){bindModuleMethods(this,{parallax:_extends({},Parallax)})},on:{beforeInit:function(e){e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)},init:function(e){e.params.parallax.enabled&&e.parallax.setTranslate()},setTranslate:function(e){e.params.parallax.enabled&&e.parallax.setTranslate()},setTransition:function(e,t){e.params.parallax.enabled&&e.parallax.setTransition(t)}}},Zoom={getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var t=e.targetTouches[0].pageX,i=e.targetTouches[0].pageY,s=e.targetTouches[1].pageX,a=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-t,2)+Math.pow(a-i,2))},onGestureStart:function(e){var t=this.support,i=this.params.zoom,s=this.zoom,a=s.gesture;if(s.fakeGestureTouched=!1,s.fakeGestureMoved=!1,!t.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;s.fakeGestureTouched=!0,a.scaleStart=Zoom.getDistanceBetweenTouches(e)}a.$slideEl&&a.$slideEl.length||(a.$slideEl=$(e.target).closest("."+this.params.slideClass),0===a.$slideEl.length&&(a.$slideEl=this.slides.eq(this.activeIndex)),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+i.containerClass),a.maxRatio=a.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,0!==a.$imageWrapEl.length)?(a.$imageEl&&a.$imageEl.transition(0),this.zoom.isScaling=!0):a.$imageEl=void 0},onGestureChange:function(e){var t=this.support,i=this.params.zoom,s=this.zoom,a=s.gesture;if(!t.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;s.fakeGestureMoved=!0,a.scaleMove=Zoom.getDistanceBetweenTouches(e)}a.$imageEl&&0!==a.$imageEl.length?(t.gestures?s.scale=e.scale*s.currentScale:s.scale=a.scaleMove/a.scaleStart*s.currentScale,s.scale>a.maxRatio&&(s.scale=a.maxRatio-1+Math.pow(s.scale-a.maxRatio+1,.5)),s.scale<i.minRatio&&(s.scale=i.minRatio+1-Math.pow(i.minRatio-s.scale+1,.5)),a.$imageEl.transform("translate3d(0,0,0) scale("+s.scale+")")):"gesturechange"===e.type&&s.onGestureStart(e)},onGestureEnd:function(e){var t=this.device,i=this.support,s=this.params.zoom,a=this.zoom,r=a.gesture;if(!i.gestures){if(!a.fakeGestureTouched||!a.fakeGestureMoved)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!t.android)return;a.fakeGestureTouched=!1,a.fakeGestureMoved=!1}r.$imageEl&&0!==r.$imageEl.length&&(a.scale=Math.max(Math.min(a.scale,r.maxRatio),s.minRatio),r.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale("+a.scale+")"),a.currentScale=a.scale,a.isScaling=!1,1===a.scale&&(r.$slideEl=void 0))},onTouchStart:function(e){var t=this.device,i=this.zoom,s=i.gesture,a=i.image;s.$imageEl&&0!==s.$imageEl.length&&(a.isTouched||(t.android&&e.cancelable&&e.preventDefault(),a.isTouched=!0,a.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,a.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))},onTouchMove:function(e){var t=this.zoom,i=t.gesture,s=t.image,a=t.velocity;if(i.$imageEl&&0!==i.$imageEl.length&&(this.allowClick=!1,s.isTouched&&i.$slideEl)){s.isMoved||(s.width=i.$imageEl[0].offsetWidth,s.height=i.$imageEl[0].offsetHeight,s.startX=getTranslate(i.$imageWrapEl[0],"x")||0,s.startY=getTranslate(i.$imageWrapEl[0],"y")||0,i.slideWidth=i.$slideEl[0].offsetWidth,i.slideHeight=i.$slideEl[0].offsetHeight,i.$imageWrapEl.transition(0),this.rtl&&(s.startX=-s.startX,s.startY=-s.startY));var r=s.width*t.scale,n=s.height*t.scale;if(!(r<i.slideWidth&&n<i.slideHeight)){if(s.minX=Math.min(i.slideWidth/2-r/2,0),s.maxX=-s.minX,s.minY=Math.min(i.slideHeight/2-n/2,0),s.maxY=-s.minY,s.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,s.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!s.isMoved&&!t.isScaling){if(this.isHorizontal()&&(Math.floor(s.minX)===Math.floor(s.startX)&&s.touchesCurrent.x<s.touchesStart.x||Math.floor(s.maxX)===Math.floor(s.startX)&&s.touchesCurrent.x>s.touchesStart.x))return void(s.isTouched=!1);if(!this.isHorizontal()&&(Math.floor(s.minY)===Math.floor(s.startY)&&s.touchesCurrent.y<s.touchesStart.y||Math.floor(s.maxY)===Math.floor(s.startY)&&s.touchesCurrent.y>s.touchesStart.y))return void(s.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),s.isMoved=!0,s.currentX=s.touchesCurrent.x-s.touchesStart.x+s.startX,s.currentY=s.touchesCurrent.y-s.touchesStart.y+s.startY,s.currentX<s.minX&&(s.currentX=s.minX+1-Math.pow(s.minX-s.currentX+1,.8)),s.currentX>s.maxX&&(s.currentX=s.maxX-1+Math.pow(s.currentX-s.maxX+1,.8)),s.currentY<s.minY&&(s.currentY=s.minY+1-Math.pow(s.minY-s.currentY+1,.8)),s.currentY>s.maxY&&(s.currentY=s.maxY-1+Math.pow(s.currentY-s.maxY+1,.8)),a.prevPositionX||(a.prevPositionX=s.touchesCurrent.x),a.prevPositionY||(a.prevPositionY=s.touchesCurrent.y),a.prevTime||(a.prevTime=Date.now()),a.x=(s.touchesCurrent.x-a.prevPositionX)/(Date.now()-a.prevTime)/2,a.y=(s.touchesCurrent.y-a.prevPositionY)/(Date.now()-a.prevTime)/2,Math.abs(s.touchesCurrent.x-a.prevPositionX)<2&&(a.x=0),Math.abs(s.touchesCurrent.y-a.prevPositionY)<2&&(a.y=0),a.prevPositionX=s.touchesCurrent.x,a.prevPositionY=s.touchesCurrent.y,a.prevTime=Date.now(),i.$imageWrapEl.transform("translate3d("+s.currentX+"px, "+s.currentY+"px,0)")}}},onTouchEnd:function(){var e=this.zoom,t=e.gesture,i=e.image,s=e.velocity;if(t.$imageEl&&0!==t.$imageEl.length){if(!i.isTouched||!i.isMoved)return i.isTouched=!1,void(i.isMoved=!1);i.isTouched=!1,i.isMoved=!1;var a=300,r=300,n=s.x*a,o=i.currentX+n,l=s.y*r,d=i.currentY+l;0!==s.x&&(a=Math.abs((o-i.currentX)/s.x)),0!==s.y&&(r=Math.abs((d-i.currentY)/s.y));var h=Math.max(a,r);i.currentX=o,i.currentY=d;var p=i.width*e.scale,u=i.height*e.scale;i.minX=Math.min(t.slideWidth/2-p/2,0),i.maxX=-i.minX,i.minY=Math.min(t.slideHeight/2-u/2,0),i.maxY=-i.minY,i.currentX=Math.max(Math.min(i.currentX,i.maxX),i.minX),i.currentY=Math.max(Math.min(i.currentY,i.maxY),i.minY),t.$imageWrapEl.transition(h).transform("translate3d("+i.currentX+"px, "+i.currentY+"px,0)")}},onTransitionEnd:function(){var e=this.zoom,t=e.gesture;t.$slideEl&&this.previousIndex!==this.activeIndex&&(t.$imageEl&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&t.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,e.currentScale=1,t.$slideEl=void 0,t.$imageEl=void 0,t.$imageWrapEl=void 0)},toggle:function(e){var t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in:function(e){var t,i,s,a,r,n,o,l,d,h,p,u,c,v,f,m,g=this.zoom,w=this.params.zoom,b=g.gesture,y=g.image;(b.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?b.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):b.$slideEl=this.slides.eq(this.activeIndex),b.$imageEl=b.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),b.$imageWrapEl=b.$imageEl.parent("."+w.containerClass)),b.$imageEl&&0!==b.$imageEl.length)&&(b.$slideEl.addClass(""+w.zoomedSlideClass),void 0===y.touchesStart.x&&e?(t="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,i="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(t=y.touchesStart.x,i=y.touchesStart.y),g.scale=b.$imageWrapEl.attr("data-swiper-zoom")||w.maxRatio,g.currentScale=b.$imageWrapEl.attr("data-swiper-zoom")||w.maxRatio,e?(f=b.$slideEl[0].offsetWidth,m=b.$slideEl[0].offsetHeight,s=b.$slideEl.offset().left+f/2-t,a=b.$slideEl.offset().top+m/2-i,o=b.$imageEl[0].offsetWidth,l=b.$imageEl[0].offsetHeight,d=o*g.scale,h=l*g.scale,c=-(p=Math.min(f/2-d/2,0)),v=-(u=Math.min(m/2-h/2,0)),(r=s*g.scale)<p&&(r=p),r>c&&(r=c),(n=a*g.scale)<u&&(n=u),n>v&&(n=v)):(r=0,n=0),b.$imageWrapEl.transition(300).transform("translate3d("+r+"px, "+n+"px,0)"),b.$imageEl.transition(300).transform("translate3d(0,0,0) scale("+g.scale+")"))},out:function(){var e=this.zoom,t=this.params.zoom,i=e.gesture;i.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?i.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):i.$slideEl=this.slides.eq(this.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+t.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&(e.scale=1,e.currentScale=1,i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),i.$slideEl.removeClass(""+t.zoomedSlideClass),i.$slideEl=void 0)},toggleGestures:function(e){var t=this.zoom,i=t.slideSelector,s=t.passiveListener;this.$wrapperEl[e]("gesturestart",i,t.onGestureStart,s),this.$wrapperEl[e]("gesturechange",i,t.onGestureChange,s),this.$wrapperEl[e]("gestureend",i,t.onGestureEnd,s)},enableGestures:function(){this.zoom.gesturesEnabled||(this.zoom.gesturesEnabled=!0,this.zoom.toggleGestures("on"))},disableGestures:function(){this.zoom.gesturesEnabled&&(this.zoom.gesturesEnabled=!1,this.zoom.toggleGestures("off"))},enable:function(){var e=this.support,t=this.zoom;if(!t.enabled){t.enabled=!0;var i=!("touchstart"!==this.touchEvents.start||!e.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},s=!e.passiveListener||{passive:!1,capture:!0},a="."+this.params.slideClass;this.zoom.passiveListener=i,this.zoom.slideSelector=a,e.gestures?(this.$wrapperEl.on(this.touchEvents.start,this.zoom.enableGestures,i),this.$wrapperEl.on(this.touchEvents.end,this.zoom.disableGestures,i)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.on(this.touchEvents.start,a,t.onGestureStart,i),this.$wrapperEl.on(this.touchEvents.move,a,t.onGestureChange,s),this.$wrapperEl.on(this.touchEvents.end,a,t.onGestureEnd,i),this.touchEvents.cancel&&this.$wrapperEl.on(this.touchEvents.cancel,a,t.onGestureEnd,i)),this.$wrapperEl.on(this.touchEvents.move,"."+this.params.zoom.containerClass,t.onTouchMove,s)}},disable:function(){var e=this.zoom;if(e.enabled){var t=this.support;this.zoom.enabled=!1;var i=!("touchstart"!==this.touchEvents.start||!t.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},s=!t.passiveListener||{passive:!1,capture:!0},a="."+this.params.slideClass;t.gestures?(this.$wrapperEl.off(this.touchEvents.start,this.zoom.enableGestures,i),this.$wrapperEl.off(this.touchEvents.end,this.zoom.disableGestures,i)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.off(this.touchEvents.start,a,e.onGestureStart,i),this.$wrapperEl.off(this.touchEvents.move,a,e.onGestureChange,s),this.$wrapperEl.off(this.touchEvents.end,a,e.onGestureEnd,i),this.touchEvents.cancel&&this.$wrapperEl.off(this.touchEvents.cancel,a,e.onGestureEnd,i)),this.$wrapperEl.off(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,s)}}},Zoom$1={name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create:function(){var e=this;bindModuleMethods(e,{zoom:_extends({enabled:!1,scale:1,currentScale:1,isScaling:!1,gesture:{$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0}},Zoom)});var t=1;Object.defineProperty(e.zoom,"scale",{get:function(){return t},set:function(i){if(t!==i){var s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,a=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",i,s,a)}t=i}})},on:{init:function(e){e.params.zoom.enabled&&e.zoom.enable()},destroy:function(e){e.zoom.disable()},touchStart:function(e,t){e.zoom.enabled&&e.zoom.onTouchStart(t)},touchEnd:function(e,t){e.zoom.enabled&&e.zoom.onTouchEnd(t)},doubleTap:function(e,t){e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&e.zoom.toggle(t)},transitionEnd:function(e){e.zoom.enabled&&e.params.zoom.enabled&&e.zoom.onTransitionEnd()},slideChange:function(e){e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&e.zoom.onTransitionEnd()}}},Lazy={loadInSlide:function(e,t){void 0===t&&(t=!0);var i=this,s=i.params.lazy;if(void 0!==e&&0!==i.slides.length){var a=i.virtual&&i.params.virtual.enabled?i.$wrapperEl.children("."+i.params.slideClass+'[data-swiper-slide-index="'+e+'"]'):i.slides.eq(e),r=a.find("."+s.elementClass+":not(."+s.loadedClass+"):not(."+s.loadingClass+")");!a.hasClass(s.elementClass)||a.hasClass(s.loadedClass)||a.hasClass(s.loadingClass)||r.push(a[0]),0!==r.length&&r.each((function(e){var r=$(e);r.addClass(s.loadingClass);var n=r.attr("data-background"),o=r.attr("data-src"),l=r.attr("data-srcset"),d=r.attr("data-sizes"),h=r.parent("picture");i.loadImage(r[0],o||n,l,d,!1,(function(){if(null!=i&&i&&(!i||i.params)&&!i.destroyed){if(n?(r.css("background-image",'url("'+n+'")'),r.removeAttr("data-background")):(l&&(r.attr("srcset",l),r.removeAttr("data-srcset")),d&&(r.attr("sizes",d),r.removeAttr("data-sizes")),h.length&&h.children("source").each((function(e){var t=$(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),o&&(r.attr("src",o),r.removeAttr("data-src"))),r.addClass(s.loadedClass).removeClass(s.loadingClass),a.find("."+s.preloaderClass).remove(),i.params.loop&&t){var e=a.attr("data-swiper-slide-index");if(a.hasClass(i.params.slideDuplicateClass)){var p=i.$wrapperEl.children('[data-swiper-slide-index="'+e+'"]:not(.'+i.params.slideDuplicateClass+")");i.lazy.loadInSlide(p.index(),!1)}else{var u=i.$wrapperEl.children("."+i.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');i.lazy.loadInSlide(u.index(),!1)}}i.emit("lazyImageReady",a[0],r[0]),i.params.autoHeight&&i.updateAutoHeight()}})),i.emit("lazyImageLoad",a[0],r[0])}))}},load:function(){var e=this,t=e.$wrapperEl,i=e.params,s=e.slides,a=e.activeIndex,r=e.virtual&&i.virtual.enabled,n=i.lazy,o=i.slidesPerView;function l(e){if(r){if(t.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]').length)return!0}else if(s[e])return!0;return!1}function d(e){return r?$(e).attr("data-swiper-slide-index"):$(e).index()}if("auto"===o&&(o=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+i.slideVisibleClass).each((function(t){var i=r?$(t).attr("data-swiper-slide-index"):$(t).index();e.lazy.loadInSlide(i)}));else if(o>1)for(var h=a;h<a+o;h+=1)l(h)&&e.lazy.loadInSlide(h);else e.lazy.loadInSlide(a);if(n.loadPrevNext)if(o>1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){for(var p=n.loadPrevNextAmount,u=o,c=Math.min(a+u+Math.max(p,u),s.length),v=Math.max(a-Math.max(u,p),0),f=a+o;f<c;f+=1)l(f)&&e.lazy.loadInSlide(f);for(var m=v;m<a;m+=1)l(m)&&e.lazy.loadInSlide(m)}else{var g=t.children("."+i.slideNextClass);g.length>0&&e.lazy.loadInSlide(d(g));var w=t.children("."+i.slidePrevClass);w.length>0&&e.lazy.loadInSlide(d(w))}}},Lazy$1={name:"lazy",params:{lazy:{enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}},create:function(){bindModuleMethods(this,{lazy:_extends({initialImageLoaded:!1},Lazy)})},on:{beforeInit:function(e){e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)},init:function(e){e.params.lazy.enabled&&!e.params.loop&&0===e.params.initialSlide&&e.lazy.load()},scroll:function(e){e.params.freeMode&&!e.params.freeModeSticky&&e.lazy.load()},resize:function(e){e.params.lazy.enabled&&e.lazy.load()},scrollbarDragMove:function(e){e.params.lazy.enabled&&e.lazy.load()},transitionStart:function(e){e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!e.lazy.initialImageLoaded)&&e.lazy.load()},transitionEnd:function(e){e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&e.lazy.load()},slideChange:function(e){e.params.lazy.enabled&&e.params.cssMode&&e.lazy.load()}}},Controller={LinearSpline:function(e,t){var i,s,a,r,n,o=function(e,t){for(s=-1,i=e.length;i-s>1;)e[a=i+s>>1]<=t?s=a:i=a;return i};return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(n=o(this.x,e),r=n-1,(e-this.x[r])*(this.y[n]-this.y[r])/(this.x[n]-this.x[r])+this.y[r]):0},this},getInterpolateFunction:function(e){this.controller.spline||(this.controller.spline=this.params.loop?new Controller.LinearSpline(this.slidesGrid,e.slidesGrid):new Controller.LinearSpline(this.snapGrid,e.snapGrid))},setTranslate:function(e,t){var i,s,a=this,r=a.controller.control,n=a.constructor;function o(e){var t=a.rtlTranslate?-a.translate:a.translate;"slide"===a.params.controller.by&&(a.controller.getInterpolateFunction(e),s=-a.controller.spline.interpolate(-t)),s&&"container"!==a.params.controller.by||(i=(e.maxTranslate()-e.minTranslate())/(a.maxTranslate()-a.minTranslate()),s=(t-a.minTranslate())*i+e.minTranslate()),a.params.controller.inverse&&(s=e.maxTranslate()-s),e.updateProgress(s),e.setTranslate(s,a),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(r))for(var l=0;l<r.length;l+=1)r[l]!==t&&r[l]instanceof n&&o(r[l]);else r instanceof n&&t!==r&&o(r)},setTransition:function(e,t){var i,s=this,a=s.constructor,r=s.controller.control;function n(t){t.setTransition(e,s),0!==e&&(t.transitionStart(),t.params.autoHeight&&nextTick((function(){t.updateAutoHeight()})),t.$wrapperEl.transitionEnd((function(){r&&(t.params.loop&&"slide"===s.params.controller.by&&t.loopFix(),t.transitionEnd())})))}if(Array.isArray(r))for(i=0;i<r.length;i+=1)r[i]!==t&&r[i]instanceof a&&n(r[i]);else r instanceof a&&t!==r&&n(r)}},Controller$1={name:"controller",params:{controller:{control:void 0,inverse:!1,by:"slide"}},create:function(){bindModuleMethods(this,{controller:_extends({control:this.params.controller.control},Controller)})},on:{update:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},resize:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},observerUpdate:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},setTranslate:function(e,t,i){e.controller.control&&e.controller.setTranslate(t,i)},setTransition:function(e,t,i){e.controller.control&&e.controller.setTransition(t,i)}}},A11y={getRandomNumber:function(e){void 0===e&&(e=16);return"x".repeat(e).replace(/x/g,(function(){return Math.round(16*Math.random()).toString(16)}))},makeElFocusable:function(e){return e.attr("tabIndex","0"),e},makeElNotFocusable:function(e){return e.attr("tabIndex","-1"),e},addElRole:function(e,t){return e.attr("role",t),e},addElRoleDescription:function(e,t){return e.attr("aria-role-description",t),e},addElControls:function(e,t){return e.attr("aria-controls",t),e},addElLabel:function(e,t){return e.attr("aria-label",t),e},addElId:function(e,t){return e.attr("id",t),e},addElLive:function(e,t){return e.attr("aria-live",t),e},disableEl:function(e){return e.attr("aria-disabled",!0),e},enableEl:function(e){return e.attr("aria-disabled",!1),e},onEnterKey:function(e){var t=this.params.a11y;if(13===e.keyCode){var i=$(e.target);this.navigation&&this.navigation.$nextEl&&i.is(this.navigation.$nextEl)&&(this.isEnd&&!this.params.loop||this.slideNext(),this.isEnd?this.a11y.notify(t.lastSlideMessage):this.a11y.notify(t.nextSlideMessage)),this.navigation&&this.navigation.$prevEl&&i.is(this.navigation.$prevEl)&&(this.isBeginning&&!this.params.loop||this.slidePrev(),this.isBeginning?this.a11y.notify(t.firstSlideMessage):this.a11y.notify(t.prevSlideMessage)),this.pagination&&i.is("."+this.params.pagination.bulletClass)&&i[0].click()}},notify:function(e){var t=this.a11y.liveRegion;0!==t.length&&(t.html(""),t.html(e))},updateNavigation:function(){if(!this.params.loop&&this.navigation){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;i&&i.length>0&&(this.isBeginning?(this.a11y.disableEl(i),this.a11y.makeElNotFocusable(i)):(this.a11y.enableEl(i),this.a11y.makeElFocusable(i))),t&&t.length>0&&(this.isEnd?(this.a11y.disableEl(t),this.a11y.makeElNotFocusable(t)):(this.a11y.enableEl(t),this.a11y.makeElFocusable(t)))}},updatePagination:function(){var e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((function(i){var s=$(i);e.a11y.makeElFocusable(s),e.params.pagination.renderBullet||(e.a11y.addElRole(s,"button"),e.a11y.addElLabel(s,t.paginationBulletMessage.replace(/\{\{index\}\}/,s.index()+1)))}))},init:function(){var e=this,t=e.params.a11y;e.$el.append(e.a11y.liveRegion);var i=e.$el;t.containerRoleDescriptionMessage&&e.a11y.addElRoleDescription(i,t.containerRoleDescriptionMessage),t.containerMessage&&e.a11y.addElLabel(i,t.containerMessage);var s,a,r,n=e.$wrapperEl,o=n.attr("id")||"swiper-wrapper-"+e.a11y.getRandomNumber(16);e.a11y.addElId(n,o),s=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite",e.a11y.addElLive(n,s),t.itemRoleDescriptionMessage&&e.a11y.addElRoleDescription($(e.slides),t.itemRoleDescriptionMessage),e.a11y.addElRole($(e.slides),"group"),e.slides.each((function(t){var i=$(t);e.a11y.addElLabel(i,i.index()+1+" / "+e.slides.length)})),e.navigation&&e.navigation.$nextEl&&(a=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(r=e.navigation.$prevEl),a&&a.length&&(e.a11y.makeElFocusable(a),"BUTTON"!==a[0].tagName&&(e.a11y.addElRole(a,"button"),a.on("keydown",e.a11y.onEnterKey)),e.a11y.addElLabel(a,t.nextSlideMessage),e.a11y.addElControls(a,o)),r&&r.length&&(e.a11y.makeElFocusable(r),"BUTTON"!==r[0].tagName&&(e.a11y.addElRole(r,"button"),r.on("keydown",e.a11y.onEnterKey)),e.a11y.addElLabel(r,t.prevSlideMessage),e.a11y.addElControls(r,o)),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.on("keydown","."+e.params.pagination.bulletClass,e.a11y.onEnterKey)},destroy:function(){var e,t;this.a11y.liveRegion&&this.a11y.liveRegion.length>0&&this.a11y.liveRegion.remove(),this.navigation&&this.navigation.$nextEl&&(e=this.navigation.$nextEl),this.navigation&&this.navigation.$prevEl&&(t=this.navigation.$prevEl),e&&e.off("keydown",this.a11y.onEnterKey),t&&t.off("keydown",this.a11y.onEnterKey),this.pagination&&this.params.pagination.clickable&&this.pagination.bullets&&this.pagination.bullets.length&&this.pagination.$el.off("keydown","."+this.params.pagination.bulletClass,this.a11y.onEnterKey)}},A11y$1={name:"a11y",params:{a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null}},create:function(){bindModuleMethods(this,{a11y:_extends(_extends({},A11y),{},{liveRegion:$('<span class="'+this.params.a11y.notificationClass+'" aria-live="assertive" aria-atomic="true"></span>')})})},on:{afterInit:function(e){e.params.a11y.enabled&&(e.a11y.init(),e.a11y.updateNavigation())},toEdge:function(e){e.params.a11y.enabled&&e.a11y.updateNavigation()},fromEdge:function(e){e.params.a11y.enabled&&e.a11y.updateNavigation()},paginationUpdate:function(e){e.params.a11y.enabled&&e.a11y.updatePagination()},destroy:function(e){e.params.a11y.enabled&&e.a11y.destroy()}}},History={init:function(){var e=getWindow();if(this.params.history){if(!e.history||!e.history.pushState)return this.params.history.enabled=!1,void(this.params.hashNavigation.enabled=!0);var t=this.history;t.initialized=!0,t.paths=History.getPathValues(this.params.url),(t.paths.key||t.paths.value)&&(t.scrollToSlide(0,t.paths.value,this.params.runCallbacksOnInit),this.params.history.replaceState||e.addEventListener("popstate",this.history.setHistoryPopState))}},destroy:function(){var e=getWindow();this.params.history.replaceState||e.removeEventListener("popstate",this.history.setHistoryPopState)},setHistoryPopState:function(){this.history.paths=History.getPathValues(this.params.url),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues:function(e){var t=getWindow(),i=(e?new URL(e):t.location).pathname.slice(1).split("/").filter((function(e){return""!==e})),s=i.length;return{key:i[s-2],value:i[s-1]}},setHistory:function(e,t){var i=getWindow();if(this.history.initialized&&this.params.history.enabled){var s;s=this.params.url?new URL(this.params.url):i.location;var a=this.slides.eq(t),r=History.slugify(a.attr("data-history"));s.pathname.includes(e)||(r=e+"/"+r);var n=i.history.state;n&&n.value===r||(this.params.history.replaceState?i.history.replaceState({value:r},null,r):i.history.pushState({value:r},null,r))}},slugify:function(e){return e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")},scrollToSlide:function(e,t,i){if(t)for(var s=0,a=this.slides.length;s<a;s+=1){var r=this.slides.eq(s);if(History.slugify(r.attr("data-history"))===t&&!r.hasClass(this.params.slideDuplicateClass)){var n=r.index();this.slideTo(n,e,i)}}else this.slideTo(0,e,i)}},History$1={name:"history",params:{history:{enabled:!1,replaceState:!1,key:"slides"}},create:function(){bindModuleMethods(this,{history:_extends({},History)})},on:{init:function(e){e.params.history.enabled&&e.history.init()},destroy:function(e){e.params.history.enabled&&e.history.destroy()},transitionEnd:function(e){e.history.initialized&&e.history.setHistory(e.params.history.key,e.activeIndex)},slideChange:function(e){e.history.initialized&&e.params.cssMode&&e.history.setHistory(e.params.history.key,e.activeIndex)}}},HashNavigation={onHashCange:function(){var e=getDocument();this.emit("hashChange");var t=e.location.hash.replace("#","");if(t!==this.slides.eq(this.activeIndex).attr("data-hash")){var i=this.$wrapperEl.children("."+this.params.slideClass+'[data-hash="'+t+'"]').index();if(void 0===i)return;this.slideTo(i)}},setHash:function(){var e=getWindow(),t=getDocument();if(this.hashNavigation.initialized&&this.params.hashNavigation.enabled)if(this.params.hashNavigation.replaceState&&e.history&&e.history.replaceState)e.history.replaceState(null,null,"#"+this.slides.eq(this.activeIndex).attr("data-hash")||""),this.emit("hashSet");else{var i=this.slides.eq(this.activeIndex),s=i.attr("data-hash")||i.attr("data-history");t.location.hash=s||"",this.emit("hashSet")}},init:function(){var e=getDocument(),t=getWindow();if(!(!this.params.hashNavigation.enabled||this.params.history&&this.params.history.enabled)){this.hashNavigation.initialized=!0;var i=e.location.hash.replace("#","");if(i)for(var s=0,a=this.slides.length;s<a;s+=1){var r=this.slides.eq(s);if((r.attr("data-hash")||r.attr("data-history"))===i&&!r.hasClass(this.params.slideDuplicateClass)){var n=r.index();this.slideTo(n,0,this.params.runCallbacksOnInit,!0)}}this.params.hashNavigation.watchState&&$(t).on("hashchange",this.hashNavigation.onHashCange)}},destroy:function(){var e=getWindow();this.params.hashNavigation.watchState&&$(e).off("hashchange",this.hashNavigation.onHashCange)}},HashNavigation$1={name:"hash-navigation",params:{hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}},create:function(){bindModuleMethods(this,{hashNavigation:_extends({initialized:!1},HashNavigation)})},on:{init:function(e){e.params.hashNavigation.enabled&&e.hashNavigation.init()},destroy:function(e){e.params.hashNavigation.enabled&&e.hashNavigation.destroy()},transitionEnd:function(e){e.hashNavigation.initialized&&e.hashNavigation.setHash()},slideChange:function(e){e.hashNavigation.initialized&&e.params.cssMode&&e.hashNavigation.setHash()}}},Autoplay={run:function(){var e=this,t=e.slides.eq(e.activeIndex),i=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(i=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(e.autoplay.timeout),e.autoplay.timeout=nextTick((function(){var t;e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),t=e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(t=e.slideTo(e.slides.length-1,e.params.speed,!0,!0),e.emit("autoplay")):(t=e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.params.loop?(e.loopFix(),t=e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(t=e.slideTo(0,e.params.speed,!0,!0),e.emit("autoplay")):(t=e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")),(e.params.cssMode&&e.autoplay.running||!1===t)&&e.autoplay.run()}),i)},start:function(){return void 0===this.autoplay.timeout&&(!this.autoplay.running&&(this.autoplay.running=!0,this.emit("autoplayStart"),this.autoplay.run(),!0))},stop:function(){return!!this.autoplay.running&&(void 0!==this.autoplay.timeout&&(this.autoplay.timeout&&(clearTimeout(this.autoplay.timeout),this.autoplay.timeout=void 0),this.autoplay.running=!1,this.emit("autoplayStop"),!0))},pause:function(e){this.autoplay.running&&(this.autoplay.paused||(this.autoplay.timeout&&clearTimeout(this.autoplay.timeout),this.autoplay.paused=!0,0!==e&&this.params.autoplay.waitForTransition?(this.$wrapperEl[0].addEventListener("transitionend",this.autoplay.onTransitionEnd),this.$wrapperEl[0].addEventListener("webkitTransitionEnd",this.autoplay.onTransitionEnd)):(this.autoplay.paused=!1,this.autoplay.run())))},onVisibilityChange:function(){var e=getDocument();"hidden"===e.visibilityState&&this.autoplay.running&&this.autoplay.pause(),"visible"===e.visibilityState&&this.autoplay.paused&&(this.autoplay.run(),this.autoplay.paused=!1)},onTransitionEnd:function(e){this&&!this.destroyed&&this.$wrapperEl&&e.target===this.$wrapperEl[0]&&(this.$wrapperEl[0].removeEventListener("transitionend",this.autoplay.onTransitionEnd),this.$wrapperEl[0].removeEventListener("webkitTransitionEnd",this.autoplay.onTransitionEnd),this.autoplay.paused=!1,this.autoplay.running?this.autoplay.run():this.autoplay.stop())}},Autoplay$1={name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1}},create:function(){bindModuleMethods(this,{autoplay:_extends(_extends({},Autoplay),{},{running:!1,paused:!1})})},on:{init:function(e){e.params.autoplay.enabled&&(e.autoplay.start(),getDocument().addEventListener("visibilitychange",e.autoplay.onVisibilityChange))},beforeTransitionStart:function(e,t,i){e.autoplay.running&&(i||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(t):e.autoplay.stop())},sliderFirstMove:function(e){e.autoplay.running&&(e.params.autoplay.disableOnInteraction?e.autoplay.stop():e.autoplay.pause())},touchEnd:function(e){e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&e.autoplay.run()},destroy:function(e){e.autoplay.running&&e.autoplay.stop(),getDocument().removeEventListener("visibilitychange",e.autoplay.onVisibilityChange)}}},Fade={setTranslate:function(){for(var e=this.slides,t=0;t<e.length;t+=1){var i=this.slides.eq(t),s=-i[0].swiperSlideOffset;this.params.virtualTranslate||(s-=this.translate);var a=0;this.isHorizontal()||(a=s,s=0);var r=this.params.fadeEffect.crossFade?Math.max(1-Math.abs(i[0].progress),0):1+Math.min(Math.max(i[0].progress,-1),0);i.css({opacity:r}).transform("translate3d("+s+"px, "+a+"px, 0px)")}},setTransition:function(e){var t=this,i=t.slides,s=t.$wrapperEl;if(i.transition(e),t.params.virtualTranslate&&0!==e){var a=!1;i.transitionEnd((function(){if(!a&&t&&!t.destroyed){a=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)s.trigger(e[i])}}))}}},EffectFade={name:"effect-fade",params:{fadeEffect:{crossFade:!1}},create:function(){bindModuleMethods(this,{fadeEffect:_extends({},Fade)})},on:{beforeInit:function(e){if("fade"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"fade");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};extend$1(e.params,t),extend$1(e.originalParams,t)}},setTranslate:function(e){"fade"===e.params.effect&&e.fadeEffect.setTranslate()},setTransition:function(e,t){"fade"===e.params.effect&&e.fadeEffect.setTransition(t)}}},Cube={setTranslate:function(){var e,t=this.$el,i=this.$wrapperEl,s=this.slides,a=this.width,r=this.height,n=this.rtlTranslate,o=this.size,l=this.browser,d=this.params.cubeEffect,h=this.isHorizontal(),p=this.virtual&&this.params.virtual.enabled,u=0;d.shadow&&(h?(0===(e=i.find(".swiper-cube-shadow")).length&&(e=$('<div class="swiper-cube-shadow"></div>'),i.append(e)),e.css({height:a+"px"})):0===(e=t.find(".swiper-cube-shadow")).length&&(e=$('<div class="swiper-cube-shadow"></div>'),t.append(e)));for(var c=0;c<s.length;c+=1){var v=s.eq(c),f=c;p&&(f=parseInt(v.attr("data-swiper-slide-index"),10));var m=90*f,g=Math.floor(m/360);n&&(m=-m,g=Math.floor(-m/360));var w=Math.max(Math.min(v[0].progress,1),-1),b=0,y=0,x=0;f%4==0?(b=4*-g*o,x=0):(f-1)%4==0?(b=0,x=4*-g*o):(f-2)%4==0?(b=o+4*g*o,x=o):(f-3)%4==0&&(b=-o,x=3*o+4*o*g),n&&(b=-b),h||(y=b,b=0);var E="rotateX("+(h?0:-m)+"deg) rotateY("+(h?m:0)+"deg) translate3d("+b+"px, "+y+"px, "+x+"px)";if(w<=1&&w>-1&&(u=90*f+90*w,n&&(u=90*-f-90*w)),v.transform(E),d.slideShadows){var T=h?v.find(".swiper-slide-shadow-left"):v.find(".swiper-slide-shadow-top"),C=h?v.find(".swiper-slide-shadow-right"):v.find(".swiper-slide-shadow-bottom");0===T.length&&(T=$('<div class="swiper-slide-shadow-'+(h?"left":"top")+'"></div>'),v.append(T)),0===C.length&&(C=$('<div class="swiper-slide-shadow-'+(h?"right":"bottom")+'"></div>'),v.append(C)),T.length&&(T[0].style.opacity=Math.max(-w,0)),C.length&&(C[0].style.opacity=Math.max(w,0))}}if(i.css({"-webkit-transform-origin":"50% 50% -"+o/2+"px","-moz-transform-origin":"50% 50% -"+o/2+"px","-ms-transform-origin":"50% 50% -"+o/2+"px","transform-origin":"50% 50% -"+o/2+"px"}),d.shadow)if(h)e.transform("translate3d(0px, "+(a/2+d.shadowOffset)+"px, "+-a/2+"px) rotateX(90deg) rotateZ(0deg) scale("+d.shadowScale+")");else{var S=Math.abs(u)-90*Math.floor(Math.abs(u)/90),M=1.5-(Math.sin(2*S*Math.PI/360)/2+Math.cos(2*S*Math.PI/360)/2),P=d.shadowScale,z=d.shadowScale/M,k=d.shadowOffset;e.transform("scale3d("+P+", 1, "+z+") translate3d(0px, "+(r/2+k)+"px, "+-r/2/z+"px) rotateX(-90deg)")}var L=l.isSafari||l.isWebView?-o/2:0;i.transform("translate3d(0px,0,"+L+"px) rotateX("+(this.isHorizontal()?0:u)+"deg) rotateY("+(this.isHorizontal()?-u:0)+"deg)")},setTransition:function(e){var t=this.$el;this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),this.params.cubeEffect.shadow&&!this.isHorizontal()&&t.find(".swiper-cube-shadow").transition(e)}},EffectCube={name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create:function(){bindModuleMethods(this,{cubeEffect:_extends({},Cube)})},on:{beforeInit:function(e){if("cube"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"cube"),e.classNames.push(e.params.containerModifierClass+"3d");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};extend$1(e.params,t),extend$1(e.originalParams,t)}},setTranslate:function(e){"cube"===e.params.effect&&e.cubeEffect.setTranslate()},setTransition:function(e,t){"cube"===e.params.effect&&e.cubeEffect.setTransition(t)}}},Flip={setTranslate:function(){for(var e=this.slides,t=this.rtlTranslate,i=0;i<e.length;i+=1){var s=e.eq(i),a=s[0].progress;this.params.flipEffect.limitRotation&&(a=Math.max(Math.min(s[0].progress,1),-1));var r=-180*a,n=0,o=-s[0].swiperSlideOffset,l=0;if(this.isHorizontal()?t&&(r=-r):(l=o,o=0,n=-r,r=0),s[0].style.zIndex=-Math.abs(Math.round(a))+e.length,this.params.flipEffect.slideShadows){var d=this.isHorizontal()?s.find(".swiper-slide-shadow-left"):s.find(".swiper-slide-shadow-top"),h=this.isHorizontal()?s.find(".swiper-slide-shadow-right"):s.find(".swiper-slide-shadow-bottom");0===d.length&&(d=$('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"left":"top")+'"></div>'),s.append(d)),0===h.length&&(h=$('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"right":"bottom")+'"></div>'),s.append(h)),d.length&&(d[0].style.opacity=Math.max(-a,0)),h.length&&(h[0].style.opacity=Math.max(a,0))}s.transform("translate3d("+o+"px, "+l+"px, 0px) rotateX("+n+"deg) rotateY("+r+"deg)")}},setTransition:function(e){var t=this,i=t.slides,s=t.activeIndex,a=t.$wrapperEl;if(i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){var r=!1;i.eq(s).transitionEnd((function(){if(!r&&t&&!t.destroyed){r=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)a.trigger(e[i])}}))}}},EffectFlip={name:"effect-flip",params:{flipEffect:{slideShadows:!0,limitRotation:!0}},create:function(){bindModuleMethods(this,{flipEffect:_extends({},Flip)})},on:{beforeInit:function(e){if("flip"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"flip"),e.classNames.push(e.params.containerModifierClass+"3d");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};extend$1(e.params,t),extend$1(e.originalParams,t)}},setTranslate:function(e){"flip"===e.params.effect&&e.flipEffect.setTranslate()},setTransition:function(e,t){"flip"===e.params.effect&&e.flipEffect.setTransition(t)}}},Coverflow={setTranslate:function(){for(var e=this.width,t=this.height,i=this.slides,s=this.slidesSizesGrid,a=this.params.coverflowEffect,r=this.isHorizontal(),n=this.translate,o=r?e/2-n:t/2-n,l=r?a.rotate:-a.rotate,d=a.depth,h=0,p=i.length;h<p;h+=1){var u=i.eq(h),c=s[h],v=(o-u[0].swiperSlideOffset-c/2)/c*a.modifier,f=r?l*v:0,m=r?0:l*v,g=-d*Math.abs(v),w=a.stretch;"string"==typeof w&&-1!==w.indexOf("%")&&(w=parseFloat(a.stretch)/100*c);var b=r?0:w*v,y=r?w*v:0,x=1-(1-a.scale)*Math.abs(v);Math.abs(y)<.001&&(y=0),Math.abs(b)<.001&&(b=0),Math.abs(g)<.001&&(g=0),Math.abs(f)<.001&&(f=0),Math.abs(m)<.001&&(m=0),Math.abs(x)<.001&&(x=0);var E="translate3d("+y+"px,"+b+"px,"+g+"px)  rotateX("+m+"deg) rotateY("+f+"deg) scale("+x+")";if(u.transform(E),u[0].style.zIndex=1-Math.abs(Math.round(v)),a.slideShadows){var T=r?u.find(".swiper-slide-shadow-left"):u.find(".swiper-slide-shadow-top"),C=r?u.find(".swiper-slide-shadow-right"):u.find(".swiper-slide-shadow-bottom");0===T.length&&(T=$('<div class="swiper-slide-shadow-'+(r?"left":"top")+'"></div>'),u.append(T)),0===C.length&&(C=$('<div class="swiper-slide-shadow-'+(r?"right":"bottom")+'"></div>'),u.append(C)),T.length&&(T[0].style.opacity=v>0?v:0),C.length&&(C[0].style.opacity=-v>0?-v:0)}}},setTransition:function(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}},EffectCoverflow={name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}},create:function(){bindModuleMethods(this,{coverflowEffect:_extends({},Coverflow)})},on:{beforeInit:function(e){"coverflow"===e.params.effect&&(e.classNames.push(e.params.containerModifierClass+"coverflow"),e.classNames.push(e.params.containerModifierClass+"3d"),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)},setTranslate:function(e){"coverflow"===e.params.effect&&e.coverflowEffect.setTranslate()},setTransition:function(e,t){"coverflow"===e.params.effect&&e.coverflowEffect.setTransition(t)}}},Thumbs={init:function(){var e=this.params.thumbs;if(this.thumbs.initialized)return!1;this.thumbs.initialized=!0;var t=this.constructor;return e.swiper instanceof t?(this.thumbs.swiper=e.swiper,extend$1(this.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),extend$1(this.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):isObject$1(e.swiper)&&(this.thumbs.swiper=new t(extend$1({},e.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),this.thumbs.swiperCreated=!0),this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass),this.thumbs.swiper.on("tap",this.thumbs.onThumbClick),!0},onThumbClick:function(){var e=this.thumbs.swiper;if(e){var t=e.clickedIndex,i=e.clickedSlide;if(!(i&&$(i).hasClass(this.params.thumbs.slideThumbActiveClass)||null==t)){var s;if(s=e.params.loop?parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10):t,this.params.loop){var a=this.activeIndex;this.slides.eq(a).hasClass(this.params.slideDuplicateClass)&&(this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft,a=this.activeIndex);var r=this.slides.eq(a).prevAll('[data-swiper-slide-index="'+s+'"]').eq(0).index(),n=this.slides.eq(a).nextAll('[data-swiper-slide-index="'+s+'"]').eq(0).index();s=void 0===r?n:void 0===n?r:n-a<a-r?n:r}this.slideTo(s)}}},update:function(e){var t=this.thumbs.swiper;if(t){var i="auto"===t.params.slidesPerView?t.slidesPerViewDynamic():t.params.slidesPerView,s=this.params.thumbs.autoScrollOffset,a=s&&!t.params.loop;if(this.realIndex!==t.realIndex||a){var r,n,o=t.activeIndex;if(t.params.loop){t.slides.eq(o).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,o=t.activeIndex);var l=t.slides.eq(o).prevAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index(),d=t.slides.eq(o).nextAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index();r=void 0===l?d:void 0===d?l:d-o==o-l?o:d-o<o-l?d:l,n=this.activeIndex>this.previousIndex?"next":"prev"}else n=(r=this.realIndex)>this.previousIndex?"next":"prev";a&&(r+="next"===n?s:-1*s),t.visibleSlidesIndexes&&t.visibleSlidesIndexes.indexOf(r)<0&&(t.params.centeredSlides?r=r>o?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>o&&(r=r-i+1),t.slideTo(r,e?0:void 0))}var h=1,p=this.params.thumbs.slideThumbActiveClass;if(this.params.slidesPerView>1&&!this.params.centeredSlides&&(h=this.params.slidesPerView),this.params.thumbs.multipleActiveThumbs||(h=1),h=Math.floor(h),t.slides.removeClass(p),t.params.loop||t.params.virtual&&t.params.virtual.enabled)for(var u=0;u<h;u+=1)t.$wrapperEl.children('[data-swiper-slide-index="'+(this.realIndex+u)+'"]').addClass(p);else for(var c=0;c<h;c+=1)t.slides.eq(this.realIndex+c).addClass(p)}}},Thumbs$1={name:"thumbs",params:{thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create:function(){bindModuleMethods(this,{thumbs:_extends({swiper:null,initialized:!1},Thumbs)})},on:{beforeInit:function(e){var t=e.params.thumbs;t&&t.swiper&&(e.thumbs.init(),e.thumbs.update(!0))},slideChange:function(e){e.thumbs.swiper&&e.thumbs.update()},update:function(e){e.thumbs.swiper&&e.thumbs.update()},resize:function(e){e.thumbs.swiper&&e.thumbs.update()},observerUpdate:function(e){e.thumbs.swiper&&e.thumbs.update()},setTransition:function(e,t){var i=e.thumbs.swiper;i&&i.setTransition(t)},beforeDestroy:function(e){var t=e.thumbs.swiper;t&&e.thumbs.swiperCreated&&t&&t.destroy()}}},components=[Virtual$1,Keyboard$1,Mousewheel$1,Navigation$1,Pagination$1,Scrollbar$1,Parallax$1,Zoom$1,Lazy$1,Controller$1,A11y$1,History$1,HashNavigation$1,Autoplay$1,EffectFade,EffectCube,EffectFlip,EffectCoverflow,Thumbs$1];Swiper.use(components);export default Swiper;export{Swiper};
14
+//# sourceMappingURL=swiper-bundle.esm.browser.min.js.map
0 15
\ No newline at end of file
1 16
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+{"version":3,"sources":["0"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_extends","assign","arguments","source","hasOwnProperty","call","apply","this","isObject","obj","constructor","extend","src","keys","forEach","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","_inheritsLoose","subClass","superClass","create","__proto__","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_setPrototypeOf","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","toString","e","_construct","Parent","args","Class","a","push","instance","Function","bind","_isNativeFunction","fn","indexOf","_wrapNativeSuper","_cache","Map","undefined","TypeError","has","get","set","Wrapper","value","_assertThisInitialized","self","ReferenceError","makeReactive","proto","Dom7","_Array","items","_this","concat","Array","arrayFlat","arr","res","el","isArray","arrayFilter","filter","arrayUnique","uniqueArray","qsa","selector","context","$","html","trim","toCreate","tempParent","innerHTML","nodeType","addClass","_len","classes","_key","classNames","map","c","split","_el$classList","classList","add","removeClass","_len2","_key2","_el$classList2","remove","toggleClass","_len3","_key3","className","toggle","hasClass","_len4","_key4","contains","attr","attrs","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","on","_len5","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","_parents","parents","k","handleEvent","j","events","_event","dom7LiveListeners","proxyListener","event","dom7Listeners","off","_len6","_key6","handlers","handler","dom7proxy","splice","trigger","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","offsetWidth","parseFloat","outerHeight","_styles2","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","_prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","_next","prev","previousElementSibling","prevAll","prevEls","_prev","parent","parentNode","_parent","closest","find","foundElements","found","removeChild","support","device","browser","Methods","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isObject$1","extend$1","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","bindModuleMethods","subKey","calcSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","getSupport","calcDevice","_temp","platform","ua","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","getDevice","overrides","calcBrowser","isEdge","isSafari","toLowerCase","isWebView","test","getBrowser","methodName","Resize","name","swiper","resize","resizeHandler","destroyed","initialized","emit","orientationChangeHandler","init","destroy","Observer","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","observe","attributes","childList","characterData","observers","params","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","disconnect","Observer$1","modular","useParams","instanceParams","modules","moduleName","module","useModules","modulesParams","moduleParams","moduleEventName","eventsEmitter","priority","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","slice","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","size","updateSlides","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideEl","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","_slide$","paddingTop","paddingBottom","_boxSizing","_slide$2","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","_i","slidesGridItem","_i2","_slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","_allSlidesSize","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","transitionStart","direction","dir","transitionEnd$1","transition$1","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","_increment","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","param","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","containerModifierClass","emitContainerClasses","directionChanged","needsReLoop","changeDirection","getBreakpoints","points","point","minRatio","substr","innerHeight","sort","b","_points$i","innerWidth","addClasses","suffixes","suffix","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","lastSlidePosition","checkOverflow$1","defaults","url","uniqueNavElements","wrapperClass","_emitClasses","prototypes","extendedDefaults","Swiper","moduleParamName","swiperParams","passedParams","eventName","swipers","containerEl","newParams","desktop","shadowRoot","touchEventsTouch","touchEventsDesktop","clickTimeout","_proto","getSlideClasses","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","Virtual","force","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","isEventSupported","isSupported","element","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarget","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","_newEvent","sign","ignoreWheelEvents","sensitivity","timeout","_recentWheelEvents","shift","_prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","thresholdDelta","thresholdTime","getTime","Mousewheel$1","Navigation","_swiper$navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Navigation$1","hideOnClick","hiddenClass","toEdge","fromEdge","click","isHidden","_swiper$navigation3","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","Pagination$1","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Scrollbar$1","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","toggleGestures","slideSelector","enableGestures","gesturesEnabled","disableGestures","activeListenerWithCapture","Zoom$1","touchStart","touchEnd","doubleTap","slideChange","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","background","$pictureEl","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$1","loadOnTransitionStart","scroll","scrollbarDragMove","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","controller","spline","_setTranslate","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","Controller$1","A11y","getRandomNumber","repeat","round","random","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","label","addElId","addElLive","live","disableEl","enableEl","onEnterKey","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","$containerEl","containerRoleDescriptionMessage","containerMessage","wrapperId","itemRoleDescriptionMessage","tagName","A11y$1","notificationClass","afterInit","paginationUpdate","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","urlOverride","pathArray","URL","part","setHistory","slugify","includes","currentState","state","History$1","HashNavigation","onHashCange","newHash","setHash","watchState","HashNavigation$1","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","Autoplay$1","disableOnInteraction","beforeTransitionStart","sliderFirstMove","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","EffectFade","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","EffectCube","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectFlip","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCoverflow","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Thumbs$1","beforeDestroy","components"],"mappings":"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","file":"swiper-bundle.esm.browser.min.js"}
0 2
\ No newline at end of file
1 3
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+import Swiper from './esm/components/core/core-class';
14
+export { default as Swiper, default } from './esm/components/core/core-class';
15
+import Virtual from './esm/components/virtual/virtual';
16
+import Keyboard from './esm/components/keyboard/keyboard';
17
+import Mousewheel from './esm/components/mousewheel/mousewheel';
18
+import Navigation from './esm/components/navigation/navigation';
19
+import Pagination from './esm/components/pagination/pagination';
20
+import Scrollbar from './esm/components/scrollbar/scrollbar';
21
+import Parallax from './esm/components/parallax/parallax';
22
+import Zoom from './esm/components/zoom/zoom';
23
+import Lazy from './esm/components/lazy/lazy';
24
+import Controller from './esm/components/controller/controller';
25
+import A11y from './esm/components/a11y/a11y';
26
+import History from './esm/components/history/history';
27
+import HashNavigation from './esm/components/hash-navigation/hash-navigation';
28
+import Autoplay from './esm/components/autoplay/autoplay';
29
+import EffectFade from './esm/components/effect-fade/effect-fade';
30
+import EffectCube from './esm/components/effect-cube/effect-cube';
31
+import EffectFlip from './esm/components/effect-flip/effect-flip';
32
+import EffectCoverflow from './esm/components/effect-coverflow/effect-coverflow';
33
+import Thumbs from './esm/components/thumbs/thumbs';
34
+
35
+// Swiper Class
36
+var components = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs];
37
+Swiper.use(components);
0 38
new file mode 100644
... ...
@@ -0,0 +1,9395 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+(function (global, factory) {
14
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
15
+  typeof define === 'function' && define.amd ? define(factory) :
16
+  (global = global || self, global.Swiper = factory());
17
+}(this, (function () { 'use strict';
18
+
19
+  function _defineProperties(target, props) {
20
+    for (var i = 0; i < props.length; i++) {
21
+      var descriptor = props[i];
22
+      descriptor.enumerable = descriptor.enumerable || false;
23
+      descriptor.configurable = true;
24
+      if ("value" in descriptor) descriptor.writable = true;
25
+      Object.defineProperty(target, descriptor.key, descriptor);
26
+    }
27
+  }
28
+
29
+  function _createClass(Constructor, protoProps, staticProps) {
30
+    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+    if (staticProps) _defineProperties(Constructor, staticProps);
32
+    return Constructor;
33
+  }
34
+
35
+  function _extends() {
36
+    _extends = Object.assign || function (target) {
37
+      for (var i = 1; i < arguments.length; i++) {
38
+        var source = arguments[i];
39
+
40
+        for (var key in source) {
41
+          if (Object.prototype.hasOwnProperty.call(source, key)) {
42
+            target[key] = source[key];
43
+          }
44
+        }
45
+      }
46
+
47
+      return target;
48
+    };
49
+
50
+    return _extends.apply(this, arguments);
51
+  }
52
+
53
+  /**
54
+   * SSR Window 3.0.0-alpha.4
55
+   * Better handling for window object in SSR environment
56
+   * https://github.com/nolimits4web/ssr-window
57
+   *
58
+   * Copyright 2020, Vladimir Kharlampidi
59
+   *
60
+   * Licensed under MIT
61
+   *
62
+   * Released on: May 20, 2020
63
+   */
64
+
65
+  /* eslint-disable no-param-reassign */
66
+  function isObject(obj) {
67
+    return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
68
+  }
69
+
70
+  function extend(target, src) {
71
+    if (target === void 0) {
72
+      target = {};
73
+    }
74
+
75
+    if (src === void 0) {
76
+      src = {};
77
+    }
78
+
79
+    Object.keys(src).forEach(function (key) {
80
+      if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
81
+        extend(target[key], src[key]);
82
+      }
83
+    });
84
+  }
85
+
86
+  var ssrDocument = {
87
+    body: {},
88
+    addEventListener: function addEventListener() {},
89
+    removeEventListener: function removeEventListener() {},
90
+    activeElement: {
91
+      blur: function blur() {},
92
+      nodeName: ''
93
+    },
94
+    querySelector: function querySelector() {
95
+      return null;
96
+    },
97
+    querySelectorAll: function querySelectorAll() {
98
+      return [];
99
+    },
100
+    getElementById: function getElementById() {
101
+      return null;
102
+    },
103
+    createEvent: function createEvent() {
104
+      return {
105
+        initEvent: function initEvent() {}
106
+      };
107
+    },
108
+    createElement: function createElement() {
109
+      return {
110
+        children: [],
111
+        childNodes: [],
112
+        style: {},
113
+        setAttribute: function setAttribute() {},
114
+        getElementsByTagName: function getElementsByTagName() {
115
+          return [];
116
+        }
117
+      };
118
+    },
119
+    createElementNS: function createElementNS() {
120
+      return {};
121
+    },
122
+    importNode: function importNode() {
123
+      return null;
124
+    },
125
+    location: {
126
+      hash: '',
127
+      host: '',
128
+      hostname: '',
129
+      href: '',
130
+      origin: '',
131
+      pathname: '',
132
+      protocol: '',
133
+      search: ''
134
+    }
135
+  };
136
+
137
+  function getDocument() {
138
+    var doc = typeof document !== 'undefined' ? document : {};
139
+    extend(doc, ssrDocument);
140
+    return doc;
141
+  }
142
+
143
+  var ssrWindow = {
144
+    document: ssrDocument,
145
+    navigator: {
146
+      userAgent: ''
147
+    },
148
+    location: {
149
+      hash: '',
150
+      host: '',
151
+      hostname: '',
152
+      href: '',
153
+      origin: '',
154
+      pathname: '',
155
+      protocol: '',
156
+      search: ''
157
+    },
158
+    history: {
159
+      replaceState: function replaceState() {},
160
+      pushState: function pushState() {},
161
+      go: function go() {},
162
+      back: function back() {}
163
+    },
164
+    CustomEvent: function CustomEvent() {
165
+      return this;
166
+    },
167
+    addEventListener: function addEventListener() {},
168
+    removeEventListener: function removeEventListener() {},
169
+    getComputedStyle: function getComputedStyle() {
170
+      return {
171
+        getPropertyValue: function getPropertyValue() {
172
+          return '';
173
+        }
174
+      };
175
+    },
176
+    Image: function Image() {},
177
+    Date: function Date() {},
178
+    screen: {},
179
+    setTimeout: function setTimeout() {},
180
+    clearTimeout: function clearTimeout() {},
181
+    matchMedia: function matchMedia() {
182
+      return {};
183
+    },
184
+    requestAnimationFrame: function requestAnimationFrame(callback) {
185
+      if (typeof setTimeout === 'undefined') {
186
+        callback();
187
+        return null;
188
+      }
189
+
190
+      return setTimeout(callback, 0);
191
+    },
192
+    cancelAnimationFrame: function cancelAnimationFrame(id) {
193
+      if (typeof setTimeout === 'undefined') {
194
+        return;
195
+      }
196
+
197
+      clearTimeout(id);
198
+    }
199
+  };
200
+
201
+  function getWindow() {
202
+    var win = typeof window !== 'undefined' ? window : {};
203
+    extend(win, ssrWindow);
204
+    return win;
205
+  }
206
+
207
+  /**
208
+   * Dom7 3.0.0-alpha.7
209
+   * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
210
+   * https://framework7.io/docs/dom7.html
211
+   *
212
+   * Copyright 2020, Vladimir Kharlampidi
213
+   *
214
+   * Licensed under MIT
215
+   *
216
+   * Released on: July 14, 2020
217
+   */
218
+
219
+  function _inheritsLoose(subClass, superClass) {
220
+    subClass.prototype = Object.create(superClass.prototype);
221
+    subClass.prototype.constructor = subClass;
222
+    subClass.__proto__ = superClass;
223
+  }
224
+
225
+  function _getPrototypeOf(o) {
226
+    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
227
+      return o.__proto__ || Object.getPrototypeOf(o);
228
+    };
229
+    return _getPrototypeOf(o);
230
+  }
231
+
232
+  function _setPrototypeOf(o, p) {
233
+    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
234
+      o.__proto__ = p;
235
+      return o;
236
+    };
237
+
238
+    return _setPrototypeOf(o, p);
239
+  }
240
+
241
+  function _isNativeReflectConstruct() {
242
+    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
243
+    if (Reflect.construct.sham) return false;
244
+    if (typeof Proxy === "function") return true;
245
+
246
+    try {
247
+      Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
248
+      return true;
249
+    } catch (e) {
250
+      return false;
251
+    }
252
+  }
253
+
254
+  function _construct(Parent, args, Class) {
255
+    if (_isNativeReflectConstruct()) {
256
+      _construct = Reflect.construct;
257
+    } else {
258
+      _construct = function _construct(Parent, args, Class) {
259
+        var a = [null];
260
+        a.push.apply(a, args);
261
+        var Constructor = Function.bind.apply(Parent, a);
262
+        var instance = new Constructor();
263
+        if (Class) _setPrototypeOf(instance, Class.prototype);
264
+        return instance;
265
+      };
266
+    }
267
+
268
+    return _construct.apply(null, arguments);
269
+  }
270
+
271
+  function _isNativeFunction(fn) {
272
+    return Function.toString.call(fn).indexOf("[native code]") !== -1;
273
+  }
274
+
275
+  function _wrapNativeSuper(Class) {
276
+    var _cache = typeof Map === "function" ? new Map() : undefined;
277
+
278
+    _wrapNativeSuper = function _wrapNativeSuper(Class) {
279
+      if (Class === null || !_isNativeFunction(Class)) return Class;
280
+
281
+      if (typeof Class !== "function") {
282
+        throw new TypeError("Super expression must either be null or a function");
283
+      }
284
+
285
+      if (typeof _cache !== "undefined") {
286
+        if (_cache.has(Class)) return _cache.get(Class);
287
+
288
+        _cache.set(Class, Wrapper);
289
+      }
290
+
291
+      function Wrapper() {
292
+        return _construct(Class, arguments, _getPrototypeOf(this).constructor);
293
+      }
294
+
295
+      Wrapper.prototype = Object.create(Class.prototype, {
296
+        constructor: {
297
+          value: Wrapper,
298
+          enumerable: false,
299
+          writable: true,
300
+          configurable: true
301
+        }
302
+      });
303
+      return _setPrototypeOf(Wrapper, Class);
304
+    };
305
+
306
+    return _wrapNativeSuper(Class);
307
+  }
308
+
309
+  function _assertThisInitialized(self) {
310
+    if (self === void 0) {
311
+      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
312
+    }
313
+
314
+    return self;
315
+  }
316
+  /* eslint-disable no-proto */
317
+
318
+
319
+  function makeReactive(obj) {
320
+    var proto = obj.__proto__;
321
+    Object.defineProperty(obj, '__proto__', {
322
+      get: function get() {
323
+        return proto;
324
+      },
325
+      set: function set(value) {
326
+        proto.__proto__ = value;
327
+      }
328
+    });
329
+  }
330
+
331
+  var Dom7 = /*#__PURE__*/function (_Array) {
332
+    _inheritsLoose(Dom7, _Array);
333
+
334
+    function Dom7(items) {
335
+      var _this;
336
+
337
+      _this = _Array.call.apply(_Array, [this].concat(items)) || this;
338
+      makeReactive(_assertThisInitialized(_this));
339
+      return _this;
340
+    }
341
+
342
+    return Dom7;
343
+  }( /*#__PURE__*/_wrapNativeSuper(Array));
344
+
345
+  function arrayFlat(arr) {
346
+    if (arr === void 0) {
347
+      arr = [];
348
+    }
349
+
350
+    var res = [];
351
+    arr.forEach(function (el) {
352
+      if (Array.isArray(el)) {
353
+        res.push.apply(res, arrayFlat(el));
354
+      } else {
355
+        res.push(el);
356
+      }
357
+    });
358
+    return res;
359
+  }
360
+
361
+  function arrayFilter(arr, callback) {
362
+    return Array.prototype.filter.call(arr, callback);
363
+  }
364
+
365
+  function arrayUnique(arr) {
366
+    var uniqueArray = [];
367
+
368
+    for (var i = 0; i < arr.length; i += 1) {
369
+      if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
370
+    }
371
+
372
+    return uniqueArray;
373
+  }
374
+
375
+  function qsa(selector, context) {
376
+    if (typeof selector !== 'string') {
377
+      return [selector];
378
+    }
379
+
380
+    var a = [];
381
+    var res = context.querySelectorAll(selector);
382
+
383
+    for (var i = 0; i < res.length; i += 1) {
384
+      a.push(res[i]);
385
+    }
386
+
387
+    return a;
388
+  }
389
+
390
+  function $(selector, context) {
391
+    var window = getWindow();
392
+    var document = getDocument();
393
+    var arr = [];
394
+
395
+    if (!context && selector instanceof Dom7) {
396
+      return selector;
397
+    }
398
+
399
+    if (!selector) {
400
+      return new Dom7(arr);
401
+    }
402
+
403
+    if (typeof selector === 'string') {
404
+      var html = selector.trim();
405
+
406
+      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
407
+        var toCreate = 'div';
408
+        if (html.indexOf('<li') === 0) toCreate = 'ul';
409
+        if (html.indexOf('<tr') === 0) toCreate = 'tbody';
410
+        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
411
+        if (html.indexOf('<tbody') === 0) toCreate = 'table';
412
+        if (html.indexOf('<option') === 0) toCreate = 'select';
413
+        var tempParent = document.createElement(toCreate);
414
+        tempParent.innerHTML = html;
415
+
416
+        for (var i = 0; i < tempParent.childNodes.length; i += 1) {
417
+          arr.push(tempParent.childNodes[i]);
418
+        }
419
+      } else {
420
+        arr = qsa(selector.trim(), context || document);
421
+      } // arr = qsa(selector, document);
422
+
423
+    } else if (selector.nodeType || selector === window || selector === document) {
424
+      arr.push(selector);
425
+    } else if (Array.isArray(selector)) {
426
+      if (selector instanceof Dom7) return selector;
427
+      arr = selector;
428
+    }
429
+
430
+    return new Dom7(arrayUnique(arr));
431
+  }
432
+
433
+  $.fn = Dom7.prototype;
434
+
435
+  function addClass() {
436
+    for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
437
+      classes[_key] = arguments[_key];
438
+    }
439
+
440
+    var classNames = arrayFlat(classes.map(function (c) {
441
+      return c.split(' ');
442
+    }));
443
+    this.forEach(function (el) {
444
+      var _el$classList;
445
+
446
+      (_el$classList = el.classList).add.apply(_el$classList, classNames);
447
+    });
448
+    return this;
449
+  }
450
+
451
+  function removeClass() {
452
+    for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
453
+      classes[_key2] = arguments[_key2];
454
+    }
455
+
456
+    var classNames = arrayFlat(classes.map(function (c) {
457
+      return c.split(' ');
458
+    }));
459
+    this.forEach(function (el) {
460
+      var _el$classList2;
461
+
462
+      (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);
463
+    });
464
+    return this;
465
+  }
466
+
467
+  function toggleClass() {
468
+    for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
469
+      classes[_key3] = arguments[_key3];
470
+    }
471
+
472
+    var classNames = arrayFlat(classes.map(function (c) {
473
+      return c.split(' ');
474
+    }));
475
+    this.forEach(function (el) {
476
+      classNames.forEach(function (className) {
477
+        el.classList.toggle(className);
478
+      });
479
+    });
480
+  }
481
+
482
+  function hasClass() {
483
+    for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
484
+      classes[_key4] = arguments[_key4];
485
+    }
486
+
487
+    var classNames = arrayFlat(classes.map(function (c) {
488
+      return c.split(' ');
489
+    }));
490
+    return arrayFilter(this, function (el) {
491
+      return classNames.filter(function (className) {
492
+        return el.classList.contains(className);
493
+      }).length > 0;
494
+    }).length > 0;
495
+  }
496
+
497
+  function attr(attrs, value) {
498
+    if (arguments.length === 1 && typeof attrs === 'string') {
499
+      // Get attr
500
+      if (this[0]) return this[0].getAttribute(attrs);
501
+      return undefined;
502
+    } // Set attrs
503
+
504
+
505
+    for (var i = 0; i < this.length; i += 1) {
506
+      if (arguments.length === 2) {
507
+        // String
508
+        this[i].setAttribute(attrs, value);
509
+      } else {
510
+        // Object
511
+        for (var attrName in attrs) {
512
+          this[i][attrName] = attrs[attrName];
513
+          this[i].setAttribute(attrName, attrs[attrName]);
514
+        }
515
+      }
516
+    }
517
+
518
+    return this;
519
+  }
520
+
521
+  function removeAttr(attr) {
522
+    for (var i = 0; i < this.length; i += 1) {
523
+      this[i].removeAttribute(attr);
524
+    }
525
+
526
+    return this;
527
+  }
528
+
529
+  function transform(transform) {
530
+    for (var i = 0; i < this.length; i += 1) {
531
+      this[i].style.transform = transform;
532
+    }
533
+
534
+    return this;
535
+  }
536
+
537
+  function transition(duration) {
538
+    for (var i = 0; i < this.length; i += 1) {
539
+      this[i].style.transition = typeof duration !== 'string' ? duration + "ms" : duration;
540
+    }
541
+
542
+    return this;
543
+  }
544
+
545
+  function on() {
546
+    for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
547
+      args[_key5] = arguments[_key5];
548
+    }
549
+
550
+    var eventType = args[0],
551
+        targetSelector = args[1],
552
+        listener = args[2],
553
+        capture = args[3];
554
+
555
+    if (typeof args[1] === 'function') {
556
+      eventType = args[0];
557
+      listener = args[1];
558
+      capture = args[2];
559
+      targetSelector = undefined;
560
+    }
561
+
562
+    if (!capture) capture = false;
563
+
564
+    function handleLiveEvent(e) {
565
+      var target = e.target;
566
+      if (!target) return;
567
+      var eventData = e.target.dom7EventData || [];
568
+
569
+      if (eventData.indexOf(e) < 0) {
570
+        eventData.unshift(e);
571
+      }
572
+
573
+      if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
574
+        var _parents = $(target).parents(); // eslint-disable-line
575
+
576
+
577
+        for (var k = 0; k < _parents.length; k += 1) {
578
+          if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
579
+        }
580
+      }
581
+    }
582
+
583
+    function handleEvent(e) {
584
+      var eventData = e && e.target ? e.target.dom7EventData || [] : [];
585
+
586
+      if (eventData.indexOf(e) < 0) {
587
+        eventData.unshift(e);
588
+      }
589
+
590
+      listener.apply(this, eventData);
591
+    }
592
+
593
+    var events = eventType.split(' ');
594
+    var j;
595
+
596
+    for (var i = 0; i < this.length; i += 1) {
597
+      var el = this[i];
598
+
599
+      if (!targetSelector) {
600
+        for (j = 0; j < events.length; j += 1) {
601
+          var event = events[j];
602
+          if (!el.dom7Listeners) el.dom7Listeners = {};
603
+          if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
604
+          el.dom7Listeners[event].push({
605
+            listener: listener,
606
+            proxyListener: handleEvent
607
+          });
608
+          el.addEventListener(event, handleEvent, capture);
609
+        }
610
+      } else {
611
+        // Live events
612
+        for (j = 0; j < events.length; j += 1) {
613
+          var _event = events[j];
614
+          if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
615
+          if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
616
+
617
+          el.dom7LiveListeners[_event].push({
618
+            listener: listener,
619
+            proxyListener: handleLiveEvent
620
+          });
621
+
622
+          el.addEventListener(_event, handleLiveEvent, capture);
623
+        }
624
+      }
625
+    }
626
+
627
+    return this;
628
+  }
629
+
630
+  function off() {
631
+    for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
632
+      args[_key6] = arguments[_key6];
633
+    }
634
+
635
+    var eventType = args[0],
636
+        targetSelector = args[1],
637
+        listener = args[2],
638
+        capture = args[3];
639
+
640
+    if (typeof args[1] === 'function') {
641
+      eventType = args[0];
642
+      listener = args[1];
643
+      capture = args[2];
644
+      targetSelector = undefined;
645
+    }
646
+
647
+    if (!capture) capture = false;
648
+    var events = eventType.split(' ');
649
+
650
+    for (var i = 0; i < events.length; i += 1) {
651
+      var event = events[i];
652
+
653
+      for (var j = 0; j < this.length; j += 1) {
654
+        var el = this[j];
655
+        var handlers = void 0;
656
+
657
+        if (!targetSelector && el.dom7Listeners) {
658
+          handlers = el.dom7Listeners[event];
659
+        } else if (targetSelector && el.dom7LiveListeners) {
660
+          handlers = el.dom7LiveListeners[event];
661
+        }
662
+
663
+        if (handlers && handlers.length) {
664
+          for (var k = handlers.length - 1; k >= 0; k -= 1) {
665
+            var handler = handlers[k];
666
+
667
+            if (listener && handler.listener === listener) {
668
+              el.removeEventListener(event, handler.proxyListener, capture);
669
+              handlers.splice(k, 1);
670
+            } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
671
+              el.removeEventListener(event, handler.proxyListener, capture);
672
+              handlers.splice(k, 1);
673
+            } else if (!listener) {
674
+              el.removeEventListener(event, handler.proxyListener, capture);
675
+              handlers.splice(k, 1);
676
+            }
677
+          }
678
+        }
679
+      }
680
+    }
681
+
682
+    return this;
683
+  }
684
+
685
+  function trigger() {
686
+    var window = getWindow();
687
+
688
+    for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
689
+      args[_key9] = arguments[_key9];
690
+    }
691
+
692
+    var events = args[0].split(' ');
693
+    var eventData = args[1];
694
+
695
+    for (var i = 0; i < events.length; i += 1) {
696
+      var event = events[i];
697
+
698
+      for (var j = 0; j < this.length; j += 1) {
699
+        var el = this[j];
700
+
701
+        if (window.CustomEvent) {
702
+          var evt = new window.CustomEvent(event, {
703
+            detail: eventData,
704
+            bubbles: true,
705
+            cancelable: true
706
+          });
707
+          el.dom7EventData = args.filter(function (data, dataIndex) {
708
+            return dataIndex > 0;
709
+          });
710
+          el.dispatchEvent(evt);
711
+          el.dom7EventData = [];
712
+          delete el.dom7EventData;
713
+        }
714
+      }
715
+    }
716
+
717
+    return this;
718
+  }
719
+
720
+  function transitionEnd(callback) {
721
+    var dom = this;
722
+
723
+    function fireCallBack(e) {
724
+      if (e.target !== this) return;
725
+      callback.call(this, e);
726
+      dom.off('transitionend', fireCallBack);
727
+    }
728
+
729
+    if (callback) {
730
+      dom.on('transitionend', fireCallBack);
731
+    }
732
+
733
+    return this;
734
+  }
735
+
736
+  function outerWidth(includeMargins) {
737
+    if (this.length > 0) {
738
+      if (includeMargins) {
739
+        var _styles = this.styles();
740
+
741
+        return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
742
+      }
743
+
744
+      return this[0].offsetWidth;
745
+    }
746
+
747
+    return null;
748
+  }
749
+
750
+  function outerHeight(includeMargins) {
751
+    if (this.length > 0) {
752
+      if (includeMargins) {
753
+        var _styles2 = this.styles();
754
+
755
+        return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
756
+      }
757
+
758
+      return this[0].offsetHeight;
759
+    }
760
+
761
+    return null;
762
+  }
763
+
764
+  function offset() {
765
+    if (this.length > 0) {
766
+      var window = getWindow();
767
+      var document = getDocument();
768
+      var el = this[0];
769
+      var box = el.getBoundingClientRect();
770
+      var body = document.body;
771
+      var clientTop = el.clientTop || body.clientTop || 0;
772
+      var clientLeft = el.clientLeft || body.clientLeft || 0;
773
+      var scrollTop = el === window ? window.scrollY : el.scrollTop;
774
+      var scrollLeft = el === window ? window.scrollX : el.scrollLeft;
775
+      return {
776
+        top: box.top + scrollTop - clientTop,
777
+        left: box.left + scrollLeft - clientLeft
778
+      };
779
+    }
780
+
781
+    return null;
782
+  }
783
+
784
+  function styles() {
785
+    var window = getWindow();
786
+    if (this[0]) return window.getComputedStyle(this[0], null);
787
+    return {};
788
+  }
789
+
790
+  function css(props, value) {
791
+    var window = getWindow();
792
+    var i;
793
+
794
+    if (arguments.length === 1) {
795
+      if (typeof props === 'string') {
796
+        // .css('width')
797
+        if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
798
+      } else {
799
+        // .css({ width: '100px' })
800
+        for (i = 0; i < this.length; i += 1) {
801
+          for (var _prop in props) {
802
+            this[i].style[_prop] = props[_prop];
803
+          }
804
+        }
805
+
806
+        return this;
807
+      }
808
+    }
809
+
810
+    if (arguments.length === 2 && typeof props === 'string') {
811
+      // .css('width', '100px')
812
+      for (i = 0; i < this.length; i += 1) {
813
+        this[i].style[props] = value;
814
+      }
815
+
816
+      return this;
817
+    }
818
+
819
+    return this;
820
+  }
821
+
822
+  function each(callback) {
823
+    if (!callback) return this;
824
+    this.forEach(function (el, index) {
825
+      callback.apply(el, [el, index]);
826
+    });
827
+    return this;
828
+  }
829
+
830
+  function filter(callback) {
831
+    var result = arrayFilter(this, callback);
832
+    return $(result);
833
+  }
834
+
835
+  function html(html) {
836
+    if (typeof html === 'undefined') {
837
+      return this[0] ? this[0].innerHTML : null;
838
+    }
839
+
840
+    for (var i = 0; i < this.length; i += 1) {
841
+      this[i].innerHTML = html;
842
+    }
843
+
844
+    return this;
845
+  }
846
+
847
+  function text(text) {
848
+    if (typeof text === 'undefined') {
849
+      return this[0] ? this[0].textContent.trim() : null;
850
+    }
851
+
852
+    for (var i = 0; i < this.length; i += 1) {
853
+      this[i].textContent = text;
854
+    }
855
+
856
+    return this;
857
+  }
858
+
859
+  function is(selector) {
860
+    var window = getWindow();
861
+    var document = getDocument();
862
+    var el = this[0];
863
+    var compareWith;
864
+    var i;
865
+    if (!el || typeof selector === 'undefined') return false;
866
+
867
+    if (typeof selector === 'string') {
868
+      if (el.matches) return el.matches(selector);
869
+      if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
870
+      if (el.msMatchesSelector) return el.msMatchesSelector(selector);
871
+      compareWith = $(selector);
872
+
873
+      for (i = 0; i < compareWith.length; i += 1) {
874
+        if (compareWith[i] === el) return true;
875
+      }
876
+
877
+      return false;
878
+    }
879
+
880
+    if (selector === document) {
881
+      return el === document;
882
+    }
883
+
884
+    if (selector === window) {
885
+      return el === window;
886
+    }
887
+
888
+    if (selector.nodeType || selector instanceof Dom7) {
889
+      compareWith = selector.nodeType ? [selector] : selector;
890
+
891
+      for (i = 0; i < compareWith.length; i += 1) {
892
+        if (compareWith[i] === el) return true;
893
+      }
894
+
895
+      return false;
896
+    }
897
+
898
+    return false;
899
+  }
900
+
901
+  function index() {
902
+    var child = this[0];
903
+    var i;
904
+
905
+    if (child) {
906
+      i = 0; // eslint-disable-next-line
907
+
908
+      while ((child = child.previousSibling) !== null) {
909
+        if (child.nodeType === 1) i += 1;
910
+      }
911
+
912
+      return i;
913
+    }
914
+
915
+    return undefined;
916
+  }
917
+
918
+  function eq(index) {
919
+    if (typeof index === 'undefined') return this;
920
+    var length = this.length;
921
+
922
+    if (index > length - 1) {
923
+      return $([]);
924
+    }
925
+
926
+    if (index < 0) {
927
+      var returnIndex = length + index;
928
+      if (returnIndex < 0) return $([]);
929
+      return $([this[returnIndex]]);
930
+    }
931
+
932
+    return $([this[index]]);
933
+  }
934
+
935
+  function append() {
936
+    var newChild;
937
+    var document = getDocument();
938
+
939
+    for (var k = 0; k < arguments.length; k += 1) {
940
+      newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];
941
+
942
+      for (var i = 0; i < this.length; i += 1) {
943
+        if (typeof newChild === 'string') {
944
+          var tempDiv = document.createElement('div');
945
+          tempDiv.innerHTML = newChild;
946
+
947
+          while (tempDiv.firstChild) {
948
+            this[i].appendChild(tempDiv.firstChild);
949
+          }
950
+        } else if (newChild instanceof Dom7) {
951
+          for (var j = 0; j < newChild.length; j += 1) {
952
+            this[i].appendChild(newChild[j]);
953
+          }
954
+        } else {
955
+          this[i].appendChild(newChild);
956
+        }
957
+      }
958
+    }
959
+
960
+    return this;
961
+  }
962
+
963
+  function prepend(newChild) {
964
+    var document = getDocument();
965
+    var i;
966
+    var j;
967
+
968
+    for (i = 0; i < this.length; i += 1) {
969
+      if (typeof newChild === 'string') {
970
+        var tempDiv = document.createElement('div');
971
+        tempDiv.innerHTML = newChild;
972
+
973
+        for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
974
+          this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
975
+        }
976
+      } else if (newChild instanceof Dom7) {
977
+        for (j = 0; j < newChild.length; j += 1) {
978
+          this[i].insertBefore(newChild[j], this[i].childNodes[0]);
979
+        }
980
+      } else {
981
+        this[i].insertBefore(newChild, this[i].childNodes[0]);
982
+      }
983
+    }
984
+
985
+    return this;
986
+  }
987
+
988
+  function next(selector) {
989
+    if (this.length > 0) {
990
+      if (selector) {
991
+        if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
992
+          return $([this[0].nextElementSibling]);
993
+        }
994
+
995
+        return $([]);
996
+      }
997
+
998
+      if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
999
+      return $([]);
1000
+    }
1001
+
1002
+    return $([]);
1003
+  }
1004
+
1005
+  function nextAll(selector) {
1006
+    var nextEls = [];
1007
+    var el = this[0];
1008
+    if (!el) return $([]);
1009
+
1010
+    while (el.nextElementSibling) {
1011
+      var _next = el.nextElementSibling; // eslint-disable-line
1012
+
1013
+      if (selector) {
1014
+        if ($(_next).is(selector)) nextEls.push(_next);
1015
+      } else nextEls.push(_next);
1016
+
1017
+      el = _next;
1018
+    }
1019
+
1020
+    return $(nextEls);
1021
+  }
1022
+
1023
+  function prev(selector) {
1024
+    if (this.length > 0) {
1025
+      var el = this[0];
1026
+
1027
+      if (selector) {
1028
+        if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
1029
+          return $([el.previousElementSibling]);
1030
+        }
1031
+
1032
+        return $([]);
1033
+      }
1034
+
1035
+      if (el.previousElementSibling) return $([el.previousElementSibling]);
1036
+      return $([]);
1037
+    }
1038
+
1039
+    return $([]);
1040
+  }
1041
+
1042
+  function prevAll(selector) {
1043
+    var prevEls = [];
1044
+    var el = this[0];
1045
+    if (!el) return $([]);
1046
+
1047
+    while (el.previousElementSibling) {
1048
+      var _prev = el.previousElementSibling; // eslint-disable-line
1049
+
1050
+      if (selector) {
1051
+        if ($(_prev).is(selector)) prevEls.push(_prev);
1052
+      } else prevEls.push(_prev);
1053
+
1054
+      el = _prev;
1055
+    }
1056
+
1057
+    return $(prevEls);
1058
+  }
1059
+
1060
+  function parent(selector) {
1061
+    var parents = []; // eslint-disable-line
1062
+
1063
+    for (var i = 0; i < this.length; i += 1) {
1064
+      if (this[i].parentNode !== null) {
1065
+        if (selector) {
1066
+          if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
1067
+        } else {
1068
+          parents.push(this[i].parentNode);
1069
+        }
1070
+      }
1071
+    }
1072
+
1073
+    return $(parents);
1074
+  }
1075
+
1076
+  function parents(selector) {
1077
+    var parents = []; // eslint-disable-line
1078
+
1079
+    for (var i = 0; i < this.length; i += 1) {
1080
+      var _parent = this[i].parentNode; // eslint-disable-line
1081
+
1082
+      while (_parent) {
1083
+        if (selector) {
1084
+          if ($(_parent).is(selector)) parents.push(_parent);
1085
+        } else {
1086
+          parents.push(_parent);
1087
+        }
1088
+
1089
+        _parent = _parent.parentNode;
1090
+      }
1091
+    }
1092
+
1093
+    return $(parents);
1094
+  }
1095
+
1096
+  function closest(selector) {
1097
+    var closest = this; // eslint-disable-line
1098
+
1099
+    if (typeof selector === 'undefined') {
1100
+      return $([]);
1101
+    }
1102
+
1103
+    if (!closest.is(selector)) {
1104
+      closest = closest.parents(selector).eq(0);
1105
+    }
1106
+
1107
+    return closest;
1108
+  }
1109
+
1110
+  function find(selector) {
1111
+    var foundElements = [];
1112
+
1113
+    for (var i = 0; i < this.length; i += 1) {
1114
+      var found = this[i].querySelectorAll(selector);
1115
+
1116
+      for (var j = 0; j < found.length; j += 1) {
1117
+        foundElements.push(found[j]);
1118
+      }
1119
+    }
1120
+
1121
+    return $(foundElements);
1122
+  }
1123
+
1124
+  function children(selector) {
1125
+    var children = []; // eslint-disable-line
1126
+
1127
+    for (var i = 0; i < this.length; i += 1) {
1128
+      var childNodes = this[i].children;
1129
+
1130
+      for (var j = 0; j < childNodes.length; j += 1) {
1131
+        if (!selector || $(childNodes[j]).is(selector)) {
1132
+          children.push(childNodes[j]);
1133
+        }
1134
+      }
1135
+    }
1136
+
1137
+    return $(children);
1138
+  }
1139
+
1140
+  function remove() {
1141
+    for (var i = 0; i < this.length; i += 1) {
1142
+      if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
1143
+    }
1144
+
1145
+    return this;
1146
+  }
1147
+
1148
+  var Methods = {
1149
+    addClass: addClass,
1150
+    removeClass: removeClass,
1151
+    hasClass: hasClass,
1152
+    toggleClass: toggleClass,
1153
+    attr: attr,
1154
+    removeAttr: removeAttr,
1155
+    transform: transform,
1156
+    transition: transition,
1157
+    on: on,
1158
+    off: off,
1159
+    trigger: trigger,
1160
+    transitionEnd: transitionEnd,
1161
+    outerWidth: outerWidth,
1162
+    outerHeight: outerHeight,
1163
+    styles: styles,
1164
+    offset: offset,
1165
+    css: css,
1166
+    each: each,
1167
+    html: html,
1168
+    text: text,
1169
+    is: is,
1170
+    index: index,
1171
+    eq: eq,
1172
+    append: append,
1173
+    prepend: prepend,
1174
+    next: next,
1175
+    nextAll: nextAll,
1176
+    prev: prev,
1177
+    prevAll: prevAll,
1178
+    parent: parent,
1179
+    parents: parents,
1180
+    closest: closest,
1181
+    find: find,
1182
+    children: children,
1183
+    filter: filter,
1184
+    remove: remove
1185
+  };
1186
+  Object.keys(Methods).forEach(function (methodName) {
1187
+    $.fn[methodName] = Methods[methodName];
1188
+  });
1189
+
1190
+  function deleteProps(obj) {
1191
+    var object = obj;
1192
+    Object.keys(object).forEach(function (key) {
1193
+      try {
1194
+        object[key] = null;
1195
+      } catch (e) {// no getter for object
1196
+      }
1197
+
1198
+      try {
1199
+        delete object[key];
1200
+      } catch (e) {// something got wrong
1201
+      }
1202
+    });
1203
+  }
1204
+
1205
+  function nextTick(callback, delay) {
1206
+    if (delay === void 0) {
1207
+      delay = 0;
1208
+    }
1209
+
1210
+    return setTimeout(callback, delay);
1211
+  }
1212
+
1213
+  function now() {
1214
+    return Date.now();
1215
+  }
1216
+
1217
+  function getTranslate(el, axis) {
1218
+    if (axis === void 0) {
1219
+      axis = 'x';
1220
+    }
1221
+
1222
+    var window = getWindow();
1223
+    var matrix;
1224
+    var curTransform;
1225
+    var transformMatrix;
1226
+    var curStyle = window.getComputedStyle(el, null);
1227
+
1228
+    if (window.WebKitCSSMatrix) {
1229
+      curTransform = curStyle.transform || curStyle.webkitTransform;
1230
+
1231
+      if (curTransform.split(',').length > 6) {
1232
+        curTransform = curTransform.split(', ').map(function (a) {
1233
+          return a.replace(',', '.');
1234
+        }).join(', ');
1235
+      } // Some old versions of Webkit choke when 'none' is passed; pass
1236
+      // empty string instead in this case
1237
+
1238
+
1239
+      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
1240
+    } else {
1241
+      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
1242
+      matrix = transformMatrix.toString().split(',');
1243
+    }
1244
+
1245
+    if (axis === 'x') {
1246
+      // Latest Chrome and webkits Fix
1247
+      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
1248
+      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
1249
+        else curTransform = parseFloat(matrix[4]);
1250
+    }
1251
+
1252
+    if (axis === 'y') {
1253
+      // Latest Chrome and webkits Fix
1254
+      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
1255
+      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
1256
+        else curTransform = parseFloat(matrix[5]);
1257
+    }
1258
+
1259
+    return curTransform || 0;
1260
+  }
1261
+
1262
+  function isObject$1(o) {
1263
+    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
1264
+  }
1265
+
1266
+  function extend$1() {
1267
+    var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
1268
+
1269
+    for (var i = 1; i < arguments.length; i += 1) {
1270
+      var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
1271
+
1272
+      if (nextSource !== undefined && nextSource !== null) {
1273
+        var keysArray = Object.keys(Object(nextSource));
1274
+
1275
+        for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
1276
+          var nextKey = keysArray[nextIndex];
1277
+          var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
1278
+
1279
+          if (desc !== undefined && desc.enumerable) {
1280
+            if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1281
+              extend$1(to[nextKey], nextSource[nextKey]);
1282
+            } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1283
+              to[nextKey] = {};
1284
+              extend$1(to[nextKey], nextSource[nextKey]);
1285
+            } else {
1286
+              to[nextKey] = nextSource[nextKey];
1287
+            }
1288
+          }
1289
+        }
1290
+      }
1291
+    }
1292
+
1293
+    return to;
1294
+  }
1295
+
1296
+  function bindModuleMethods(instance, obj) {
1297
+    Object.keys(obj).forEach(function (key) {
1298
+      if (isObject$1(obj[key])) {
1299
+        Object.keys(obj[key]).forEach(function (subKey) {
1300
+          if (typeof obj[key][subKey] === 'function') {
1301
+            obj[key][subKey] = obj[key][subKey].bind(instance);
1302
+          }
1303
+        });
1304
+      }
1305
+
1306
+      instance[key] = obj[key];
1307
+    });
1308
+  }
1309
+
1310
+  var support;
1311
+
1312
+  function calcSupport() {
1313
+    var window = getWindow();
1314
+    var document = getDocument();
1315
+    return {
1316
+      touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
1317
+      pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
1318
+      observer: function checkObserver() {
1319
+        return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
1320
+      }(),
1321
+      passiveListener: function checkPassiveListener() {
1322
+        var supportsPassive = false;
1323
+
1324
+        try {
1325
+          var opts = Object.defineProperty({}, 'passive', {
1326
+            // eslint-disable-next-line
1327
+            get: function get() {
1328
+              supportsPassive = true;
1329
+            }
1330
+          });
1331
+          window.addEventListener('testPassiveListener', null, opts);
1332
+        } catch (e) {// No support
1333
+        }
1334
+
1335
+        return supportsPassive;
1336
+      }(),
1337
+      gestures: function checkGestures() {
1338
+        return 'ongesturestart' in window;
1339
+      }()
1340
+    };
1341
+  }
1342
+
1343
+  function getSupport() {
1344
+    if (!support) {
1345
+      support = calcSupport();
1346
+    }
1347
+
1348
+    return support;
1349
+  }
1350
+
1351
+  var device;
1352
+
1353
+  function calcDevice(_temp) {
1354
+    var _ref = _temp === void 0 ? {} : _temp,
1355
+        userAgent = _ref.userAgent;
1356
+
1357
+    var support = getSupport();
1358
+    var window = getWindow();
1359
+    var platform = window.navigator.platform;
1360
+    var ua = userAgent || window.navigator.userAgent;
1361
+    var device = {
1362
+      ios: false,
1363
+      android: false
1364
+    };
1365
+    var screenWidth = window.screen.width;
1366
+    var screenHeight = window.screen.height;
1367
+    var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
1368
+
1369
+    var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1370
+    var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1371
+    var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1372
+    var windows = platform === 'Win32';
1373
+    var macos = platform === 'MacIntel'; // iPadOs 13 fix
1374
+
1375
+    var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
1376
+
1377
+    if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
1378
+      ipad = ua.match(/(Version)\/([\d.]+)/);
1379
+      if (!ipad) ipad = [0, 1, '13_0_0'];
1380
+      macos = false;
1381
+    } // Android
1382
+
1383
+
1384
+    if (android && !windows) {
1385
+      device.os = 'android';
1386
+      device.android = true;
1387
+    }
1388
+
1389
+    if (ipad || iphone || ipod) {
1390
+      device.os = 'ios';
1391
+      device.ios = true;
1392
+    } // Export object
1393
+
1394
+
1395
+    return device;
1396
+  }
1397
+
1398
+  function getDevice(overrides) {
1399
+    if (overrides === void 0) {
1400
+      overrides = {};
1401
+    }
1402
+
1403
+    if (!device) {
1404
+      device = calcDevice(overrides);
1405
+    }
1406
+
1407
+    return device;
1408
+  }
1409
+
1410
+  var browser;
1411
+
1412
+  function calcBrowser() {
1413
+    var window = getWindow();
1414
+
1415
+    function isSafari() {
1416
+      var ua = window.navigator.userAgent.toLowerCase();
1417
+      return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
1418
+    }
1419
+
1420
+    return {
1421
+      isEdge: !!window.navigator.userAgent.match(/Edge/g),
1422
+      isSafari: isSafari(),
1423
+      isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
1424
+    };
1425
+  }
1426
+
1427
+  function getBrowser() {
1428
+    if (!browser) {
1429
+      browser = calcBrowser();
1430
+    }
1431
+
1432
+    return browser;
1433
+  }
1434
+
1435
+  var Resize = {
1436
+    name: 'resize',
1437
+    create: function create() {
1438
+      var swiper = this;
1439
+      extend$1(swiper, {
1440
+        resize: {
1441
+          resizeHandler: function resizeHandler() {
1442
+            if (!swiper || swiper.destroyed || !swiper.initialized) return;
1443
+            swiper.emit('beforeResize');
1444
+            swiper.emit('resize');
1445
+          },
1446
+          orientationChangeHandler: function orientationChangeHandler() {
1447
+            if (!swiper || swiper.destroyed || !swiper.initialized) return;
1448
+            swiper.emit('orientationchange');
1449
+          }
1450
+        }
1451
+      });
1452
+    },
1453
+    on: {
1454
+      init: function init(swiper) {
1455
+        var window = getWindow(); // Emit resize
1456
+
1457
+        window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange
1458
+
1459
+        window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1460
+      },
1461
+      destroy: function destroy(swiper) {
1462
+        var window = getWindow();
1463
+        window.removeEventListener('resize', swiper.resize.resizeHandler);
1464
+        window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1465
+      }
1466
+    }
1467
+  };
1468
+
1469
+  var Observer = {
1470
+    attach: function attach(target, options) {
1471
+      if (options === void 0) {
1472
+        options = {};
1473
+      }
1474
+
1475
+      var window = getWindow();
1476
+      var swiper = this;
1477
+      var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
1478
+      var observer = new ObserverFunc(function (mutations) {
1479
+        // The observerUpdate event should only be triggered
1480
+        // once despite the number of mutations.  Additional
1481
+        // triggers are redundant and are very costly
1482
+        if (mutations.length === 1) {
1483
+          swiper.emit('observerUpdate', mutations[0]);
1484
+          return;
1485
+        }
1486
+
1487
+        var observerUpdate = function observerUpdate() {
1488
+          swiper.emit('observerUpdate', mutations[0]);
1489
+        };
1490
+
1491
+        if (window.requestAnimationFrame) {
1492
+          window.requestAnimationFrame(observerUpdate);
1493
+        } else {
1494
+          window.setTimeout(observerUpdate, 0);
1495
+        }
1496
+      });
1497
+      observer.observe(target, {
1498
+        attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
1499
+        childList: typeof options.childList === 'undefined' ? true : options.childList,
1500
+        characterData: typeof options.characterData === 'undefined' ? true : options.characterData
1501
+      });
1502
+      swiper.observer.observers.push(observer);
1503
+    },
1504
+    init: function init() {
1505
+      var swiper = this;
1506
+      if (!swiper.support.observer || !swiper.params.observer) return;
1507
+
1508
+      if (swiper.params.observeParents) {
1509
+        var containerParents = swiper.$el.parents();
1510
+
1511
+        for (var i = 0; i < containerParents.length; i += 1) {
1512
+          swiper.observer.attach(containerParents[i]);
1513
+        }
1514
+      } // Observe container
1515
+
1516
+
1517
+      swiper.observer.attach(swiper.$el[0], {
1518
+        childList: swiper.params.observeSlideChildren
1519
+      }); // Observe wrapper
1520
+
1521
+      swiper.observer.attach(swiper.$wrapperEl[0], {
1522
+        attributes: false
1523
+      });
1524
+    },
1525
+    destroy: function destroy() {
1526
+      var swiper = this;
1527
+      swiper.observer.observers.forEach(function (observer) {
1528
+        observer.disconnect();
1529
+      });
1530
+      swiper.observer.observers = [];
1531
+    }
1532
+  };
1533
+  var Observer$1 = {
1534
+    name: 'observer',
1535
+    params: {
1536
+      observer: false,
1537
+      observeParents: false,
1538
+      observeSlideChildren: false
1539
+    },
1540
+    create: function create() {
1541
+      var swiper = this;
1542
+      bindModuleMethods(swiper, {
1543
+        observer: _extends(_extends({}, Observer), {}, {
1544
+          observers: []
1545
+        })
1546
+      });
1547
+    },
1548
+    on: {
1549
+      init: function init(swiper) {
1550
+        swiper.observer.init();
1551
+      },
1552
+      destroy: function destroy(swiper) {
1553
+        swiper.observer.destroy();
1554
+      }
1555
+    }
1556
+  };
1557
+
1558
+  var modular = {
1559
+    useParams: function useParams(instanceParams) {
1560
+      var instance = this;
1561
+      if (!instance.modules) return;
1562
+      Object.keys(instance.modules).forEach(function (moduleName) {
1563
+        var module = instance.modules[moduleName]; // Extend params
1564
+
1565
+        if (module.params) {
1566
+          extend$1(instanceParams, module.params);
1567
+        }
1568
+      });
1569
+    },
1570
+    useModules: function useModules(modulesParams) {
1571
+      if (modulesParams === void 0) {
1572
+        modulesParams = {};
1573
+      }
1574
+
1575
+      var instance = this;
1576
+      if (!instance.modules) return;
1577
+      Object.keys(instance.modules).forEach(function (moduleName) {
1578
+        var module = instance.modules[moduleName];
1579
+        var moduleParams = modulesParams[moduleName] || {}; // Add event listeners
1580
+
1581
+        if (module.on && instance.on) {
1582
+          Object.keys(module.on).forEach(function (moduleEventName) {
1583
+            instance.on(moduleEventName, module.on[moduleEventName]);
1584
+          });
1585
+        } // Module create callback
1586
+
1587
+
1588
+        if (module.create) {
1589
+          module.create.bind(instance)(moduleParams);
1590
+        }
1591
+      });
1592
+    }
1593
+  };
1594
+
1595
+  /* eslint-disable no-underscore-dangle */
1596
+  var eventsEmitter = {
1597
+    on: function on(events, handler, priority) {
1598
+      var self = this;
1599
+      if (typeof handler !== 'function') return self;
1600
+      var method = priority ? 'unshift' : 'push';
1601
+      events.split(' ').forEach(function (event) {
1602
+        if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
1603
+        self.eventsListeners[event][method](handler);
1604
+      });
1605
+      return self;
1606
+    },
1607
+    once: function once(events, handler, priority) {
1608
+      var self = this;
1609
+      if (typeof handler !== 'function') return self;
1610
+
1611
+      function onceHandler() {
1612
+        self.off(events, onceHandler);
1613
+
1614
+        if (onceHandler.__emitterProxy) {
1615
+          delete onceHandler.__emitterProxy;
1616
+        }
1617
+
1618
+        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1619
+          args[_key] = arguments[_key];
1620
+        }
1621
+
1622
+        handler.apply(self, args);
1623
+      }
1624
+
1625
+      onceHandler.__emitterProxy = handler;
1626
+      return self.on(events, onceHandler, priority);
1627
+    },
1628
+    onAny: function onAny(handler, priority) {
1629
+      var self = this;
1630
+      if (typeof handler !== 'function') return self;
1631
+      var method = priority ? 'unshift' : 'push';
1632
+
1633
+      if (self.eventsAnyListeners.indexOf(handler) < 0) {
1634
+        self.eventsAnyListeners[method](handler);
1635
+      }
1636
+
1637
+      return self;
1638
+    },
1639
+    offAny: function offAny(handler) {
1640
+      var self = this;
1641
+      if (!self.eventsAnyListeners) return self;
1642
+      var index = self.eventsAnyListeners.indexOf(handler);
1643
+
1644
+      if (index >= 0) {
1645
+        self.eventsAnyListeners.splice(index, 1);
1646
+      }
1647
+
1648
+      return self;
1649
+    },
1650
+    off: function off(events, handler) {
1651
+      var self = this;
1652
+      if (!self.eventsListeners) return self;
1653
+      events.split(' ').forEach(function (event) {
1654
+        if (typeof handler === 'undefined') {
1655
+          self.eventsListeners[event] = [];
1656
+        } else if (self.eventsListeners[event]) {
1657
+          self.eventsListeners[event].forEach(function (eventHandler, index) {
1658
+            if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
1659
+              self.eventsListeners[event].splice(index, 1);
1660
+            }
1661
+          });
1662
+        }
1663
+      });
1664
+      return self;
1665
+    },
1666
+    emit: function emit() {
1667
+      var self = this;
1668
+      if (!self.eventsListeners) return self;
1669
+      var events;
1670
+      var data;
1671
+      var context;
1672
+
1673
+      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1674
+        args[_key2] = arguments[_key2];
1675
+      }
1676
+
1677
+      if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1678
+        events = args[0];
1679
+        data = args.slice(1, args.length);
1680
+        context = self;
1681
+      } else {
1682
+        events = args[0].events;
1683
+        data = args[0].data;
1684
+        context = args[0].context || self;
1685
+      }
1686
+
1687
+      data.unshift(context);
1688
+      var eventsArray = Array.isArray(events) ? events : events.split(' ');
1689
+      eventsArray.forEach(function (event) {
1690
+        if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
1691
+          self.eventsAnyListeners.forEach(function (eventHandler) {
1692
+            eventHandler.apply(context, [event].concat(data));
1693
+          });
1694
+        }
1695
+
1696
+        if (self.eventsListeners && self.eventsListeners[event]) {
1697
+          var handlers = [];
1698
+          self.eventsListeners[event].forEach(function (eventHandler) {
1699
+            handlers.push(eventHandler);
1700
+          });
1701
+          handlers.forEach(function (eventHandler) {
1702
+            eventHandler.apply(context, data);
1703
+          });
1704
+        }
1705
+      });
1706
+      return self;
1707
+    }
1708
+  };
1709
+
1710
+  function updateSize() {
1711
+    var swiper = this;
1712
+    var width;
1713
+    var height;
1714
+    var $el = swiper.$el;
1715
+
1716
+    if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
1717
+      width = swiper.params.width;
1718
+    } else {
1719
+      width = $el[0].clientWidth;
1720
+    }
1721
+
1722
+    if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {
1723
+      height = swiper.params.height;
1724
+    } else {
1725
+      height = $el[0].clientHeight;
1726
+    }
1727
+
1728
+    if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
1729
+      return;
1730
+    } // Subtract paddings
1731
+
1732
+
1733
+    width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
1734
+    height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
1735
+    if (Number.isNaN(width)) width = 0;
1736
+    if (Number.isNaN(height)) height = 0;
1737
+    extend$1(swiper, {
1738
+      width: width,
1739
+      height: height,
1740
+      size: swiper.isHorizontal() ? width : height
1741
+    });
1742
+  }
1743
+
1744
+  function updateSlides() {
1745
+    var swiper = this;
1746
+    var window = getWindow();
1747
+    var params = swiper.params;
1748
+    var $wrapperEl = swiper.$wrapperEl,
1749
+        swiperSize = swiper.size,
1750
+        rtl = swiper.rtlTranslate,
1751
+        wrongRTL = swiper.wrongRTL;
1752
+    var isVirtual = swiper.virtual && params.virtual.enabled;
1753
+    var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1754
+    var slides = $wrapperEl.children("." + swiper.params.slideClass);
1755
+    var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1756
+    var snapGrid = [];
1757
+    var slidesGrid = [];
1758
+    var slidesSizesGrid = [];
1759
+
1760
+    function slidesForMargin(slideEl, slideIndex) {
1761
+      if (!params.cssMode) return true;
1762
+
1763
+      if (slideIndex === slides.length - 1) {
1764
+        return false;
1765
+      }
1766
+
1767
+      return true;
1768
+    }
1769
+
1770
+    var offsetBefore = params.slidesOffsetBefore;
1771
+
1772
+    if (typeof offsetBefore === 'function') {
1773
+      offsetBefore = params.slidesOffsetBefore.call(swiper);
1774
+    }
1775
+
1776
+    var offsetAfter = params.slidesOffsetAfter;
1777
+
1778
+    if (typeof offsetAfter === 'function') {
1779
+      offsetAfter = params.slidesOffsetAfter.call(swiper);
1780
+    }
1781
+
1782
+    var previousSnapGridLength = swiper.snapGrid.length;
1783
+    var previousSlidesGridLength = swiper.snapGrid.length;
1784
+    var spaceBetween = params.spaceBetween;
1785
+    var slidePosition = -offsetBefore;
1786
+    var prevSlideSize = 0;
1787
+    var index = 0;
1788
+
1789
+    if (typeof swiperSize === 'undefined') {
1790
+      return;
1791
+    }
1792
+
1793
+    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1794
+      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
1795
+    }
1796
+
1797
+    swiper.virtualSize = -spaceBetween; // reset margins
1798
+
1799
+    if (rtl) slides.css({
1800
+      marginLeft: '',
1801
+      marginTop: ''
1802
+    });else slides.css({
1803
+      marginRight: '',
1804
+      marginBottom: ''
1805
+    });
1806
+    var slidesNumberEvenToRows;
1807
+
1808
+    if (params.slidesPerColumn > 1) {
1809
+      if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1810
+        slidesNumberEvenToRows = slidesLength;
1811
+      } else {
1812
+        slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1813
+      }
1814
+
1815
+      if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1816
+        slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1817
+      }
1818
+    } // Calc slides
1819
+
1820
+
1821
+    var slideSize;
1822
+    var slidesPerColumn = params.slidesPerColumn;
1823
+    var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1824
+    var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
1825
+
1826
+    for (var i = 0; i < slidesLength; i += 1) {
1827
+      slideSize = 0;
1828
+      var slide = slides.eq(i);
1829
+
1830
+      if (params.slidesPerColumn > 1) {
1831
+        // Set slides order
1832
+        var newSlideOrderIndex = void 0;
1833
+        var column = void 0;
1834
+        var row = void 0;
1835
+
1836
+        if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
1837
+          var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
1838
+          var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
1839
+          var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
1840
+          row = Math.floor(slideIndexInGroup / columnsInGroup);
1841
+          column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
1842
+          newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
1843
+          slide.css({
1844
+            '-webkit-box-ordinal-group': newSlideOrderIndex,
1845
+            '-moz-box-ordinal-group': newSlideOrderIndex,
1846
+            '-ms-flex-order': newSlideOrderIndex,
1847
+            '-webkit-order': newSlideOrderIndex,
1848
+            order: newSlideOrderIndex
1849
+          });
1850
+        } else if (params.slidesPerColumnFill === 'column') {
1851
+          column = Math.floor(i / slidesPerColumn);
1852
+          row = i - column * slidesPerColumn;
1853
+
1854
+          if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
1855
+            row += 1;
1856
+
1857
+            if (row >= slidesPerColumn) {
1858
+              row = 0;
1859
+              column += 1;
1860
+            }
1861
+          }
1862
+        } else {
1863
+          row = Math.floor(i / slidesPerRow);
1864
+          column = i - row * slidesPerRow;
1865
+        }
1866
+
1867
+        slide.css("margin-" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
1868
+      }
1869
+
1870
+      if (slide.css('display') === 'none') continue; // eslint-disable-line
1871
+
1872
+      if (params.slidesPerView === 'auto') {
1873
+        var slideStyles = window.getComputedStyle(slide[0], null);
1874
+        var currentTransform = slide[0].style.transform;
1875
+        var currentWebKitTransform = slide[0].style.webkitTransform;
1876
+
1877
+        if (currentTransform) {
1878
+          slide[0].style.transform = 'none';
1879
+        }
1880
+
1881
+        if (currentWebKitTransform) {
1882
+          slide[0].style.webkitTransform = 'none';
1883
+        }
1884
+
1885
+        if (params.roundLengths) {
1886
+          slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
1887
+        } else {
1888
+          // eslint-disable-next-line
1889
+          if (swiper.isHorizontal()) {
1890
+            var width = parseFloat(slideStyles.getPropertyValue('width') || 0);
1891
+            var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);
1892
+            var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);
1893
+            var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);
1894
+            var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);
1895
+            var boxSizing = slideStyles.getPropertyValue('box-sizing');
1896
+
1897
+            if (boxSizing && boxSizing === 'border-box') {
1898
+              slideSize = width + marginLeft + marginRight;
1899
+            } else {
1900
+              var _slide$ = slide[0],
1901
+                  clientWidth = _slide$.clientWidth,
1902
+                  offsetWidth = _slide$.offsetWidth;
1903
+              slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
1904
+            }
1905
+          } else {
1906
+            var height = parseFloat(slideStyles.getPropertyValue('height') || 0);
1907
+            var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);
1908
+            var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);
1909
+            var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);
1910
+            var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);
1911
+
1912
+            var _boxSizing = slideStyles.getPropertyValue('box-sizing');
1913
+
1914
+            if (_boxSizing && _boxSizing === 'border-box') {
1915
+              slideSize = height + marginTop + marginBottom;
1916
+            } else {
1917
+              var _slide$2 = slide[0],
1918
+                  clientHeight = _slide$2.clientHeight,
1919
+                  offsetHeight = _slide$2.offsetHeight;
1920
+              slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom + (offsetHeight - clientHeight);
1921
+            }
1922
+          }
1923
+        }
1924
+
1925
+        if (currentTransform) {
1926
+          slide[0].style.transform = currentTransform;
1927
+        }
1928
+
1929
+        if (currentWebKitTransform) {
1930
+          slide[0].style.webkitTransform = currentWebKitTransform;
1931
+        }
1932
+
1933
+        if (params.roundLengths) slideSize = Math.floor(slideSize);
1934
+      } else {
1935
+        slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
1936
+        if (params.roundLengths) slideSize = Math.floor(slideSize);
1937
+
1938
+        if (slides[i]) {
1939
+          if (swiper.isHorizontal()) {
1940
+            slides[i].style.width = slideSize + "px";
1941
+          } else {
1942
+            slides[i].style.height = slideSize + "px";
1943
+          }
1944
+        }
1945
+      }
1946
+
1947
+      if (slides[i]) {
1948
+        slides[i].swiperSlideSize = slideSize;
1949
+      }
1950
+
1951
+      slidesSizesGrid.push(slideSize);
1952
+
1953
+      if (params.centeredSlides) {
1954
+        slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
1955
+        if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1956
+        if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1957
+        if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
1958
+        if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1959
+        if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1960
+        slidesGrid.push(slidePosition);
1961
+      } else {
1962
+        if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1963
+        if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1964
+        slidesGrid.push(slidePosition);
1965
+        slidePosition = slidePosition + slideSize + spaceBetween;
1966
+      }
1967
+
1968
+      swiper.virtualSize += slideSize + spaceBetween;
1969
+      prevSlideSize = slideSize;
1970
+      index += 1;
1971
+    }
1972
+
1973
+    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1974
+    var newSlidesGrid;
1975
+
1976
+    if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
1977
+      $wrapperEl.css({
1978
+        width: swiper.virtualSize + params.spaceBetween + "px"
1979
+      });
1980
+    }
1981
+
1982
+    if (params.setWrapperSize) {
1983
+      if (swiper.isHorizontal()) $wrapperEl.css({
1984
+        width: swiper.virtualSize + params.spaceBetween + "px"
1985
+      });else $wrapperEl.css({
1986
+        height: swiper.virtualSize + params.spaceBetween + "px"
1987
+      });
1988
+    }
1989
+
1990
+    if (params.slidesPerColumn > 1) {
1991
+      swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
1992
+      swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
1993
+      if (swiper.isHorizontal()) $wrapperEl.css({
1994
+        width: swiper.virtualSize + params.spaceBetween + "px"
1995
+      });else $wrapperEl.css({
1996
+        height: swiper.virtualSize + params.spaceBetween + "px"
1997
+      });
1998
+
1999
+      if (params.centeredSlides) {
2000
+        newSlidesGrid = [];
2001
+
2002
+        for (var _i = 0; _i < snapGrid.length; _i += 1) {
2003
+          var slidesGridItem = snapGrid[_i];
2004
+          if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
2005
+          if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
2006
+        }
2007
+
2008
+        snapGrid = newSlidesGrid;
2009
+      }
2010
+    } // Remove last grid elements depending on width
2011
+
2012
+
2013
+    if (!params.centeredSlides) {
2014
+      newSlidesGrid = [];
2015
+
2016
+      for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
2017
+        var _slidesGridItem = snapGrid[_i2];
2018
+        if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
2019
+
2020
+        if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
2021
+          newSlidesGrid.push(_slidesGridItem);
2022
+        }
2023
+      }
2024
+
2025
+      snapGrid = newSlidesGrid;
2026
+
2027
+      if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
2028
+        snapGrid.push(swiper.virtualSize - swiperSize);
2029
+      }
2030
+    }
2031
+
2032
+    if (snapGrid.length === 0) snapGrid = [0];
2033
+
2034
+    if (params.spaceBetween !== 0) {
2035
+      if (swiper.isHorizontal()) {
2036
+        if (rtl) slides.filter(slidesForMargin).css({
2037
+          marginLeft: spaceBetween + "px"
2038
+        });else slides.filter(slidesForMargin).css({
2039
+          marginRight: spaceBetween + "px"
2040
+        });
2041
+      } else slides.filter(slidesForMargin).css({
2042
+        marginBottom: spaceBetween + "px"
2043
+      });
2044
+    }
2045
+
2046
+    if (params.centeredSlides && params.centeredSlidesBounds) {
2047
+      var allSlidesSize = 0;
2048
+      slidesSizesGrid.forEach(function (slideSizeValue) {
2049
+        allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2050
+      });
2051
+      allSlidesSize -= params.spaceBetween;
2052
+      var maxSnap = allSlidesSize - swiperSize;
2053
+      snapGrid = snapGrid.map(function (snap) {
2054
+        if (snap < 0) return -offsetBefore;
2055
+        if (snap > maxSnap) return maxSnap + offsetAfter;
2056
+        return snap;
2057
+      });
2058
+    }
2059
+
2060
+    if (params.centerInsufficientSlides) {
2061
+      var _allSlidesSize = 0;
2062
+      slidesSizesGrid.forEach(function (slideSizeValue) {
2063
+        _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2064
+      });
2065
+      _allSlidesSize -= params.spaceBetween;
2066
+
2067
+      if (_allSlidesSize < swiperSize) {
2068
+        var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
2069
+        snapGrid.forEach(function (snap, snapIndex) {
2070
+          snapGrid[snapIndex] = snap - allSlidesOffset;
2071
+        });
2072
+        slidesGrid.forEach(function (snap, snapIndex) {
2073
+          slidesGrid[snapIndex] = snap + allSlidesOffset;
2074
+        });
2075
+      }
2076
+    }
2077
+
2078
+    extend$1(swiper, {
2079
+      slides: slides,
2080
+      snapGrid: snapGrid,
2081
+      slidesGrid: slidesGrid,
2082
+      slidesSizesGrid: slidesSizesGrid
2083
+    });
2084
+
2085
+    if (slidesLength !== previousSlidesLength) {
2086
+      swiper.emit('slidesLengthChange');
2087
+    }
2088
+
2089
+    if (snapGrid.length !== previousSnapGridLength) {
2090
+      if (swiper.params.watchOverflow) swiper.checkOverflow();
2091
+      swiper.emit('snapGridLengthChange');
2092
+    }
2093
+
2094
+    if (slidesGrid.length !== previousSlidesGridLength) {
2095
+      swiper.emit('slidesGridLengthChange');
2096
+    }
2097
+
2098
+    if (params.watchSlidesProgress || params.watchSlidesVisibility) {
2099
+      swiper.updateSlidesOffset();
2100
+    }
2101
+  }
2102
+
2103
+  function updateAutoHeight(speed) {
2104
+    var swiper = this;
2105
+    var activeSlides = [];
2106
+    var newHeight = 0;
2107
+    var i;
2108
+
2109
+    if (typeof speed === 'number') {
2110
+      swiper.setTransition(speed);
2111
+    } else if (speed === true) {
2112
+      swiper.setTransition(swiper.params.speed);
2113
+    } // Find slides currently in view
2114
+
2115
+
2116
+    if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
2117
+      if (swiper.params.centeredSlides) {
2118
+        swiper.visibleSlides.each(function (slide) {
2119
+          activeSlides.push(slide);
2120
+        });
2121
+      } else {
2122
+        for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
2123
+          var index = swiper.activeIndex + i;
2124
+          if (index > swiper.slides.length) break;
2125
+          activeSlides.push(swiper.slides.eq(index)[0]);
2126
+        }
2127
+      }
2128
+    } else {
2129
+      activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
2130
+    } // Find new height from highest slide in view
2131
+
2132
+
2133
+    for (i = 0; i < activeSlides.length; i += 1) {
2134
+      if (typeof activeSlides[i] !== 'undefined') {
2135
+        var height = activeSlides[i].offsetHeight;
2136
+        newHeight = height > newHeight ? height : newHeight;
2137
+      }
2138
+    } // Update Height
2139
+
2140
+
2141
+    if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
2142
+  }
2143
+
2144
+  function updateSlidesOffset() {
2145
+    var swiper = this;
2146
+    var slides = swiper.slides;
2147
+
2148
+    for (var i = 0; i < slides.length; i += 1) {
2149
+      slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
2150
+    }
2151
+  }
2152
+
2153
+  function updateSlidesProgress(translate) {
2154
+    if (translate === void 0) {
2155
+      translate = this && this.translate || 0;
2156
+    }
2157
+
2158
+    var swiper = this;
2159
+    var params = swiper.params;
2160
+    var slides = swiper.slides,
2161
+        rtl = swiper.rtlTranslate;
2162
+    if (slides.length === 0) return;
2163
+    if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
2164
+    var offsetCenter = -translate;
2165
+    if (rtl) offsetCenter = translate; // Visible Slides
2166
+
2167
+    slides.removeClass(params.slideVisibleClass);
2168
+    swiper.visibleSlidesIndexes = [];
2169
+    swiper.visibleSlides = [];
2170
+
2171
+    for (var i = 0; i < slides.length; i += 1) {
2172
+      var slide = slides[i];
2173
+      var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
2174
+
2175
+      if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
2176
+        var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
2177
+        var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
2178
+        var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
2179
+
2180
+        if (isVisible) {
2181
+          swiper.visibleSlides.push(slide);
2182
+          swiper.visibleSlidesIndexes.push(i);
2183
+          slides.eq(i).addClass(params.slideVisibleClass);
2184
+        }
2185
+      }
2186
+
2187
+      slide.progress = rtl ? -slideProgress : slideProgress;
2188
+    }
2189
+
2190
+    swiper.visibleSlides = $(swiper.visibleSlides);
2191
+  }
2192
+
2193
+  function updateProgress(translate) {
2194
+    var swiper = this;
2195
+
2196
+    if (typeof translate === 'undefined') {
2197
+      var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
2198
+
2199
+      translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
2200
+    }
2201
+
2202
+    var params = swiper.params;
2203
+    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2204
+    var progress = swiper.progress,
2205
+        isBeginning = swiper.isBeginning,
2206
+        isEnd = swiper.isEnd;
2207
+    var wasBeginning = isBeginning;
2208
+    var wasEnd = isEnd;
2209
+
2210
+    if (translatesDiff === 0) {
2211
+      progress = 0;
2212
+      isBeginning = true;
2213
+      isEnd = true;
2214
+    } else {
2215
+      progress = (translate - swiper.minTranslate()) / translatesDiff;
2216
+      isBeginning = progress <= 0;
2217
+      isEnd = progress >= 1;
2218
+    }
2219
+
2220
+    extend$1(swiper, {
2221
+      progress: progress,
2222
+      isBeginning: isBeginning,
2223
+      isEnd: isEnd
2224
+    });
2225
+    if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
2226
+
2227
+    if (isBeginning && !wasBeginning) {
2228
+      swiper.emit('reachBeginning toEdge');
2229
+    }
2230
+
2231
+    if (isEnd && !wasEnd) {
2232
+      swiper.emit('reachEnd toEdge');
2233
+    }
2234
+
2235
+    if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
2236
+      swiper.emit('fromEdge');
2237
+    }
2238
+
2239
+    swiper.emit('progress', progress);
2240
+  }
2241
+
2242
+  function updateSlidesClasses() {
2243
+    var swiper = this;
2244
+    var slides = swiper.slides,
2245
+        params = swiper.params,
2246
+        $wrapperEl = swiper.$wrapperEl,
2247
+        activeIndex = swiper.activeIndex,
2248
+        realIndex = swiper.realIndex;
2249
+    var isVirtual = swiper.virtual && params.virtual.enabled;
2250
+    slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
2251
+    var activeSlide;
2252
+
2253
+    if (isVirtual) {
2254
+      activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
2255
+    } else {
2256
+      activeSlide = slides.eq(activeIndex);
2257
+    } // Active classes
2258
+
2259
+
2260
+    activeSlide.addClass(params.slideActiveClass);
2261
+
2262
+    if (params.loop) {
2263
+      // Duplicate to all looped slides
2264
+      if (activeSlide.hasClass(params.slideDuplicateClass)) {
2265
+        $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2266
+      } else {
2267
+        $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2268
+      }
2269
+    } // Next Slide
2270
+
2271
+
2272
+    var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
2273
+
2274
+    if (params.loop && nextSlide.length === 0) {
2275
+      nextSlide = slides.eq(0);
2276
+      nextSlide.addClass(params.slideNextClass);
2277
+    } // Prev Slide
2278
+
2279
+
2280
+    var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
2281
+
2282
+    if (params.loop && prevSlide.length === 0) {
2283
+      prevSlide = slides.eq(-1);
2284
+      prevSlide.addClass(params.slidePrevClass);
2285
+    }
2286
+
2287
+    if (params.loop) {
2288
+      // Duplicate to all looped slides
2289
+      if (nextSlide.hasClass(params.slideDuplicateClass)) {
2290
+        $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2291
+      } else {
2292
+        $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2293
+      }
2294
+
2295
+      if (prevSlide.hasClass(params.slideDuplicateClass)) {
2296
+        $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2297
+      } else {
2298
+        $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2299
+      }
2300
+    }
2301
+
2302
+    swiper.emitSlidesClasses();
2303
+  }
2304
+
2305
+  function updateActiveIndex(newActiveIndex) {
2306
+    var swiper = this;
2307
+    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2308
+    var slidesGrid = swiper.slidesGrid,
2309
+        snapGrid = swiper.snapGrid,
2310
+        params = swiper.params,
2311
+        previousIndex = swiper.activeIndex,
2312
+        previousRealIndex = swiper.realIndex,
2313
+        previousSnapIndex = swiper.snapIndex;
2314
+    var activeIndex = newActiveIndex;
2315
+    var snapIndex;
2316
+
2317
+    if (typeof activeIndex === 'undefined') {
2318
+      for (var i = 0; i < slidesGrid.length; i += 1) {
2319
+        if (typeof slidesGrid[i + 1] !== 'undefined') {
2320
+          if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
2321
+            activeIndex = i;
2322
+          } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
2323
+            activeIndex = i + 1;
2324
+          }
2325
+        } else if (translate >= slidesGrid[i]) {
2326
+          activeIndex = i;
2327
+        }
2328
+      } // Normalize slideIndex
2329
+
2330
+
2331
+      if (params.normalizeSlideIndex) {
2332
+        if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
2333
+      }
2334
+    }
2335
+
2336
+    if (snapGrid.indexOf(translate) >= 0) {
2337
+      snapIndex = snapGrid.indexOf(translate);
2338
+    } else {
2339
+      var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
2340
+      snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
2341
+    }
2342
+
2343
+    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2344
+
2345
+    if (activeIndex === previousIndex) {
2346
+      if (snapIndex !== previousSnapIndex) {
2347
+        swiper.snapIndex = snapIndex;
2348
+        swiper.emit('snapIndexChange');
2349
+      }
2350
+
2351
+      return;
2352
+    } // Get real index
2353
+
2354
+
2355
+    var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
2356
+    extend$1(swiper, {
2357
+      snapIndex: snapIndex,
2358
+      realIndex: realIndex,
2359
+      previousIndex: previousIndex,
2360
+      activeIndex: activeIndex
2361
+    });
2362
+    swiper.emit('activeIndexChange');
2363
+    swiper.emit('snapIndexChange');
2364
+
2365
+    if (previousRealIndex !== realIndex) {
2366
+      swiper.emit('realIndexChange');
2367
+    }
2368
+
2369
+    if (swiper.initialized || swiper.params.runCallbacksOnInit) {
2370
+      swiper.emit('slideChange');
2371
+    }
2372
+  }
2373
+
2374
+  function updateClickedSlide(e) {
2375
+    var swiper = this;
2376
+    var params = swiper.params;
2377
+    var slide = $(e.target).closest("." + params.slideClass)[0];
2378
+    var slideFound = false;
2379
+
2380
+    if (slide) {
2381
+      for (var i = 0; i < swiper.slides.length; i += 1) {
2382
+        if (swiper.slides[i] === slide) slideFound = true;
2383
+      }
2384
+    }
2385
+
2386
+    if (slide && slideFound) {
2387
+      swiper.clickedSlide = slide;
2388
+
2389
+      if (swiper.virtual && swiper.params.virtual.enabled) {
2390
+        swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
2391
+      } else {
2392
+        swiper.clickedIndex = $(slide).index();
2393
+      }
2394
+    } else {
2395
+      swiper.clickedSlide = undefined;
2396
+      swiper.clickedIndex = undefined;
2397
+      return;
2398
+    }
2399
+
2400
+    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
2401
+      swiper.slideToClickedSlide();
2402
+    }
2403
+  }
2404
+
2405
+  var update = {
2406
+    updateSize: updateSize,
2407
+    updateSlides: updateSlides,
2408
+    updateAutoHeight: updateAutoHeight,
2409
+    updateSlidesOffset: updateSlidesOffset,
2410
+    updateSlidesProgress: updateSlidesProgress,
2411
+    updateProgress: updateProgress,
2412
+    updateSlidesClasses: updateSlidesClasses,
2413
+    updateActiveIndex: updateActiveIndex,
2414
+    updateClickedSlide: updateClickedSlide
2415
+  };
2416
+
2417
+  function getSwiperTranslate(axis) {
2418
+    if (axis === void 0) {
2419
+      axis = this.isHorizontal() ? 'x' : 'y';
2420
+    }
2421
+
2422
+    var swiper = this;
2423
+    var params = swiper.params,
2424
+        rtl = swiper.rtlTranslate,
2425
+        translate = swiper.translate,
2426
+        $wrapperEl = swiper.$wrapperEl;
2427
+
2428
+    if (params.virtualTranslate) {
2429
+      return rtl ? -translate : translate;
2430
+    }
2431
+
2432
+    if (params.cssMode) {
2433
+      return translate;
2434
+    }
2435
+
2436
+    var currentTranslate = getTranslate($wrapperEl[0], axis);
2437
+    if (rtl) currentTranslate = -currentTranslate;
2438
+    return currentTranslate || 0;
2439
+  }
2440
+
2441
+  function setTranslate(translate, byController) {
2442
+    var swiper = this;
2443
+    var rtl = swiper.rtlTranslate,
2444
+        params = swiper.params,
2445
+        $wrapperEl = swiper.$wrapperEl,
2446
+        wrapperEl = swiper.wrapperEl,
2447
+        progress = swiper.progress;
2448
+    var x = 0;
2449
+    var y = 0;
2450
+    var z = 0;
2451
+
2452
+    if (swiper.isHorizontal()) {
2453
+      x = rtl ? -translate : translate;
2454
+    } else {
2455
+      y = translate;
2456
+    }
2457
+
2458
+    if (params.roundLengths) {
2459
+      x = Math.floor(x);
2460
+      y = Math.floor(y);
2461
+    }
2462
+
2463
+    if (params.cssMode) {
2464
+      wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
2465
+    } else if (!params.virtualTranslate) {
2466
+      $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
2467
+    }
2468
+
2469
+    swiper.previousTranslate = swiper.translate;
2470
+    swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
2471
+
2472
+    var newProgress;
2473
+    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2474
+
2475
+    if (translatesDiff === 0) {
2476
+      newProgress = 0;
2477
+    } else {
2478
+      newProgress = (translate - swiper.minTranslate()) / translatesDiff;
2479
+    }
2480
+
2481
+    if (newProgress !== progress) {
2482
+      swiper.updateProgress(translate);
2483
+    }
2484
+
2485
+    swiper.emit('setTranslate', swiper.translate, byController);
2486
+  }
2487
+
2488
+  function minTranslate() {
2489
+    return -this.snapGrid[0];
2490
+  }
2491
+
2492
+  function maxTranslate() {
2493
+    return -this.snapGrid[this.snapGrid.length - 1];
2494
+  }
2495
+
2496
+  function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
2497
+    if (translate === void 0) {
2498
+      translate = 0;
2499
+    }
2500
+
2501
+    if (speed === void 0) {
2502
+      speed = this.params.speed;
2503
+    }
2504
+
2505
+    if (runCallbacks === void 0) {
2506
+      runCallbacks = true;
2507
+    }
2508
+
2509
+    if (translateBounds === void 0) {
2510
+      translateBounds = true;
2511
+    }
2512
+
2513
+    var swiper = this;
2514
+    var params = swiper.params,
2515
+        wrapperEl = swiper.wrapperEl;
2516
+
2517
+    if (swiper.animating && params.preventInteractionOnTransition) {
2518
+      return false;
2519
+    }
2520
+
2521
+    var minTranslate = swiper.minTranslate();
2522
+    var maxTranslate = swiper.maxTranslate();
2523
+    var newTranslate;
2524
+    if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
2525
+
2526
+    swiper.updateProgress(newTranslate);
2527
+
2528
+    if (params.cssMode) {
2529
+      var isH = swiper.isHorizontal();
2530
+
2531
+      if (speed === 0) {
2532
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2533
+      } else {
2534
+        // eslint-disable-next-line
2535
+        if (wrapperEl.scrollTo) {
2536
+          var _wrapperEl$scrollTo;
2537
+
2538
+          wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2539
+        } else {
2540
+          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2541
+        }
2542
+      }
2543
+
2544
+      return true;
2545
+    }
2546
+
2547
+    if (speed === 0) {
2548
+      swiper.setTransition(0);
2549
+      swiper.setTranslate(newTranslate);
2550
+
2551
+      if (runCallbacks) {
2552
+        swiper.emit('beforeTransitionStart', speed, internal);
2553
+        swiper.emit('transitionEnd');
2554
+      }
2555
+    } else {
2556
+      swiper.setTransition(speed);
2557
+      swiper.setTranslate(newTranslate);
2558
+
2559
+      if (runCallbacks) {
2560
+        swiper.emit('beforeTransitionStart', speed, internal);
2561
+        swiper.emit('transitionStart');
2562
+      }
2563
+
2564
+      if (!swiper.animating) {
2565
+        swiper.animating = true;
2566
+
2567
+        if (!swiper.onTranslateToWrapperTransitionEnd) {
2568
+          swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
2569
+            if (!swiper || swiper.destroyed) return;
2570
+            if (e.target !== this) return;
2571
+            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2572
+            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2573
+            swiper.onTranslateToWrapperTransitionEnd = null;
2574
+            delete swiper.onTranslateToWrapperTransitionEnd;
2575
+
2576
+            if (runCallbacks) {
2577
+              swiper.emit('transitionEnd');
2578
+            }
2579
+          };
2580
+        }
2581
+
2582
+        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2583
+        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2584
+      }
2585
+    }
2586
+
2587
+    return true;
2588
+  }
2589
+
2590
+  var translate = {
2591
+    getTranslate: getSwiperTranslate,
2592
+    setTranslate: setTranslate,
2593
+    minTranslate: minTranslate,
2594
+    maxTranslate: maxTranslate,
2595
+    translateTo: translateTo
2596
+  };
2597
+
2598
+  function setTransition(duration, byController) {
2599
+    var swiper = this;
2600
+
2601
+    if (!swiper.params.cssMode) {
2602
+      swiper.$wrapperEl.transition(duration);
2603
+    }
2604
+
2605
+    swiper.emit('setTransition', duration, byController);
2606
+  }
2607
+
2608
+  function transitionStart(runCallbacks, direction) {
2609
+    if (runCallbacks === void 0) {
2610
+      runCallbacks = true;
2611
+    }
2612
+
2613
+    var swiper = this;
2614
+    var activeIndex = swiper.activeIndex,
2615
+        params = swiper.params,
2616
+        previousIndex = swiper.previousIndex;
2617
+    if (params.cssMode) return;
2618
+
2619
+    if (params.autoHeight) {
2620
+      swiper.updateAutoHeight();
2621
+    }
2622
+
2623
+    var dir = direction;
2624
+
2625
+    if (!dir) {
2626
+      if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2627
+    }
2628
+
2629
+    swiper.emit('transitionStart');
2630
+
2631
+    if (runCallbacks && activeIndex !== previousIndex) {
2632
+      if (dir === 'reset') {
2633
+        swiper.emit('slideResetTransitionStart');
2634
+        return;
2635
+      }
2636
+
2637
+      swiper.emit('slideChangeTransitionStart');
2638
+
2639
+      if (dir === 'next') {
2640
+        swiper.emit('slideNextTransitionStart');
2641
+      } else {
2642
+        swiper.emit('slidePrevTransitionStart');
2643
+      }
2644
+    }
2645
+  }
2646
+
2647
+  function transitionEnd$1(runCallbacks, direction) {
2648
+    if (runCallbacks === void 0) {
2649
+      runCallbacks = true;
2650
+    }
2651
+
2652
+    var swiper = this;
2653
+    var activeIndex = swiper.activeIndex,
2654
+        previousIndex = swiper.previousIndex,
2655
+        params = swiper.params;
2656
+    swiper.animating = false;
2657
+    if (params.cssMode) return;
2658
+    swiper.setTransition(0);
2659
+    var dir = direction;
2660
+
2661
+    if (!dir) {
2662
+      if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2663
+    }
2664
+
2665
+    swiper.emit('transitionEnd');
2666
+
2667
+    if (runCallbacks && activeIndex !== previousIndex) {
2668
+      if (dir === 'reset') {
2669
+        swiper.emit('slideResetTransitionEnd');
2670
+        return;
2671
+      }
2672
+
2673
+      swiper.emit('slideChangeTransitionEnd');
2674
+
2675
+      if (dir === 'next') {
2676
+        swiper.emit('slideNextTransitionEnd');
2677
+      } else {
2678
+        swiper.emit('slidePrevTransitionEnd');
2679
+      }
2680
+    }
2681
+  }
2682
+
2683
+  var transition$1 = {
2684
+    setTransition: setTransition,
2685
+    transitionStart: transitionStart,
2686
+    transitionEnd: transitionEnd$1
2687
+  };
2688
+
2689
+  function slideTo(index, speed, runCallbacks, internal) {
2690
+    if (index === void 0) {
2691
+      index = 0;
2692
+    }
2693
+
2694
+    if (speed === void 0) {
2695
+      speed = this.params.speed;
2696
+    }
2697
+
2698
+    if (runCallbacks === void 0) {
2699
+      runCallbacks = true;
2700
+    }
2701
+
2702
+    var swiper = this;
2703
+    var slideIndex = index;
2704
+    if (slideIndex < 0) slideIndex = 0;
2705
+    var params = swiper.params,
2706
+        snapGrid = swiper.snapGrid,
2707
+        slidesGrid = swiper.slidesGrid,
2708
+        previousIndex = swiper.previousIndex,
2709
+        activeIndex = swiper.activeIndex,
2710
+        rtl = swiper.rtlTranslate,
2711
+        wrapperEl = swiper.wrapperEl;
2712
+
2713
+    if (swiper.animating && params.preventInteractionOnTransition) {
2714
+      return false;
2715
+    }
2716
+
2717
+    var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2718
+    var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2719
+    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2720
+
2721
+    if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2722
+      swiper.emit('beforeSlideChangeStart');
2723
+    }
2724
+
2725
+    var translate = -snapGrid[snapIndex]; // Update progress
2726
+
2727
+    swiper.updateProgress(translate); // Normalize slideIndex
2728
+
2729
+    if (params.normalizeSlideIndex) {
2730
+      for (var i = 0; i < slidesGrid.length; i += 1) {
2731
+        if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
2732
+          slideIndex = i;
2733
+        }
2734
+      }
2735
+    } // Directions locks
2736
+
2737
+
2738
+    if (swiper.initialized && slideIndex !== activeIndex) {
2739
+      if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2740
+        return false;
2741
+      }
2742
+
2743
+      if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2744
+        if ((activeIndex || 0) !== slideIndex) return false;
2745
+      }
2746
+    }
2747
+
2748
+    var direction;
2749
+    if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
2750
+
2751
+    if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
2752
+      swiper.updateActiveIndex(slideIndex); // Update Height
2753
+
2754
+      if (params.autoHeight) {
2755
+        swiper.updateAutoHeight();
2756
+      }
2757
+
2758
+      swiper.updateSlidesClasses();
2759
+
2760
+      if (params.effect !== 'slide') {
2761
+        swiper.setTranslate(translate);
2762
+      }
2763
+
2764
+      if (direction !== 'reset') {
2765
+        swiper.transitionStart(runCallbacks, direction);
2766
+        swiper.transitionEnd(runCallbacks, direction);
2767
+      }
2768
+
2769
+      return false;
2770
+    }
2771
+
2772
+    if (params.cssMode) {
2773
+      var isH = swiper.isHorizontal();
2774
+      var t = -translate;
2775
+
2776
+      if (rtl) {
2777
+        t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
2778
+      }
2779
+
2780
+      if (speed === 0) {
2781
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2782
+      } else {
2783
+        // eslint-disable-next-line
2784
+        if (wrapperEl.scrollTo) {
2785
+          var _wrapperEl$scrollTo;
2786
+
2787
+          wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2788
+        } else {
2789
+          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2790
+        }
2791
+      }
2792
+
2793
+      return true;
2794
+    }
2795
+
2796
+    if (speed === 0) {
2797
+      swiper.setTransition(0);
2798
+      swiper.setTranslate(translate);
2799
+      swiper.updateActiveIndex(slideIndex);
2800
+      swiper.updateSlidesClasses();
2801
+      swiper.emit('beforeTransitionStart', speed, internal);
2802
+      swiper.transitionStart(runCallbacks, direction);
2803
+      swiper.transitionEnd(runCallbacks, direction);
2804
+    } else {
2805
+      swiper.setTransition(speed);
2806
+      swiper.setTranslate(translate);
2807
+      swiper.updateActiveIndex(slideIndex);
2808
+      swiper.updateSlidesClasses();
2809
+      swiper.emit('beforeTransitionStart', speed, internal);
2810
+      swiper.transitionStart(runCallbacks, direction);
2811
+
2812
+      if (!swiper.animating) {
2813
+        swiper.animating = true;
2814
+
2815
+        if (!swiper.onSlideToWrapperTransitionEnd) {
2816
+          swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2817
+            if (!swiper || swiper.destroyed) return;
2818
+            if (e.target !== this) return;
2819
+            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2820
+            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2821
+            swiper.onSlideToWrapperTransitionEnd = null;
2822
+            delete swiper.onSlideToWrapperTransitionEnd;
2823
+            swiper.transitionEnd(runCallbacks, direction);
2824
+          };
2825
+        }
2826
+
2827
+        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2828
+        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2829
+      }
2830
+    }
2831
+
2832
+    return true;
2833
+  }
2834
+
2835
+  function slideToLoop(index, speed, runCallbacks, internal) {
2836
+    if (index === void 0) {
2837
+      index = 0;
2838
+    }
2839
+
2840
+    if (speed === void 0) {
2841
+      speed = this.params.speed;
2842
+    }
2843
+
2844
+    if (runCallbacks === void 0) {
2845
+      runCallbacks = true;
2846
+    }
2847
+
2848
+    var swiper = this;
2849
+    var newIndex = index;
2850
+
2851
+    if (swiper.params.loop) {
2852
+      newIndex += swiper.loopedSlides;
2853
+    }
2854
+
2855
+    return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2856
+  }
2857
+
2858
+  /* eslint no-unused-vars: "off" */
2859
+  function slideNext(speed, runCallbacks, internal) {
2860
+    if (speed === void 0) {
2861
+      speed = this.params.speed;
2862
+    }
2863
+
2864
+    if (runCallbacks === void 0) {
2865
+      runCallbacks = true;
2866
+    }
2867
+
2868
+    var swiper = this;
2869
+    var params = swiper.params,
2870
+        animating = swiper.animating;
2871
+    var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
2872
+
2873
+    if (params.loop) {
2874
+      if (animating && params.loopPreventsSlide) return false;
2875
+      swiper.loopFix(); // eslint-disable-next-line
2876
+
2877
+      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2878
+    }
2879
+
2880
+    return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2881
+  }
2882
+
2883
+  /* eslint no-unused-vars: "off" */
2884
+  function slidePrev(speed, runCallbacks, internal) {
2885
+    if (speed === void 0) {
2886
+      speed = this.params.speed;
2887
+    }
2888
+
2889
+    if (runCallbacks === void 0) {
2890
+      runCallbacks = true;
2891
+    }
2892
+
2893
+    var swiper = this;
2894
+    var params = swiper.params,
2895
+        animating = swiper.animating,
2896
+        snapGrid = swiper.snapGrid,
2897
+        slidesGrid = swiper.slidesGrid,
2898
+        rtlTranslate = swiper.rtlTranslate;
2899
+
2900
+    if (params.loop) {
2901
+      if (animating && params.loopPreventsSlide) return false;
2902
+      swiper.loopFix(); // eslint-disable-next-line
2903
+
2904
+      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2905
+    }
2906
+
2907
+    var translate = rtlTranslate ? swiper.translate : -swiper.translate;
2908
+
2909
+    function normalize(val) {
2910
+      if (val < 0) return -Math.floor(Math.abs(val));
2911
+      return Math.floor(val);
2912
+    }
2913
+
2914
+    var normalizedTranslate = normalize(translate);
2915
+    var normalizedSnapGrid = snapGrid.map(function (val) {
2916
+      return normalize(val);
2917
+    });
2918
+    var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2919
+    var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2920
+
2921
+    if (typeof prevSnap === 'undefined' && params.cssMode) {
2922
+      snapGrid.forEach(function (snap) {
2923
+        if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
2924
+      });
2925
+    }
2926
+
2927
+    var prevIndex;
2928
+
2929
+    if (typeof prevSnap !== 'undefined') {
2930
+      prevIndex = slidesGrid.indexOf(prevSnap);
2931
+      if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
2932
+    }
2933
+
2934
+    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2935
+  }
2936
+
2937
+  /* eslint no-unused-vars: "off" */
2938
+  function slideReset(speed, runCallbacks, internal) {
2939
+    if (speed === void 0) {
2940
+      speed = this.params.speed;
2941
+    }
2942
+
2943
+    if (runCallbacks === void 0) {
2944
+      runCallbacks = true;
2945
+    }
2946
+
2947
+    var swiper = this;
2948
+    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2949
+  }
2950
+
2951
+  /* eslint no-unused-vars: "off" */
2952
+  function slideToClosest(speed, runCallbacks, internal, threshold) {
2953
+    if (speed === void 0) {
2954
+      speed = this.params.speed;
2955
+    }
2956
+
2957
+    if (runCallbacks === void 0) {
2958
+      runCallbacks = true;
2959
+    }
2960
+
2961
+    if (threshold === void 0) {
2962
+      threshold = 0.5;
2963
+    }
2964
+
2965
+    var swiper = this;
2966
+    var index = swiper.activeIndex;
2967
+    var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
2968
+    var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
2969
+    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2970
+
2971
+    if (translate >= swiper.snapGrid[snapIndex]) {
2972
+      // The current translate is on or after the current snap index, so the choice
2973
+      // is between the current index and the one after it.
2974
+      var currentSnap = swiper.snapGrid[snapIndex];
2975
+      var nextSnap = swiper.snapGrid[snapIndex + 1];
2976
+
2977
+      if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
2978
+        index += swiper.params.slidesPerGroup;
2979
+      }
2980
+    } else {
2981
+      // The current translate is before the current snap index, so the choice
2982
+      // is between the current index and the one before it.
2983
+      var prevSnap = swiper.snapGrid[snapIndex - 1];
2984
+      var _currentSnap = swiper.snapGrid[snapIndex];
2985
+
2986
+      if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
2987
+        index -= swiper.params.slidesPerGroup;
2988
+      }
2989
+    }
2990
+
2991
+    index = Math.max(index, 0);
2992
+    index = Math.min(index, swiper.slidesGrid.length - 1);
2993
+    return swiper.slideTo(index, speed, runCallbacks, internal);
2994
+  }
2995
+
2996
+  function slideToClickedSlide() {
2997
+    var swiper = this;
2998
+    var params = swiper.params,
2999
+        $wrapperEl = swiper.$wrapperEl;
3000
+    var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
3001
+    var slideToIndex = swiper.clickedIndex;
3002
+    var realIndex;
3003
+
3004
+    if (params.loop) {
3005
+      if (swiper.animating) return;
3006
+      realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
3007
+
3008
+      if (params.centeredSlides) {
3009
+        if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
3010
+          swiper.loopFix();
3011
+          slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3012
+          nextTick(function () {
3013
+            swiper.slideTo(slideToIndex);
3014
+          });
3015
+        } else {
3016
+          swiper.slideTo(slideToIndex);
3017
+        }
3018
+      } else if (slideToIndex > swiper.slides.length - slidesPerView) {
3019
+        swiper.loopFix();
3020
+        slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3021
+        nextTick(function () {
3022
+          swiper.slideTo(slideToIndex);
3023
+        });
3024
+      } else {
3025
+        swiper.slideTo(slideToIndex);
3026
+      }
3027
+    } else {
3028
+      swiper.slideTo(slideToIndex);
3029
+    }
3030
+  }
3031
+
3032
+  var slide = {
3033
+    slideTo: slideTo,
3034
+    slideToLoop: slideToLoop,
3035
+    slideNext: slideNext,
3036
+    slidePrev: slidePrev,
3037
+    slideReset: slideReset,
3038
+    slideToClosest: slideToClosest,
3039
+    slideToClickedSlide: slideToClickedSlide
3040
+  };
3041
+
3042
+  function loopCreate() {
3043
+    var swiper = this;
3044
+    var document = getDocument();
3045
+    var params = swiper.params,
3046
+        $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
3047
+
3048
+    $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
3049
+    var slides = $wrapperEl.children("." + params.slideClass);
3050
+
3051
+    if (params.loopFillGroupWithBlank) {
3052
+      var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
3053
+
3054
+      if (blankSlidesNum !== params.slidesPerGroup) {
3055
+        for (var i = 0; i < blankSlidesNum; i += 1) {
3056
+          var blankNode = $(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
3057
+          $wrapperEl.append(blankNode);
3058
+        }
3059
+
3060
+        slides = $wrapperEl.children("." + params.slideClass);
3061
+      }
3062
+    }
3063
+
3064
+    if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
3065
+    swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
3066
+    swiper.loopedSlides += params.loopAdditionalSlides;
3067
+
3068
+    if (swiper.loopedSlides > slides.length) {
3069
+      swiper.loopedSlides = slides.length;
3070
+    }
3071
+
3072
+    var prependSlides = [];
3073
+    var appendSlides = [];
3074
+    slides.each(function (el, index) {
3075
+      var slide = $(el);
3076
+
3077
+      if (index < swiper.loopedSlides) {
3078
+        appendSlides.push(el);
3079
+      }
3080
+
3081
+      if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
3082
+        prependSlides.push(el);
3083
+      }
3084
+
3085
+      slide.attr('data-swiper-slide-index', index);
3086
+    });
3087
+
3088
+    for (var _i = 0; _i < appendSlides.length; _i += 1) {
3089
+      $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
3090
+    }
3091
+
3092
+    for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
3093
+      $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
3094
+    }
3095
+  }
3096
+
3097
+  function loopFix() {
3098
+    var swiper = this;
3099
+    swiper.emit('beforeLoopFix');
3100
+    var activeIndex = swiper.activeIndex,
3101
+        slides = swiper.slides,
3102
+        loopedSlides = swiper.loopedSlides,
3103
+        allowSlidePrev = swiper.allowSlidePrev,
3104
+        allowSlideNext = swiper.allowSlideNext,
3105
+        snapGrid = swiper.snapGrid,
3106
+        rtl = swiper.rtlTranslate;
3107
+    var newIndex;
3108
+    swiper.allowSlidePrev = true;
3109
+    swiper.allowSlideNext = true;
3110
+    var snapTranslate = -snapGrid[activeIndex];
3111
+    var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
3112
+
3113
+    if (activeIndex < loopedSlides) {
3114
+      newIndex = slides.length - loopedSlides * 3 + activeIndex;
3115
+      newIndex += loopedSlides;
3116
+      var slideChanged = swiper.slideTo(newIndex, 0, false, true);
3117
+
3118
+      if (slideChanged && diff !== 0) {
3119
+        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3120
+      }
3121
+    } else if (activeIndex >= slides.length - loopedSlides) {
3122
+      // Fix For Positive Oversliding
3123
+      newIndex = -slides.length + activeIndex + loopedSlides;
3124
+      newIndex += loopedSlides;
3125
+
3126
+      var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
3127
+
3128
+      if (_slideChanged && diff !== 0) {
3129
+        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3130
+      }
3131
+    }
3132
+
3133
+    swiper.allowSlidePrev = allowSlidePrev;
3134
+    swiper.allowSlideNext = allowSlideNext;
3135
+    swiper.emit('loopFix');
3136
+  }
3137
+
3138
+  function loopDestroy() {
3139
+    var swiper = this;
3140
+    var $wrapperEl = swiper.$wrapperEl,
3141
+        params = swiper.params,
3142
+        slides = swiper.slides;
3143
+    $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
3144
+    slides.removeAttr('data-swiper-slide-index');
3145
+  }
3146
+
3147
+  var loop = {
3148
+    loopCreate: loopCreate,
3149
+    loopFix: loopFix,
3150
+    loopDestroy: loopDestroy
3151
+  };
3152
+
3153
+  function setGrabCursor(moving) {
3154
+    var swiper = this;
3155
+    if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
3156
+    var el = swiper.el;
3157
+    el.style.cursor = 'move';
3158
+    el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
3159
+    el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
3160
+    el.style.cursor = moving ? 'grabbing' : 'grab';
3161
+  }
3162
+
3163
+  function unsetGrabCursor() {
3164
+    var swiper = this;
3165
+
3166
+    if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
3167
+      return;
3168
+    }
3169
+
3170
+    swiper.el.style.cursor = '';
3171
+  }
3172
+
3173
+  var grabCursor = {
3174
+    setGrabCursor: setGrabCursor,
3175
+    unsetGrabCursor: unsetGrabCursor
3176
+  };
3177
+
3178
+  function appendSlide(slides) {
3179
+    var swiper = this;
3180
+    var $wrapperEl = swiper.$wrapperEl,
3181
+        params = swiper.params;
3182
+
3183
+    if (params.loop) {
3184
+      swiper.loopDestroy();
3185
+    }
3186
+
3187
+    if (typeof slides === 'object' && 'length' in slides) {
3188
+      for (var i = 0; i < slides.length; i += 1) {
3189
+        if (slides[i]) $wrapperEl.append(slides[i]);
3190
+      }
3191
+    } else {
3192
+      $wrapperEl.append(slides);
3193
+    }
3194
+
3195
+    if (params.loop) {
3196
+      swiper.loopCreate();
3197
+    }
3198
+
3199
+    if (!(params.observer && swiper.support.observer)) {
3200
+      swiper.update();
3201
+    }
3202
+  }
3203
+
3204
+  function prependSlide(slides) {
3205
+    var swiper = this;
3206
+    var params = swiper.params,
3207
+        $wrapperEl = swiper.$wrapperEl,
3208
+        activeIndex = swiper.activeIndex;
3209
+
3210
+    if (params.loop) {
3211
+      swiper.loopDestroy();
3212
+    }
3213
+
3214
+    var newActiveIndex = activeIndex + 1;
3215
+
3216
+    if (typeof slides === 'object' && 'length' in slides) {
3217
+      for (var i = 0; i < slides.length; i += 1) {
3218
+        if (slides[i]) $wrapperEl.prepend(slides[i]);
3219
+      }
3220
+
3221
+      newActiveIndex = activeIndex + slides.length;
3222
+    } else {
3223
+      $wrapperEl.prepend(slides);
3224
+    }
3225
+
3226
+    if (params.loop) {
3227
+      swiper.loopCreate();
3228
+    }
3229
+
3230
+    if (!(params.observer && swiper.support.observer)) {
3231
+      swiper.update();
3232
+    }
3233
+
3234
+    swiper.slideTo(newActiveIndex, 0, false);
3235
+  }
3236
+
3237
+  function addSlide(index, slides) {
3238
+    var swiper = this;
3239
+    var $wrapperEl = swiper.$wrapperEl,
3240
+        params = swiper.params,
3241
+        activeIndex = swiper.activeIndex;
3242
+    var activeIndexBuffer = activeIndex;
3243
+
3244
+    if (params.loop) {
3245
+      activeIndexBuffer -= swiper.loopedSlides;
3246
+      swiper.loopDestroy();
3247
+      swiper.slides = $wrapperEl.children("." + params.slideClass);
3248
+    }
3249
+
3250
+    var baseLength = swiper.slides.length;
3251
+
3252
+    if (index <= 0) {
3253
+      swiper.prependSlide(slides);
3254
+      return;
3255
+    }
3256
+
3257
+    if (index >= baseLength) {
3258
+      swiper.appendSlide(slides);
3259
+      return;
3260
+    }
3261
+
3262
+    var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
3263
+    var slidesBuffer = [];
3264
+
3265
+    for (var i = baseLength - 1; i >= index; i -= 1) {
3266
+      var currentSlide = swiper.slides.eq(i);
3267
+      currentSlide.remove();
3268
+      slidesBuffer.unshift(currentSlide);
3269
+    }
3270
+
3271
+    if (typeof slides === 'object' && 'length' in slides) {
3272
+      for (var _i = 0; _i < slides.length; _i += 1) {
3273
+        if (slides[_i]) $wrapperEl.append(slides[_i]);
3274
+      }
3275
+
3276
+      newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
3277
+    } else {
3278
+      $wrapperEl.append(slides);
3279
+    }
3280
+
3281
+    for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
3282
+      $wrapperEl.append(slidesBuffer[_i2]);
3283
+    }
3284
+
3285
+    if (params.loop) {
3286
+      swiper.loopCreate();
3287
+    }
3288
+
3289
+    if (!(params.observer && swiper.support.observer)) {
3290
+      swiper.update();
3291
+    }
3292
+
3293
+    if (params.loop) {
3294
+      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3295
+    } else {
3296
+      swiper.slideTo(newActiveIndex, 0, false);
3297
+    }
3298
+  }
3299
+
3300
+  function removeSlide(slidesIndexes) {
3301
+    var swiper = this;
3302
+    var params = swiper.params,
3303
+        $wrapperEl = swiper.$wrapperEl,
3304
+        activeIndex = swiper.activeIndex;
3305
+    var activeIndexBuffer = activeIndex;
3306
+
3307
+    if (params.loop) {
3308
+      activeIndexBuffer -= swiper.loopedSlides;
3309
+      swiper.loopDestroy();
3310
+      swiper.slides = $wrapperEl.children("." + params.slideClass);
3311
+    }
3312
+
3313
+    var newActiveIndex = activeIndexBuffer;
3314
+    var indexToRemove;
3315
+
3316
+    if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
3317
+      for (var i = 0; i < slidesIndexes.length; i += 1) {
3318
+        indexToRemove = slidesIndexes[i];
3319
+        if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3320
+        if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3321
+      }
3322
+
3323
+      newActiveIndex = Math.max(newActiveIndex, 0);
3324
+    } else {
3325
+      indexToRemove = slidesIndexes;
3326
+      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3327
+      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3328
+      newActiveIndex = Math.max(newActiveIndex, 0);
3329
+    }
3330
+
3331
+    if (params.loop) {
3332
+      swiper.loopCreate();
3333
+    }
3334
+
3335
+    if (!(params.observer && swiper.support.observer)) {
3336
+      swiper.update();
3337
+    }
3338
+
3339
+    if (params.loop) {
3340
+      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3341
+    } else {
3342
+      swiper.slideTo(newActiveIndex, 0, false);
3343
+    }
3344
+  }
3345
+
3346
+  function removeAllSlides() {
3347
+    var swiper = this;
3348
+    var slidesIndexes = [];
3349
+
3350
+    for (var i = 0; i < swiper.slides.length; i += 1) {
3351
+      slidesIndexes.push(i);
3352
+    }
3353
+
3354
+    swiper.removeSlide(slidesIndexes);
3355
+  }
3356
+
3357
+  var manipulation = {
3358
+    appendSlide: appendSlide,
3359
+    prependSlide: prependSlide,
3360
+    addSlide: addSlide,
3361
+    removeSlide: removeSlide,
3362
+    removeAllSlides: removeAllSlides
3363
+  };
3364
+
3365
+  function onTouchStart(event) {
3366
+    var swiper = this;
3367
+    var document = getDocument();
3368
+    var window = getWindow();
3369
+    var data = swiper.touchEventsData;
3370
+    var params = swiper.params,
3371
+        touches = swiper.touches;
3372
+
3373
+    if (swiper.animating && params.preventInteractionOnTransition) {
3374
+      return;
3375
+    }
3376
+
3377
+    var e = event;
3378
+    if (e.originalEvent) e = e.originalEvent;
3379
+    var $targetEl = $(e.target);
3380
+
3381
+    if (params.touchEventsTarget === 'wrapper') {
3382
+      if (!$targetEl.closest(swiper.wrapperEl).length) return;
3383
+    }
3384
+
3385
+    data.isTouchEvent = e.type === 'touchstart';
3386
+    if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
3387
+    if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
3388
+    if (data.isTouched && data.isMoved) return;
3389
+
3390
+    if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
3391
+      swiper.allowClick = true;
3392
+      return;
3393
+    }
3394
+
3395
+    if (params.swipeHandler) {
3396
+      if (!$targetEl.closest(params.swipeHandler)[0]) return;
3397
+    }
3398
+
3399
+    touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
3400
+    touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
3401
+    var startX = touches.currentX;
3402
+    var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
3403
+
3404
+    var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
3405
+    var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
3406
+
3407
+    if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)) {
3408
+      return;
3409
+    }
3410
+
3411
+    extend$1(data, {
3412
+      isTouched: true,
3413
+      isMoved: false,
3414
+      allowTouchCallbacks: true,
3415
+      isScrolling: undefined,
3416
+      startMoving: undefined
3417
+    });
3418
+    touches.startX = startX;
3419
+    touches.startY = startY;
3420
+    data.touchStartTime = now();
3421
+    swiper.allowClick = true;
3422
+    swiper.updateSize();
3423
+    swiper.swipeDirection = undefined;
3424
+    if (params.threshold > 0) data.allowThresholdMove = false;
3425
+
3426
+    if (e.type !== 'touchstart') {
3427
+      var preventDefault = true;
3428
+      if ($targetEl.is(data.formElements)) preventDefault = false;
3429
+
3430
+      if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
3431
+        document.activeElement.blur();
3432
+      }
3433
+
3434
+      var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
3435
+
3436
+      if (params.touchStartForcePreventDefault || shouldPreventDefault) {
3437
+        e.preventDefault();
3438
+      }
3439
+    }
3440
+
3441
+    swiper.emit('touchStart', e);
3442
+  }
3443
+
3444
+  function onTouchMove(event) {
3445
+    var document = getDocument();
3446
+    var swiper = this;
3447
+    var data = swiper.touchEventsData;
3448
+    var params = swiper.params,
3449
+        touches = swiper.touches,
3450
+        rtl = swiper.rtlTranslate;
3451
+    var e = event;
3452
+    if (e.originalEvent) e = e.originalEvent;
3453
+
3454
+    if (!data.isTouched) {
3455
+      if (data.startMoving && data.isScrolling) {
3456
+        swiper.emit('touchMoveOpposite', e);
3457
+      }
3458
+
3459
+      return;
3460
+    }
3461
+
3462
+    if (data.isTouchEvent && e.type !== 'touchmove') return;
3463
+    var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
3464
+    var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
3465
+    var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
3466
+
3467
+    if (e.preventedByNestedSwiper) {
3468
+      touches.startX = pageX;
3469
+      touches.startY = pageY;
3470
+      return;
3471
+    }
3472
+
3473
+    if (!swiper.allowTouchMove) {
3474
+      // isMoved = true;
3475
+      swiper.allowClick = false;
3476
+
3477
+      if (data.isTouched) {
3478
+        extend$1(touches, {
3479
+          startX: pageX,
3480
+          startY: pageY,
3481
+          currentX: pageX,
3482
+          currentY: pageY
3483
+        });
3484
+        data.touchStartTime = now();
3485
+      }
3486
+
3487
+      return;
3488
+    }
3489
+
3490
+    if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
3491
+      if (swiper.isVertical()) {
3492
+        // Vertical
3493
+        if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
3494
+          data.isTouched = false;
3495
+          data.isMoved = false;
3496
+          return;
3497
+        }
3498
+      } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
3499
+        return;
3500
+      }
3501
+    }
3502
+
3503
+    if (data.isTouchEvent && document.activeElement) {
3504
+      if (e.target === document.activeElement && $(e.target).is(data.formElements)) {
3505
+        data.isMoved = true;
3506
+        swiper.allowClick = false;
3507
+        return;
3508
+      }
3509
+    }
3510
+
3511
+    if (data.allowTouchCallbacks) {
3512
+      swiper.emit('touchMove', e);
3513
+    }
3514
+
3515
+    if (e.targetTouches && e.targetTouches.length > 1) return;
3516
+    touches.currentX = pageX;
3517
+    touches.currentY = pageY;
3518
+    var diffX = touches.currentX - touches.startX;
3519
+    var diffY = touches.currentY - touches.startY;
3520
+    if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
3521
+
3522
+    if (typeof data.isScrolling === 'undefined') {
3523
+      var touchAngle;
3524
+
3525
+      if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
3526
+        data.isScrolling = false;
3527
+      } else {
3528
+        // eslint-disable-next-line
3529
+        if (diffX * diffX + diffY * diffY >= 25) {
3530
+          touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
3531
+          data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
3532
+        }
3533
+      }
3534
+    }
3535
+
3536
+    if (data.isScrolling) {
3537
+      swiper.emit('touchMoveOpposite', e);
3538
+    }
3539
+
3540
+    if (typeof data.startMoving === 'undefined') {
3541
+      if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
3542
+        data.startMoving = true;
3543
+      }
3544
+    }
3545
+
3546
+    if (data.isScrolling) {
3547
+      data.isTouched = false;
3548
+      return;
3549
+    }
3550
+
3551
+    if (!data.startMoving) {
3552
+      return;
3553
+    }
3554
+
3555
+    swiper.allowClick = false;
3556
+
3557
+    if (!params.cssMode && e.cancelable) {
3558
+      e.preventDefault();
3559
+    }
3560
+
3561
+    if (params.touchMoveStopPropagation && !params.nested) {
3562
+      e.stopPropagation();
3563
+    }
3564
+
3565
+    if (!data.isMoved) {
3566
+      if (params.loop) {
3567
+        swiper.loopFix();
3568
+      }
3569
+
3570
+      data.startTranslate = swiper.getTranslate();
3571
+      swiper.setTransition(0);
3572
+
3573
+      if (swiper.animating) {
3574
+        swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
3575
+      }
3576
+
3577
+      data.allowMomentumBounce = false; // Grab Cursor
3578
+
3579
+      if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3580
+        swiper.setGrabCursor(true);
3581
+      }
3582
+
3583
+      swiper.emit('sliderFirstMove', e);
3584
+    }
3585
+
3586
+    swiper.emit('sliderMove', e);
3587
+    data.isMoved = true;
3588
+    var diff = swiper.isHorizontal() ? diffX : diffY;
3589
+    touches.diff = diff;
3590
+    diff *= params.touchRatio;
3591
+    if (rtl) diff = -diff;
3592
+    swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
3593
+    data.currentTranslate = diff + data.startTranslate;
3594
+    var disableParentSwiper = true;
3595
+    var resistanceRatio = params.resistanceRatio;
3596
+
3597
+    if (params.touchReleaseOnEdges) {
3598
+      resistanceRatio = 0;
3599
+    }
3600
+
3601
+    if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
3602
+      disableParentSwiper = false;
3603
+      if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
3604
+    } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
3605
+      disableParentSwiper = false;
3606
+      if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
3607
+    }
3608
+
3609
+    if (disableParentSwiper) {
3610
+      e.preventedByNestedSwiper = true;
3611
+    } // Directions locks
3612
+
3613
+
3614
+    if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
3615
+      data.currentTranslate = data.startTranslate;
3616
+    }
3617
+
3618
+    if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
3619
+      data.currentTranslate = data.startTranslate;
3620
+    } // Threshold
3621
+
3622
+
3623
+    if (params.threshold > 0) {
3624
+      if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
3625
+        if (!data.allowThresholdMove) {
3626
+          data.allowThresholdMove = true;
3627
+          touches.startX = touches.currentX;
3628
+          touches.startY = touches.currentY;
3629
+          data.currentTranslate = data.startTranslate;
3630
+          touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
3631
+          return;
3632
+        }
3633
+      } else {
3634
+        data.currentTranslate = data.startTranslate;
3635
+        return;
3636
+      }
3637
+    }
3638
+
3639
+    if (!params.followFinger || params.cssMode) return; // Update active index in free mode
3640
+
3641
+    if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
3642
+      swiper.updateActiveIndex();
3643
+      swiper.updateSlidesClasses();
3644
+    }
3645
+
3646
+    if (params.freeMode) {
3647
+      // Velocity
3648
+      if (data.velocities.length === 0) {
3649
+        data.velocities.push({
3650
+          position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
3651
+          time: data.touchStartTime
3652
+        });
3653
+      }
3654
+
3655
+      data.velocities.push({
3656
+        position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
3657
+        time: now()
3658
+      });
3659
+    } // Update progress
3660
+
3661
+
3662
+    swiper.updateProgress(data.currentTranslate); // Update translate
3663
+
3664
+    swiper.setTranslate(data.currentTranslate);
3665
+  }
3666
+
3667
+  function onTouchEnd(event) {
3668
+    var swiper = this;
3669
+    var data = swiper.touchEventsData;
3670
+    var params = swiper.params,
3671
+        touches = swiper.touches,
3672
+        rtl = swiper.rtlTranslate,
3673
+        $wrapperEl = swiper.$wrapperEl,
3674
+        slidesGrid = swiper.slidesGrid,
3675
+        snapGrid = swiper.snapGrid;
3676
+    var e = event;
3677
+    if (e.originalEvent) e = e.originalEvent;
3678
+
3679
+    if (data.allowTouchCallbacks) {
3680
+      swiper.emit('touchEnd', e);
3681
+    }
3682
+
3683
+    data.allowTouchCallbacks = false;
3684
+
3685
+    if (!data.isTouched) {
3686
+      if (data.isMoved && params.grabCursor) {
3687
+        swiper.setGrabCursor(false);
3688
+      }
3689
+
3690
+      data.isMoved = false;
3691
+      data.startMoving = false;
3692
+      return;
3693
+    } // Return Grab Cursor
3694
+
3695
+
3696
+    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3697
+      swiper.setGrabCursor(false);
3698
+    } // Time diff
3699
+
3700
+
3701
+    var touchEndTime = now();
3702
+    var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
3703
+
3704
+    if (swiper.allowClick) {
3705
+      swiper.updateClickedSlide(e);
3706
+      swiper.emit('tap click', e);
3707
+
3708
+      if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
3709
+        swiper.emit('doubleTap doubleClick', e);
3710
+      }
3711
+    }
3712
+
3713
+    data.lastClickTime = now();
3714
+    nextTick(function () {
3715
+      if (!swiper.destroyed) swiper.allowClick = true;
3716
+    });
3717
+
3718
+    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3719
+      data.isTouched = false;
3720
+      data.isMoved = false;
3721
+      data.startMoving = false;
3722
+      return;
3723
+    }
3724
+
3725
+    data.isTouched = false;
3726
+    data.isMoved = false;
3727
+    data.startMoving = false;
3728
+    var currentPos;
3729
+
3730
+    if (params.followFinger) {
3731
+      currentPos = rtl ? swiper.translate : -swiper.translate;
3732
+    } else {
3733
+      currentPos = -data.currentTranslate;
3734
+    }
3735
+
3736
+    if (params.cssMode) {
3737
+      return;
3738
+    }
3739
+
3740
+    if (params.freeMode) {
3741
+      if (currentPos < -swiper.minTranslate()) {
3742
+        swiper.slideTo(swiper.activeIndex);
3743
+        return;
3744
+      }
3745
+
3746
+      if (currentPos > -swiper.maxTranslate()) {
3747
+        if (swiper.slides.length < snapGrid.length) {
3748
+          swiper.slideTo(snapGrid.length - 1);
3749
+        } else {
3750
+          swiper.slideTo(swiper.slides.length - 1);
3751
+        }
3752
+
3753
+        return;
3754
+      }
3755
+
3756
+      if (params.freeModeMomentum) {
3757
+        if (data.velocities.length > 1) {
3758
+          var lastMoveEvent = data.velocities.pop();
3759
+          var velocityEvent = data.velocities.pop();
3760
+          var distance = lastMoveEvent.position - velocityEvent.position;
3761
+          var time = lastMoveEvent.time - velocityEvent.time;
3762
+          swiper.velocity = distance / time;
3763
+          swiper.velocity /= 2;
3764
+
3765
+          if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3766
+            swiper.velocity = 0;
3767
+          } // this implies that the user stopped moving a finger then released.
3768
+          // There would be no events with distance zero, so the last event is stale.
3769
+
3770
+
3771
+          if (time > 150 || now() - lastMoveEvent.time > 300) {
3772
+            swiper.velocity = 0;
3773
+          }
3774
+        } else {
3775
+          swiper.velocity = 0;
3776
+        }
3777
+
3778
+        swiper.velocity *= params.freeModeMomentumVelocityRatio;
3779
+        data.velocities.length = 0;
3780
+        var momentumDuration = 1000 * params.freeModeMomentumRatio;
3781
+        var momentumDistance = swiper.velocity * momentumDuration;
3782
+        var newPosition = swiper.translate + momentumDistance;
3783
+        if (rtl) newPosition = -newPosition;
3784
+        var doBounce = false;
3785
+        var afterBouncePosition;
3786
+        var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3787
+        var needsLoopFix;
3788
+
3789
+        if (newPosition < swiper.maxTranslate()) {
3790
+          if (params.freeModeMomentumBounce) {
3791
+            if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3792
+              newPosition = swiper.maxTranslate() - bounceAmount;
3793
+            }
3794
+
3795
+            afterBouncePosition = swiper.maxTranslate();
3796
+            doBounce = true;
3797
+            data.allowMomentumBounce = true;
3798
+          } else {
3799
+            newPosition = swiper.maxTranslate();
3800
+          }
3801
+
3802
+          if (params.loop && params.centeredSlides) needsLoopFix = true;
3803
+        } else if (newPosition > swiper.minTranslate()) {
3804
+          if (params.freeModeMomentumBounce) {
3805
+            if (newPosition - swiper.minTranslate() > bounceAmount) {
3806
+              newPosition = swiper.minTranslate() + bounceAmount;
3807
+            }
3808
+
3809
+            afterBouncePosition = swiper.minTranslate();
3810
+            doBounce = true;
3811
+            data.allowMomentumBounce = true;
3812
+          } else {
3813
+            newPosition = swiper.minTranslate();
3814
+          }
3815
+
3816
+          if (params.loop && params.centeredSlides) needsLoopFix = true;
3817
+        } else if (params.freeModeSticky) {
3818
+          var nextSlide;
3819
+
3820
+          for (var j = 0; j < snapGrid.length; j += 1) {
3821
+            if (snapGrid[j] > -newPosition) {
3822
+              nextSlide = j;
3823
+              break;
3824
+            }
3825
+          }
3826
+
3827
+          if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3828
+            newPosition = snapGrid[nextSlide];
3829
+          } else {
3830
+            newPosition = snapGrid[nextSlide - 1];
3831
+          }
3832
+
3833
+          newPosition = -newPosition;
3834
+        }
3835
+
3836
+        if (needsLoopFix) {
3837
+          swiper.once('transitionEnd', function () {
3838
+            swiper.loopFix();
3839
+          });
3840
+        } // Fix duration
3841
+
3842
+
3843
+        if (swiper.velocity !== 0) {
3844
+          if (rtl) {
3845
+            momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3846
+          } else {
3847
+            momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3848
+          }
3849
+
3850
+          if (params.freeModeSticky) {
3851
+            // If freeModeSticky is active and the user ends a swipe with a slow-velocity
3852
+            // event, then durations can be 20+ seconds to slide one (or zero!) slides.
3853
+            // It's easy to see this when simulating touch with mouse events. To fix this,
3854
+            // limit single-slide swipes to the default slide duration. This also has the
3855
+            // nice side effect of matching slide speed if the user stopped moving before
3856
+            // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
3857
+            // For faster swipes, also apply limits (albeit higher ones).
3858
+            var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
3859
+            var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
3860
+
3861
+            if (moveDistance < currentSlideSize) {
3862
+              momentumDuration = params.speed;
3863
+            } else if (moveDistance < 2 * currentSlideSize) {
3864
+              momentumDuration = params.speed * 1.5;
3865
+            } else {
3866
+              momentumDuration = params.speed * 2.5;
3867
+            }
3868
+          }
3869
+        } else if (params.freeModeSticky) {
3870
+          swiper.slideToClosest();
3871
+          return;
3872
+        }
3873
+
3874
+        if (params.freeModeMomentumBounce && doBounce) {
3875
+          swiper.updateProgress(afterBouncePosition);
3876
+          swiper.setTransition(momentumDuration);
3877
+          swiper.setTranslate(newPosition);
3878
+          swiper.transitionStart(true, swiper.swipeDirection);
3879
+          swiper.animating = true;
3880
+          $wrapperEl.transitionEnd(function () {
3881
+            if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
3882
+            swiper.emit('momentumBounce');
3883
+            swiper.setTransition(params.speed);
3884
+            setTimeout(function () {
3885
+              swiper.setTranslate(afterBouncePosition);
3886
+              $wrapperEl.transitionEnd(function () {
3887
+                if (!swiper || swiper.destroyed) return;
3888
+                swiper.transitionEnd();
3889
+              });
3890
+            }, 0);
3891
+          });
3892
+        } else if (swiper.velocity) {
3893
+          swiper.updateProgress(newPosition);
3894
+          swiper.setTransition(momentumDuration);
3895
+          swiper.setTranslate(newPosition);
3896
+          swiper.transitionStart(true, swiper.swipeDirection);
3897
+
3898
+          if (!swiper.animating) {
3899
+            swiper.animating = true;
3900
+            $wrapperEl.transitionEnd(function () {
3901
+              if (!swiper || swiper.destroyed) return;
3902
+              swiper.transitionEnd();
3903
+            });
3904
+          }
3905
+        } else {
3906
+          swiper.updateProgress(newPosition);
3907
+        }
3908
+
3909
+        swiper.updateActiveIndex();
3910
+        swiper.updateSlidesClasses();
3911
+      } else if (params.freeModeSticky) {
3912
+        swiper.slideToClosest();
3913
+        return;
3914
+      }
3915
+
3916
+      if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
3917
+        swiper.updateProgress();
3918
+        swiper.updateActiveIndex();
3919
+        swiper.updateSlidesClasses();
3920
+      }
3921
+
3922
+      return;
3923
+    } // Find current slide
3924
+
3925
+
3926
+    var stopIndex = 0;
3927
+    var groupSize = swiper.slidesSizesGrid[0];
3928
+
3929
+    for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
3930
+      var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3931
+
3932
+      if (typeof slidesGrid[i + _increment] !== 'undefined') {
3933
+        if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
3934
+          stopIndex = i;
3935
+          groupSize = slidesGrid[i + _increment] - slidesGrid[i];
3936
+        }
3937
+      } else if (currentPos >= slidesGrid[i]) {
3938
+        stopIndex = i;
3939
+        groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3940
+      }
3941
+    } // Find current slide size
3942
+
3943
+
3944
+    var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3945
+    var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3946
+
3947
+    if (timeDiff > params.longSwipesMs) {
3948
+      // Long touches
3949
+      if (!params.longSwipes) {
3950
+        swiper.slideTo(swiper.activeIndex);
3951
+        return;
3952
+      }
3953
+
3954
+      if (swiper.swipeDirection === 'next') {
3955
+        if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
3956
+      }
3957
+
3958
+      if (swiper.swipeDirection === 'prev') {
3959
+        if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
3960
+      }
3961
+    } else {
3962
+      // Short swipes
3963
+      if (!params.shortSwipes) {
3964
+        swiper.slideTo(swiper.activeIndex);
3965
+        return;
3966
+      }
3967
+
3968
+      var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
3969
+
3970
+      if (!isNavButtonTarget) {
3971
+        if (swiper.swipeDirection === 'next') {
3972
+          swiper.slideTo(stopIndex + increment);
3973
+        }
3974
+
3975
+        if (swiper.swipeDirection === 'prev') {
3976
+          swiper.slideTo(stopIndex);
3977
+        }
3978
+      } else if (e.target === swiper.navigation.nextEl) {
3979
+        swiper.slideTo(stopIndex + increment);
3980
+      } else {
3981
+        swiper.slideTo(stopIndex);
3982
+      }
3983
+    }
3984
+  }
3985
+
3986
+  function onResize() {
3987
+    var swiper = this;
3988
+    var params = swiper.params,
3989
+        el = swiper.el;
3990
+    if (el && el.offsetWidth === 0) return; // Breakpoints
3991
+
3992
+    if (params.breakpoints) {
3993
+      swiper.setBreakpoint();
3994
+    } // Save locks
3995
+
3996
+
3997
+    var allowSlideNext = swiper.allowSlideNext,
3998
+        allowSlidePrev = swiper.allowSlidePrev,
3999
+        snapGrid = swiper.snapGrid; // Disable locks on resize
4000
+
4001
+    swiper.allowSlideNext = true;
4002
+    swiper.allowSlidePrev = true;
4003
+    swiper.updateSize();
4004
+    swiper.updateSlides();
4005
+    swiper.updateSlidesClasses();
4006
+
4007
+    if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
4008
+      swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4009
+    } else {
4010
+      swiper.slideTo(swiper.activeIndex, 0, false, true);
4011
+    }
4012
+
4013
+    if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
4014
+      swiper.autoplay.run();
4015
+    } // Return locks after resize
4016
+
4017
+
4018
+    swiper.allowSlidePrev = allowSlidePrev;
4019
+    swiper.allowSlideNext = allowSlideNext;
4020
+
4021
+    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
4022
+      swiper.checkOverflow();
4023
+    }
4024
+  }
4025
+
4026
+  function onClick(e) {
4027
+    var swiper = this;
4028
+
4029
+    if (!swiper.allowClick) {
4030
+      if (swiper.params.preventClicks) e.preventDefault();
4031
+
4032
+      if (swiper.params.preventClicksPropagation && swiper.animating) {
4033
+        e.stopPropagation();
4034
+        e.stopImmediatePropagation();
4035
+      }
4036
+    }
4037
+  }
4038
+
4039
+  function onScroll() {
4040
+    var swiper = this;
4041
+    var wrapperEl = swiper.wrapperEl,
4042
+        rtlTranslate = swiper.rtlTranslate;
4043
+    swiper.previousTranslate = swiper.translate;
4044
+
4045
+    if (swiper.isHorizontal()) {
4046
+      if (rtlTranslate) {
4047
+        swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
4048
+      } else {
4049
+        swiper.translate = -wrapperEl.scrollLeft;
4050
+      }
4051
+    } else {
4052
+      swiper.translate = -wrapperEl.scrollTop;
4053
+    } // eslint-disable-next-line
4054
+
4055
+
4056
+    if (swiper.translate === -0) swiper.translate = 0;
4057
+    swiper.updateActiveIndex();
4058
+    swiper.updateSlidesClasses();
4059
+    var newProgress;
4060
+    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
4061
+
4062
+    if (translatesDiff === 0) {
4063
+      newProgress = 0;
4064
+    } else {
4065
+      newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
4066
+    }
4067
+
4068
+    if (newProgress !== swiper.progress) {
4069
+      swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
4070
+    }
4071
+
4072
+    swiper.emit('setTranslate', swiper.translate, false);
4073
+  }
4074
+
4075
+  var dummyEventAttached = false;
4076
+
4077
+  function dummyEventListener() {}
4078
+
4079
+  function attachEvents() {
4080
+    var swiper = this;
4081
+    var document = getDocument();
4082
+    var params = swiper.params,
4083
+        touchEvents = swiper.touchEvents,
4084
+        el = swiper.el,
4085
+        wrapperEl = swiper.wrapperEl,
4086
+        device = swiper.device,
4087
+        support = swiper.support;
4088
+    swiper.onTouchStart = onTouchStart.bind(swiper);
4089
+    swiper.onTouchMove = onTouchMove.bind(swiper);
4090
+    swiper.onTouchEnd = onTouchEnd.bind(swiper);
4091
+
4092
+    if (params.cssMode) {
4093
+      swiper.onScroll = onScroll.bind(swiper);
4094
+    }
4095
+
4096
+    swiper.onClick = onClick.bind(swiper);
4097
+    var capture = !!params.nested; // Touch Events
4098
+
4099
+    if (!support.touch && support.pointerEvents) {
4100
+      el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
4101
+      document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
4102
+      document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
4103
+    } else {
4104
+      if (support.touch) {
4105
+        var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
4106
+          passive: true,
4107
+          capture: false
4108
+        } : false;
4109
+        el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4110
+        el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
4111
+          passive: false,
4112
+          capture: capture
4113
+        } : capture);
4114
+        el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4115
+
4116
+        if (touchEvents.cancel) {
4117
+          el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4118
+        }
4119
+
4120
+        if (!dummyEventAttached) {
4121
+          document.addEventListener('touchstart', dummyEventListener);
4122
+          dummyEventAttached = true;
4123
+        }
4124
+      }
4125
+
4126
+      if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4127
+        el.addEventListener('mousedown', swiper.onTouchStart, false);
4128
+        document.addEventListener('mousemove', swiper.onTouchMove, capture);
4129
+        document.addEventListener('mouseup', swiper.onTouchEnd, false);
4130
+      }
4131
+    } // Prevent Links Clicks
4132
+
4133
+
4134
+    if (params.preventClicks || params.preventClicksPropagation) {
4135
+      el.addEventListener('click', swiper.onClick, true);
4136
+    }
4137
+
4138
+    if (params.cssMode) {
4139
+      wrapperEl.addEventListener('scroll', swiper.onScroll);
4140
+    } // Resize handler
4141
+
4142
+
4143
+    if (params.updateOnWindowResize) {
4144
+      swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
4145
+    } else {
4146
+      swiper.on('observerUpdate', onResize, true);
4147
+    }
4148
+  }
4149
+
4150
+  function detachEvents() {
4151
+    var swiper = this;
4152
+    var document = getDocument();
4153
+    var params = swiper.params,
4154
+        touchEvents = swiper.touchEvents,
4155
+        el = swiper.el,
4156
+        wrapperEl = swiper.wrapperEl,
4157
+        device = swiper.device,
4158
+        support = swiper.support;
4159
+    var capture = !!params.nested; // Touch Events
4160
+
4161
+    if (!support.touch && support.pointerEvents) {
4162
+      el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
4163
+      document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4164
+      document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
4165
+    } else {
4166
+      if (support.touch) {
4167
+        var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
4168
+          passive: true,
4169
+          capture: false
4170
+        } : false;
4171
+        el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4172
+        el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4173
+        el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4174
+
4175
+        if (touchEvents.cancel) {
4176
+          el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4177
+        }
4178
+      }
4179
+
4180
+      if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4181
+        el.removeEventListener('mousedown', swiper.onTouchStart, false);
4182
+        document.removeEventListener('mousemove', swiper.onTouchMove, capture);
4183
+        document.removeEventListener('mouseup', swiper.onTouchEnd, false);
4184
+      }
4185
+    } // Prevent Links Clicks
4186
+
4187
+
4188
+    if (params.preventClicks || params.preventClicksPropagation) {
4189
+      el.removeEventListener('click', swiper.onClick, true);
4190
+    }
4191
+
4192
+    if (params.cssMode) {
4193
+      wrapperEl.removeEventListener('scroll', swiper.onScroll);
4194
+    } // Resize handler
4195
+
4196
+
4197
+    swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
4198
+  }
4199
+
4200
+  var events = {
4201
+    attachEvents: attachEvents,
4202
+    detachEvents: detachEvents
4203
+  };
4204
+
4205
+  function setBreakpoint() {
4206
+    var swiper = this;
4207
+    var activeIndex = swiper.activeIndex,
4208
+        initialized = swiper.initialized,
4209
+        _swiper$loopedSlides = swiper.loopedSlides,
4210
+        loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
4211
+        params = swiper.params,
4212
+        $el = swiper.$el;
4213
+    var breakpoints = params.breakpoints;
4214
+    if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
4215
+
4216
+    var breakpoint = swiper.getBreakpoint(breakpoints);
4217
+
4218
+    if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
4219
+      var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
4220
+
4221
+      if (breakpointOnlyParams) {
4222
+        ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
4223
+          var paramValue = breakpointOnlyParams[param];
4224
+          if (typeof paramValue === 'undefined') return;
4225
+
4226
+          if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
4227
+            breakpointOnlyParams[param] = 'auto';
4228
+          } else if (param === 'slidesPerView') {
4229
+            breakpointOnlyParams[param] = parseFloat(paramValue);
4230
+          } else {
4231
+            breakpointOnlyParams[param] = parseInt(paramValue, 10);
4232
+          }
4233
+        });
4234
+      }
4235
+
4236
+      var breakpointParams = breakpointOnlyParams || swiper.originalParams;
4237
+      var wasMultiRow = params.slidesPerColumn > 1;
4238
+      var isMultiRow = breakpointParams.slidesPerColumn > 1;
4239
+
4240
+      if (wasMultiRow && !isMultiRow) {
4241
+        $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
4242
+        swiper.emitContainerClasses();
4243
+      } else if (!wasMultiRow && isMultiRow) {
4244
+        $el.addClass(params.containerModifierClass + "multirow");
4245
+
4246
+        if (breakpointParams.slidesPerColumnFill === 'column') {
4247
+          $el.addClass(params.containerModifierClass + "multirow-column");
4248
+        }
4249
+
4250
+        swiper.emitContainerClasses();
4251
+      }
4252
+
4253
+      var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
4254
+      var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
4255
+
4256
+      if (directionChanged && initialized) {
4257
+        swiper.changeDirection();
4258
+      }
4259
+
4260
+      extend$1(swiper.params, breakpointParams);
4261
+      extend$1(swiper, {
4262
+        allowTouchMove: swiper.params.allowTouchMove,
4263
+        allowSlideNext: swiper.params.allowSlideNext,
4264
+        allowSlidePrev: swiper.params.allowSlidePrev
4265
+      });
4266
+      swiper.currentBreakpoint = breakpoint;
4267
+      swiper.emit('_beforeBreakpoint', breakpointParams);
4268
+
4269
+      if (needsReLoop && initialized) {
4270
+        swiper.loopDestroy();
4271
+        swiper.loopCreate();
4272
+        swiper.updateSlides();
4273
+        swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
4274
+      }
4275
+
4276
+      swiper.emit('breakpoint', breakpointParams);
4277
+    }
4278
+  }
4279
+
4280
+  function getBreakpoints(breakpoints) {
4281
+    var window = getWindow(); // Get breakpoint for window width
4282
+
4283
+    if (!breakpoints) return undefined;
4284
+    var breakpoint = false;
4285
+    var points = Object.keys(breakpoints).map(function (point) {
4286
+      if (typeof point === 'string' && point.indexOf('@') === 0) {
4287
+        var minRatio = parseFloat(point.substr(1));
4288
+        var value = window.innerHeight * minRatio;
4289
+        return {
4290
+          value: value,
4291
+          point: point
4292
+        };
4293
+      }
4294
+
4295
+      return {
4296
+        value: point,
4297
+        point: point
4298
+      };
4299
+    });
4300
+    points.sort(function (a, b) {
4301
+      return parseInt(a.value, 10) - parseInt(b.value, 10);
4302
+    });
4303
+
4304
+    for (var i = 0; i < points.length; i += 1) {
4305
+      var _points$i = points[i],
4306
+          point = _points$i.point,
4307
+          value = _points$i.value;
4308
+
4309
+      if (value <= window.innerWidth) {
4310
+        breakpoint = point;
4311
+      }
4312
+    }
4313
+
4314
+    return breakpoint || 'max';
4315
+  }
4316
+
4317
+  var breakpoints = {
4318
+    setBreakpoint: setBreakpoint,
4319
+    getBreakpoint: getBreakpoints
4320
+  };
4321
+
4322
+  function addClasses() {
4323
+    var swiper = this;
4324
+    var classNames = swiper.classNames,
4325
+        params = swiper.params,
4326
+        rtl = swiper.rtl,
4327
+        $el = swiper.$el,
4328
+        device = swiper.device;
4329
+    var suffixes = [];
4330
+    suffixes.push('initialized');
4331
+    suffixes.push(params.direction);
4332
+
4333
+    if (params.freeMode) {
4334
+      suffixes.push('free-mode');
4335
+    }
4336
+
4337
+    if (params.autoHeight) {
4338
+      suffixes.push('autoheight');
4339
+    }
4340
+
4341
+    if (rtl) {
4342
+      suffixes.push('rtl');
4343
+    }
4344
+
4345
+    if (params.slidesPerColumn > 1) {
4346
+      suffixes.push('multirow');
4347
+
4348
+      if (params.slidesPerColumnFill === 'column') {
4349
+        suffixes.push('multirow-column');
4350
+      }
4351
+    }
4352
+
4353
+    if (device.android) {
4354
+      suffixes.push('android');
4355
+    }
4356
+
4357
+    if (device.ios) {
4358
+      suffixes.push('ios');
4359
+    }
4360
+
4361
+    if (params.cssMode) {
4362
+      suffixes.push('css-mode');
4363
+    }
4364
+
4365
+    suffixes.forEach(function (suffix) {
4366
+      classNames.push(params.containerModifierClass + suffix);
4367
+    });
4368
+    $el.addClass(classNames.join(' '));
4369
+    swiper.emitContainerClasses();
4370
+  }
4371
+
4372
+  function removeClasses() {
4373
+    var swiper = this;
4374
+    var $el = swiper.$el,
4375
+        classNames = swiper.classNames;
4376
+    $el.removeClass(classNames.join(' '));
4377
+    swiper.emitContainerClasses();
4378
+  }
4379
+
4380
+  var classes = {
4381
+    addClasses: addClasses,
4382
+    removeClasses: removeClasses
4383
+  };
4384
+
4385
+  function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
4386
+    var window = getWindow();
4387
+    var image;
4388
+
4389
+    function onReady() {
4390
+      if (callback) callback();
4391
+    }
4392
+
4393
+    var isPicture = $(imageEl).parent('picture')[0];
4394
+
4395
+    if (!isPicture && (!imageEl.complete || !checkForComplete)) {
4396
+      if (src) {
4397
+        image = new window.Image();
4398
+        image.onload = onReady;
4399
+        image.onerror = onReady;
4400
+
4401
+        if (sizes) {
4402
+          image.sizes = sizes;
4403
+        }
4404
+
4405
+        if (srcset) {
4406
+          image.srcset = srcset;
4407
+        }
4408
+
4409
+        if (src) {
4410
+          image.src = src;
4411
+        }
4412
+      } else {
4413
+        onReady();
4414
+      }
4415
+    } else {
4416
+      // image already loaded...
4417
+      onReady();
4418
+    }
4419
+  }
4420
+
4421
+  function preloadImages() {
4422
+    var swiper = this;
4423
+    swiper.imagesToLoad = swiper.$el.find('img');
4424
+
4425
+    function onReady() {
4426
+      if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
4427
+      if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
4428
+
4429
+      if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
4430
+        if (swiper.params.updateOnImagesReady) swiper.update();
4431
+        swiper.emit('imagesReady');
4432
+      }
4433
+    }
4434
+
4435
+    for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
4436
+      var imageEl = swiper.imagesToLoad[i];
4437
+      swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
4438
+    }
4439
+  }
4440
+
4441
+  var images = {
4442
+    loadImage: loadImage,
4443
+    preloadImages: preloadImages
4444
+  };
4445
+
4446
+  function checkOverflow() {
4447
+    var swiper = this;
4448
+    var params = swiper.params;
4449
+    var wasLocked = swiper.isLocked;
4450
+    var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
4451
+
4452
+    if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
4453
+      swiper.isLocked = lastSlidePosition <= swiper.size;
4454
+    } else {
4455
+      swiper.isLocked = swiper.snapGrid.length === 1;
4456
+    }
4457
+
4458
+    swiper.allowSlideNext = !swiper.isLocked;
4459
+    swiper.allowSlidePrev = !swiper.isLocked; // events
4460
+
4461
+    if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
4462
+
4463
+    if (wasLocked && wasLocked !== swiper.isLocked) {
4464
+      swiper.isEnd = false;
4465
+      if (swiper.navigation) swiper.navigation.update();
4466
+    }
4467
+  }
4468
+
4469
+  var checkOverflow$1 = {
4470
+    checkOverflow: checkOverflow
4471
+  };
4472
+
4473
+  var defaults = {
4474
+    init: true,
4475
+    direction: 'horizontal',
4476
+    touchEventsTarget: 'container',
4477
+    initialSlide: 0,
4478
+    speed: 300,
4479
+    cssMode: false,
4480
+    updateOnWindowResize: true,
4481
+    nested: false,
4482
+    // Overrides
4483
+    width: null,
4484
+    height: null,
4485
+    //
4486
+    preventInteractionOnTransition: false,
4487
+    // ssr
4488
+    userAgent: null,
4489
+    url: null,
4490
+    // To support iOS's swipe-to-go-back gesture (when being used in-app).
4491
+    edgeSwipeDetection: false,
4492
+    edgeSwipeThreshold: 20,
4493
+    // Free mode
4494
+    freeMode: false,
4495
+    freeModeMomentum: true,
4496
+    freeModeMomentumRatio: 1,
4497
+    freeModeMomentumBounce: true,
4498
+    freeModeMomentumBounceRatio: 1,
4499
+    freeModeMomentumVelocityRatio: 1,
4500
+    freeModeSticky: false,
4501
+    freeModeMinimumVelocity: 0.02,
4502
+    // Autoheight
4503
+    autoHeight: false,
4504
+    // Set wrapper width
4505
+    setWrapperSize: false,
4506
+    // Virtual Translate
4507
+    virtualTranslate: false,
4508
+    // Effects
4509
+    effect: 'slide',
4510
+    // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
4511
+    // Breakpoints
4512
+    breakpoints: undefined,
4513
+    // Slides grid
4514
+    spaceBetween: 0,
4515
+    slidesPerView: 1,
4516
+    slidesPerColumn: 1,
4517
+    slidesPerColumnFill: 'column',
4518
+    slidesPerGroup: 1,
4519
+    slidesPerGroupSkip: 0,
4520
+    centeredSlides: false,
4521
+    centeredSlidesBounds: false,
4522
+    slidesOffsetBefore: 0,
4523
+    // in px
4524
+    slidesOffsetAfter: 0,
4525
+    // in px
4526
+    normalizeSlideIndex: true,
4527
+    centerInsufficientSlides: false,
4528
+    // Disable swiper and hide navigation when container not overflow
4529
+    watchOverflow: false,
4530
+    // Round length
4531
+    roundLengths: false,
4532
+    // Touches
4533
+    touchRatio: 1,
4534
+    touchAngle: 45,
4535
+    simulateTouch: true,
4536
+    shortSwipes: true,
4537
+    longSwipes: true,
4538
+    longSwipesRatio: 0.5,
4539
+    longSwipesMs: 300,
4540
+    followFinger: true,
4541
+    allowTouchMove: true,
4542
+    threshold: 0,
4543
+    touchMoveStopPropagation: false,
4544
+    touchStartPreventDefault: true,
4545
+    touchStartForcePreventDefault: false,
4546
+    touchReleaseOnEdges: false,
4547
+    // Unique Navigation Elements
4548
+    uniqueNavElements: true,
4549
+    // Resistance
4550
+    resistance: true,
4551
+    resistanceRatio: 0.85,
4552
+    // Progress
4553
+    watchSlidesProgress: false,
4554
+    watchSlidesVisibility: false,
4555
+    // Cursor
4556
+    grabCursor: false,
4557
+    // Clicks
4558
+    preventClicks: true,
4559
+    preventClicksPropagation: true,
4560
+    slideToClickedSlide: false,
4561
+    // Images
4562
+    preloadImages: true,
4563
+    updateOnImagesReady: true,
4564
+    // loop
4565
+    loop: false,
4566
+    loopAdditionalSlides: 0,
4567
+    loopedSlides: null,
4568
+    loopFillGroupWithBlank: false,
4569
+    loopPreventsSlide: true,
4570
+    // Swiping/no swiping
4571
+    allowSlidePrev: true,
4572
+    allowSlideNext: true,
4573
+    swipeHandler: null,
4574
+    // '.swipe-handler',
4575
+    noSwiping: true,
4576
+    noSwipingClass: 'swiper-no-swiping',
4577
+    noSwipingSelector: null,
4578
+    // Passive Listeners
4579
+    passiveListeners: true,
4580
+    // NS
4581
+    containerModifierClass: 'swiper-container-',
4582
+    // NEW
4583
+    slideClass: 'swiper-slide',
4584
+    slideBlankClass: 'swiper-slide-invisible-blank',
4585
+    slideActiveClass: 'swiper-slide-active',
4586
+    slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
4587
+    slideVisibleClass: 'swiper-slide-visible',
4588
+    slideDuplicateClass: 'swiper-slide-duplicate',
4589
+    slideNextClass: 'swiper-slide-next',
4590
+    slideDuplicateNextClass: 'swiper-slide-duplicate-next',
4591
+    slidePrevClass: 'swiper-slide-prev',
4592
+    slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
4593
+    wrapperClass: 'swiper-wrapper',
4594
+    // Callbacks
4595
+    runCallbacksOnInit: true,
4596
+    // Internals
4597
+    _emitClasses: false
4598
+  };
4599
+
4600
+  var prototypes = {
4601
+    modular: modular,
4602
+    eventsEmitter: eventsEmitter,
4603
+    update: update,
4604
+    translate: translate,
4605
+    transition: transition$1,
4606
+    slide: slide,
4607
+    loop: loop,
4608
+    grabCursor: grabCursor,
4609
+    manipulation: manipulation,
4610
+    events: events,
4611
+    breakpoints: breakpoints,
4612
+    checkOverflow: checkOverflow$1,
4613
+    classes: classes,
4614
+    images: images
4615
+  };
4616
+  var extendedDefaults = {};
4617
+
4618
+  var Swiper = /*#__PURE__*/function () {
4619
+    function Swiper() {
4620
+      var el;
4621
+      var params;
4622
+
4623
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
4624
+        args[_key] = arguments[_key];
4625
+      }
4626
+
4627
+      if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
4628
+        params = args[0];
4629
+      } else {
4630
+        el = args[0];
4631
+        params = args[1];
4632
+      }
4633
+
4634
+      if (!params) params = {};
4635
+      params = extend$1({}, params);
4636
+      if (el && !params.el) params.el = el; // Swiper Instance
4637
+
4638
+      var swiper = this;
4639
+      swiper.support = getSupport();
4640
+      swiper.device = getDevice({
4641
+        userAgent: params.userAgent
4642
+      });
4643
+      swiper.browser = getBrowser();
4644
+      swiper.eventsListeners = {};
4645
+      swiper.eventsAnyListeners = [];
4646
+
4647
+      if (typeof swiper.modules === 'undefined') {
4648
+        swiper.modules = {};
4649
+      }
4650
+
4651
+      Object.keys(swiper.modules).forEach(function (moduleName) {
4652
+        var module = swiper.modules[moduleName];
4653
+
4654
+        if (module.params) {
4655
+          var moduleParamName = Object.keys(module.params)[0];
4656
+          var moduleParams = module.params[moduleParamName];
4657
+          if (typeof moduleParams !== 'object' || moduleParams === null) return;
4658
+          if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
4659
+
4660
+          if (params[moduleParamName] === true) {
4661
+            params[moduleParamName] = {
4662
+              enabled: true
4663
+            };
4664
+          }
4665
+
4666
+          if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
4667
+            params[moduleParamName].enabled = true;
4668
+          }
4669
+
4670
+          if (!params[moduleParamName]) params[moduleParamName] = {
4671
+            enabled: false
4672
+          };
4673
+        }
4674
+      }); // Extend defaults with modules params
4675
+
4676
+      var swiperParams = extend$1({}, defaults);
4677
+      swiper.useParams(swiperParams); // Extend defaults with passed params
4678
+
4679
+      swiper.params = extend$1({}, swiperParams, extendedDefaults, params);
4680
+      swiper.originalParams = extend$1({}, swiper.params);
4681
+      swiper.passedParams = extend$1({}, params); // add event listeners
4682
+
4683
+      if (swiper.params && swiper.params.on) {
4684
+        Object.keys(swiper.params.on).forEach(function (eventName) {
4685
+          swiper.on(eventName, swiper.params.on[eventName]);
4686
+        });
4687
+      }
4688
+
4689
+      if (swiper.params && swiper.params.onAny) {
4690
+        swiper.onAny(swiper.params.onAny);
4691
+      } // Save Dom lib
4692
+
4693
+
4694
+      swiper.$ = $; // Find el
4695
+
4696
+      var $el = $(swiper.params.el);
4697
+      el = $el[0];
4698
+
4699
+      if (!el) {
4700
+        return undefined;
4701
+      }
4702
+
4703
+      if ($el.length > 1) {
4704
+        var swipers = [];
4705
+        $el.each(function (containerEl) {
4706
+          var newParams = extend$1({}, params, {
4707
+            el: containerEl
4708
+          });
4709
+          swipers.push(new Swiper(newParams));
4710
+        });
4711
+        return swipers;
4712
+      }
4713
+
4714
+      el.swiper = swiper; // Find Wrapper
4715
+
4716
+      var $wrapperEl;
4717
+
4718
+      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
4719
+        $wrapperEl = $(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
4720
+
4721
+        $wrapperEl.children = function (options) {
4722
+          return $el.children(options);
4723
+        };
4724
+      } else {
4725
+        $wrapperEl = $el.children("." + swiper.params.wrapperClass);
4726
+      } // Extend Swiper
4727
+
4728
+
4729
+      extend$1(swiper, {
4730
+        $el: $el,
4731
+        el: el,
4732
+        $wrapperEl: $wrapperEl,
4733
+        wrapperEl: $wrapperEl[0],
4734
+        // Classes
4735
+        classNames: [],
4736
+        // Slides
4737
+        slides: $(),
4738
+        slidesGrid: [],
4739
+        snapGrid: [],
4740
+        slidesSizesGrid: [],
4741
+        // isDirection
4742
+        isHorizontal: function isHorizontal() {
4743
+          return swiper.params.direction === 'horizontal';
4744
+        },
4745
+        isVertical: function isVertical() {
4746
+          return swiper.params.direction === 'vertical';
4747
+        },
4748
+        // RTL
4749
+        rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
4750
+        rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
4751
+        wrongRTL: $wrapperEl.css('display') === '-webkit-box',
4752
+        // Indexes
4753
+        activeIndex: 0,
4754
+        realIndex: 0,
4755
+        //
4756
+        isBeginning: true,
4757
+        isEnd: false,
4758
+        // Props
4759
+        translate: 0,
4760
+        previousTranslate: 0,
4761
+        progress: 0,
4762
+        velocity: 0,
4763
+        animating: false,
4764
+        // Locks
4765
+        allowSlideNext: swiper.params.allowSlideNext,
4766
+        allowSlidePrev: swiper.params.allowSlidePrev,
4767
+        // Touch Events
4768
+        touchEvents: function touchEvents() {
4769
+          var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
4770
+          var desktop = ['mousedown', 'mousemove', 'mouseup'];
4771
+
4772
+          if (swiper.support.pointerEvents) {
4773
+            desktop = ['pointerdown', 'pointermove', 'pointerup'];
4774
+          }
4775
+
4776
+          swiper.touchEventsTouch = {
4777
+            start: touch[0],
4778
+            move: touch[1],
4779
+            end: touch[2],
4780
+            cancel: touch[3]
4781
+          };
4782
+          swiper.touchEventsDesktop = {
4783
+            start: desktop[0],
4784
+            move: desktop[1],
4785
+            end: desktop[2]
4786
+          };
4787
+          return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
4788
+        }(),
4789
+        touchEventsData: {
4790
+          isTouched: undefined,
4791
+          isMoved: undefined,
4792
+          allowTouchCallbacks: undefined,
4793
+          touchStartTime: undefined,
4794
+          isScrolling: undefined,
4795
+          currentTranslate: undefined,
4796
+          startTranslate: undefined,
4797
+          allowThresholdMove: undefined,
4798
+          // Form elements to match
4799
+          formElements: 'input, select, option, textarea, button, video, label',
4800
+          // Last click time
4801
+          lastClickTime: now(),
4802
+          clickTimeout: undefined,
4803
+          // Velocities
4804
+          velocities: [],
4805
+          allowMomentumBounce: undefined,
4806
+          isTouchEvent: undefined,
4807
+          startMoving: undefined
4808
+        },
4809
+        // Clicks
4810
+        allowClick: true,
4811
+        // Touches
4812
+        allowTouchMove: swiper.params.allowTouchMove,
4813
+        touches: {
4814
+          startX: 0,
4815
+          startY: 0,
4816
+          currentX: 0,
4817
+          currentY: 0,
4818
+          diff: 0
4819
+        },
4820
+        // Images
4821
+        imagesToLoad: [],
4822
+        imagesLoaded: 0
4823
+      }); // Install Modules
4824
+
4825
+      swiper.useModules();
4826
+      swiper.emit('_swiper'); // Init
4827
+
4828
+      if (swiper.params.init) {
4829
+        swiper.init();
4830
+      } // Return app instance
4831
+
4832
+
4833
+      return swiper;
4834
+    }
4835
+
4836
+    var _proto = Swiper.prototype;
4837
+
4838
+    _proto.emitContainerClasses = function emitContainerClasses() {
4839
+      var swiper = this;
4840
+      if (!swiper.params._emitClasses || !swiper.el) return;
4841
+      var classes = swiper.el.className.split(' ').filter(function (className) {
4842
+        return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
4843
+      });
4844
+      swiper.emit('_containerClasses', classes.join(' '));
4845
+    };
4846
+
4847
+    _proto.getSlideClasses = function getSlideClasses(slideEl) {
4848
+      var swiper = this;
4849
+      return slideEl.className.split(' ').filter(function (className) {
4850
+        return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
4851
+      }).join(' ');
4852
+    };
4853
+
4854
+    _proto.emitSlidesClasses = function emitSlidesClasses() {
4855
+      var swiper = this;
4856
+      if (!swiper.params._emitClasses || !swiper.el) return;
4857
+      swiper.slides.each(function (slideEl) {
4858
+        var classNames = swiper.getSlideClasses(slideEl);
4859
+        swiper.emit('_slideClass', slideEl, classNames);
4860
+      });
4861
+    };
4862
+
4863
+    _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
4864
+      var swiper = this;
4865
+      var params = swiper.params,
4866
+          slides = swiper.slides,
4867
+          slidesGrid = swiper.slidesGrid,
4868
+          swiperSize = swiper.size,
4869
+          activeIndex = swiper.activeIndex;
4870
+      var spv = 1;
4871
+
4872
+      if (params.centeredSlides) {
4873
+        var slideSize = slides[activeIndex].swiperSlideSize;
4874
+        var breakLoop;
4875
+
4876
+        for (var i = activeIndex + 1; i < slides.length; i += 1) {
4877
+          if (slides[i] && !breakLoop) {
4878
+            slideSize += slides[i].swiperSlideSize;
4879
+            spv += 1;
4880
+            if (slideSize > swiperSize) breakLoop = true;
4881
+          }
4882
+        }
4883
+
4884
+        for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
4885
+          if (slides[_i] && !breakLoop) {
4886
+            slideSize += slides[_i].swiperSlideSize;
4887
+            spv += 1;
4888
+            if (slideSize > swiperSize) breakLoop = true;
4889
+          }
4890
+        }
4891
+      } else {
4892
+        for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
4893
+          if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
4894
+            spv += 1;
4895
+          }
4896
+        }
4897
+      }
4898
+
4899
+      return spv;
4900
+    };
4901
+
4902
+    _proto.update = function update() {
4903
+      var swiper = this;
4904
+      if (!swiper || swiper.destroyed) return;
4905
+      var snapGrid = swiper.snapGrid,
4906
+          params = swiper.params; // Breakpoints
4907
+
4908
+      if (params.breakpoints) {
4909
+        swiper.setBreakpoint();
4910
+      }
4911
+
4912
+      swiper.updateSize();
4913
+      swiper.updateSlides();
4914
+      swiper.updateProgress();
4915
+      swiper.updateSlidesClasses();
4916
+
4917
+      function setTranslate() {
4918
+        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4919
+        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4920
+        swiper.setTranslate(newTranslate);
4921
+        swiper.updateActiveIndex();
4922
+        swiper.updateSlidesClasses();
4923
+      }
4924
+
4925
+      var translated;
4926
+
4927
+      if (swiper.params.freeMode) {
4928
+        setTranslate();
4929
+
4930
+        if (swiper.params.autoHeight) {
4931
+          swiper.updateAutoHeight();
4932
+        }
4933
+      } else {
4934
+        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
4935
+          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4936
+        } else {
4937
+          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
4938
+        }
4939
+
4940
+        if (!translated) {
4941
+          setTranslate();
4942
+        }
4943
+      }
4944
+
4945
+      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
4946
+        swiper.checkOverflow();
4947
+      }
4948
+
4949
+      swiper.emit('update');
4950
+    };
4951
+
4952
+    _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
4953
+      if (needUpdate === void 0) {
4954
+        needUpdate = true;
4955
+      }
4956
+
4957
+      var swiper = this;
4958
+      var currentDirection = swiper.params.direction;
4959
+
4960
+      if (!newDirection) {
4961
+        // eslint-disable-next-line
4962
+        newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
4963
+      }
4964
+
4965
+      if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
4966
+        return swiper;
4967
+      }
4968
+
4969
+      swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
4970
+      swiper.emitContainerClasses();
4971
+      swiper.params.direction = newDirection;
4972
+      swiper.slides.each(function (slideEl) {
4973
+        if (newDirection === 'vertical') {
4974
+          slideEl.style.width = '';
4975
+        } else {
4976
+          slideEl.style.height = '';
4977
+        }
4978
+      });
4979
+      swiper.emit('changeDirection');
4980
+      if (needUpdate) swiper.update();
4981
+      return swiper;
4982
+    };
4983
+
4984
+    _proto.init = function init() {
4985
+      var swiper = this;
4986
+      if (swiper.initialized) return;
4987
+      swiper.emit('beforeInit'); // Set breakpoint
4988
+
4989
+      if (swiper.params.breakpoints) {
4990
+        swiper.setBreakpoint();
4991
+      } // Add Classes
4992
+
4993
+
4994
+      swiper.addClasses(); // Create loop
4995
+
4996
+      if (swiper.params.loop) {
4997
+        swiper.loopCreate();
4998
+      } // Update size
4999
+
5000
+
5001
+      swiper.updateSize(); // Update slides
5002
+
5003
+      swiper.updateSlides();
5004
+
5005
+      if (swiper.params.watchOverflow) {
5006
+        swiper.checkOverflow();
5007
+      } // Set Grab Cursor
5008
+
5009
+
5010
+      if (swiper.params.grabCursor) {
5011
+        swiper.setGrabCursor();
5012
+      }
5013
+
5014
+      if (swiper.params.preloadImages) {
5015
+        swiper.preloadImages();
5016
+      } // Slide To Initial Slide
5017
+
5018
+
5019
+      if (swiper.params.loop) {
5020
+        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
5021
+      } else {
5022
+        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
5023
+      } // Attach events
5024
+
5025
+
5026
+      swiper.attachEvents(); // Init Flag
5027
+
5028
+      swiper.initialized = true; // Emit
5029
+
5030
+      swiper.emit('init');
5031
+      swiper.emit('afterInit');
5032
+    };
5033
+
5034
+    _proto.destroy = function destroy(deleteInstance, cleanStyles) {
5035
+      if (deleteInstance === void 0) {
5036
+        deleteInstance = true;
5037
+      }
5038
+
5039
+      if (cleanStyles === void 0) {
5040
+        cleanStyles = true;
5041
+      }
5042
+
5043
+      var swiper = this;
5044
+      var params = swiper.params,
5045
+          $el = swiper.$el,
5046
+          $wrapperEl = swiper.$wrapperEl,
5047
+          slides = swiper.slides;
5048
+
5049
+      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
5050
+        return null;
5051
+      }
5052
+
5053
+      swiper.emit('beforeDestroy'); // Init Flag
5054
+
5055
+      swiper.initialized = false; // Detach events
5056
+
5057
+      swiper.detachEvents(); // Destroy loop
5058
+
5059
+      if (params.loop) {
5060
+        swiper.loopDestroy();
5061
+      } // Cleanup styles
5062
+
5063
+
5064
+      if (cleanStyles) {
5065
+        swiper.removeClasses();
5066
+        $el.removeAttr('style');
5067
+        $wrapperEl.removeAttr('style');
5068
+
5069
+        if (slides && slides.length) {
5070
+          slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
5071
+        }
5072
+      }
5073
+
5074
+      swiper.emit('destroy'); // Detach emitter events
5075
+
5076
+      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
5077
+        swiper.off(eventName);
5078
+      });
5079
+
5080
+      if (deleteInstance !== false) {
5081
+        swiper.$el[0].swiper = null;
5082
+        deleteProps(swiper);
5083
+      }
5084
+
5085
+      swiper.destroyed = true;
5086
+      return null;
5087
+    };
5088
+
5089
+    Swiper.extendDefaults = function extendDefaults(newDefaults) {
5090
+      extend$1(extendedDefaults, newDefaults);
5091
+    };
5092
+
5093
+    Swiper.installModule = function installModule(module) {
5094
+      if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
5095
+      var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now();
5096
+      Swiper.prototype.modules[name] = module;
5097
+    };
5098
+
5099
+    Swiper.use = function use(module) {
5100
+      if (Array.isArray(module)) {
5101
+        module.forEach(function (m) {
5102
+          return Swiper.installModule(m);
5103
+        });
5104
+        return Swiper;
5105
+      }
5106
+
5107
+      Swiper.installModule(module);
5108
+      return Swiper;
5109
+    };
5110
+
5111
+    _createClass(Swiper, null, [{
5112
+      key: "extendedDefaults",
5113
+      get: function get() {
5114
+        return extendedDefaults;
5115
+      }
5116
+    }, {
5117
+      key: "defaults",
5118
+      get: function get() {
5119
+        return defaults;
5120
+      }
5121
+    }]);
5122
+
5123
+    return Swiper;
5124
+  }();
5125
+
5126
+  Object.keys(prototypes).forEach(function (prototypeGroup) {
5127
+    Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
5128
+      Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
5129
+    });
5130
+  });
5131
+  Swiper.use([Resize, Observer$1]);
5132
+
5133
+  var Virtual = {
5134
+    update: function update(force) {
5135
+      var swiper = this;
5136
+      var _swiper$params = swiper.params,
5137
+          slidesPerView = _swiper$params.slidesPerView,
5138
+          slidesPerGroup = _swiper$params.slidesPerGroup,
5139
+          centeredSlides = _swiper$params.centeredSlides;
5140
+      var _swiper$params$virtua = swiper.params.virtual,
5141
+          addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
5142
+          addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
5143
+      var _swiper$virtual = swiper.virtual,
5144
+          previousFrom = _swiper$virtual.from,
5145
+          previousTo = _swiper$virtual.to,
5146
+          slides = _swiper$virtual.slides,
5147
+          previousSlidesGrid = _swiper$virtual.slidesGrid,
5148
+          renderSlide = _swiper$virtual.renderSlide,
5149
+          previousOffset = _swiper$virtual.offset;
5150
+      swiper.updateActiveIndex();
5151
+      var activeIndex = swiper.activeIndex || 0;
5152
+      var offsetProp;
5153
+      if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
5154
+      var slidesAfter;
5155
+      var slidesBefore;
5156
+
5157
+      if (centeredSlides) {
5158
+        slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
5159
+        slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
5160
+      } else {
5161
+        slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
5162
+        slidesBefore = slidesPerGroup + addSlidesBefore;
5163
+      }
5164
+
5165
+      var from = Math.max((activeIndex || 0) - slidesBefore, 0);
5166
+      var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
5167
+      var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
5168
+      extend$1(swiper.virtual, {
5169
+        from: from,
5170
+        to: to,
5171
+        offset: offset,
5172
+        slidesGrid: swiper.slidesGrid
5173
+      });
5174
+
5175
+      function onRendered() {
5176
+        swiper.updateSlides();
5177
+        swiper.updateProgress();
5178
+        swiper.updateSlidesClasses();
5179
+
5180
+        if (swiper.lazy && swiper.params.lazy.enabled) {
5181
+          swiper.lazy.load();
5182
+        }
5183
+      }
5184
+
5185
+      if (previousFrom === from && previousTo === to && !force) {
5186
+        if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
5187
+          swiper.slides.css(offsetProp, offset + "px");
5188
+        }
5189
+
5190
+        swiper.updateProgress();
5191
+        return;
5192
+      }
5193
+
5194
+      if (swiper.params.virtual.renderExternal) {
5195
+        swiper.params.virtual.renderExternal.call(swiper, {
5196
+          offset: offset,
5197
+          from: from,
5198
+          to: to,
5199
+          slides: function getSlides() {
5200
+            var slidesToRender = [];
5201
+
5202
+            for (var i = from; i <= to; i += 1) {
5203
+              slidesToRender.push(slides[i]);
5204
+            }
5205
+
5206
+            return slidesToRender;
5207
+          }()
5208
+        });
5209
+
5210
+        if (swiper.params.virtual.renderExternalUpdate) {
5211
+          onRendered();
5212
+        }
5213
+
5214
+        return;
5215
+      }
5216
+
5217
+      var prependIndexes = [];
5218
+      var appendIndexes = [];
5219
+
5220
+      if (force) {
5221
+        swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
5222
+      } else {
5223
+        for (var i = previousFrom; i <= previousTo; i += 1) {
5224
+          if (i < from || i > to) {
5225
+            swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
5226
+          }
5227
+        }
5228
+      }
5229
+
5230
+      for (var _i = 0; _i < slides.length; _i += 1) {
5231
+        if (_i >= from && _i <= to) {
5232
+          if (typeof previousTo === 'undefined' || force) {
5233
+            appendIndexes.push(_i);
5234
+          } else {
5235
+            if (_i > previousTo) appendIndexes.push(_i);
5236
+            if (_i < previousFrom) prependIndexes.push(_i);
5237
+          }
5238
+        }
5239
+      }
5240
+
5241
+      appendIndexes.forEach(function (index) {
5242
+        swiper.$wrapperEl.append(renderSlide(slides[index], index));
5243
+      });
5244
+      prependIndexes.sort(function (a, b) {
5245
+        return b - a;
5246
+      }).forEach(function (index) {
5247
+        swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
5248
+      });
5249
+      swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
5250
+      onRendered();
5251
+    },
5252
+    renderSlide: function renderSlide(slide, index) {
5253
+      var swiper = this;
5254
+      var params = swiper.params.virtual;
5255
+
5256
+      if (params.cache && swiper.virtual.cache[index]) {
5257
+        return swiper.virtual.cache[index];
5258
+      }
5259
+
5260
+      var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
5261
+      if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
5262
+      if (params.cache) swiper.virtual.cache[index] = $slideEl;
5263
+      return $slideEl;
5264
+    },
5265
+    appendSlide: function appendSlide(slides) {
5266
+      var swiper = this;
5267
+
5268
+      if (typeof slides === 'object' && 'length' in slides) {
5269
+        for (var i = 0; i < slides.length; i += 1) {
5270
+          if (slides[i]) swiper.virtual.slides.push(slides[i]);
5271
+        }
5272
+      } else {
5273
+        swiper.virtual.slides.push(slides);
5274
+      }
5275
+
5276
+      swiper.virtual.update(true);
5277
+    },
5278
+    prependSlide: function prependSlide(slides) {
5279
+      var swiper = this;
5280
+      var activeIndex = swiper.activeIndex;
5281
+      var newActiveIndex = activeIndex + 1;
5282
+      var numberOfNewSlides = 1;
5283
+
5284
+      if (Array.isArray(slides)) {
5285
+        for (var i = 0; i < slides.length; i += 1) {
5286
+          if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
5287
+        }
5288
+
5289
+        newActiveIndex = activeIndex + slides.length;
5290
+        numberOfNewSlides = slides.length;
5291
+      } else {
5292
+        swiper.virtual.slides.unshift(slides);
5293
+      }
5294
+
5295
+      if (swiper.params.virtual.cache) {
5296
+        var cache = swiper.virtual.cache;
5297
+        var newCache = {};
5298
+        Object.keys(cache).forEach(function (cachedIndex) {
5299
+          var $cachedEl = cache[cachedIndex];
5300
+          var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
5301
+
5302
+          if (cachedElIndex) {
5303
+            $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
5304
+          }
5305
+
5306
+          newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
5307
+        });
5308
+        swiper.virtual.cache = newCache;
5309
+      }
5310
+
5311
+      swiper.virtual.update(true);
5312
+      swiper.slideTo(newActiveIndex, 0);
5313
+    },
5314
+    removeSlide: function removeSlide(slidesIndexes) {
5315
+      var swiper = this;
5316
+      if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
5317
+      var activeIndex = swiper.activeIndex;
5318
+
5319
+      if (Array.isArray(slidesIndexes)) {
5320
+        for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
5321
+          swiper.virtual.slides.splice(slidesIndexes[i], 1);
5322
+
5323
+          if (swiper.params.virtual.cache) {
5324
+            delete swiper.virtual.cache[slidesIndexes[i]];
5325
+          }
5326
+
5327
+          if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
5328
+          activeIndex = Math.max(activeIndex, 0);
5329
+        }
5330
+      } else {
5331
+        swiper.virtual.slides.splice(slidesIndexes, 1);
5332
+
5333
+        if (swiper.params.virtual.cache) {
5334
+          delete swiper.virtual.cache[slidesIndexes];
5335
+        }
5336
+
5337
+        if (slidesIndexes < activeIndex) activeIndex -= 1;
5338
+        activeIndex = Math.max(activeIndex, 0);
5339
+      }
5340
+
5341
+      swiper.virtual.update(true);
5342
+      swiper.slideTo(activeIndex, 0);
5343
+    },
5344
+    removeAllSlides: function removeAllSlides() {
5345
+      var swiper = this;
5346
+      swiper.virtual.slides = [];
5347
+
5348
+      if (swiper.params.virtual.cache) {
5349
+        swiper.virtual.cache = {};
5350
+      }
5351
+
5352
+      swiper.virtual.update(true);
5353
+      swiper.slideTo(0, 0);
5354
+    }
5355
+  };
5356
+  var Virtual$1 = {
5357
+    name: 'virtual',
5358
+    params: {
5359
+      virtual: {
5360
+        enabled: false,
5361
+        slides: [],
5362
+        cache: true,
5363
+        renderSlide: null,
5364
+        renderExternal: null,
5365
+        renderExternalUpdate: true,
5366
+        addSlidesBefore: 0,
5367
+        addSlidesAfter: 0
5368
+      }
5369
+    },
5370
+    create: function create() {
5371
+      var swiper = this;
5372
+      bindModuleMethods(swiper, {
5373
+        virtual: _extends(_extends({}, Virtual), {}, {
5374
+          slides: swiper.params.virtual.slides,
5375
+          cache: {}
5376
+        })
5377
+      });
5378
+    },
5379
+    on: {
5380
+      beforeInit: function beforeInit(swiper) {
5381
+        if (!swiper.params.virtual.enabled) return;
5382
+        swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
5383
+        var overwriteParams = {
5384
+          watchSlidesProgress: true
5385
+        };
5386
+        extend$1(swiper.params, overwriteParams);
5387
+        extend$1(swiper.originalParams, overwriteParams);
5388
+
5389
+        if (!swiper.params.initialSlide) {
5390
+          swiper.virtual.update();
5391
+        }
5392
+      },
5393
+      setTranslate: function setTranslate(swiper) {
5394
+        if (!swiper.params.virtual.enabled) return;
5395
+        swiper.virtual.update();
5396
+      }
5397
+    }
5398
+  };
5399
+
5400
+  var Keyboard = {
5401
+    handle: function handle(event) {
5402
+      var swiper = this;
5403
+      var window = getWindow();
5404
+      var document = getDocument();
5405
+      var rtl = swiper.rtlTranslate;
5406
+      var e = event;
5407
+      if (e.originalEvent) e = e.originalEvent; // jquery fix
5408
+
5409
+      var kc = e.keyCode || e.charCode;
5410
+      var pageUpDown = swiper.params.keyboard.pageUpDown;
5411
+      var isPageUp = pageUpDown && kc === 33;
5412
+      var isPageDown = pageUpDown && kc === 34;
5413
+      var isArrowLeft = kc === 37;
5414
+      var isArrowRight = kc === 39;
5415
+      var isArrowUp = kc === 38;
5416
+      var isArrowDown = kc === 40; // Directions locks
5417
+
5418
+      if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
5419
+        return false;
5420
+      }
5421
+
5422
+      if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
5423
+        return false;
5424
+      }
5425
+
5426
+      if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
5427
+        return undefined;
5428
+      }
5429
+
5430
+      if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
5431
+        return undefined;
5432
+      }
5433
+
5434
+      if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
5435
+        var inView = false; // Check that swiper should be inside of visible area of window
5436
+
5437
+        if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
5438
+          return undefined;
5439
+        }
5440
+
5441
+        var windowWidth = window.innerWidth;
5442
+        var windowHeight = window.innerHeight;
5443
+        var swiperOffset = swiper.$el.offset();
5444
+        if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
5445
+        var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
5446
+
5447
+        for (var i = 0; i < swiperCoord.length; i += 1) {
5448
+          var point = swiperCoord[i];
5449
+
5450
+          if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
5451
+            inView = true;
5452
+          }
5453
+        }
5454
+
5455
+        if (!inView) return undefined;
5456
+      }
5457
+
5458
+      if (swiper.isHorizontal()) {
5459
+        if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
5460
+          if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5461
+        }
5462
+
5463
+        if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
5464
+        if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
5465
+      } else {
5466
+        if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
5467
+          if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5468
+        }
5469
+
5470
+        if (isPageDown || isArrowDown) swiper.slideNext();
5471
+        if (isPageUp || isArrowUp) swiper.slidePrev();
5472
+      }
5473
+
5474
+      swiper.emit('keyPress', kc);
5475
+      return undefined;
5476
+    },
5477
+    enable: function enable() {
5478
+      var swiper = this;
5479
+      var document = getDocument();
5480
+      if (swiper.keyboard.enabled) return;
5481
+      $(document).on('keydown', swiper.keyboard.handle);
5482
+      swiper.keyboard.enabled = true;
5483
+    },
5484
+    disable: function disable() {
5485
+      var swiper = this;
5486
+      var document = getDocument();
5487
+      if (!swiper.keyboard.enabled) return;
5488
+      $(document).off('keydown', swiper.keyboard.handle);
5489
+      swiper.keyboard.enabled = false;
5490
+    }
5491
+  };
5492
+  var Keyboard$1 = {
5493
+    name: 'keyboard',
5494
+    params: {
5495
+      keyboard: {
5496
+        enabled: false,
5497
+        onlyInViewport: true,
5498
+        pageUpDown: true
5499
+      }
5500
+    },
5501
+    create: function create() {
5502
+      var swiper = this;
5503
+      bindModuleMethods(swiper, {
5504
+        keyboard: _extends({
5505
+          enabled: false
5506
+        }, Keyboard)
5507
+      });
5508
+    },
5509
+    on: {
5510
+      init: function init(swiper) {
5511
+        if (swiper.params.keyboard.enabled) {
5512
+          swiper.keyboard.enable();
5513
+        }
5514
+      },
5515
+      destroy: function destroy(swiper) {
5516
+        if (swiper.keyboard.enabled) {
5517
+          swiper.keyboard.disable();
5518
+        }
5519
+      }
5520
+    }
5521
+  };
5522
+
5523
+  function isEventSupported() {
5524
+    var document = getDocument();
5525
+    var eventName = 'onwheel';
5526
+    var isSupported = (eventName in document);
5527
+
5528
+    if (!isSupported) {
5529
+      var element = document.createElement('div');
5530
+      element.setAttribute(eventName, 'return;');
5531
+      isSupported = typeof element[eventName] === 'function';
5532
+    }
5533
+
5534
+    if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
5535
+    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
5536
+    document.implementation.hasFeature('', '') !== true) {
5537
+      // This is the only way to test support for the `wheel` event in IE9+.
5538
+      isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
5539
+    }
5540
+
5541
+    return isSupported;
5542
+  }
5543
+
5544
+  var Mousewheel = {
5545
+    lastScrollTime: now(),
5546
+    lastEventBeforeSnap: undefined,
5547
+    recentWheelEvents: [],
5548
+    event: function event() {
5549
+      var window = getWindow();
5550
+      if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
5551
+      return isEventSupported() ? 'wheel' : 'mousewheel';
5552
+    },
5553
+    normalize: function normalize(e) {
5554
+      // Reasonable defaults
5555
+      var PIXEL_STEP = 10;
5556
+      var LINE_HEIGHT = 40;
5557
+      var PAGE_HEIGHT = 800;
5558
+      var sX = 0;
5559
+      var sY = 0; // spinX, spinY
5560
+
5561
+      var pX = 0;
5562
+      var pY = 0; // pixelX, pixelY
5563
+      // Legacy
5564
+
5565
+      if ('detail' in e) {
5566
+        sY = e.detail;
5567
+      }
5568
+
5569
+      if ('wheelDelta' in e) {
5570
+        sY = -e.wheelDelta / 120;
5571
+      }
5572
+
5573
+      if ('wheelDeltaY' in e) {
5574
+        sY = -e.wheelDeltaY / 120;
5575
+      }
5576
+
5577
+      if ('wheelDeltaX' in e) {
5578
+        sX = -e.wheelDeltaX / 120;
5579
+      } // side scrolling on FF with DOMMouseScroll
5580
+
5581
+
5582
+      if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
5583
+        sX = sY;
5584
+        sY = 0;
5585
+      }
5586
+
5587
+      pX = sX * PIXEL_STEP;
5588
+      pY = sY * PIXEL_STEP;
5589
+
5590
+      if ('deltaY' in e) {
5591
+        pY = e.deltaY;
5592
+      }
5593
+
5594
+      if ('deltaX' in e) {
5595
+        pX = e.deltaX;
5596
+      }
5597
+
5598
+      if (e.shiftKey && !pX) {
5599
+        // if user scrolls with shift he wants horizontal scroll
5600
+        pX = pY;
5601
+        pY = 0;
5602
+      }
5603
+
5604
+      if ((pX || pY) && e.deltaMode) {
5605
+        if (e.deltaMode === 1) {
5606
+          // delta in LINE units
5607
+          pX *= LINE_HEIGHT;
5608
+          pY *= LINE_HEIGHT;
5609
+        } else {
5610
+          // delta in PAGE units
5611
+          pX *= PAGE_HEIGHT;
5612
+          pY *= PAGE_HEIGHT;
5613
+        }
5614
+      } // Fall-back if spin cannot be determined
5615
+
5616
+
5617
+      if (pX && !sX) {
5618
+        sX = pX < 1 ? -1 : 1;
5619
+      }
5620
+
5621
+      if (pY && !sY) {
5622
+        sY = pY < 1 ? -1 : 1;
5623
+      }
5624
+
5625
+      return {
5626
+        spinX: sX,
5627
+        spinY: sY,
5628
+        pixelX: pX,
5629
+        pixelY: pY
5630
+      };
5631
+    },
5632
+    handleMouseEnter: function handleMouseEnter() {
5633
+      var swiper = this;
5634
+      swiper.mouseEntered = true;
5635
+    },
5636
+    handleMouseLeave: function handleMouseLeave() {
5637
+      var swiper = this;
5638
+      swiper.mouseEntered = false;
5639
+    },
5640
+    handle: function handle(event) {
5641
+      var e = event;
5642
+      var swiper = this;
5643
+      var params = swiper.params.mousewheel;
5644
+
5645
+      if (swiper.params.cssMode) {
5646
+        e.preventDefault();
5647
+      }
5648
+
5649
+      var target = swiper.$el;
5650
+
5651
+      if (swiper.params.mousewheel.eventsTarget !== 'container') {
5652
+        target = $(swiper.params.mousewheel.eventsTarget);
5653
+      }
5654
+
5655
+      if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
5656
+      if (e.originalEvent) e = e.originalEvent; // jquery fix
5657
+
5658
+      var delta = 0;
5659
+      var rtlFactor = swiper.rtlTranslate ? -1 : 1;
5660
+      var data = Mousewheel.normalize(e);
5661
+
5662
+      if (params.forceToAxis) {
5663
+        if (swiper.isHorizontal()) {
5664
+          if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
5665
+        } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
5666
+      } else {
5667
+        delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
5668
+      }
5669
+
5670
+      if (delta === 0) return true;
5671
+      if (params.invert) delta = -delta;
5672
+
5673
+      if (!swiper.params.freeMode) {
5674
+        // Register the new event in a variable which stores the relevant data
5675
+        var newEvent = {
5676
+          time: now(),
5677
+          delta: Math.abs(delta),
5678
+          direction: Math.sign(delta),
5679
+          raw: event
5680
+        }; // Keep the most recent events
5681
+
5682
+        var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5683
+
5684
+        if (recentWheelEvents.length >= 2) {
5685
+          recentWheelEvents.shift(); // only store the last N events
5686
+        }
5687
+
5688
+        var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5689
+        recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
5690
+        //   If direction has changed or
5691
+        //   if the scroll is quicker than the previous one:
5692
+        //     Animate the slider.
5693
+        // Else (this is the first time the wheel is moved):
5694
+        //     Animate the slider.
5695
+
5696
+        if (prevEvent) {
5697
+          if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5698
+            swiper.mousewheel.animateSlider(newEvent);
5699
+          }
5700
+        } else {
5701
+          swiper.mousewheel.animateSlider(newEvent);
5702
+        } // If it's time to release the scroll:
5703
+        //   Return now so you don't hit the preventDefault.
5704
+
5705
+
5706
+        if (swiper.mousewheel.releaseScroll(newEvent)) {
5707
+          return true;
5708
+        }
5709
+      } else {
5710
+        // Freemode or scrollContainer:
5711
+        // If we recently snapped after a momentum scroll, then ignore wheel events
5712
+        // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5713
+        // or if it's a new scroll (larger delta or inverse sign as last event before
5714
+        // an end-of-momentum snap).
5715
+        var _newEvent = {
5716
+          time: now(),
5717
+          delta: Math.abs(delta),
5718
+          direction: Math.sign(delta)
5719
+        };
5720
+        var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
5721
+        var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
5722
+
5723
+        if (!ignoreWheelEvents) {
5724
+          swiper.mousewheel.lastEventBeforeSnap = undefined;
5725
+
5726
+          if (swiper.params.loop) {
5727
+            swiper.loopFix();
5728
+          }
5729
+
5730
+          var position = swiper.getTranslate() + delta * params.sensitivity;
5731
+          var wasBeginning = swiper.isBeginning;
5732
+          var wasEnd = swiper.isEnd;
5733
+          if (position >= swiper.minTranslate()) position = swiper.minTranslate();
5734
+          if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
5735
+          swiper.setTransition(0);
5736
+          swiper.setTranslate(position);
5737
+          swiper.updateProgress();
5738
+          swiper.updateActiveIndex();
5739
+          swiper.updateSlidesClasses();
5740
+
5741
+          if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
5742
+            swiper.updateSlidesClasses();
5743
+          }
5744
+
5745
+          if (swiper.params.freeModeSticky) {
5746
+            // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5747
+            // the end of a momentum scroll by storing recent (N=15?) wheel events.
5748
+            // 1. do all N events have decreasing or same (absolute value) delta?
5749
+            // 2. did all N events arrive in the last M (M=500?) msecs?
5750
+            // 3. does the earliest event have an (absolute value) delta that's
5751
+            //    at least P (P=1?) larger than the most recent event's delta?
5752
+            // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5753
+            // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
5754
+            // Snap immediately and ignore remaining wheel events in this scroll.
5755
+            // See comment above for "remaining wheel events in this scroll" determination.
5756
+            // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5757
+            clearTimeout(swiper.mousewheel.timeout);
5758
+            swiper.mousewheel.timeout = undefined;
5759
+            var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5760
+
5761
+            if (_recentWheelEvents.length >= 15) {
5762
+              _recentWheelEvents.shift(); // only store the last N events
5763
+
5764
+            }
5765
+
5766
+            var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
5767
+
5768
+            var firstEvent = _recentWheelEvents[0];
5769
+
5770
+            _recentWheelEvents.push(_newEvent);
5771
+
5772
+            if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
5773
+              // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5774
+              _recentWheelEvents.splice(0);
5775
+            } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
5776
+              // We're at the end of the deceleration of a momentum scroll, so there's no need
5777
+              // to wait for more events. Snap ASAP on the next tick.
5778
+              // Also, because there's some remaining momentum we'll bias the snap in the
5779
+              // direction of the ongoing scroll because it's better UX for the scroll to snap
5780
+              // in the same direction as the scroll instead of reversing to snap.  Therefore,
5781
+              // if it's already scrolled more than 20% in the current direction, keep going.
5782
+              var snapToThreshold = delta > 0 ? 0.8 : 0.2;
5783
+              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5784
+
5785
+              _recentWheelEvents.splice(0);
5786
+
5787
+              swiper.mousewheel.timeout = nextTick(function () {
5788
+                swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5789
+              }, 0); // no delay; move on next tick
5790
+            }
5791
+
5792
+            if (!swiper.mousewheel.timeout) {
5793
+              // if we get here, then we haven't detected the end of a momentum scroll, so
5794
+              // we'll consider a scroll "complete" when there haven't been any wheel events
5795
+              // for 500ms.
5796
+              swiper.mousewheel.timeout = nextTick(function () {
5797
+                var snapToThreshold = 0.5;
5798
+                swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5799
+
5800
+                _recentWheelEvents.splice(0);
5801
+
5802
+                swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5803
+              }, 500);
5804
+            }
5805
+          } // Emit event
5806
+
5807
+
5808
+          if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
5809
+
5810
+          if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
5811
+
5812
+          if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
5813
+        }
5814
+      }
5815
+
5816
+      if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5817
+      return false;
5818
+    },
5819
+    animateSlider: function animateSlider(newEvent) {
5820
+      var swiper = this;
5821
+      var window = getWindow();
5822
+
5823
+      if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
5824
+        // Prevent if delta of wheel scroll delta is below configured threshold
5825
+        return false;
5826
+      }
5827
+
5828
+      if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
5829
+        // Prevent if time between scrolls is below configured threshold
5830
+        return false;
5831
+      } // If the movement is NOT big enough and
5832
+      // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5833
+      //   Don't go any further (avoid insignificant scroll movement).
5834
+
5835
+
5836
+      if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {
5837
+        // Return false as a default
5838
+        return true;
5839
+      } // If user is scrolling towards the end:
5840
+      //   If the slider hasn't hit the latest slide or
5841
+      //   if the slider is a loop and
5842
+      //   if the slider isn't moving right now:
5843
+      //     Go to next slide and
5844
+      //     emit a scroll event.
5845
+      // Else (the user is scrolling towards the beginning) and
5846
+      // if the slider hasn't hit the first slide or
5847
+      // if the slider is a loop and
5848
+      // if the slider isn't moving right now:
5849
+      //   Go to prev slide and
5850
+      //   emit a scroll event.
5851
+
5852
+
5853
+      if (newEvent.direction < 0) {
5854
+        if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5855
+          swiper.slideNext();
5856
+          swiper.emit('scroll', newEvent.raw);
5857
+        }
5858
+      } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5859
+        swiper.slidePrev();
5860
+        swiper.emit('scroll', newEvent.raw);
5861
+      } // If you got here is because an animation has been triggered so store the current time
5862
+
5863
+
5864
+      swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
5865
+
5866
+      return false;
5867
+    },
5868
+    releaseScroll: function releaseScroll(newEvent) {
5869
+      var swiper = this;
5870
+      var params = swiper.params.mousewheel;
5871
+
5872
+      if (newEvent.direction < 0) {
5873
+        if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
5874
+          // Return true to animate scroll on edges
5875
+          return true;
5876
+        }
5877
+      } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
5878
+        // Return true to animate scroll on edges
5879
+        return true;
5880
+      }
5881
+
5882
+      return false;
5883
+    },
5884
+    enable: function enable() {
5885
+      var swiper = this;
5886
+      var event = Mousewheel.event();
5887
+
5888
+      if (swiper.params.cssMode) {
5889
+        swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
5890
+        return true;
5891
+      }
5892
+
5893
+      if (!event) return false;
5894
+      if (swiper.mousewheel.enabled) return false;
5895
+      var target = swiper.$el;
5896
+
5897
+      if (swiper.params.mousewheel.eventsTarget !== 'container') {
5898
+        target = $(swiper.params.mousewheel.eventsTarget);
5899
+      }
5900
+
5901
+      target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
5902
+      target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
5903
+      target.on(event, swiper.mousewheel.handle);
5904
+      swiper.mousewheel.enabled = true;
5905
+      return true;
5906
+    },
5907
+    disable: function disable() {
5908
+      var swiper = this;
5909
+      var event = Mousewheel.event();
5910
+
5911
+      if (swiper.params.cssMode) {
5912
+        swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
5913
+        return true;
5914
+      }
5915
+
5916
+      if (!event) return false;
5917
+      if (!swiper.mousewheel.enabled) return false;
5918
+      var target = swiper.$el;
5919
+
5920
+      if (swiper.params.mousewheel.eventsTarget !== 'container') {
5921
+        target = $(swiper.params.mousewheel.eventsTarget);
5922
+      }
5923
+
5924
+      target.off(event, swiper.mousewheel.handle);
5925
+      swiper.mousewheel.enabled = false;
5926
+      return true;
5927
+    }
5928
+  };
5929
+  var Mousewheel$1 = {
5930
+    name: 'mousewheel',
5931
+    params: {
5932
+      mousewheel: {
5933
+        enabled: false,
5934
+        releaseOnEdges: false,
5935
+        invert: false,
5936
+        forceToAxis: false,
5937
+        sensitivity: 1,
5938
+        eventsTarget: 'container',
5939
+        thresholdDelta: null,
5940
+        thresholdTime: null
5941
+      }
5942
+    },
5943
+    create: function create() {
5944
+      var swiper = this;
5945
+      bindModuleMethods(swiper, {
5946
+        mousewheel: {
5947
+          enabled: false,
5948
+          lastScrollTime: now(),
5949
+          lastEventBeforeSnap: undefined,
5950
+          recentWheelEvents: [],
5951
+          enable: Mousewheel.enable,
5952
+          disable: Mousewheel.disable,
5953
+          handle: Mousewheel.handle,
5954
+          handleMouseEnter: Mousewheel.handleMouseEnter,
5955
+          handleMouseLeave: Mousewheel.handleMouseLeave,
5956
+          animateSlider: Mousewheel.animateSlider,
5957
+          releaseScroll: Mousewheel.releaseScroll
5958
+        }
5959
+      });
5960
+    },
5961
+    on: {
5962
+      init: function init(swiper) {
5963
+        if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
5964
+          swiper.mousewheel.disable();
5965
+        }
5966
+
5967
+        if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
5968
+      },
5969
+      destroy: function destroy(swiper) {
5970
+        if (swiper.params.cssMode) {
5971
+          swiper.mousewheel.enable();
5972
+        }
5973
+
5974
+        if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
5975
+      }
5976
+    }
5977
+  };
5978
+
5979
+  var Navigation = {
5980
+    update: function update() {
5981
+      // Update Navigation Buttons
5982
+      var swiper = this;
5983
+      var params = swiper.params.navigation;
5984
+      if (swiper.params.loop) return;
5985
+      var _swiper$navigation = swiper.navigation,
5986
+          $nextEl = _swiper$navigation.$nextEl,
5987
+          $prevEl = _swiper$navigation.$prevEl;
5988
+
5989
+      if ($prevEl && $prevEl.length > 0) {
5990
+        if (swiper.isBeginning) {
5991
+          $prevEl.addClass(params.disabledClass);
5992
+        } else {
5993
+          $prevEl.removeClass(params.disabledClass);
5994
+        }
5995
+
5996
+        $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5997
+      }
5998
+
5999
+      if ($nextEl && $nextEl.length > 0) {
6000
+        if (swiper.isEnd) {
6001
+          $nextEl.addClass(params.disabledClass);
6002
+        } else {
6003
+          $nextEl.removeClass(params.disabledClass);
6004
+        }
6005
+
6006
+        $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6007
+      }
6008
+    },
6009
+    onPrevClick: function onPrevClick(e) {
6010
+      var swiper = this;
6011
+      e.preventDefault();
6012
+      if (swiper.isBeginning && !swiper.params.loop) return;
6013
+      swiper.slidePrev();
6014
+    },
6015
+    onNextClick: function onNextClick(e) {
6016
+      var swiper = this;
6017
+      e.preventDefault();
6018
+      if (swiper.isEnd && !swiper.params.loop) return;
6019
+      swiper.slideNext();
6020
+    },
6021
+    init: function init() {
6022
+      var swiper = this;
6023
+      var params = swiper.params.navigation;
6024
+      if (!(params.nextEl || params.prevEl)) return;
6025
+      var $nextEl;
6026
+      var $prevEl;
6027
+
6028
+      if (params.nextEl) {
6029
+        $nextEl = $(params.nextEl);
6030
+
6031
+        if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
6032
+          $nextEl = swiper.$el.find(params.nextEl);
6033
+        }
6034
+      }
6035
+
6036
+      if (params.prevEl) {
6037
+        $prevEl = $(params.prevEl);
6038
+
6039
+        if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
6040
+          $prevEl = swiper.$el.find(params.prevEl);
6041
+        }
6042
+      }
6043
+
6044
+      if ($nextEl && $nextEl.length > 0) {
6045
+        $nextEl.on('click', swiper.navigation.onNextClick);
6046
+      }
6047
+
6048
+      if ($prevEl && $prevEl.length > 0) {
6049
+        $prevEl.on('click', swiper.navigation.onPrevClick);
6050
+      }
6051
+
6052
+      extend$1(swiper.navigation, {
6053
+        $nextEl: $nextEl,
6054
+        nextEl: $nextEl && $nextEl[0],
6055
+        $prevEl: $prevEl,
6056
+        prevEl: $prevEl && $prevEl[0]
6057
+      });
6058
+    },
6059
+    destroy: function destroy() {
6060
+      var swiper = this;
6061
+      var _swiper$navigation2 = swiper.navigation,
6062
+          $nextEl = _swiper$navigation2.$nextEl,
6063
+          $prevEl = _swiper$navigation2.$prevEl;
6064
+
6065
+      if ($nextEl && $nextEl.length) {
6066
+        $nextEl.off('click', swiper.navigation.onNextClick);
6067
+        $nextEl.removeClass(swiper.params.navigation.disabledClass);
6068
+      }
6069
+
6070
+      if ($prevEl && $prevEl.length) {
6071
+        $prevEl.off('click', swiper.navigation.onPrevClick);
6072
+        $prevEl.removeClass(swiper.params.navigation.disabledClass);
6073
+      }
6074
+    }
6075
+  };
6076
+  var Navigation$1 = {
6077
+    name: 'navigation',
6078
+    params: {
6079
+      navigation: {
6080
+        nextEl: null,
6081
+        prevEl: null,
6082
+        hideOnClick: false,
6083
+        disabledClass: 'swiper-button-disabled',
6084
+        hiddenClass: 'swiper-button-hidden',
6085
+        lockClass: 'swiper-button-lock'
6086
+      }
6087
+    },
6088
+    create: function create() {
6089
+      var swiper = this;
6090
+      bindModuleMethods(swiper, {
6091
+        navigation: _extends({}, Navigation)
6092
+      });
6093
+    },
6094
+    on: {
6095
+      init: function init(swiper) {
6096
+        swiper.navigation.init();
6097
+        swiper.navigation.update();
6098
+      },
6099
+      toEdge: function toEdge(swiper) {
6100
+        swiper.navigation.update();
6101
+      },
6102
+      fromEdge: function fromEdge(swiper) {
6103
+        swiper.navigation.update();
6104
+      },
6105
+      destroy: function destroy(swiper) {
6106
+        swiper.navigation.destroy();
6107
+      },
6108
+      click: function click(swiper, e) {
6109
+        var _swiper$navigation3 = swiper.navigation,
6110
+            $nextEl = _swiper$navigation3.$nextEl,
6111
+            $prevEl = _swiper$navigation3.$prevEl;
6112
+
6113
+        if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {
6114
+          var isHidden;
6115
+
6116
+          if ($nextEl) {
6117
+            isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
6118
+          } else if ($prevEl) {
6119
+            isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
6120
+          }
6121
+
6122
+          if (isHidden === true) {
6123
+            swiper.emit('navigationShow');
6124
+          } else {
6125
+            swiper.emit('navigationHide');
6126
+          }
6127
+
6128
+          if ($nextEl) {
6129
+            $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
6130
+          }
6131
+
6132
+          if ($prevEl) {
6133
+            $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
6134
+          }
6135
+        }
6136
+      }
6137
+    }
6138
+  };
6139
+
6140
+  var Pagination = {
6141
+    update: function update() {
6142
+      // Render || Update Pagination bullets/items
6143
+      var swiper = this;
6144
+      var rtl = swiper.rtl;
6145
+      var params = swiper.params.pagination;
6146
+      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6147
+      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6148
+      var $el = swiper.pagination.$el; // Current/Total
6149
+
6150
+      var current;
6151
+      var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6152
+
6153
+      if (swiper.params.loop) {
6154
+        current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
6155
+
6156
+        if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
6157
+          current -= slidesLength - swiper.loopedSlides * 2;
6158
+        }
6159
+
6160
+        if (current > total - 1) current -= total;
6161
+        if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
6162
+      } else if (typeof swiper.snapIndex !== 'undefined') {
6163
+        current = swiper.snapIndex;
6164
+      } else {
6165
+        current = swiper.activeIndex || 0;
6166
+      } // Types
6167
+
6168
+
6169
+      if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
6170
+        var bullets = swiper.pagination.bullets;
6171
+        var firstIndex;
6172
+        var lastIndex;
6173
+        var midIndex;
6174
+
6175
+        if (params.dynamicBullets) {
6176
+          swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
6177
+          $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
6178
+
6179
+          if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
6180
+            swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
6181
+
6182
+            if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
6183
+              swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
6184
+            } else if (swiper.pagination.dynamicBulletIndex < 0) {
6185
+              swiper.pagination.dynamicBulletIndex = 0;
6186
+            }
6187
+          }
6188
+
6189
+          firstIndex = current - swiper.pagination.dynamicBulletIndex;
6190
+          lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
6191
+          midIndex = (lastIndex + firstIndex) / 2;
6192
+        }
6193
+
6194
+        bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
6195
+
6196
+        if ($el.length > 1) {
6197
+          bullets.each(function (bullet) {
6198
+            var $bullet = $(bullet);
6199
+            var bulletIndex = $bullet.index();
6200
+
6201
+            if (bulletIndex === current) {
6202
+              $bullet.addClass(params.bulletActiveClass);
6203
+            }
6204
+
6205
+            if (params.dynamicBullets) {
6206
+              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
6207
+                $bullet.addClass(params.bulletActiveClass + "-main");
6208
+              }
6209
+
6210
+              if (bulletIndex === firstIndex) {
6211
+                $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6212
+              }
6213
+
6214
+              if (bulletIndex === lastIndex) {
6215
+                $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6216
+              }
6217
+            }
6218
+          });
6219
+        } else {
6220
+          var $bullet = bullets.eq(current);
6221
+          var bulletIndex = $bullet.index();
6222
+          $bullet.addClass(params.bulletActiveClass);
6223
+
6224
+          if (params.dynamicBullets) {
6225
+            var $firstDisplayedBullet = bullets.eq(firstIndex);
6226
+            var $lastDisplayedBullet = bullets.eq(lastIndex);
6227
+
6228
+            for (var i = firstIndex; i <= lastIndex; i += 1) {
6229
+              bullets.eq(i).addClass(params.bulletActiveClass + "-main");
6230
+            }
6231
+
6232
+            if (swiper.params.loop) {
6233
+              if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
6234
+                for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
6235
+                  bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
6236
+                }
6237
+
6238
+                bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
6239
+              } else {
6240
+                $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6241
+                $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6242
+              }
6243
+            } else {
6244
+              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6245
+              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6246
+            }
6247
+          }
6248
+        }
6249
+
6250
+        if (params.dynamicBullets) {
6251
+          var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
6252
+          var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
6253
+          var offsetProp = rtl ? 'right' : 'left';
6254
+          bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
6255
+        }
6256
+      }
6257
+
6258
+      if (params.type === 'fraction') {
6259
+        $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
6260
+        $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
6261
+      }
6262
+
6263
+      if (params.type === 'progressbar') {
6264
+        var progressbarDirection;
6265
+
6266
+        if (params.progressbarOpposite) {
6267
+          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
6268
+        } else {
6269
+          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
6270
+        }
6271
+
6272
+        var scale = (current + 1) / total;
6273
+        var scaleX = 1;
6274
+        var scaleY = 1;
6275
+
6276
+        if (progressbarDirection === 'horizontal') {
6277
+          scaleX = scale;
6278
+        } else {
6279
+          scaleY = scale;
6280
+        }
6281
+
6282
+        $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
6283
+      }
6284
+
6285
+      if (params.type === 'custom' && params.renderCustom) {
6286
+        $el.html(params.renderCustom(swiper, current + 1, total));
6287
+        swiper.emit('paginationRender', $el[0]);
6288
+      } else {
6289
+        swiper.emit('paginationUpdate', $el[0]);
6290
+      }
6291
+
6292
+      $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6293
+    },
6294
+    render: function render() {
6295
+      // Render Container
6296
+      var swiper = this;
6297
+      var params = swiper.params.pagination;
6298
+      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6299
+      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6300
+      var $el = swiper.pagination.$el;
6301
+      var paginationHTML = '';
6302
+
6303
+      if (params.type === 'bullets') {
6304
+        var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6305
+
6306
+        for (var i = 0; i < numberOfBullets; i += 1) {
6307
+          if (params.renderBullet) {
6308
+            paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
6309
+          } else {
6310
+            paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
6311
+          }
6312
+        }
6313
+
6314
+        $el.html(paginationHTML);
6315
+        swiper.pagination.bullets = $el.find("." + params.bulletClass);
6316
+      }
6317
+
6318
+      if (params.type === 'fraction') {
6319
+        if (params.renderFraction) {
6320
+          paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
6321
+        } else {
6322
+          paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
6323
+        }
6324
+
6325
+        $el.html(paginationHTML);
6326
+      }
6327
+
6328
+      if (params.type === 'progressbar') {
6329
+        if (params.renderProgressbar) {
6330
+          paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
6331
+        } else {
6332
+          paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
6333
+        }
6334
+
6335
+        $el.html(paginationHTML);
6336
+      }
6337
+
6338
+      if (params.type !== 'custom') {
6339
+        swiper.emit('paginationRender', swiper.pagination.$el[0]);
6340
+      }
6341
+    },
6342
+    init: function init() {
6343
+      var swiper = this;
6344
+      var params = swiper.params.pagination;
6345
+      if (!params.el) return;
6346
+      var $el = $(params.el);
6347
+      if ($el.length === 0) return;
6348
+
6349
+      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
6350
+        $el = swiper.$el.find(params.el);
6351
+      }
6352
+
6353
+      if (params.type === 'bullets' && params.clickable) {
6354
+        $el.addClass(params.clickableClass);
6355
+      }
6356
+
6357
+      $el.addClass(params.modifierClass + params.type);
6358
+
6359
+      if (params.type === 'bullets' && params.dynamicBullets) {
6360
+        $el.addClass("" + params.modifierClass + params.type + "-dynamic");
6361
+        swiper.pagination.dynamicBulletIndex = 0;
6362
+
6363
+        if (params.dynamicMainBullets < 1) {
6364
+          params.dynamicMainBullets = 1;
6365
+        }
6366
+      }
6367
+
6368
+      if (params.type === 'progressbar' && params.progressbarOpposite) {
6369
+        $el.addClass(params.progressbarOppositeClass);
6370
+      }
6371
+
6372
+      if (params.clickable) {
6373
+        $el.on('click', "." + params.bulletClass, function onClick(e) {
6374
+          e.preventDefault();
6375
+          var index = $(this).index() * swiper.params.slidesPerGroup;
6376
+          if (swiper.params.loop) index += swiper.loopedSlides;
6377
+          swiper.slideTo(index);
6378
+        });
6379
+      }
6380
+
6381
+      extend$1(swiper.pagination, {
6382
+        $el: $el,
6383
+        el: $el[0]
6384
+      });
6385
+    },
6386
+    destroy: function destroy() {
6387
+      var swiper = this;
6388
+      var params = swiper.params.pagination;
6389
+      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6390
+      var $el = swiper.pagination.$el;
6391
+      $el.removeClass(params.hiddenClass);
6392
+      $el.removeClass(params.modifierClass + params.type);
6393
+      if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
6394
+
6395
+      if (params.clickable) {
6396
+        $el.off('click', "." + params.bulletClass);
6397
+      }
6398
+    }
6399
+  };
6400
+  var Pagination$1 = {
6401
+    name: 'pagination',
6402
+    params: {
6403
+      pagination: {
6404
+        el: null,
6405
+        bulletElement: 'span',
6406
+        clickable: false,
6407
+        hideOnClick: false,
6408
+        renderBullet: null,
6409
+        renderProgressbar: null,
6410
+        renderFraction: null,
6411
+        renderCustom: null,
6412
+        progressbarOpposite: false,
6413
+        type: 'bullets',
6414
+        // 'bullets' or 'progressbar' or 'fraction' or 'custom'
6415
+        dynamicBullets: false,
6416
+        dynamicMainBullets: 1,
6417
+        formatFractionCurrent: function formatFractionCurrent(number) {
6418
+          return number;
6419
+        },
6420
+        formatFractionTotal: function formatFractionTotal(number) {
6421
+          return number;
6422
+        },
6423
+        bulletClass: 'swiper-pagination-bullet',
6424
+        bulletActiveClass: 'swiper-pagination-bullet-active',
6425
+        modifierClass: 'swiper-pagination-',
6426
+        // NEW
6427
+        currentClass: 'swiper-pagination-current',
6428
+        totalClass: 'swiper-pagination-total',
6429
+        hiddenClass: 'swiper-pagination-hidden',
6430
+        progressbarFillClass: 'swiper-pagination-progressbar-fill',
6431
+        progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
6432
+        clickableClass: 'swiper-pagination-clickable',
6433
+        // NEW
6434
+        lockClass: 'swiper-pagination-lock'
6435
+      }
6436
+    },
6437
+    create: function create() {
6438
+      var swiper = this;
6439
+      bindModuleMethods(swiper, {
6440
+        pagination: _extends({
6441
+          dynamicBulletIndex: 0
6442
+        }, Pagination)
6443
+      });
6444
+    },
6445
+    on: {
6446
+      init: function init(swiper) {
6447
+        swiper.pagination.init();
6448
+        swiper.pagination.render();
6449
+        swiper.pagination.update();
6450
+      },
6451
+      activeIndexChange: function activeIndexChange(swiper) {
6452
+        if (swiper.params.loop) {
6453
+          swiper.pagination.update();
6454
+        } else if (typeof swiper.snapIndex === 'undefined') {
6455
+          swiper.pagination.update();
6456
+        }
6457
+      },
6458
+      snapIndexChange: function snapIndexChange(swiper) {
6459
+        if (!swiper.params.loop) {
6460
+          swiper.pagination.update();
6461
+        }
6462
+      },
6463
+      slidesLengthChange: function slidesLengthChange(swiper) {
6464
+        if (swiper.params.loop) {
6465
+          swiper.pagination.render();
6466
+          swiper.pagination.update();
6467
+        }
6468
+      },
6469
+      snapGridLengthChange: function snapGridLengthChange(swiper) {
6470
+        if (!swiper.params.loop) {
6471
+          swiper.pagination.render();
6472
+          swiper.pagination.update();
6473
+        }
6474
+      },
6475
+      destroy: function destroy(swiper) {
6476
+        swiper.pagination.destroy();
6477
+      },
6478
+      click: function click(swiper, e) {
6479
+        if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {
6480
+          var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
6481
+
6482
+          if (isHidden === true) {
6483
+            swiper.emit('paginationShow');
6484
+          } else {
6485
+            swiper.emit('paginationHide');
6486
+          }
6487
+
6488
+          swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
6489
+        }
6490
+      }
6491
+    }
6492
+  };
6493
+
6494
+  var Scrollbar = {
6495
+    setTranslate: function setTranslate() {
6496
+      var swiper = this;
6497
+      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6498
+      var scrollbar = swiper.scrollbar,
6499
+          rtl = swiper.rtlTranslate,
6500
+          progress = swiper.progress;
6501
+      var dragSize = scrollbar.dragSize,
6502
+          trackSize = scrollbar.trackSize,
6503
+          $dragEl = scrollbar.$dragEl,
6504
+          $el = scrollbar.$el;
6505
+      var params = swiper.params.scrollbar;
6506
+      var newSize = dragSize;
6507
+      var newPos = (trackSize - dragSize) * progress;
6508
+
6509
+      if (rtl) {
6510
+        newPos = -newPos;
6511
+
6512
+        if (newPos > 0) {
6513
+          newSize = dragSize - newPos;
6514
+          newPos = 0;
6515
+        } else if (-newPos + dragSize > trackSize) {
6516
+          newSize = trackSize + newPos;
6517
+        }
6518
+      } else if (newPos < 0) {
6519
+        newSize = dragSize + newPos;
6520
+        newPos = 0;
6521
+      } else if (newPos + dragSize > trackSize) {
6522
+        newSize = trackSize - newPos;
6523
+      }
6524
+
6525
+      if (swiper.isHorizontal()) {
6526
+        $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
6527
+        $dragEl[0].style.width = newSize + "px";
6528
+      } else {
6529
+        $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
6530
+        $dragEl[0].style.height = newSize + "px";
6531
+      }
6532
+
6533
+      if (params.hide) {
6534
+        clearTimeout(swiper.scrollbar.timeout);
6535
+        $el[0].style.opacity = 1;
6536
+        swiper.scrollbar.timeout = setTimeout(function () {
6537
+          $el[0].style.opacity = 0;
6538
+          $el.transition(400);
6539
+        }, 1000);
6540
+      }
6541
+    },
6542
+    setTransition: function setTransition(duration) {
6543
+      var swiper = this;
6544
+      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6545
+      swiper.scrollbar.$dragEl.transition(duration);
6546
+    },
6547
+    updateSize: function updateSize() {
6548
+      var swiper = this;
6549
+      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6550
+      var scrollbar = swiper.scrollbar;
6551
+      var $dragEl = scrollbar.$dragEl,
6552
+          $el = scrollbar.$el;
6553
+      $dragEl[0].style.width = '';
6554
+      $dragEl[0].style.height = '';
6555
+      var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
6556
+      var divider = swiper.size / swiper.virtualSize;
6557
+      var moveDivider = divider * (trackSize / swiper.size);
6558
+      var dragSize;
6559
+
6560
+      if (swiper.params.scrollbar.dragSize === 'auto') {
6561
+        dragSize = trackSize * divider;
6562
+      } else {
6563
+        dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
6564
+      }
6565
+
6566
+      if (swiper.isHorizontal()) {
6567
+        $dragEl[0].style.width = dragSize + "px";
6568
+      } else {
6569
+        $dragEl[0].style.height = dragSize + "px";
6570
+      }
6571
+
6572
+      if (divider >= 1) {
6573
+        $el[0].style.display = 'none';
6574
+      } else {
6575
+        $el[0].style.display = '';
6576
+      }
6577
+
6578
+      if (swiper.params.scrollbar.hide) {
6579
+        $el[0].style.opacity = 0;
6580
+      }
6581
+
6582
+      extend$1(scrollbar, {
6583
+        trackSize: trackSize,
6584
+        divider: divider,
6585
+        moveDivider: moveDivider,
6586
+        dragSize: dragSize
6587
+      });
6588
+      scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
6589
+    },
6590
+    getPointerPosition: function getPointerPosition(e) {
6591
+      var swiper = this;
6592
+
6593
+      if (swiper.isHorizontal()) {
6594
+        return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
6595
+      }
6596
+
6597
+      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
6598
+    },
6599
+    setDragPosition: function setDragPosition(e) {
6600
+      var swiper = this;
6601
+      var scrollbar = swiper.scrollbar,
6602
+          rtl = swiper.rtlTranslate;
6603
+      var $el = scrollbar.$el,
6604
+          dragSize = scrollbar.dragSize,
6605
+          trackSize = scrollbar.trackSize,
6606
+          dragStartPos = scrollbar.dragStartPos;
6607
+      var positionRatio;
6608
+      positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
6609
+      positionRatio = Math.max(Math.min(positionRatio, 1), 0);
6610
+
6611
+      if (rtl) {
6612
+        positionRatio = 1 - positionRatio;
6613
+      }
6614
+
6615
+      var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
6616
+      swiper.updateProgress(position);
6617
+      swiper.setTranslate(position);
6618
+      swiper.updateActiveIndex();
6619
+      swiper.updateSlidesClasses();
6620
+    },
6621
+    onDragStart: function onDragStart(e) {
6622
+      var swiper = this;
6623
+      var params = swiper.params.scrollbar;
6624
+      var scrollbar = swiper.scrollbar,
6625
+          $wrapperEl = swiper.$wrapperEl;
6626
+      var $el = scrollbar.$el,
6627
+          $dragEl = scrollbar.$dragEl;
6628
+      swiper.scrollbar.isTouched = true;
6629
+      swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
6630
+      e.preventDefault();
6631
+      e.stopPropagation();
6632
+      $wrapperEl.transition(100);
6633
+      $dragEl.transition(100);
6634
+      scrollbar.setDragPosition(e);
6635
+      clearTimeout(swiper.scrollbar.dragTimeout);
6636
+      $el.transition(0);
6637
+
6638
+      if (params.hide) {
6639
+        $el.css('opacity', 1);
6640
+      }
6641
+
6642
+      if (swiper.params.cssMode) {
6643
+        swiper.$wrapperEl.css('scroll-snap-type', 'none');
6644
+      }
6645
+
6646
+      swiper.emit('scrollbarDragStart', e);
6647
+    },
6648
+    onDragMove: function onDragMove(e) {
6649
+      var swiper = this;
6650
+      var scrollbar = swiper.scrollbar,
6651
+          $wrapperEl = swiper.$wrapperEl;
6652
+      var $el = scrollbar.$el,
6653
+          $dragEl = scrollbar.$dragEl;
6654
+      if (!swiper.scrollbar.isTouched) return;
6655
+      if (e.preventDefault) e.preventDefault();else e.returnValue = false;
6656
+      scrollbar.setDragPosition(e);
6657
+      $wrapperEl.transition(0);
6658
+      $el.transition(0);
6659
+      $dragEl.transition(0);
6660
+      swiper.emit('scrollbarDragMove', e);
6661
+    },
6662
+    onDragEnd: function onDragEnd(e) {
6663
+      var swiper = this;
6664
+      var params = swiper.params.scrollbar;
6665
+      var scrollbar = swiper.scrollbar,
6666
+          $wrapperEl = swiper.$wrapperEl;
6667
+      var $el = scrollbar.$el;
6668
+      if (!swiper.scrollbar.isTouched) return;
6669
+      swiper.scrollbar.isTouched = false;
6670
+
6671
+      if (swiper.params.cssMode) {
6672
+        swiper.$wrapperEl.css('scroll-snap-type', '');
6673
+        $wrapperEl.transition('');
6674
+      }
6675
+
6676
+      if (params.hide) {
6677
+        clearTimeout(swiper.scrollbar.dragTimeout);
6678
+        swiper.scrollbar.dragTimeout = nextTick(function () {
6679
+          $el.css('opacity', 0);
6680
+          $el.transition(400);
6681
+        }, 1000);
6682
+      }
6683
+
6684
+      swiper.emit('scrollbarDragEnd', e);
6685
+
6686
+      if (params.snapOnRelease) {
6687
+        swiper.slideToClosest();
6688
+      }
6689
+    },
6690
+    enableDraggable: function enableDraggable() {
6691
+      var swiper = this;
6692
+      if (!swiper.params.scrollbar.el) return;
6693
+      var document = getDocument();
6694
+      var scrollbar = swiper.scrollbar,
6695
+          touchEventsTouch = swiper.touchEventsTouch,
6696
+          touchEventsDesktop = swiper.touchEventsDesktop,
6697
+          params = swiper.params,
6698
+          support = swiper.support;
6699
+      var $el = scrollbar.$el;
6700
+      var target = $el[0];
6701
+      var activeListener = support.passiveListener && params.passiveListeners ? {
6702
+        passive: false,
6703
+        capture: false
6704
+      } : false;
6705
+      var passiveListener = support.passiveListener && params.passiveListeners ? {
6706
+        passive: true,
6707
+        capture: false
6708
+      } : false;
6709
+
6710
+      if (!support.touch) {
6711
+        target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6712
+        document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6713
+        document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6714
+      } else {
6715
+        target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6716
+        target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6717
+        target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6718
+      }
6719
+    },
6720
+    disableDraggable: function disableDraggable() {
6721
+      var swiper = this;
6722
+      if (!swiper.params.scrollbar.el) return;
6723
+      var document = getDocument();
6724
+      var scrollbar = swiper.scrollbar,
6725
+          touchEventsTouch = swiper.touchEventsTouch,
6726
+          touchEventsDesktop = swiper.touchEventsDesktop,
6727
+          params = swiper.params,
6728
+          support = swiper.support;
6729
+      var $el = scrollbar.$el;
6730
+      var target = $el[0];
6731
+      var activeListener = support.passiveListener && params.passiveListeners ? {
6732
+        passive: false,
6733
+        capture: false
6734
+      } : false;
6735
+      var passiveListener = support.passiveListener && params.passiveListeners ? {
6736
+        passive: true,
6737
+        capture: false
6738
+      } : false;
6739
+
6740
+      if (!support.touch) {
6741
+        target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6742
+        document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6743
+        document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6744
+      } else {
6745
+        target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6746
+        target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6747
+        target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6748
+      }
6749
+    },
6750
+    init: function init() {
6751
+      var swiper = this;
6752
+      if (!swiper.params.scrollbar.el) return;
6753
+      var scrollbar = swiper.scrollbar,
6754
+          $swiperEl = swiper.$el;
6755
+      var params = swiper.params.scrollbar;
6756
+      var $el = $(params.el);
6757
+
6758
+      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
6759
+        $el = $swiperEl.find(params.el);
6760
+      }
6761
+
6762
+      var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
6763
+
6764
+      if ($dragEl.length === 0) {
6765
+        $dragEl = $("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
6766
+        $el.append($dragEl);
6767
+      }
6768
+
6769
+      extend$1(scrollbar, {
6770
+        $el: $el,
6771
+        el: $el[0],
6772
+        $dragEl: $dragEl,
6773
+        dragEl: $dragEl[0]
6774
+      });
6775
+
6776
+      if (params.draggable) {
6777
+        scrollbar.enableDraggable();
6778
+      }
6779
+    },
6780
+    destroy: function destroy() {
6781
+      var swiper = this;
6782
+      swiper.scrollbar.disableDraggable();
6783
+    }
6784
+  };
6785
+  var Scrollbar$1 = {
6786
+    name: 'scrollbar',
6787
+    params: {
6788
+      scrollbar: {
6789
+        el: null,
6790
+        dragSize: 'auto',
6791
+        hide: false,
6792
+        draggable: false,
6793
+        snapOnRelease: true,
6794
+        lockClass: 'swiper-scrollbar-lock',
6795
+        dragClass: 'swiper-scrollbar-drag'
6796
+      }
6797
+    },
6798
+    create: function create() {
6799
+      var swiper = this;
6800
+      bindModuleMethods(swiper, {
6801
+        scrollbar: _extends({
6802
+          isTouched: false,
6803
+          timeout: null,
6804
+          dragTimeout: null
6805
+        }, Scrollbar)
6806
+      });
6807
+    },
6808
+    on: {
6809
+      init: function init(swiper) {
6810
+        swiper.scrollbar.init();
6811
+        swiper.scrollbar.updateSize();
6812
+        swiper.scrollbar.setTranslate();
6813
+      },
6814
+      update: function update(swiper) {
6815
+        swiper.scrollbar.updateSize();
6816
+      },
6817
+      resize: function resize(swiper) {
6818
+        swiper.scrollbar.updateSize();
6819
+      },
6820
+      observerUpdate: function observerUpdate(swiper) {
6821
+        swiper.scrollbar.updateSize();
6822
+      },
6823
+      setTranslate: function setTranslate(swiper) {
6824
+        swiper.scrollbar.setTranslate();
6825
+      },
6826
+      setTransition: function setTransition(swiper, duration) {
6827
+        swiper.scrollbar.setTransition(duration);
6828
+      },
6829
+      destroy: function destroy(swiper) {
6830
+        swiper.scrollbar.destroy();
6831
+      }
6832
+    }
6833
+  };
6834
+
6835
+  var Parallax = {
6836
+    setTransform: function setTransform(el, progress) {
6837
+      var swiper = this;
6838
+      var rtl = swiper.rtl;
6839
+      var $el = $(el);
6840
+      var rtlFactor = rtl ? -1 : 1;
6841
+      var p = $el.attr('data-swiper-parallax') || '0';
6842
+      var x = $el.attr('data-swiper-parallax-x');
6843
+      var y = $el.attr('data-swiper-parallax-y');
6844
+      var scale = $el.attr('data-swiper-parallax-scale');
6845
+      var opacity = $el.attr('data-swiper-parallax-opacity');
6846
+
6847
+      if (x || y) {
6848
+        x = x || '0';
6849
+        y = y || '0';
6850
+      } else if (swiper.isHorizontal()) {
6851
+        x = p;
6852
+        y = '0';
6853
+      } else {
6854
+        y = p;
6855
+        x = '0';
6856
+      }
6857
+
6858
+      if (x.indexOf('%') >= 0) {
6859
+        x = parseInt(x, 10) * progress * rtlFactor + "%";
6860
+      } else {
6861
+        x = x * progress * rtlFactor + "px";
6862
+      }
6863
+
6864
+      if (y.indexOf('%') >= 0) {
6865
+        y = parseInt(y, 10) * progress + "%";
6866
+      } else {
6867
+        y = y * progress + "px";
6868
+      }
6869
+
6870
+      if (typeof opacity !== 'undefined' && opacity !== null) {
6871
+        var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
6872
+        $el[0].style.opacity = currentOpacity;
6873
+      }
6874
+
6875
+      if (typeof scale === 'undefined' || scale === null) {
6876
+        $el.transform("translate3d(" + x + ", " + y + ", 0px)");
6877
+      } else {
6878
+        var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
6879
+        $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
6880
+      }
6881
+    },
6882
+    setTranslate: function setTranslate() {
6883
+      var swiper = this;
6884
+      var $el = swiper.$el,
6885
+          slides = swiper.slides,
6886
+          progress = swiper.progress,
6887
+          snapGrid = swiper.snapGrid;
6888
+      $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
6889
+        swiper.parallax.setTransform(el, progress);
6890
+      });
6891
+      slides.each(function (slideEl, slideIndex) {
6892
+        var slideProgress = slideEl.progress;
6893
+
6894
+        if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
6895
+          slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
6896
+        }
6897
+
6898
+        slideProgress = Math.min(Math.max(slideProgress, -1), 1);
6899
+        $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
6900
+          swiper.parallax.setTransform(el, slideProgress);
6901
+        });
6902
+      });
6903
+    },
6904
+    setTransition: function setTransition(duration) {
6905
+      if (duration === void 0) {
6906
+        duration = this.params.speed;
6907
+      }
6908
+
6909
+      var swiper = this;
6910
+      var $el = swiper.$el;
6911
+      $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
6912
+        var $parallaxEl = $(parallaxEl);
6913
+        var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
6914
+        if (duration === 0) parallaxDuration = 0;
6915
+        $parallaxEl.transition(parallaxDuration);
6916
+      });
6917
+    }
6918
+  };
6919
+  var Parallax$1 = {
6920
+    name: 'parallax',
6921
+    params: {
6922
+      parallax: {
6923
+        enabled: false
6924
+      }
6925
+    },
6926
+    create: function create() {
6927
+      var swiper = this;
6928
+      bindModuleMethods(swiper, {
6929
+        parallax: _extends({}, Parallax)
6930
+      });
6931
+    },
6932
+    on: {
6933
+      beforeInit: function beforeInit(swiper) {
6934
+        if (!swiper.params.parallax.enabled) return;
6935
+        swiper.params.watchSlidesProgress = true;
6936
+        swiper.originalParams.watchSlidesProgress = true;
6937
+      },
6938
+      init: function init(swiper) {
6939
+        if (!swiper.params.parallax.enabled) return;
6940
+        swiper.parallax.setTranslate();
6941
+      },
6942
+      setTranslate: function setTranslate(swiper) {
6943
+        if (!swiper.params.parallax.enabled) return;
6944
+        swiper.parallax.setTranslate();
6945
+      },
6946
+      setTransition: function setTransition(swiper, duration) {
6947
+        if (!swiper.params.parallax.enabled) return;
6948
+        swiper.parallax.setTransition(duration);
6949
+      }
6950
+    }
6951
+  };
6952
+
6953
+  var Zoom = {
6954
+    // Calc Scale From Multi-touches
6955
+    getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
6956
+      if (e.targetTouches.length < 2) return 1;
6957
+      var x1 = e.targetTouches[0].pageX;
6958
+      var y1 = e.targetTouches[0].pageY;
6959
+      var x2 = e.targetTouches[1].pageX;
6960
+      var y2 = e.targetTouches[1].pageY;
6961
+      var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
6962
+      return distance;
6963
+    },
6964
+    // Events
6965
+    onGestureStart: function onGestureStart(e) {
6966
+      var swiper = this;
6967
+      var support = swiper.support;
6968
+      var params = swiper.params.zoom;
6969
+      var zoom = swiper.zoom;
6970
+      var gesture = zoom.gesture;
6971
+      zoom.fakeGestureTouched = false;
6972
+      zoom.fakeGestureMoved = false;
6973
+
6974
+      if (!support.gestures) {
6975
+        if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
6976
+          return;
6977
+        }
6978
+
6979
+        zoom.fakeGestureTouched = true;
6980
+        gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
6981
+      }
6982
+
6983
+      if (!gesture.$slideEl || !gesture.$slideEl.length) {
6984
+        gesture.$slideEl = $(e.target).closest("." + swiper.params.slideClass);
6985
+        if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6986
+        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6987
+        gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
6988
+        gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6989
+
6990
+        if (gesture.$imageWrapEl.length === 0) {
6991
+          gesture.$imageEl = undefined;
6992
+          return;
6993
+        }
6994
+      }
6995
+
6996
+      if (gesture.$imageEl) {
6997
+        gesture.$imageEl.transition(0);
6998
+      }
6999
+
7000
+      swiper.zoom.isScaling = true;
7001
+    },
7002
+    onGestureChange: function onGestureChange(e) {
7003
+      var swiper = this;
7004
+      var support = swiper.support;
7005
+      var params = swiper.params.zoom;
7006
+      var zoom = swiper.zoom;
7007
+      var gesture = zoom.gesture;
7008
+
7009
+      if (!support.gestures) {
7010
+        if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
7011
+          return;
7012
+        }
7013
+
7014
+        zoom.fakeGestureMoved = true;
7015
+        gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
7016
+      }
7017
+
7018
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
7019
+        if (e.type === 'gesturechange') zoom.onGestureStart(e);
7020
+        return;
7021
+      }
7022
+
7023
+      if (support.gestures) {
7024
+        zoom.scale = e.scale * zoom.currentScale;
7025
+      } else {
7026
+        zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
7027
+      }
7028
+
7029
+      if (zoom.scale > gesture.maxRatio) {
7030
+        zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
7031
+      }
7032
+
7033
+      if (zoom.scale < params.minRatio) {
7034
+        zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
7035
+      }
7036
+
7037
+      gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7038
+    },
7039
+    onGestureEnd: function onGestureEnd(e) {
7040
+      var swiper = this;
7041
+      var device = swiper.device;
7042
+      var support = swiper.support;
7043
+      var params = swiper.params.zoom;
7044
+      var zoom = swiper.zoom;
7045
+      var gesture = zoom.gesture;
7046
+
7047
+      if (!support.gestures) {
7048
+        if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
7049
+          return;
7050
+        }
7051
+
7052
+        if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
7053
+          return;
7054
+        }
7055
+
7056
+        zoom.fakeGestureTouched = false;
7057
+        zoom.fakeGestureMoved = false;
7058
+      }
7059
+
7060
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7061
+      zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
7062
+      gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7063
+      zoom.currentScale = zoom.scale;
7064
+      zoom.isScaling = false;
7065
+      if (zoom.scale === 1) gesture.$slideEl = undefined;
7066
+    },
7067
+    onTouchStart: function onTouchStart(e) {
7068
+      var swiper = this;
7069
+      var device = swiper.device;
7070
+      var zoom = swiper.zoom;
7071
+      var gesture = zoom.gesture,
7072
+          image = zoom.image;
7073
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7074
+      if (image.isTouched) return;
7075
+      if (device.android && e.cancelable) e.preventDefault();
7076
+      image.isTouched = true;
7077
+      image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
7078
+      image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
7079
+    },
7080
+    onTouchMove: function onTouchMove(e) {
7081
+      var swiper = this;
7082
+      var zoom = swiper.zoom;
7083
+      var gesture = zoom.gesture,
7084
+          image = zoom.image,
7085
+          velocity = zoom.velocity;
7086
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7087
+      swiper.allowClick = false;
7088
+      if (!image.isTouched || !gesture.$slideEl) return;
7089
+
7090
+      if (!image.isMoved) {
7091
+        image.width = gesture.$imageEl[0].offsetWidth;
7092
+        image.height = gesture.$imageEl[0].offsetHeight;
7093
+        image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
7094
+        image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
7095
+        gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
7096
+        gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
7097
+        gesture.$imageWrapEl.transition(0);
7098
+
7099
+        if (swiper.rtl) {
7100
+          image.startX = -image.startX;
7101
+          image.startY = -image.startY;
7102
+        }
7103
+      } // Define if we need image drag
7104
+
7105
+
7106
+      var scaledWidth = image.width * zoom.scale;
7107
+      var scaledHeight = image.height * zoom.scale;
7108
+      if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
7109
+      image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7110
+      image.maxX = -image.minX;
7111
+      image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7112
+      image.maxY = -image.minY;
7113
+      image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
7114
+      image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
7115
+
7116
+      if (!image.isMoved && !zoom.isScaling) {
7117
+        if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
7118
+          image.isTouched = false;
7119
+          return;
7120
+        }
7121
+
7122
+        if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
7123
+          image.isTouched = false;
7124
+          return;
7125
+        }
7126
+      }
7127
+
7128
+      if (e.cancelable) {
7129
+        e.preventDefault();
7130
+      }
7131
+
7132
+      e.stopPropagation();
7133
+      image.isMoved = true;
7134
+      image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
7135
+      image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
7136
+
7137
+      if (image.currentX < image.minX) {
7138
+        image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
7139
+      }
7140
+
7141
+      if (image.currentX > image.maxX) {
7142
+        image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
7143
+      }
7144
+
7145
+      if (image.currentY < image.minY) {
7146
+        image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
7147
+      }
7148
+
7149
+      if (image.currentY > image.maxY) {
7150
+        image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
7151
+      } // Velocity
7152
+
7153
+
7154
+      if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
7155
+      if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
7156
+      if (!velocity.prevTime) velocity.prevTime = Date.now();
7157
+      velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
7158
+      velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
7159
+      if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
7160
+      if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
7161
+      velocity.prevPositionX = image.touchesCurrent.x;
7162
+      velocity.prevPositionY = image.touchesCurrent.y;
7163
+      velocity.prevTime = Date.now();
7164
+      gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7165
+    },
7166
+    onTouchEnd: function onTouchEnd() {
7167
+      var swiper = this;
7168
+      var zoom = swiper.zoom;
7169
+      var gesture = zoom.gesture,
7170
+          image = zoom.image,
7171
+          velocity = zoom.velocity;
7172
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7173
+
7174
+      if (!image.isTouched || !image.isMoved) {
7175
+        image.isTouched = false;
7176
+        image.isMoved = false;
7177
+        return;
7178
+      }
7179
+
7180
+      image.isTouched = false;
7181
+      image.isMoved = false;
7182
+      var momentumDurationX = 300;
7183
+      var momentumDurationY = 300;
7184
+      var momentumDistanceX = velocity.x * momentumDurationX;
7185
+      var newPositionX = image.currentX + momentumDistanceX;
7186
+      var momentumDistanceY = velocity.y * momentumDurationY;
7187
+      var newPositionY = image.currentY + momentumDistanceY; // Fix duration
7188
+
7189
+      if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
7190
+      if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
7191
+      var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
7192
+      image.currentX = newPositionX;
7193
+      image.currentY = newPositionY; // Define if we need image drag
7194
+
7195
+      var scaledWidth = image.width * zoom.scale;
7196
+      var scaledHeight = image.height * zoom.scale;
7197
+      image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7198
+      image.maxX = -image.minX;
7199
+      image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7200
+      image.maxY = -image.minY;
7201
+      image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
7202
+      image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
7203
+      gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7204
+    },
7205
+    onTransitionEnd: function onTransitionEnd() {
7206
+      var swiper = this;
7207
+      var zoom = swiper.zoom;
7208
+      var gesture = zoom.gesture;
7209
+
7210
+      if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
7211
+        if (gesture.$imageEl) {
7212
+          gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
7213
+        }
7214
+
7215
+        if (gesture.$imageWrapEl) {
7216
+          gesture.$imageWrapEl.transform('translate3d(0,0,0)');
7217
+        }
7218
+
7219
+        zoom.scale = 1;
7220
+        zoom.currentScale = 1;
7221
+        gesture.$slideEl = undefined;
7222
+        gesture.$imageEl = undefined;
7223
+        gesture.$imageWrapEl = undefined;
7224
+      }
7225
+    },
7226
+    // Toggle Zoom
7227
+    toggle: function toggle(e) {
7228
+      var swiper = this;
7229
+      var zoom = swiper.zoom;
7230
+
7231
+      if (zoom.scale && zoom.scale !== 1) {
7232
+        // Zoom Out
7233
+        zoom.out();
7234
+      } else {
7235
+        // Zoom In
7236
+        zoom.in(e);
7237
+      }
7238
+    },
7239
+    in: function _in(e) {
7240
+      var swiper = this;
7241
+      var zoom = swiper.zoom;
7242
+      var params = swiper.params.zoom;
7243
+      var gesture = zoom.gesture,
7244
+          image = zoom.image;
7245
+
7246
+      if (!gesture.$slideEl) {
7247
+        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7248
+          gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7249
+        } else {
7250
+          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7251
+        }
7252
+
7253
+        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7254
+        gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7255
+      }
7256
+
7257
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7258
+      gesture.$slideEl.addClass("" + params.zoomedSlideClass);
7259
+      var touchX;
7260
+      var touchY;
7261
+      var offsetX;
7262
+      var offsetY;
7263
+      var diffX;
7264
+      var diffY;
7265
+      var translateX;
7266
+      var translateY;
7267
+      var imageWidth;
7268
+      var imageHeight;
7269
+      var scaledWidth;
7270
+      var scaledHeight;
7271
+      var translateMinX;
7272
+      var translateMinY;
7273
+      var translateMaxX;
7274
+      var translateMaxY;
7275
+      var slideWidth;
7276
+      var slideHeight;
7277
+
7278
+      if (typeof image.touchesStart.x === 'undefined' && e) {
7279
+        touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
7280
+        touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
7281
+      } else {
7282
+        touchX = image.touchesStart.x;
7283
+        touchY = image.touchesStart.y;
7284
+      }
7285
+
7286
+      zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7287
+      zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7288
+
7289
+      if (e) {
7290
+        slideWidth = gesture.$slideEl[0].offsetWidth;
7291
+        slideHeight = gesture.$slideEl[0].offsetHeight;
7292
+        offsetX = gesture.$slideEl.offset().left;
7293
+        offsetY = gesture.$slideEl.offset().top;
7294
+        diffX = offsetX + slideWidth / 2 - touchX;
7295
+        diffY = offsetY + slideHeight / 2 - touchY;
7296
+        imageWidth = gesture.$imageEl[0].offsetWidth;
7297
+        imageHeight = gesture.$imageEl[0].offsetHeight;
7298
+        scaledWidth = imageWidth * zoom.scale;
7299
+        scaledHeight = imageHeight * zoom.scale;
7300
+        translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
7301
+        translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
7302
+        translateMaxX = -translateMinX;
7303
+        translateMaxY = -translateMinY;
7304
+        translateX = diffX * zoom.scale;
7305
+        translateY = diffY * zoom.scale;
7306
+
7307
+        if (translateX < translateMinX) {
7308
+          translateX = translateMinX;
7309
+        }
7310
+
7311
+        if (translateX > translateMaxX) {
7312
+          translateX = translateMaxX;
7313
+        }
7314
+
7315
+        if (translateY < translateMinY) {
7316
+          translateY = translateMinY;
7317
+        }
7318
+
7319
+        if (translateY > translateMaxY) {
7320
+          translateY = translateMaxY;
7321
+        }
7322
+      } else {
7323
+        translateX = 0;
7324
+        translateY = 0;
7325
+      }
7326
+
7327
+      gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
7328
+      gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7329
+    },
7330
+    out: function out() {
7331
+      var swiper = this;
7332
+      var zoom = swiper.zoom;
7333
+      var params = swiper.params.zoom;
7334
+      var gesture = zoom.gesture;
7335
+
7336
+      if (!gesture.$slideEl) {
7337
+        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7338
+          gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7339
+        } else {
7340
+          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7341
+        }
7342
+
7343
+        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7344
+        gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7345
+      }
7346
+
7347
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7348
+      zoom.scale = 1;
7349
+      zoom.currentScale = 1;
7350
+      gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
7351
+      gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
7352
+      gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
7353
+      gesture.$slideEl = undefined;
7354
+    },
7355
+    toggleGestures: function toggleGestures(method) {
7356
+      var swiper = this;
7357
+      var zoom = swiper.zoom;
7358
+      var selector = zoom.slideSelector,
7359
+          passive = zoom.passiveListener;
7360
+      swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
7361
+      swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
7362
+      swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
7363
+    },
7364
+    enableGestures: function enableGestures() {
7365
+      if (this.zoom.gesturesEnabled) return;
7366
+      this.zoom.gesturesEnabled = true;
7367
+      this.zoom.toggleGestures('on');
7368
+    },
7369
+    disableGestures: function disableGestures() {
7370
+      if (!this.zoom.gesturesEnabled) return;
7371
+      this.zoom.gesturesEnabled = false;
7372
+      this.zoom.toggleGestures('off');
7373
+    },
7374
+    // Attach/Detach Events
7375
+    enable: function enable() {
7376
+      var swiper = this;
7377
+      var support = swiper.support;
7378
+      var zoom = swiper.zoom;
7379
+      if (zoom.enabled) return;
7380
+      zoom.enabled = true;
7381
+      var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7382
+        passive: true,
7383
+        capture: false
7384
+      } : false;
7385
+      var activeListenerWithCapture = support.passiveListener ? {
7386
+        passive: false,
7387
+        capture: true
7388
+      } : true;
7389
+      var slideSelector = "." + swiper.params.slideClass;
7390
+      swiper.zoom.passiveListener = passiveListener;
7391
+      swiper.zoom.slideSelector = slideSelector; // Scale image
7392
+
7393
+      if (support.gestures) {
7394
+        swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7395
+        swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7396
+      } else if (swiper.touchEvents.start === 'touchstart') {
7397
+        swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7398
+        swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7399
+        swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7400
+
7401
+        if (swiper.touchEvents.cancel) {
7402
+          swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7403
+        }
7404
+      } // Move image
7405
+
7406
+
7407
+      swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7408
+    },
7409
+    disable: function disable() {
7410
+      var swiper = this;
7411
+      var zoom = swiper.zoom;
7412
+      if (!zoom.enabled) return;
7413
+      var support = swiper.support;
7414
+      swiper.zoom.enabled = false;
7415
+      var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7416
+        passive: true,
7417
+        capture: false
7418
+      } : false;
7419
+      var activeListenerWithCapture = support.passiveListener ? {
7420
+        passive: false,
7421
+        capture: true
7422
+      } : true;
7423
+      var slideSelector = "." + swiper.params.slideClass; // Scale image
7424
+
7425
+      if (support.gestures) {
7426
+        swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7427
+        swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7428
+      } else if (swiper.touchEvents.start === 'touchstart') {
7429
+        swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7430
+        swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7431
+        swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7432
+
7433
+        if (swiper.touchEvents.cancel) {
7434
+          swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7435
+        }
7436
+      } // Move image
7437
+
7438
+
7439
+      swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7440
+    }
7441
+  };
7442
+  var Zoom$1 = {
7443
+    name: 'zoom',
7444
+    params: {
7445
+      zoom: {
7446
+        enabled: false,
7447
+        maxRatio: 3,
7448
+        minRatio: 1,
7449
+        toggle: true,
7450
+        containerClass: 'swiper-zoom-container',
7451
+        zoomedSlideClass: 'swiper-slide-zoomed'
7452
+      }
7453
+    },
7454
+    create: function create() {
7455
+      var swiper = this;
7456
+      bindModuleMethods(swiper, {
7457
+        zoom: _extends({
7458
+          enabled: false,
7459
+          scale: 1,
7460
+          currentScale: 1,
7461
+          isScaling: false,
7462
+          gesture: {
7463
+            $slideEl: undefined,
7464
+            slideWidth: undefined,
7465
+            slideHeight: undefined,
7466
+            $imageEl: undefined,
7467
+            $imageWrapEl: undefined,
7468
+            maxRatio: 3
7469
+          },
7470
+          image: {
7471
+            isTouched: undefined,
7472
+            isMoved: undefined,
7473
+            currentX: undefined,
7474
+            currentY: undefined,
7475
+            minX: undefined,
7476
+            minY: undefined,
7477
+            maxX: undefined,
7478
+            maxY: undefined,
7479
+            width: undefined,
7480
+            height: undefined,
7481
+            startX: undefined,
7482
+            startY: undefined,
7483
+            touchesStart: {},
7484
+            touchesCurrent: {}
7485
+          },
7486
+          velocity: {
7487
+            x: undefined,
7488
+            y: undefined,
7489
+            prevPositionX: undefined,
7490
+            prevPositionY: undefined,
7491
+            prevTime: undefined
7492
+          }
7493
+        }, Zoom)
7494
+      });
7495
+      var scale = 1;
7496
+      Object.defineProperty(swiper.zoom, 'scale', {
7497
+        get: function get() {
7498
+          return scale;
7499
+        },
7500
+        set: function set(value) {
7501
+          if (scale !== value) {
7502
+            var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
7503
+            var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
7504
+            swiper.emit('zoomChange', value, imageEl, slideEl);
7505
+          }
7506
+
7507
+          scale = value;
7508
+        }
7509
+      });
7510
+    },
7511
+    on: {
7512
+      init: function init(swiper) {
7513
+        if (swiper.params.zoom.enabled) {
7514
+          swiper.zoom.enable();
7515
+        }
7516
+      },
7517
+      destroy: function destroy(swiper) {
7518
+        swiper.zoom.disable();
7519
+      },
7520
+      touchStart: function touchStart(swiper, e) {
7521
+        if (!swiper.zoom.enabled) return;
7522
+        swiper.zoom.onTouchStart(e);
7523
+      },
7524
+      touchEnd: function touchEnd(swiper, e) {
7525
+        if (!swiper.zoom.enabled) return;
7526
+        swiper.zoom.onTouchEnd(e);
7527
+      },
7528
+      doubleTap: function doubleTap(swiper, e) {
7529
+        if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
7530
+          swiper.zoom.toggle(e);
7531
+        }
7532
+      },
7533
+      transitionEnd: function transitionEnd(swiper) {
7534
+        if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
7535
+          swiper.zoom.onTransitionEnd();
7536
+        }
7537
+      },
7538
+      slideChange: function slideChange(swiper) {
7539
+        if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
7540
+          swiper.zoom.onTransitionEnd();
7541
+        }
7542
+      }
7543
+    }
7544
+  };
7545
+
7546
+  var Lazy = {
7547
+    loadInSlide: function loadInSlide(index, loadInDuplicate) {
7548
+      if (loadInDuplicate === void 0) {
7549
+        loadInDuplicate = true;
7550
+      }
7551
+
7552
+      var swiper = this;
7553
+      var params = swiper.params.lazy;
7554
+      if (typeof index === 'undefined') return;
7555
+      if (swiper.slides.length === 0) return;
7556
+      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7557
+      var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
7558
+      var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
7559
+
7560
+      if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
7561
+        $images.push($slideEl[0]);
7562
+      }
7563
+
7564
+      if ($images.length === 0) return;
7565
+      $images.each(function (imageEl) {
7566
+        var $imageEl = $(imageEl);
7567
+        $imageEl.addClass(params.loadingClass);
7568
+        var background = $imageEl.attr('data-background');
7569
+        var src = $imageEl.attr('data-src');
7570
+        var srcset = $imageEl.attr('data-srcset');
7571
+        var sizes = $imageEl.attr('data-sizes');
7572
+        var $pictureEl = $imageEl.parent('picture');
7573
+        swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
7574
+          if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
7575
+
7576
+          if (background) {
7577
+            $imageEl.css('background-image', "url(\"" + background + "\")");
7578
+            $imageEl.removeAttr('data-background');
7579
+          } else {
7580
+            if (srcset) {
7581
+              $imageEl.attr('srcset', srcset);
7582
+              $imageEl.removeAttr('data-srcset');
7583
+            }
7584
+
7585
+            if (sizes) {
7586
+              $imageEl.attr('sizes', sizes);
7587
+              $imageEl.removeAttr('data-sizes');
7588
+            }
7589
+
7590
+            if ($pictureEl.length) {
7591
+              $pictureEl.children('source').each(function (sourceEl) {
7592
+                var $source = $(sourceEl);
7593
+
7594
+                if ($source.attr('data-srcset')) {
7595
+                  $source.attr('srcset', $source.attr('data-srcset'));
7596
+                  $source.removeAttr('data-srcset');
7597
+                }
7598
+              });
7599
+            }
7600
+
7601
+            if (src) {
7602
+              $imageEl.attr('src', src);
7603
+              $imageEl.removeAttr('data-src');
7604
+            }
7605
+          }
7606
+
7607
+          $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
7608
+          $slideEl.find("." + params.preloaderClass).remove();
7609
+
7610
+          if (swiper.params.loop && loadInDuplicate) {
7611
+            var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
7612
+
7613
+            if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
7614
+              var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
7615
+              swiper.lazy.loadInSlide(originalSlide.index(), false);
7616
+            } else {
7617
+              var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
7618
+              swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
7619
+            }
7620
+          }
7621
+
7622
+          swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
7623
+
7624
+          if (swiper.params.autoHeight) {
7625
+            swiper.updateAutoHeight();
7626
+          }
7627
+        });
7628
+        swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
7629
+      });
7630
+    },
7631
+    load: function load() {
7632
+      var swiper = this;
7633
+      var $wrapperEl = swiper.$wrapperEl,
7634
+          swiperParams = swiper.params,
7635
+          slides = swiper.slides,
7636
+          activeIndex = swiper.activeIndex;
7637
+      var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
7638
+      var params = swiperParams.lazy;
7639
+      var slidesPerView = swiperParams.slidesPerView;
7640
+
7641
+      if (slidesPerView === 'auto') {
7642
+        slidesPerView = 0;
7643
+      }
7644
+
7645
+      function slideExist(index) {
7646
+        if (isVirtual) {
7647
+          if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
7648
+            return true;
7649
+          }
7650
+        } else if (slides[index]) return true;
7651
+
7652
+        return false;
7653
+      }
7654
+
7655
+      function slideIndex(slideEl) {
7656
+        if (isVirtual) {
7657
+          return $(slideEl).attr('data-swiper-slide-index');
7658
+        }
7659
+
7660
+        return $(slideEl).index();
7661
+      }
7662
+
7663
+      if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
7664
+
7665
+      if (swiper.params.watchSlidesVisibility) {
7666
+        $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
7667
+          var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
7668
+          swiper.lazy.loadInSlide(index);
7669
+        });
7670
+      } else if (slidesPerView > 1) {
7671
+        for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
7672
+          if (slideExist(i)) swiper.lazy.loadInSlide(i);
7673
+        }
7674
+      } else {
7675
+        swiper.lazy.loadInSlide(activeIndex);
7676
+      }
7677
+
7678
+      if (params.loadPrevNext) {
7679
+        if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
7680
+          var amount = params.loadPrevNextAmount;
7681
+          var spv = slidesPerView;
7682
+          var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
7683
+          var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
7684
+
7685
+          for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
7686
+            if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
7687
+          } // Prev Slides
7688
+
7689
+
7690
+          for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
7691
+            if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
7692
+          }
7693
+        } else {
7694
+          var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
7695
+          if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
7696
+          var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
7697
+          if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
7698
+        }
7699
+      }
7700
+    }
7701
+  };
7702
+  var Lazy$1 = {
7703
+    name: 'lazy',
7704
+    params: {
7705
+      lazy: {
7706
+        enabled: false,
7707
+        loadPrevNext: false,
7708
+        loadPrevNextAmount: 1,
7709
+        loadOnTransitionStart: false,
7710
+        elementClass: 'swiper-lazy',
7711
+        loadingClass: 'swiper-lazy-loading',
7712
+        loadedClass: 'swiper-lazy-loaded',
7713
+        preloaderClass: 'swiper-lazy-preloader'
7714
+      }
7715
+    },
7716
+    create: function create() {
7717
+      var swiper = this;
7718
+      bindModuleMethods(swiper, {
7719
+        lazy: _extends({
7720
+          initialImageLoaded: false
7721
+        }, Lazy)
7722
+      });
7723
+    },
7724
+    on: {
7725
+      beforeInit: function beforeInit(swiper) {
7726
+        if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
7727
+          swiper.params.preloadImages = false;
7728
+        }
7729
+      },
7730
+      init: function init(swiper) {
7731
+        if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
7732
+          swiper.lazy.load();
7733
+        }
7734
+      },
7735
+      scroll: function scroll(swiper) {
7736
+        if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
7737
+          swiper.lazy.load();
7738
+        }
7739
+      },
7740
+      resize: function resize(swiper) {
7741
+        if (swiper.params.lazy.enabled) {
7742
+          swiper.lazy.load();
7743
+        }
7744
+      },
7745
+      scrollbarDragMove: function scrollbarDragMove(swiper) {
7746
+        if (swiper.params.lazy.enabled) {
7747
+          swiper.lazy.load();
7748
+        }
7749
+      },
7750
+      transitionStart: function transitionStart(swiper) {
7751
+        if (swiper.params.lazy.enabled) {
7752
+          if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
7753
+            swiper.lazy.load();
7754
+          }
7755
+        }
7756
+      },
7757
+      transitionEnd: function transitionEnd(swiper) {
7758
+        if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
7759
+          swiper.lazy.load();
7760
+        }
7761
+      },
7762
+      slideChange: function slideChange(swiper) {
7763
+        if (swiper.params.lazy.enabled && swiper.params.cssMode) {
7764
+          swiper.lazy.load();
7765
+        }
7766
+      }
7767
+    }
7768
+  };
7769
+
7770
+  var Controller = {
7771
+    LinearSpline: function LinearSpline(x, y) {
7772
+      var binarySearch = function search() {
7773
+        var maxIndex;
7774
+        var minIndex;
7775
+        var guess;
7776
+        return function (array, val) {
7777
+          minIndex = -1;
7778
+          maxIndex = array.length;
7779
+
7780
+          while (maxIndex - minIndex > 1) {
7781
+            guess = maxIndex + minIndex >> 1;
7782
+
7783
+            if (array[guess] <= val) {
7784
+              minIndex = guess;
7785
+            } else {
7786
+              maxIndex = guess;
7787
+            }
7788
+          }
7789
+
7790
+          return maxIndex;
7791
+        };
7792
+      }();
7793
+
7794
+      this.x = x;
7795
+      this.y = y;
7796
+      this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
7797
+      // (x1,y1) is the known point before given value,
7798
+      // (x3,y3) is the known point after given value.
7799
+
7800
+      var i1;
7801
+      var i3;
7802
+
7803
+      this.interpolate = function interpolate(x2) {
7804
+        if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7805
+
7806
+        i3 = binarySearch(this.x, x2);
7807
+        i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
7808
+        // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7809
+
7810
+        return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
7811
+      };
7812
+
7813
+      return this;
7814
+    },
7815
+    // xxx: for now i will just save one spline function to to
7816
+    getInterpolateFunction: function getInterpolateFunction(c) {
7817
+      var swiper = this;
7818
+
7819
+      if (!swiper.controller.spline) {
7820
+        swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
7821
+      }
7822
+    },
7823
+    setTranslate: function setTranslate(_setTranslate, byController) {
7824
+      var swiper = this;
7825
+      var controlled = swiper.controller.control;
7826
+      var multiplier;
7827
+      var controlledTranslate;
7828
+      var Swiper = swiper.constructor;
7829
+
7830
+      function setControlledTranslate(c) {
7831
+        // this will create an Interpolate function based on the snapGrids
7832
+        // x is the Grid of the scrolled scroller and y will be the controlled scroller
7833
+        // it makes sense to create this only once and recall it for the interpolation
7834
+        // the function does a lot of value caching for performance
7835
+        var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
7836
+
7837
+        if (swiper.params.controller.by === 'slide') {
7838
+          swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
7839
+          // but it did not work out
7840
+
7841
+          controlledTranslate = -swiper.controller.spline.interpolate(-translate);
7842
+        }
7843
+
7844
+        if (!controlledTranslate || swiper.params.controller.by === 'container') {
7845
+          multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
7846
+          controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
7847
+        }
7848
+
7849
+        if (swiper.params.controller.inverse) {
7850
+          controlledTranslate = c.maxTranslate() - controlledTranslate;
7851
+        }
7852
+
7853
+        c.updateProgress(controlledTranslate);
7854
+        c.setTranslate(controlledTranslate, swiper);
7855
+        c.updateActiveIndex();
7856
+        c.updateSlidesClasses();
7857
+      }
7858
+
7859
+      if (Array.isArray(controlled)) {
7860
+        for (var i = 0; i < controlled.length; i += 1) {
7861
+          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7862
+            setControlledTranslate(controlled[i]);
7863
+          }
7864
+        }
7865
+      } else if (controlled instanceof Swiper && byController !== controlled) {
7866
+        setControlledTranslate(controlled);
7867
+      }
7868
+    },
7869
+    setTransition: function setTransition(duration, byController) {
7870
+      var swiper = this;
7871
+      var Swiper = swiper.constructor;
7872
+      var controlled = swiper.controller.control;
7873
+      var i;
7874
+
7875
+      function setControlledTransition(c) {
7876
+        c.setTransition(duration, swiper);
7877
+
7878
+        if (duration !== 0) {
7879
+          c.transitionStart();
7880
+
7881
+          if (c.params.autoHeight) {
7882
+            nextTick(function () {
7883
+              c.updateAutoHeight();
7884
+            });
7885
+          }
7886
+
7887
+          c.$wrapperEl.transitionEnd(function () {
7888
+            if (!controlled) return;
7889
+
7890
+            if (c.params.loop && swiper.params.controller.by === 'slide') {
7891
+              c.loopFix();
7892
+            }
7893
+
7894
+            c.transitionEnd();
7895
+          });
7896
+        }
7897
+      }
7898
+
7899
+      if (Array.isArray(controlled)) {
7900
+        for (i = 0; i < controlled.length; i += 1) {
7901
+          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7902
+            setControlledTransition(controlled[i]);
7903
+          }
7904
+        }
7905
+      } else if (controlled instanceof Swiper && byController !== controlled) {
7906
+        setControlledTransition(controlled);
7907
+      }
7908
+    }
7909
+  };
7910
+  var Controller$1 = {
7911
+    name: 'controller',
7912
+    params: {
7913
+      controller: {
7914
+        control: undefined,
7915
+        inverse: false,
7916
+        by: 'slide' // or 'container'
7917
+
7918
+      }
7919
+    },
7920
+    create: function create() {
7921
+      var swiper = this;
7922
+      bindModuleMethods(swiper, {
7923
+        controller: _extends({
7924
+          control: swiper.params.controller.control
7925
+        }, Controller)
7926
+      });
7927
+    },
7928
+    on: {
7929
+      update: function update(swiper) {
7930
+        if (!swiper.controller.control) return;
7931
+
7932
+        if (swiper.controller.spline) {
7933
+          swiper.controller.spline = undefined;
7934
+          delete swiper.controller.spline;
7935
+        }
7936
+      },
7937
+      resize: function resize(swiper) {
7938
+        if (!swiper.controller.control) return;
7939
+
7940
+        if (swiper.controller.spline) {
7941
+          swiper.controller.spline = undefined;
7942
+          delete swiper.controller.spline;
7943
+        }
7944
+      },
7945
+      observerUpdate: function observerUpdate(swiper) {
7946
+        if (!swiper.controller.control) return;
7947
+
7948
+        if (swiper.controller.spline) {
7949
+          swiper.controller.spline = undefined;
7950
+          delete swiper.controller.spline;
7951
+        }
7952
+      },
7953
+      setTranslate: function setTranslate(swiper, translate, byController) {
7954
+        if (!swiper.controller.control) return;
7955
+        swiper.controller.setTranslate(translate, byController);
7956
+      },
7957
+      setTransition: function setTransition(swiper, duration, byController) {
7958
+        if (!swiper.controller.control) return;
7959
+        swiper.controller.setTransition(duration, byController);
7960
+      }
7961
+    }
7962
+  };
7963
+
7964
+  var A11y = {
7965
+    getRandomNumber: function getRandomNumber(size) {
7966
+      if (size === void 0) {
7967
+        size = 16;
7968
+      }
7969
+
7970
+      var randomChar = function randomChar() {
7971
+        return Math.round(16 * Math.random()).toString(16);
7972
+      };
7973
+
7974
+      return 'x'.repeat(size).replace(/x/g, randomChar);
7975
+    },
7976
+    makeElFocusable: function makeElFocusable($el) {
7977
+      $el.attr('tabIndex', '0');
7978
+      return $el;
7979
+    },
7980
+    makeElNotFocusable: function makeElNotFocusable($el) {
7981
+      $el.attr('tabIndex', '-1');
7982
+      return $el;
7983
+    },
7984
+    addElRole: function addElRole($el, role) {
7985
+      $el.attr('role', role);
7986
+      return $el;
7987
+    },
7988
+    addElRoleDescription: function addElRoleDescription($el, description) {
7989
+      $el.attr('aria-role-description', description);
7990
+      return $el;
7991
+    },
7992
+    addElControls: function addElControls($el, controls) {
7993
+      $el.attr('aria-controls', controls);
7994
+      return $el;
7995
+    },
7996
+    addElLabel: function addElLabel($el, label) {
7997
+      $el.attr('aria-label', label);
7998
+      return $el;
7999
+    },
8000
+    addElId: function addElId($el, id) {
8001
+      $el.attr('id', id);
8002
+      return $el;
8003
+    },
8004
+    addElLive: function addElLive($el, live) {
8005
+      $el.attr('aria-live', live);
8006
+      return $el;
8007
+    },
8008
+    disableEl: function disableEl($el) {
8009
+      $el.attr('aria-disabled', true);
8010
+      return $el;
8011
+    },
8012
+    enableEl: function enableEl($el) {
8013
+      $el.attr('aria-disabled', false);
8014
+      return $el;
8015
+    },
8016
+    onEnterKey: function onEnterKey(e) {
8017
+      var swiper = this;
8018
+      var params = swiper.params.a11y;
8019
+      if (e.keyCode !== 13) return;
8020
+      var $targetEl = $(e.target);
8021
+
8022
+      if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
8023
+        if (!(swiper.isEnd && !swiper.params.loop)) {
8024
+          swiper.slideNext();
8025
+        }
8026
+
8027
+        if (swiper.isEnd) {
8028
+          swiper.a11y.notify(params.lastSlideMessage);
8029
+        } else {
8030
+          swiper.a11y.notify(params.nextSlideMessage);
8031
+        }
8032
+      }
8033
+
8034
+      if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
8035
+        if (!(swiper.isBeginning && !swiper.params.loop)) {
8036
+          swiper.slidePrev();
8037
+        }
8038
+
8039
+        if (swiper.isBeginning) {
8040
+          swiper.a11y.notify(params.firstSlideMessage);
8041
+        } else {
8042
+          swiper.a11y.notify(params.prevSlideMessage);
8043
+        }
8044
+      }
8045
+
8046
+      if (swiper.pagination && $targetEl.is("." + swiper.params.pagination.bulletClass)) {
8047
+        $targetEl[0].click();
8048
+      }
8049
+    },
8050
+    notify: function notify(message) {
8051
+      var swiper = this;
8052
+      var notification = swiper.a11y.liveRegion;
8053
+      if (notification.length === 0) return;
8054
+      notification.html('');
8055
+      notification.html(message);
8056
+    },
8057
+    updateNavigation: function updateNavigation() {
8058
+      var swiper = this;
8059
+      if (swiper.params.loop || !swiper.navigation) return;
8060
+      var _swiper$navigation = swiper.navigation,
8061
+          $nextEl = _swiper$navigation.$nextEl,
8062
+          $prevEl = _swiper$navigation.$prevEl;
8063
+
8064
+      if ($prevEl && $prevEl.length > 0) {
8065
+        if (swiper.isBeginning) {
8066
+          swiper.a11y.disableEl($prevEl);
8067
+          swiper.a11y.makeElNotFocusable($prevEl);
8068
+        } else {
8069
+          swiper.a11y.enableEl($prevEl);
8070
+          swiper.a11y.makeElFocusable($prevEl);
8071
+        }
8072
+      }
8073
+
8074
+      if ($nextEl && $nextEl.length > 0) {
8075
+        if (swiper.isEnd) {
8076
+          swiper.a11y.disableEl($nextEl);
8077
+          swiper.a11y.makeElNotFocusable($nextEl);
8078
+        } else {
8079
+          swiper.a11y.enableEl($nextEl);
8080
+          swiper.a11y.makeElFocusable($nextEl);
8081
+        }
8082
+      }
8083
+    },
8084
+    updatePagination: function updatePagination() {
8085
+      var swiper = this;
8086
+      var params = swiper.params.a11y;
8087
+
8088
+      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8089
+        swiper.pagination.bullets.each(function (bulletEl) {
8090
+          var $bulletEl = $(bulletEl);
8091
+          swiper.a11y.makeElFocusable($bulletEl);
8092
+
8093
+          if (!swiper.params.pagination.renderBullet) {
8094
+            swiper.a11y.addElRole($bulletEl, 'button');
8095
+            swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
8096
+          }
8097
+        });
8098
+      }
8099
+    },
8100
+    init: function init() {
8101
+      var swiper = this;
8102
+      var params = swiper.params.a11y;
8103
+      swiper.$el.append(swiper.a11y.liveRegion); // Container
8104
+
8105
+      var $containerEl = swiper.$el;
8106
+
8107
+      if (params.containerRoleDescriptionMessage) {
8108
+        swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
8109
+      }
8110
+
8111
+      if (params.containerMessage) {
8112
+        swiper.a11y.addElLabel($containerEl, params.containerMessage);
8113
+      } // Wrapper
8114
+
8115
+
8116
+      var $wrapperEl = swiper.$wrapperEl;
8117
+      var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
8118
+      var live;
8119
+      swiper.a11y.addElId($wrapperEl, wrapperId);
8120
+
8121
+      if (swiper.params.autoplay && swiper.params.autoplay.enabled) {
8122
+        live = 'off';
8123
+      } else {
8124
+        live = 'polite';
8125
+      }
8126
+
8127
+      swiper.a11y.addElLive($wrapperEl, live); // Slide
8128
+
8129
+      if (params.itemRoleDescriptionMessage) {
8130
+        swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);
8131
+      }
8132
+
8133
+      swiper.a11y.addElRole($(swiper.slides), 'group');
8134
+      swiper.slides.each(function (slideEl) {
8135
+        var $slideEl = $(slideEl);
8136
+        swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + " / " + swiper.slides.length);
8137
+      }); // Navigation
8138
+
8139
+      var $nextEl;
8140
+      var $prevEl;
8141
+
8142
+      if (swiper.navigation && swiper.navigation.$nextEl) {
8143
+        $nextEl = swiper.navigation.$nextEl;
8144
+      }
8145
+
8146
+      if (swiper.navigation && swiper.navigation.$prevEl) {
8147
+        $prevEl = swiper.navigation.$prevEl;
8148
+      }
8149
+
8150
+      if ($nextEl && $nextEl.length) {
8151
+        swiper.a11y.makeElFocusable($nextEl);
8152
+
8153
+        if ($nextEl[0].tagName !== 'BUTTON') {
8154
+          swiper.a11y.addElRole($nextEl, 'button');
8155
+          $nextEl.on('keydown', swiper.a11y.onEnterKey);
8156
+        }
8157
+
8158
+        swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
8159
+        swiper.a11y.addElControls($nextEl, wrapperId);
8160
+      }
8161
+
8162
+      if ($prevEl && $prevEl.length) {
8163
+        swiper.a11y.makeElFocusable($prevEl);
8164
+
8165
+        if ($prevEl[0].tagName !== 'BUTTON') {
8166
+          swiper.a11y.addElRole($prevEl, 'button');
8167
+          $prevEl.on('keydown', swiper.a11y.onEnterKey);
8168
+        }
8169
+
8170
+        swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
8171
+        swiper.a11y.addElControls($prevEl, wrapperId);
8172
+      } // Pagination
8173
+
8174
+
8175
+      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8176
+        swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
8177
+      }
8178
+    },
8179
+    destroy: function destroy() {
8180
+      var swiper = this;
8181
+      if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
8182
+      var $nextEl;
8183
+      var $prevEl;
8184
+
8185
+      if (swiper.navigation && swiper.navigation.$nextEl) {
8186
+        $nextEl = swiper.navigation.$nextEl;
8187
+      }
8188
+
8189
+      if (swiper.navigation && swiper.navigation.$prevEl) {
8190
+        $prevEl = swiper.navigation.$prevEl;
8191
+      }
8192
+
8193
+      if ($nextEl) {
8194
+        $nextEl.off('keydown', swiper.a11y.onEnterKey);
8195
+      }
8196
+
8197
+      if ($prevEl) {
8198
+        $prevEl.off('keydown', swiper.a11y.onEnterKey);
8199
+      } // Pagination
8200
+
8201
+
8202
+      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8203
+        swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
8204
+      }
8205
+    }
8206
+  };
8207
+  var A11y$1 = {
8208
+    name: 'a11y',
8209
+    params: {
8210
+      a11y: {
8211
+        enabled: true,
8212
+        notificationClass: 'swiper-notification',
8213
+        prevSlideMessage: 'Previous slide',
8214
+        nextSlideMessage: 'Next slide',
8215
+        firstSlideMessage: 'This is the first slide',
8216
+        lastSlideMessage: 'This is the last slide',
8217
+        paginationBulletMessage: 'Go to slide {{index}}',
8218
+        containerMessage: null,
8219
+        containerRoleDescriptionMessage: null,
8220
+        itemRoleDescriptionMessage: null
8221
+      }
8222
+    },
8223
+    create: function create() {
8224
+      var swiper = this;
8225
+      bindModuleMethods(swiper, {
8226
+        a11y: _extends(_extends({}, A11y), {}, {
8227
+          liveRegion: $("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
8228
+        })
8229
+      });
8230
+    },
8231
+    on: {
8232
+      afterInit: function afterInit(swiper) {
8233
+        if (!swiper.params.a11y.enabled) return;
8234
+        swiper.a11y.init();
8235
+        swiper.a11y.updateNavigation();
8236
+      },
8237
+      toEdge: function toEdge(swiper) {
8238
+        if (!swiper.params.a11y.enabled) return;
8239
+        swiper.a11y.updateNavigation();
8240
+      },
8241
+      fromEdge: function fromEdge(swiper) {
8242
+        if (!swiper.params.a11y.enabled) return;
8243
+        swiper.a11y.updateNavigation();
8244
+      },
8245
+      paginationUpdate: function paginationUpdate(swiper) {
8246
+        if (!swiper.params.a11y.enabled) return;
8247
+        swiper.a11y.updatePagination();
8248
+      },
8249
+      destroy: function destroy(swiper) {
8250
+        if (!swiper.params.a11y.enabled) return;
8251
+        swiper.a11y.destroy();
8252
+      }
8253
+    }
8254
+  };
8255
+
8256
+  var History = {
8257
+    init: function init() {
8258
+      var swiper = this;
8259
+      var window = getWindow();
8260
+      if (!swiper.params.history) return;
8261
+
8262
+      if (!window.history || !window.history.pushState) {
8263
+        swiper.params.history.enabled = false;
8264
+        swiper.params.hashNavigation.enabled = true;
8265
+        return;
8266
+      }
8267
+
8268
+      var history = swiper.history;
8269
+      history.initialized = true;
8270
+      history.paths = History.getPathValues(swiper.params.url);
8271
+      if (!history.paths.key && !history.paths.value) return;
8272
+      history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
8273
+
8274
+      if (!swiper.params.history.replaceState) {
8275
+        window.addEventListener('popstate', swiper.history.setHistoryPopState);
8276
+      }
8277
+    },
8278
+    destroy: function destroy() {
8279
+      var swiper = this;
8280
+      var window = getWindow();
8281
+
8282
+      if (!swiper.params.history.replaceState) {
8283
+        window.removeEventListener('popstate', swiper.history.setHistoryPopState);
8284
+      }
8285
+    },
8286
+    setHistoryPopState: function setHistoryPopState() {
8287
+      var swiper = this;
8288
+      swiper.history.paths = History.getPathValues(swiper.params.url);
8289
+      swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
8290
+    },
8291
+    getPathValues: function getPathValues(urlOverride) {
8292
+      var window = getWindow();
8293
+      var location;
8294
+
8295
+      if (urlOverride) {
8296
+        location = new URL(urlOverride);
8297
+      } else {
8298
+        location = window.location;
8299
+      }
8300
+
8301
+      var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
8302
+        return part !== '';
8303
+      });
8304
+      var total = pathArray.length;
8305
+      var key = pathArray[total - 2];
8306
+      var value = pathArray[total - 1];
8307
+      return {
8308
+        key: key,
8309
+        value: value
8310
+      };
8311
+    },
8312
+    setHistory: function setHistory(key, index) {
8313
+      var swiper = this;
8314
+      var window = getWindow();
8315
+      if (!swiper.history.initialized || !swiper.params.history.enabled) return;
8316
+      var location;
8317
+
8318
+      if (swiper.params.url) {
8319
+        location = new URL(swiper.params.url);
8320
+      } else {
8321
+        location = window.location;
8322
+      }
8323
+
8324
+      var slide = swiper.slides.eq(index);
8325
+      var value = History.slugify(slide.attr('data-history'));
8326
+
8327
+      if (!location.pathname.includes(key)) {
8328
+        value = key + "/" + value;
8329
+      }
8330
+
8331
+      var currentState = window.history.state;
8332
+
8333
+      if (currentState && currentState.value === value) {
8334
+        return;
8335
+      }
8336
+
8337
+      if (swiper.params.history.replaceState) {
8338
+        window.history.replaceState({
8339
+          value: value
8340
+        }, null, value);
8341
+      } else {
8342
+        window.history.pushState({
8343
+          value: value
8344
+        }, null, value);
8345
+      }
8346
+    },
8347
+    slugify: function slugify(text) {
8348
+      return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
8349
+    },
8350
+    scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
8351
+      var swiper = this;
8352
+
8353
+      if (value) {
8354
+        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8355
+          var slide = swiper.slides.eq(i);
8356
+          var slideHistory = History.slugify(slide.attr('data-history'));
8357
+
8358
+          if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8359
+            var index = slide.index();
8360
+            swiper.slideTo(index, speed, runCallbacks);
8361
+          }
8362
+        }
8363
+      } else {
8364
+        swiper.slideTo(0, speed, runCallbacks);
8365
+      }
8366
+    }
8367
+  };
8368
+  var History$1 = {
8369
+    name: 'history',
8370
+    params: {
8371
+      history: {
8372
+        enabled: false,
8373
+        replaceState: false,
8374
+        key: 'slides'
8375
+      }
8376
+    },
8377
+    create: function create() {
8378
+      var swiper = this;
8379
+      bindModuleMethods(swiper, {
8380
+        history: _extends({}, History)
8381
+      });
8382
+    },
8383
+    on: {
8384
+      init: function init(swiper) {
8385
+        if (swiper.params.history.enabled) {
8386
+          swiper.history.init();
8387
+        }
8388
+      },
8389
+      destroy: function destroy(swiper) {
8390
+        if (swiper.params.history.enabled) {
8391
+          swiper.history.destroy();
8392
+        }
8393
+      },
8394
+      transitionEnd: function transitionEnd(swiper) {
8395
+        if (swiper.history.initialized) {
8396
+          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8397
+        }
8398
+      },
8399
+      slideChange: function slideChange(swiper) {
8400
+        if (swiper.history.initialized && swiper.params.cssMode) {
8401
+          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8402
+        }
8403
+      }
8404
+    }
8405
+  };
8406
+
8407
+  var HashNavigation = {
8408
+    onHashCange: function onHashCange() {
8409
+      var swiper = this;
8410
+      var document = getDocument();
8411
+      swiper.emit('hashChange');
8412
+      var newHash = document.location.hash.replace('#', '');
8413
+      var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
8414
+
8415
+      if (newHash !== activeSlideHash) {
8416
+        var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
8417
+        if (typeof newIndex === 'undefined') return;
8418
+        swiper.slideTo(newIndex);
8419
+      }
8420
+    },
8421
+    setHash: function setHash() {
8422
+      var swiper = this;
8423
+      var window = getWindow();
8424
+      var document = getDocument();
8425
+      if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
8426
+
8427
+      if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
8428
+        window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
8429
+        swiper.emit('hashSet');
8430
+      } else {
8431
+        var slide = swiper.slides.eq(swiper.activeIndex);
8432
+        var hash = slide.attr('data-hash') || slide.attr('data-history');
8433
+        document.location.hash = hash || '';
8434
+        swiper.emit('hashSet');
8435
+      }
8436
+    },
8437
+    init: function init() {
8438
+      var swiper = this;
8439
+      var document = getDocument();
8440
+      var window = getWindow();
8441
+      if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
8442
+      swiper.hashNavigation.initialized = true;
8443
+      var hash = document.location.hash.replace('#', '');
8444
+
8445
+      if (hash) {
8446
+        var speed = 0;
8447
+
8448
+        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8449
+          var slide = swiper.slides.eq(i);
8450
+          var slideHash = slide.attr('data-hash') || slide.attr('data-history');
8451
+
8452
+          if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8453
+            var index = slide.index();
8454
+            swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
8455
+          }
8456
+        }
8457
+      }
8458
+
8459
+      if (swiper.params.hashNavigation.watchState) {
8460
+        $(window).on('hashchange', swiper.hashNavigation.onHashCange);
8461
+      }
8462
+    },
8463
+    destroy: function destroy() {
8464
+      var swiper = this;
8465
+      var window = getWindow();
8466
+
8467
+      if (swiper.params.hashNavigation.watchState) {
8468
+        $(window).off('hashchange', swiper.hashNavigation.onHashCange);
8469
+      }
8470
+    }
8471
+  };
8472
+  var HashNavigation$1 = {
8473
+    name: 'hash-navigation',
8474
+    params: {
8475
+      hashNavigation: {
8476
+        enabled: false,
8477
+        replaceState: false,
8478
+        watchState: false
8479
+      }
8480
+    },
8481
+    create: function create() {
8482
+      var swiper = this;
8483
+      bindModuleMethods(swiper, {
8484
+        hashNavigation: _extends({
8485
+          initialized: false
8486
+        }, HashNavigation)
8487
+      });
8488
+    },
8489
+    on: {
8490
+      init: function init(swiper) {
8491
+        if (swiper.params.hashNavigation.enabled) {
8492
+          swiper.hashNavigation.init();
8493
+        }
8494
+      },
8495
+      destroy: function destroy(swiper) {
8496
+        if (swiper.params.hashNavigation.enabled) {
8497
+          swiper.hashNavigation.destroy();
8498
+        }
8499
+      },
8500
+      transitionEnd: function transitionEnd(swiper) {
8501
+        if (swiper.hashNavigation.initialized) {
8502
+          swiper.hashNavigation.setHash();
8503
+        }
8504
+      },
8505
+      slideChange: function slideChange(swiper) {
8506
+        if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
8507
+          swiper.hashNavigation.setHash();
8508
+        }
8509
+      }
8510
+    }
8511
+  };
8512
+
8513
+  var Autoplay = {
8514
+    run: function run() {
8515
+      var swiper = this;
8516
+      var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
8517
+      var delay = swiper.params.autoplay.delay;
8518
+
8519
+      if ($activeSlideEl.attr('data-swiper-autoplay')) {
8520
+        delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
8521
+      }
8522
+
8523
+      clearTimeout(swiper.autoplay.timeout);
8524
+      swiper.autoplay.timeout = nextTick(function () {
8525
+        var autoplayResult;
8526
+
8527
+        if (swiper.params.autoplay.reverseDirection) {
8528
+          if (swiper.params.loop) {
8529
+            swiper.loopFix();
8530
+            autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
8531
+            swiper.emit('autoplay');
8532
+          } else if (!swiper.isBeginning) {
8533
+            autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
8534
+            swiper.emit('autoplay');
8535
+          } else if (!swiper.params.autoplay.stopOnLastSlide) {
8536
+            autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
8537
+            swiper.emit('autoplay');
8538
+          } else {
8539
+            swiper.autoplay.stop();
8540
+          }
8541
+        } else if (swiper.params.loop) {
8542
+          swiper.loopFix();
8543
+          autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
8544
+          swiper.emit('autoplay');
8545
+        } else if (!swiper.isEnd) {
8546
+          autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
8547
+          swiper.emit('autoplay');
8548
+        } else if (!swiper.params.autoplay.stopOnLastSlide) {
8549
+          autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
8550
+          swiper.emit('autoplay');
8551
+        } else {
8552
+          swiper.autoplay.stop();
8553
+        }
8554
+
8555
+        if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {
8556
+          swiper.autoplay.run();
8557
+        }
8558
+      }, delay);
8559
+    },
8560
+    start: function start() {
8561
+      var swiper = this;
8562
+      if (typeof swiper.autoplay.timeout !== 'undefined') return false;
8563
+      if (swiper.autoplay.running) return false;
8564
+      swiper.autoplay.running = true;
8565
+      swiper.emit('autoplayStart');
8566
+      swiper.autoplay.run();
8567
+      return true;
8568
+    },
8569
+    stop: function stop() {
8570
+      var swiper = this;
8571
+      if (!swiper.autoplay.running) return false;
8572
+      if (typeof swiper.autoplay.timeout === 'undefined') return false;
8573
+
8574
+      if (swiper.autoplay.timeout) {
8575
+        clearTimeout(swiper.autoplay.timeout);
8576
+        swiper.autoplay.timeout = undefined;
8577
+      }
8578
+
8579
+      swiper.autoplay.running = false;
8580
+      swiper.emit('autoplayStop');
8581
+      return true;
8582
+    },
8583
+    pause: function pause(speed) {
8584
+      var swiper = this;
8585
+      if (!swiper.autoplay.running) return;
8586
+      if (swiper.autoplay.paused) return;
8587
+      if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
8588
+      swiper.autoplay.paused = true;
8589
+
8590
+      if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
8591
+        swiper.autoplay.paused = false;
8592
+        swiper.autoplay.run();
8593
+      } else {
8594
+        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8595
+        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8596
+      }
8597
+    },
8598
+    onVisibilityChange: function onVisibilityChange() {
8599
+      var swiper = this;
8600
+      var document = getDocument();
8601
+
8602
+      if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
8603
+        swiper.autoplay.pause();
8604
+      }
8605
+
8606
+      if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
8607
+        swiper.autoplay.run();
8608
+        swiper.autoplay.paused = false;
8609
+      }
8610
+    },
8611
+    onTransitionEnd: function onTransitionEnd(e) {
8612
+      var swiper = this;
8613
+      if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
8614
+      if (e.target !== swiper.$wrapperEl[0]) return;
8615
+      swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8616
+      swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8617
+      swiper.autoplay.paused = false;
8618
+
8619
+      if (!swiper.autoplay.running) {
8620
+        swiper.autoplay.stop();
8621
+      } else {
8622
+        swiper.autoplay.run();
8623
+      }
8624
+    }
8625
+  };
8626
+  var Autoplay$1 = {
8627
+    name: 'autoplay',
8628
+    params: {
8629
+      autoplay: {
8630
+        enabled: false,
8631
+        delay: 3000,
8632
+        waitForTransition: true,
8633
+        disableOnInteraction: true,
8634
+        stopOnLastSlide: false,
8635
+        reverseDirection: false
8636
+      }
8637
+    },
8638
+    create: function create() {
8639
+      var swiper = this;
8640
+      bindModuleMethods(swiper, {
8641
+        autoplay: _extends(_extends({}, Autoplay), {}, {
8642
+          running: false,
8643
+          paused: false
8644
+        })
8645
+      });
8646
+    },
8647
+    on: {
8648
+      init: function init(swiper) {
8649
+        if (swiper.params.autoplay.enabled) {
8650
+          swiper.autoplay.start();
8651
+          var document = getDocument();
8652
+          document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8653
+        }
8654
+      },
8655
+      beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
8656
+        if (swiper.autoplay.running) {
8657
+          if (internal || !swiper.params.autoplay.disableOnInteraction) {
8658
+            swiper.autoplay.pause(speed);
8659
+          } else {
8660
+            swiper.autoplay.stop();
8661
+          }
8662
+        }
8663
+      },
8664
+      sliderFirstMove: function sliderFirstMove(swiper) {
8665
+        if (swiper.autoplay.running) {
8666
+          if (swiper.params.autoplay.disableOnInteraction) {
8667
+            swiper.autoplay.stop();
8668
+          } else {
8669
+            swiper.autoplay.pause();
8670
+          }
8671
+        }
8672
+      },
8673
+      touchEnd: function touchEnd(swiper) {
8674
+        if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
8675
+          swiper.autoplay.run();
8676
+        }
8677
+      },
8678
+      destroy: function destroy(swiper) {
8679
+        if (swiper.autoplay.running) {
8680
+          swiper.autoplay.stop();
8681
+        }
8682
+
8683
+        var document = getDocument();
8684
+        document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8685
+      }
8686
+    }
8687
+  };
8688
+
8689
+  var Fade = {
8690
+    setTranslate: function setTranslate() {
8691
+      var swiper = this;
8692
+      var slides = swiper.slides;
8693
+
8694
+      for (var i = 0; i < slides.length; i += 1) {
8695
+        var $slideEl = swiper.slides.eq(i);
8696
+        var offset = $slideEl[0].swiperSlideOffset;
8697
+        var tx = -offset;
8698
+        if (!swiper.params.virtualTranslate) tx -= swiper.translate;
8699
+        var ty = 0;
8700
+
8701
+        if (!swiper.isHorizontal()) {
8702
+          ty = tx;
8703
+          tx = 0;
8704
+        }
8705
+
8706
+        var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
8707
+        $slideEl.css({
8708
+          opacity: slideOpacity
8709
+        }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
8710
+      }
8711
+    },
8712
+    setTransition: function setTransition(duration) {
8713
+      var swiper = this;
8714
+      var slides = swiper.slides,
8715
+          $wrapperEl = swiper.$wrapperEl;
8716
+      slides.transition(duration);
8717
+
8718
+      if (swiper.params.virtualTranslate && duration !== 0) {
8719
+        var eventTriggered = false;
8720
+        slides.transitionEnd(function () {
8721
+          if (eventTriggered) return;
8722
+          if (!swiper || swiper.destroyed) return;
8723
+          eventTriggered = true;
8724
+          swiper.animating = false;
8725
+          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8726
+
8727
+          for (var i = 0; i < triggerEvents.length; i += 1) {
8728
+            $wrapperEl.trigger(triggerEvents[i]);
8729
+          }
8730
+        });
8731
+      }
8732
+    }
8733
+  };
8734
+  var EffectFade = {
8735
+    name: 'effect-fade',
8736
+    params: {
8737
+      fadeEffect: {
8738
+        crossFade: false
8739
+      }
8740
+    },
8741
+    create: function create() {
8742
+      var swiper = this;
8743
+      bindModuleMethods(swiper, {
8744
+        fadeEffect: _extends({}, Fade)
8745
+      });
8746
+    },
8747
+    on: {
8748
+      beforeInit: function beforeInit(swiper) {
8749
+        if (swiper.params.effect !== 'fade') return;
8750
+        swiper.classNames.push(swiper.params.containerModifierClass + "fade");
8751
+        var overwriteParams = {
8752
+          slidesPerView: 1,
8753
+          slidesPerColumn: 1,
8754
+          slidesPerGroup: 1,
8755
+          watchSlidesProgress: true,
8756
+          spaceBetween: 0,
8757
+          virtualTranslate: true
8758
+        };
8759
+        extend$1(swiper.params, overwriteParams);
8760
+        extend$1(swiper.originalParams, overwriteParams);
8761
+      },
8762
+      setTranslate: function setTranslate(swiper) {
8763
+        if (swiper.params.effect !== 'fade') return;
8764
+        swiper.fadeEffect.setTranslate();
8765
+      },
8766
+      setTransition: function setTransition(swiper, duration) {
8767
+        if (swiper.params.effect !== 'fade') return;
8768
+        swiper.fadeEffect.setTransition(duration);
8769
+      }
8770
+    }
8771
+  };
8772
+
8773
+  var Cube = {
8774
+    setTranslate: function setTranslate() {
8775
+      var swiper = this;
8776
+      var $el = swiper.$el,
8777
+          $wrapperEl = swiper.$wrapperEl,
8778
+          slides = swiper.slides,
8779
+          swiperWidth = swiper.width,
8780
+          swiperHeight = swiper.height,
8781
+          rtl = swiper.rtlTranslate,
8782
+          swiperSize = swiper.size,
8783
+          browser = swiper.browser;
8784
+      var params = swiper.params.cubeEffect;
8785
+      var isHorizontal = swiper.isHorizontal();
8786
+      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8787
+      var wrapperRotate = 0;
8788
+      var $cubeShadowEl;
8789
+
8790
+      if (params.shadow) {
8791
+        if (isHorizontal) {
8792
+          $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
8793
+
8794
+          if ($cubeShadowEl.length === 0) {
8795
+            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8796
+            $wrapperEl.append($cubeShadowEl);
8797
+          }
8798
+
8799
+          $cubeShadowEl.css({
8800
+            height: swiperWidth + "px"
8801
+          });
8802
+        } else {
8803
+          $cubeShadowEl = $el.find('.swiper-cube-shadow');
8804
+
8805
+          if ($cubeShadowEl.length === 0) {
8806
+            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8807
+            $el.append($cubeShadowEl);
8808
+          }
8809
+        }
8810
+      }
8811
+
8812
+      for (var i = 0; i < slides.length; i += 1) {
8813
+        var $slideEl = slides.eq(i);
8814
+        var slideIndex = i;
8815
+
8816
+        if (isVirtual) {
8817
+          slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
8818
+        }
8819
+
8820
+        var slideAngle = slideIndex * 90;
8821
+        var round = Math.floor(slideAngle / 360);
8822
+
8823
+        if (rtl) {
8824
+          slideAngle = -slideAngle;
8825
+          round = Math.floor(-slideAngle / 360);
8826
+        }
8827
+
8828
+        var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8829
+        var tx = 0;
8830
+        var ty = 0;
8831
+        var tz = 0;
8832
+
8833
+        if (slideIndex % 4 === 0) {
8834
+          tx = -round * 4 * swiperSize;
8835
+          tz = 0;
8836
+        } else if ((slideIndex - 1) % 4 === 0) {
8837
+          tx = 0;
8838
+          tz = -round * 4 * swiperSize;
8839
+        } else if ((slideIndex - 2) % 4 === 0) {
8840
+          tx = swiperSize + round * 4 * swiperSize;
8841
+          tz = swiperSize;
8842
+        } else if ((slideIndex - 3) % 4 === 0) {
8843
+          tx = -swiperSize;
8844
+          tz = 3 * swiperSize + swiperSize * 4 * round;
8845
+        }
8846
+
8847
+        if (rtl) {
8848
+          tx = -tx;
8849
+        }
8850
+
8851
+        if (!isHorizontal) {
8852
+          ty = tx;
8853
+          tx = 0;
8854
+        }
8855
+
8856
+        var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
8857
+
8858
+        if (progress <= 1 && progress > -1) {
8859
+          wrapperRotate = slideIndex * 90 + progress * 90;
8860
+          if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
8861
+        }
8862
+
8863
+        $slideEl.transform(transform);
8864
+
8865
+        if (params.slideShadows) {
8866
+          // Set shadows
8867
+          var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8868
+          var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8869
+
8870
+          if (shadowBefore.length === 0) {
8871
+            shadowBefore = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
8872
+            $slideEl.append(shadowBefore);
8873
+          }
8874
+
8875
+          if (shadowAfter.length === 0) {
8876
+            shadowAfter = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
8877
+            $slideEl.append(shadowAfter);
8878
+          }
8879
+
8880
+          if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
8881
+          if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
8882
+        }
8883
+      }
8884
+
8885
+      $wrapperEl.css({
8886
+        '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8887
+        '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8888
+        '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8889
+        'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
8890
+      });
8891
+
8892
+      if (params.shadow) {
8893
+        if (isHorizontal) {
8894
+          $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
8895
+        } else {
8896
+          var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
8897
+          var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
8898
+          var scale1 = params.shadowScale;
8899
+          var scale2 = params.shadowScale / multiplier;
8900
+          var offset = params.shadowOffset;
8901
+          $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
8902
+        }
8903
+      }
8904
+
8905
+      var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
8906
+      $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
8907
+    },
8908
+    setTransition: function setTransition(duration) {
8909
+      var swiper = this;
8910
+      var $el = swiper.$el,
8911
+          slides = swiper.slides;
8912
+      slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
8913
+
8914
+      if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
8915
+        $el.find('.swiper-cube-shadow').transition(duration);
8916
+      }
8917
+    }
8918
+  };
8919
+  var EffectCube = {
8920
+    name: 'effect-cube',
8921
+    params: {
8922
+      cubeEffect: {
8923
+        slideShadows: true,
8924
+        shadow: true,
8925
+        shadowOffset: 20,
8926
+        shadowScale: 0.94
8927
+      }
8928
+    },
8929
+    create: function create() {
8930
+      var swiper = this;
8931
+      bindModuleMethods(swiper, {
8932
+        cubeEffect: _extends({}, Cube)
8933
+      });
8934
+    },
8935
+    on: {
8936
+      beforeInit: function beforeInit(swiper) {
8937
+        if (swiper.params.effect !== 'cube') return;
8938
+        swiper.classNames.push(swiper.params.containerModifierClass + "cube");
8939
+        swiper.classNames.push(swiper.params.containerModifierClass + "3d");
8940
+        var overwriteParams = {
8941
+          slidesPerView: 1,
8942
+          slidesPerColumn: 1,
8943
+          slidesPerGroup: 1,
8944
+          watchSlidesProgress: true,
8945
+          resistanceRatio: 0,
8946
+          spaceBetween: 0,
8947
+          centeredSlides: false,
8948
+          virtualTranslate: true
8949
+        };
8950
+        extend$1(swiper.params, overwriteParams);
8951
+        extend$1(swiper.originalParams, overwriteParams);
8952
+      },
8953
+      setTranslate: function setTranslate(swiper) {
8954
+        if (swiper.params.effect !== 'cube') return;
8955
+        swiper.cubeEffect.setTranslate();
8956
+      },
8957
+      setTransition: function setTransition(swiper, duration) {
8958
+        if (swiper.params.effect !== 'cube') return;
8959
+        swiper.cubeEffect.setTransition(duration);
8960
+      }
8961
+    }
8962
+  };
8963
+
8964
+  var Flip = {
8965
+    setTranslate: function setTranslate() {
8966
+      var swiper = this;
8967
+      var slides = swiper.slides,
8968
+          rtl = swiper.rtlTranslate;
8969
+
8970
+      for (var i = 0; i < slides.length; i += 1) {
8971
+        var $slideEl = slides.eq(i);
8972
+        var progress = $slideEl[0].progress;
8973
+
8974
+        if (swiper.params.flipEffect.limitRotation) {
8975
+          progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8976
+        }
8977
+
8978
+        var offset = $slideEl[0].swiperSlideOffset;
8979
+        var rotate = -180 * progress;
8980
+        var rotateY = rotate;
8981
+        var rotateX = 0;
8982
+        var tx = -offset;
8983
+        var ty = 0;
8984
+
8985
+        if (!swiper.isHorizontal()) {
8986
+          ty = tx;
8987
+          tx = 0;
8988
+          rotateX = -rotateY;
8989
+          rotateY = 0;
8990
+        } else if (rtl) {
8991
+          rotateY = -rotateY;
8992
+        }
8993
+
8994
+        $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
8995
+
8996
+        if (swiper.params.flipEffect.slideShadows) {
8997
+          // Set shadows
8998
+          var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8999
+          var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9000
+
9001
+          if (shadowBefore.length === 0) {
9002
+            shadowBefore = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
9003
+            $slideEl.append(shadowBefore);
9004
+          }
9005
+
9006
+          if (shadowAfter.length === 0) {
9007
+            shadowAfter = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
9008
+            $slideEl.append(shadowAfter);
9009
+          }
9010
+
9011
+          if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
9012
+          if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
9013
+        }
9014
+
9015
+        $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
9016
+      }
9017
+    },
9018
+    setTransition: function setTransition(duration) {
9019
+      var swiper = this;
9020
+      var slides = swiper.slides,
9021
+          activeIndex = swiper.activeIndex,
9022
+          $wrapperEl = swiper.$wrapperEl;
9023
+      slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9024
+
9025
+      if (swiper.params.virtualTranslate && duration !== 0) {
9026
+        var eventTriggered = false; // eslint-disable-next-line
9027
+
9028
+        slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
9029
+          if (eventTriggered) return;
9030
+          if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
9031
+
9032
+          eventTriggered = true;
9033
+          swiper.animating = false;
9034
+          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
9035
+
9036
+          for (var i = 0; i < triggerEvents.length; i += 1) {
9037
+            $wrapperEl.trigger(triggerEvents[i]);
9038
+          }
9039
+        });
9040
+      }
9041
+    }
9042
+  };
9043
+  var EffectFlip = {
9044
+    name: 'effect-flip',
9045
+    params: {
9046
+      flipEffect: {
9047
+        slideShadows: true,
9048
+        limitRotation: true
9049
+      }
9050
+    },
9051
+    create: function create() {
9052
+      var swiper = this;
9053
+      bindModuleMethods(swiper, {
9054
+        flipEffect: _extends({}, Flip)
9055
+      });
9056
+    },
9057
+    on: {
9058
+      beforeInit: function beforeInit(swiper) {
9059
+        if (swiper.params.effect !== 'flip') return;
9060
+        swiper.classNames.push(swiper.params.containerModifierClass + "flip");
9061
+        swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9062
+        var overwriteParams = {
9063
+          slidesPerView: 1,
9064
+          slidesPerColumn: 1,
9065
+          slidesPerGroup: 1,
9066
+          watchSlidesProgress: true,
9067
+          spaceBetween: 0,
9068
+          virtualTranslate: true
9069
+        };
9070
+        extend$1(swiper.params, overwriteParams);
9071
+        extend$1(swiper.originalParams, overwriteParams);
9072
+      },
9073
+      setTranslate: function setTranslate(swiper) {
9074
+        if (swiper.params.effect !== 'flip') return;
9075
+        swiper.flipEffect.setTranslate();
9076
+      },
9077
+      setTransition: function setTransition(swiper, duration) {
9078
+        if (swiper.params.effect !== 'flip') return;
9079
+        swiper.flipEffect.setTransition(duration);
9080
+      }
9081
+    }
9082
+  };
9083
+
9084
+  var Coverflow = {
9085
+    setTranslate: function setTranslate() {
9086
+      var swiper = this;
9087
+      var swiperWidth = swiper.width,
9088
+          swiperHeight = swiper.height,
9089
+          slides = swiper.slides,
9090
+          slidesSizesGrid = swiper.slidesSizesGrid;
9091
+      var params = swiper.params.coverflowEffect;
9092
+      var isHorizontal = swiper.isHorizontal();
9093
+      var transform = swiper.translate;
9094
+      var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
9095
+      var rotate = isHorizontal ? params.rotate : -params.rotate;
9096
+      var translate = params.depth; // Each slide offset from center
9097
+
9098
+      for (var i = 0, length = slides.length; i < length; i += 1) {
9099
+        var $slideEl = slides.eq(i);
9100
+        var slideSize = slidesSizesGrid[i];
9101
+        var slideOffset = $slideEl[0].swiperSlideOffset;
9102
+        var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
9103
+        var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
9104
+        var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
9105
+
9106
+        var translateZ = -translate * Math.abs(offsetMultiplier);
9107
+        var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
9108
+
9109
+        if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
9110
+          stretch = parseFloat(params.stretch) / 100 * slideSize;
9111
+        }
9112
+
9113
+        var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
9114
+        var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
9115
+        var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
9116
+
9117
+        if (Math.abs(translateX) < 0.001) translateX = 0;
9118
+        if (Math.abs(translateY) < 0.001) translateY = 0;
9119
+        if (Math.abs(translateZ) < 0.001) translateZ = 0;
9120
+        if (Math.abs(rotateY) < 0.001) rotateY = 0;
9121
+        if (Math.abs(rotateX) < 0.001) rotateX = 0;
9122
+        if (Math.abs(scale) < 0.001) scale = 0;
9123
+        var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
9124
+        $slideEl.transform(slideTransform);
9125
+        $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
9126
+
9127
+        if (params.slideShadows) {
9128
+          // Set shadows
9129
+          var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
9130
+          var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9131
+
9132
+          if ($shadowBeforeEl.length === 0) {
9133
+            $shadowBeforeEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
9134
+            $slideEl.append($shadowBeforeEl);
9135
+          }
9136
+
9137
+          if ($shadowAfterEl.length === 0) {
9138
+            $shadowAfterEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
9139
+            $slideEl.append($shadowAfterEl);
9140
+          }
9141
+
9142
+          if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
9143
+          if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
9144
+        }
9145
+      }
9146
+    },
9147
+    setTransition: function setTransition(duration) {
9148
+      var swiper = this;
9149
+      swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9150
+    }
9151
+  };
9152
+  var EffectCoverflow = {
9153
+    name: 'effect-coverflow',
9154
+    params: {
9155
+      coverflowEffect: {
9156
+        rotate: 50,
9157
+        stretch: 0,
9158
+        depth: 100,
9159
+        scale: 1,
9160
+        modifier: 1,
9161
+        slideShadows: true
9162
+      }
9163
+    },
9164
+    create: function create() {
9165
+      var swiper = this;
9166
+      bindModuleMethods(swiper, {
9167
+        coverflowEffect: _extends({}, Coverflow)
9168
+      });
9169
+    },
9170
+    on: {
9171
+      beforeInit: function beforeInit(swiper) {
9172
+        if (swiper.params.effect !== 'coverflow') return;
9173
+        swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
9174
+        swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9175
+        swiper.params.watchSlidesProgress = true;
9176
+        swiper.originalParams.watchSlidesProgress = true;
9177
+      },
9178
+      setTranslate: function setTranslate(swiper) {
9179
+        if (swiper.params.effect !== 'coverflow') return;
9180
+        swiper.coverflowEffect.setTranslate();
9181
+      },
9182
+      setTransition: function setTransition(swiper, duration) {
9183
+        if (swiper.params.effect !== 'coverflow') return;
9184
+        swiper.coverflowEffect.setTransition(duration);
9185
+      }
9186
+    }
9187
+  };
9188
+
9189
+  var Thumbs = {
9190
+    init: function init() {
9191
+      var swiper = this;
9192
+      var thumbsParams = swiper.params.thumbs;
9193
+      if (swiper.thumbs.initialized) return false;
9194
+      swiper.thumbs.initialized = true;
9195
+      var SwiperClass = swiper.constructor;
9196
+
9197
+      if (thumbsParams.swiper instanceof SwiperClass) {
9198
+        swiper.thumbs.swiper = thumbsParams.swiper;
9199
+        extend$1(swiper.thumbs.swiper.originalParams, {
9200
+          watchSlidesProgress: true,
9201
+          slideToClickedSlide: false
9202
+        });
9203
+        extend$1(swiper.thumbs.swiper.params, {
9204
+          watchSlidesProgress: true,
9205
+          slideToClickedSlide: false
9206
+        });
9207
+      } else if (isObject$1(thumbsParams.swiper)) {
9208
+        swiper.thumbs.swiper = new SwiperClass(extend$1({}, thumbsParams.swiper, {
9209
+          watchSlidesVisibility: true,
9210
+          watchSlidesProgress: true,
9211
+          slideToClickedSlide: false
9212
+        }));
9213
+        swiper.thumbs.swiperCreated = true;
9214
+      }
9215
+
9216
+      swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
9217
+      swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
9218
+      return true;
9219
+    },
9220
+    onThumbClick: function onThumbClick() {
9221
+      var swiper = this;
9222
+      var thumbsSwiper = swiper.thumbs.swiper;
9223
+      if (!thumbsSwiper) return;
9224
+      var clickedIndex = thumbsSwiper.clickedIndex;
9225
+      var clickedSlide = thumbsSwiper.clickedSlide;
9226
+      if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
9227
+      if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
9228
+      var slideToIndex;
9229
+
9230
+      if (thumbsSwiper.params.loop) {
9231
+        slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
9232
+      } else {
9233
+        slideToIndex = clickedIndex;
9234
+      }
9235
+
9236
+      if (swiper.params.loop) {
9237
+        var currentIndex = swiper.activeIndex;
9238
+
9239
+        if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
9240
+          swiper.loopFix(); // eslint-disable-next-line
9241
+
9242
+          swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
9243
+          currentIndex = swiper.activeIndex;
9244
+        }
9245
+
9246
+        var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9247
+        var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9248
+        if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
9249
+      }
9250
+
9251
+      swiper.slideTo(slideToIndex);
9252
+    },
9253
+    update: function update(initial) {
9254
+      var swiper = this;
9255
+      var thumbsSwiper = swiper.thumbs.swiper;
9256
+      if (!thumbsSwiper) return;
9257
+      var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
9258
+      var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
9259
+      var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
9260
+
9261
+      if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
9262
+        var currentThumbsIndex = thumbsSwiper.activeIndex;
9263
+        var newThumbsIndex;
9264
+        var direction;
9265
+
9266
+        if (thumbsSwiper.params.loop) {
9267
+          if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
9268
+            thumbsSwiper.loopFix(); // eslint-disable-next-line
9269
+
9270
+            thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
9271
+            currentThumbsIndex = thumbsSwiper.activeIndex;
9272
+          } // Find actual thumbs index to slide to
9273
+
9274
+
9275
+          var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9276
+          var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9277
+          if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
9278
+          direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
9279
+        } else {
9280
+          newThumbsIndex = swiper.realIndex;
9281
+          direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
9282
+        }
9283
+
9284
+        if (useOffset) {
9285
+          newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
9286
+        }
9287
+
9288
+        if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
9289
+          if (thumbsSwiper.params.centeredSlides) {
9290
+            if (newThumbsIndex > currentThumbsIndex) {
9291
+              newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
9292
+            } else {
9293
+              newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
9294
+            }
9295
+          } else if (newThumbsIndex > currentThumbsIndex) {
9296
+            newThumbsIndex = newThumbsIndex - slidesPerView + 1;
9297
+          }
9298
+
9299
+          thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
9300
+        }
9301
+      } // Activate thumbs
9302
+
9303
+
9304
+      var thumbsToActivate = 1;
9305
+      var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
9306
+
9307
+      if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
9308
+        thumbsToActivate = swiper.params.slidesPerView;
9309
+      }
9310
+
9311
+      if (!swiper.params.thumbs.multipleActiveThumbs) {
9312
+        thumbsToActivate = 1;
9313
+      }
9314
+
9315
+      thumbsToActivate = Math.floor(thumbsToActivate);
9316
+      thumbsSwiper.slides.removeClass(thumbActiveClass);
9317
+
9318
+      if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
9319
+        for (var i = 0; i < thumbsToActivate; i += 1) {
9320
+          thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
9321
+        }
9322
+      } else {
9323
+        for (var _i = 0; _i < thumbsToActivate; _i += 1) {
9324
+          thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
9325
+        }
9326
+      }
9327
+    }
9328
+  };
9329
+  var Thumbs$1 = {
9330
+    name: 'thumbs',
9331
+    params: {
9332
+      thumbs: {
9333
+        swiper: null,
9334
+        multipleActiveThumbs: true,
9335
+        autoScrollOffset: 0,
9336
+        slideThumbActiveClass: 'swiper-slide-thumb-active',
9337
+        thumbsContainerClass: 'swiper-container-thumbs'
9338
+      }
9339
+    },
9340
+    create: function create() {
9341
+      var swiper = this;
9342
+      bindModuleMethods(swiper, {
9343
+        thumbs: _extends({
9344
+          swiper: null,
9345
+          initialized: false
9346
+        }, Thumbs)
9347
+      });
9348
+    },
9349
+    on: {
9350
+      beforeInit: function beforeInit(swiper) {
9351
+        var thumbs = swiper.params.thumbs;
9352
+        if (!thumbs || !thumbs.swiper) return;
9353
+        swiper.thumbs.init();
9354
+        swiper.thumbs.update(true);
9355
+      },
9356
+      slideChange: function slideChange(swiper) {
9357
+        if (!swiper.thumbs.swiper) return;
9358
+        swiper.thumbs.update();
9359
+      },
9360
+      update: function update(swiper) {
9361
+        if (!swiper.thumbs.swiper) return;
9362
+        swiper.thumbs.update();
9363
+      },
9364
+      resize: function resize(swiper) {
9365
+        if (!swiper.thumbs.swiper) return;
9366
+        swiper.thumbs.update();
9367
+      },
9368
+      observerUpdate: function observerUpdate(swiper) {
9369
+        if (!swiper.thumbs.swiper) return;
9370
+        swiper.thumbs.update();
9371
+      },
9372
+      setTransition: function setTransition(swiper, duration) {
9373
+        var thumbsSwiper = swiper.thumbs.swiper;
9374
+        if (!thumbsSwiper) return;
9375
+        thumbsSwiper.setTransition(duration);
9376
+      },
9377
+      beforeDestroy: function beforeDestroy(swiper) {
9378
+        var thumbsSwiper = swiper.thumbs.swiper;
9379
+        if (!thumbsSwiper) return;
9380
+
9381
+        if (swiper.thumbs.swiperCreated && thumbsSwiper) {
9382
+          thumbsSwiper.destroy();
9383
+        }
9384
+      }
9385
+    }
9386
+  };
9387
+
9388
+  // Swiper Class
9389
+  var components = [Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y$1, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];
9390
+  Swiper.use(components);
9391
+
9392
+  return Swiper;
9393
+
9394
+})));
9395
+//# sourceMappingURL=swiper-bundle.js.map
0 9396
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+{"version":3,"file":"swiper-bundle.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/utils/dom.js","../src/utils/utils.js","../src/utils/get-support.js","../src/utils/get-device.js","../src/utils/get-browser.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/core/modular.js","../src/components/core/events-emitter.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/update/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/translate/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/transition/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/slide/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/loop/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/grab-cursor/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/manipulation/index.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/breakpoints/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/classes/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/core/images/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 3.0.0-alpha.4\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 20, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target, src) {\n    if (target === void 0) { target = {}; }\n    if (src === void 0) { src = {}; }\n    Object.keys(src).forEach(function (key) {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nvar ssrDocument = {\n    body: {},\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    activeElement: {\n        blur: function () { },\n        nodeName: '',\n    },\n    querySelector: function () {\n        return null;\n    },\n    querySelectorAll: function () {\n        return [];\n    },\n    getElementById: function () {\n        return null;\n    },\n    createEvent: function () {\n        return {\n            initEvent: function () { },\n        };\n    },\n    createElement: function () {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute: function () { },\n            getElementsByTagName: function () {\n                return [];\n            },\n        };\n    },\n    createElementNS: function () {\n        return {};\n    },\n    importNode: function () {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    var doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nvar ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState: function () { },\n        pushState: function () { },\n        go: function () { },\n        back: function () { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    getComputedStyle: function () {\n        return {\n            getPropertyValue: function () {\n                return '';\n            },\n        };\n    },\n    Image: function () { },\n    Date: function () { },\n    screen: {},\n    setTimeout: function () { },\n    clearTimeout: function () { },\n    matchMedia: function () {\n        return {};\n    },\n    requestAnimationFrame: function (callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame: function (id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    var win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0-alpha.7\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 14, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  var proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get: function get() {\n      return proto;\n    },\n    set: function set(value) {\n      proto.__proto__ = value;\n    }\n  });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n  _inheritsLoose(Dom7, _Array);\n\n  function Dom7(items) {\n    var _this;\n\n    _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n    makeReactive(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n  if (arr === void 0) {\n    arr = [];\n  }\n\n  var res = [];\n  arr.forEach(function (el) {\n    if (Array.isArray(el)) {\n      res.push.apply(res, arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  var uniqueArray = [];\n\n  for (var i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n    return group.toUpperCase();\n  });\n}\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  var a = [];\n  var res = context.querySelectorAll(selector);\n\n  for (var i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  var window = getWindow();\n  var document = getDocument();\n  var arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    var html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      var toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      var tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (var i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\nfunction addClass() {\n  for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {\n    classes[_key] = arguments[_key];\n  }\n\n  var classNames = arrayFlat(classes.map(function (c) {\n    return c.split(' ');\n  }));\n  this.forEach(function (el) {\n    var _el$classList;\n\n    (_el$classList = el.classList).add.apply(_el$classList, classNames);\n  });\n  return this;\n}\n\nfunction removeClass() {\n  for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    classes[_key2] = arguments[_key2];\n  }\n\n  var classNames = arrayFlat(classes.map(function (c) {\n    return c.split(' ');\n  }));\n  this.forEach(function (el) {\n    var _el$classList2;\n\n    (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);\n  });\n  return this;\n}\n\nfunction toggleClass() {\n  for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    classes[_key3] = arguments[_key3];\n  }\n\n  var classNames = arrayFlat(classes.map(function (c) {\n    return c.split(' ');\n  }));\n  this.forEach(function (el) {\n    classNames.forEach(function (className) {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass() {\n  for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n    classes[_key4] = arguments[_key4];\n  }\n\n  var classNames = arrayFlat(classes.map(function (c) {\n    return c.split(' ');\n  }));\n  return arrayFilter(this, function (el) {\n    return classNames.filter(function (className) {\n      return el.classList.contains(className);\n    }).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (var i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (var attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (var i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (var i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (var propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  var el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    var dataKey = el.getAttribute(\"data-\" + key);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (var i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  var el = this[0];\n  if (!el) return undefined;\n  var dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (var dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (var i = 0; i < el.attributes.length; i += 1) {\n      var _attr = el.attributes[i];\n\n      if (_attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n      }\n    }\n  }\n\n  for (var key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    var el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      var values = [];\n\n      for (var i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (var _i = 0; _i < this.length; _i += 1) {\n    var _el = this[_i];\n\n    if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n      for (var j = 0; j < _el.options.length; j += 1) {\n        _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n      }\n    } else {\n      _el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (var i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (var i = 0; i < this.length; i += 1) {\n    this[i].style.transition = typeof duration !== 'string' ? duration + \"ms\" : duration;\n  }\n\n  return this;\n}\n\nfunction on() {\n  for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n    args[_key5] = arguments[_key5];\n  }\n\n  var eventType = args[0],\n      targetSelector = args[1],\n      listener = args[2],\n      capture = args[3];\n\n  if (typeof args[1] === 'function') {\n    eventType = args[0];\n    listener = args[1];\n    capture = args[2];\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    var target = e.target;\n    if (!target) return;\n    var eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      var _parents = $(target).parents(); // eslint-disable-line\n\n\n      for (var k = 0; k < _parents.length; k += 1) {\n        if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  var events = eventType.split(' ');\n  var j;\n\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        var event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener: listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        var _event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n        el.dom7LiveListeners[_event].push({\n          listener: listener,\n          proxyListener: handleLiveEvent\n        });\n\n        el.addEventListener(_event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off() {\n  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n    args[_key6] = arguments[_key6];\n  }\n\n  var eventType = args[0],\n      targetSelector = args[1],\n      listener = args[2],\n      capture = args[3];\n\n  if (typeof args[1] === 'function') {\n    eventType = args[0];\n    listener = args[1];\n    capture = args[2];\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  var events = eventType.split(' ');\n\n  for (var i = 0; i < events.length; i += 1) {\n    var event = events[i];\n\n    for (var j = 0; j < this.length; j += 1) {\n      var el = this[j];\n      var handlers = void 0;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (var k = handlers.length - 1; k >= 0; k -= 1) {\n          var handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once() {\n  var dom = this;\n\n  for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n    args[_key7] = arguments[_key7];\n  }\n\n  var eventName = args[0],\n      targetSelector = args[1],\n      listener = args[2],\n      capture = args[3];\n\n  if (typeof args[1] === 'function') {\n    eventName = args[0];\n    listener = args[1];\n    capture = args[2];\n    targetSelector = undefined;\n  }\n\n  function onceHandler() {\n    for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n      eventArgs[_key8] = arguments[_key8];\n    }\n\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n  var window = getWindow();\n\n  for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n    args[_key9] = arguments[_key9];\n  }\n\n  var events = args[0].split(' ');\n  var eventData = args[1];\n\n  for (var i = 0; i < events.length; i += 1) {\n    var event = events[i];\n\n    for (var j = 0; j < this.length; j += 1) {\n      var el = this[j];\n\n      if (window.CustomEvent) {\n        var evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter(function (data, dataIndex) {\n          return dataIndex > 0;\n        });\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  var dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  var dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  var window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      var _styles = this.styles();\n\n      return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  var window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      var _styles2 = this.styles();\n\n      return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    var window = getWindow();\n    var document = getDocument();\n    var el = this[0];\n    var box = el.getBoundingClientRect();\n    var body = document.body;\n    var clientTop = el.clientTop || body.clientTop || 0;\n    var clientLeft = el.clientLeft || body.clientLeft || 0;\n    var scrollTop = el === window ? window.scrollY : el.scrollTop;\n    var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (var i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  var window = getWindow();\n\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  var window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  var window = getWindow();\n  var i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (var _prop in props) {\n          this[i].style[_prop] = props[_prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach(function (el, index) {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  var result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (var i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (var i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  var window = getWindow();\n  var document = getDocument();\n  var el = this[0];\n  var compareWith;\n  var i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  var child = this[0];\n  var i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  var length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    var returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append() {\n  var newChild;\n  var document = getDocument();\n\n  for (var k = 0; k < arguments.length; k += 1) {\n    newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n    for (var i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        var tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (var j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  var document = getDocument();\n  var i;\n  var j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      var tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  var before = $(selector);\n\n  for (var i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (var j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  var after = $(selector);\n\n  for (var i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (var j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  var nextEls = [];\n  var el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    var _next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(_next).is(selector)) nextEls.push(_next);\n    } else nextEls.push(_next);\n\n    el = _next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    var el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  var prevEls = [];\n  var el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    var _prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(_prev).is(selector)) prevEls.push(_prev);\n    } else prevEls.push(_prev);\n\n    el = _prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  var parents = []; // eslint-disable-line\n\n  for (var i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  var parents = []; // eslint-disable-line\n\n  for (var i = 0; i < this.length; i += 1) {\n    var _parent = this[i].parentNode; // eslint-disable-line\n\n    while (_parent) {\n      if (selector) {\n        if ($(_parent).is(selector)) parents.push(_parent);\n      } else {\n        parents.push(_parent);\n      }\n\n      _parent = _parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  var closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  var foundElements = [];\n\n  for (var i = 0; i < this.length; i += 1) {\n    var found = this[i].querySelectorAll(selector);\n\n    for (var j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  var children = []; // eslint-disable-line\n\n  for (var i = 0; i < this.length; i += 1) {\n    var childNodes = this[i].children;\n\n    for (var j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (var i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add() {\n  var dom = this;\n  var i;\n  var j;\n\n  for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n    els[_key10] = arguments[_key10];\n  }\n\n  for (i = 0; i < els.length; i += 1) {\n    var toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (var i = 0; i < this.length; i += 1) {\n    var el = this[i];\n\n    if (el.nodeType === 1) {\n      for (var j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\nfunction scrollTo() {\n  var window = getWindow();\n\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var left = args[0],\n      top = args[1],\n      duration = args[2],\n      easing = args[3],\n      callback = args[4];\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    left = args[0];\n    top = args[1];\n    duration = args[2];\n    callback = args[3];\n    easing = args[4];\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    var el = this;\n    var currentTop;\n    var currentLeft;\n    var maxTop;\n    var maxLeft;\n    var newTop;\n    var newLeft;\n    var scrollTop; // eslint-disable-line\n\n    var scrollLeft; // eslint-disable-line\n\n    var animateTop = top > 0 || top === 0;\n    var animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    var startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time) {\n      if (time === void 0) {\n        time = new Date().getTime();\n      }\n\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      var done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  var top = args[0],\n      duration = args[1],\n      easing = args[2],\n      callback = args[3];\n\n  if (args.length === 3 && typeof easing === 'function') {\n    top = args[0];\n    duration = args[1];\n    callback = args[2];\n    easing = args[3];\n  }\n\n  var dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    args[_key3] = arguments[_key3];\n  }\n\n  var left = args[0],\n      duration = args[1],\n      easing = args[2],\n      callback = args[3];\n\n  if (args.length === 3 && typeof easing === 'function') {\n    left = args[0];\n    duration = args[1];\n    callback = args[2];\n    easing = args[3];\n  }\n\n  var dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n  var window = getWindow();\n  var els = this;\n  var a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n    easingProgress: function easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n    stop: function stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(function (el) {\n        var element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n    done: function done(complete) {\n      a.animating = false;\n      a.elements.each(function (el) {\n        var element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        var que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n    animate: function animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      var elements = []; // Define & Cache Initials & Units\n\n      a.elements.each(function (el, index) {\n        var initialFullValue;\n        var initialValue;\n        var unit;\n        var finalValue;\n        var finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(function (prop) {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue: initialFullValue,\n            initialValue: initialValue,\n            unit: unit,\n            finalValue: finalValue,\n            finalFullValue: finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      var startTime = null;\n      var time;\n      var elementsDone = 0;\n      var propsDone = 0;\n      var done;\n      var began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        var progress;\n        var easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(function (element) {\n          var el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(function (prop) {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            var _el$prop = el[prop],\n                initialValue = _el$prop.initialValue,\n                finalValue = _el$prop.finalValue,\n                unit = _el$prop.unit;\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            var currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  var animateInstance;\n\n  for (var i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  var els = this;\n\n  for (var i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (typeof args[0] === 'undefined') {\n      for (var i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on.apply(this, [name].concat(args));\n  }\n\n  return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n  $,\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n} from 'dom7';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = Methods[methodName];\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach((key) => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n\n  const curStyle = window.getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform\n        .split(', ')\n        .map((a) => a.replace(',', '.'))\n        .join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix =\n      curStyle.MozTransform ||\n      curStyle.OTransform ||\n      curStyle.MsTransform ||\n      curStyle.msTransform ||\n      curStyle.transform ||\n      curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nfunction extend(...args) {\n  const to = Object(args[0]);\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null) {\n      const keysArray = Object.keys(Object(nextSource));\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            extend(to[nextKey], nextSource[nextKey]);\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            extend(to[nextKey], nextSource[nextKey]);\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n  Object.keys(obj).forEach((key) => {\n    if (isObject(obj[key])) {\n      Object.keys(obj[key]).forEach((subKey) => {\n        if (typeof obj[key][subKey] === 'function') {\n          obj[key][subKey] = obj[key][subKey].bind(instance);\n        }\n      });\n    }\n    instance[key] = obj[key];\n  });\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods };\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n\n  return {\n    touch: !!(\n      'ontouchstart' in window ||\n      (window.DocumentTouch && document instanceof window.DocumentTouch)\n    ),\n\n    pointerEvents:\n      !!window.PointerEvent &&\n      'maxTouchPoints' in window.navigator &&\n      window.navigator.maxTouchPoints >= 0,\n\n    observer: (function checkObserver() {\n      return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n    })(),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    })(),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    })(),\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\n\nlet device;\n\nfunction calcDevice({ userAgent } = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = [\n    '1024x1366',\n    '1366x1024',\n    '834x1194',\n    '1194x834',\n    '834x1112',\n    '1112x834',\n    '768x1024',\n    '1024x768',\n    '820x1180',\n    '1180x820',\n    '810x1080',\n    '1080x810',\n  ];\n  if (\n    !ipad &&\n    macos &&\n    support.touch &&\n    iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\n\nfunction getDevice(overrides = {}) {\n  if (!device) {\n    device = calcDevice(overrides);\n  }\n  return device;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  return {\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nexport default {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      const window = getWindow();\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy(swiper) {\n      const window = getWindow();\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n","import { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Observer = {\n  attach(target, options = {}) {\n    const window = getWindow();\n    const swiper = this;\n\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], {\n      childList: swiper.params.observeSlideChildren,\n    });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nexport default {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      observer: {\n        ...Observer,\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      swiper.observer.init();\n    },\n    destroy(swiper) {\n      swiper.observer.destroy();\n    },\n  },\n};\n","import { extend } from '../../utils/utils';\n\nexport default {\n  useParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        extend(instanceParams, module.params);\n      }\n    });\n  },\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  },\n};\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (\n            eventHandler === handler ||\n            (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n          ) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n    eventsArray.forEach((event) => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach((eventHandler) => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  },\n};\n","import { extend } from '../../../utils/utils';\n\nexport default function updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width =\n    width -\n    parseInt($el.css('padding-left') || 0, 10) -\n    parseInt($el.css('padding-right') || 0, 10);\n  height =\n    height -\n    parseInt($el.css('padding-top') || 0, 10) -\n    parseInt($el.css('padding-bottom') || 0, 10);\n\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n\n  extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../../utils/utils';\n\nexport default function updateSlides() {\n  const swiper = this;\n  const window = getWindow();\n  const params = swiper.params;\n\n  const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  function slidesForMargin(slideEl, slideIndex) {\n    if (!params.cssMode) return true;\n    if (slideIndex === slides.length - 1) {\n      return false;\n    }\n    return true;\n  }\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (\n      Math.floor(slidesLength / params.slidesPerColumn) ===\n      slidesLength / swiper.params.slidesPerColumn\n    ) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows =\n        Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(\n        slidesNumberEvenToRows,\n        params.slidesPerView * params.slidesPerColumn,\n      );\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n        const columnsInGroup =\n          groupIndex === 0\n            ? params.slidesPerGroup\n            : Math.min(\n                Math.ceil(\n                  (slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) /\n                    slidesPerColumn,\n                ),\n                params.slidesPerGroup,\n              );\n        row = Math.floor(slideIndexInGroup / columnsInGroup);\n        column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n\n        newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / slidesPerColumn;\n        slide.css({\n          '-webkit-box-ordinal-group': newSlideOrderIndex,\n          '-moz-box-ordinal-group': newSlideOrderIndex,\n          '-ms-flex-order': newSlideOrderIndex,\n          '-webkit-order': newSlideOrderIndex,\n          order: newSlideOrderIndex,\n        });\n      } else if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - column * slidesPerColumn;\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - row * slidesPerRow;\n      }\n      slide.css(\n        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n        row !== 0 && params.spaceBetween && `${params.spaceBetween}px`,\n      );\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width') || 0);\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            const { clientWidth, offsetWidth } = slide[0];\n            slideSize =\n              width +\n              paddingLeft +\n              paddingRight +\n              marginLeft +\n              marginRight +\n              (offsetWidth - clientWidth);\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height') || 0);\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            const { clientHeight, offsetHeight } = slide[0];\n            slideSize =\n              height +\n              paddingTop +\n              paddingBottom +\n              marginTop +\n              marginBottom +\n              (offsetHeight - clientHeight);\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0)\n        slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (\n        (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n          swiper.params.slidesPerGroup ===\n        0\n      )\n        snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    if (swiper.isHorizontal())\n      $wrapperEl.css({\n        width: `${swiper.virtualSize + params.spaceBetween}px`,\n      });\n    else\n      $wrapperEl.css({\n        height: `${swiper.virtualSize + params.spaceBetween}px`,\n      });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize =\n      Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal())\n      $wrapperEl.css({\n        width: `${swiper.virtualSize + params.spaceBetween}px`,\n      });\n    else\n      $wrapperEl.css({\n        height: `${swiper.virtualSize + params.spaceBetween}px`,\n      });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (\n      Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n      1\n    ) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map((snap) => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n","export default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each((slide) => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length) break;\n        activeSlides.push(swiper.slides.eq(index)[0]);\n      }\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal()\n      ? slides[i].offsetLeft\n      : slides[i].offsetTop;\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress =\n      (offsetCenter +\n        (params.centeredSlides ? swiper.minTranslate() : 0) -\n        slide.swiperSlideOffset) /\n      (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible =\n        (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n        (slideAfter > 1 && slideAfter <= swiper.size) ||\n        (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import { extend } from '../../../utils/utils';\n\nexport default function updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (\n    params.watchSlidesProgress ||\n    params.watchSlidesVisibility ||\n    (params.centeredSlides && params.autoHeight)\n  )\n    swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n  const swiper = this;\n\n  const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(\n    `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n  );\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(\n      `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n    );\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n        )\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n        )\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide\n    .nextAll(`.${params.slideClass}`)\n    .eq(0)\n    .addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide\n    .prevAll(`.${params.slideClass}`)\n    .eq(0)\n    .addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}:not(.${\n            params.slideDuplicateClass\n          })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n        )\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}.${\n            params.slideDuplicateClass\n          }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n        )\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}:not(.${\n            params.slideDuplicateClass\n          })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n        )\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}.${\n            params.slideDuplicateClass\n          }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n        )\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n  swiper.emitSlidesClasses();\n}\n","import { extend } from '../../../utils/utils';\n\nexport default function updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (\n          translate >= slidesGrid[i] &&\n          translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n        ) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(\n    swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n    10,\n  );\n\n  extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (\n    params.slideToClickedSlide &&\n    swiper.clickedIndex !== undefined &&\n    swiper.clickedIndex !== swiper.activeIndex\n  ) {\n    swiper.slideToClickedSlide();\n  }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n","import { getTranslate } from '../../../utils/utils';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n  return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n","export default function translateTo(\n  translate = 0,\n  speed = this.params.speed,\n  runCallbacks = true,\n  translateBounds = true,\n  internal,\n) {\n  const swiper = this;\n\n  const { params, wrapperEl } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: -newTranslate,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener(\n            'transitionend',\n            swiper.onTranslateToWrapperTransitionEnd,\n          );\n          swiper.$wrapperEl[0].removeEventListener(\n            'webkitTransitionEnd',\n            swiper.onTranslateToWrapperTransitionEnd,\n          );\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener(\n        'transitionend',\n        swiper.onTranslateToWrapperTransitionEnd,\n      );\n      swiper.$wrapperEl[0].addEventListener(\n        'webkitTransitionEnd',\n        swiper.onTranslateToWrapperTransitionEnd,\n      );\n    }\n  }\n\n  return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo,\n};\n","export default function setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n","export default function transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex, params } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n","export default function slideTo(\n  index = 0,\n  speed = this.params.speed,\n  runCallbacks = true,\n  internal,\n) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (\n      !swiper.allowSlideNext &&\n      translate < swiper.translate &&\n      translate < swiper.minTranslate()\n    ) {\n      return false;\n    }\n    if (\n      !swiper.allowSlidePrev &&\n      translate > swiper.translate &&\n      translate > swiper.maxTranslate()\n    ) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    let t = -translate;\n    if (rtl) {\n      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n    }\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: t,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener(\n            'transitionend',\n            swiper.onSlideToWrapperTransitionEnd,\n          );\n          swiper.$wrapperEl[0].removeEventListener(\n            'webkitTransitionEnd',\n            swiper.onSlideToWrapperTransitionEnd,\n          );\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener(\n        'webkitTransitionEnd',\n        swiper.onSlideToWrapperTransitionEnd,\n      );\n    }\n  }\n\n  return true;\n}\n","export default function slideToLoop(\n  index = 0,\n  speed = this.params.speed,\n  runCallbacks = true,\n  internal,\n) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating, snapGrid, slidesGrid, rtlTranslate } = swiper;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    snapGrid.forEach((snap) => {\n      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n    });\n  }\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n  speed = this.params.speed,\n  runCallbacks = true,\n  internal,\n  threshold = 0.5,\n) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\n\nexport default function slideToClickedSlide() {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView =\n    params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n        slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(\n            `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n          )\n          .eq(0)\n          .index();\n\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(\n          `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n        )\n        .eq(0)\n        .index();\n\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(\n          `${params.slideClass} ${params.slideBlankClass}`,\n        );\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) {\n      appendSlides.push(el);\n    }\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n      prependSlides.push(el);\n    }\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n","export default function loopFix() {\n  const swiper = this;\n\n  swiper.emit('beforeLoopFix');\n\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl\n    .children(\n      `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n    )\n    .remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (\n    swiper.support.touch ||\n    !swiper.params.simulateTouch ||\n    (swiper.params.watchOverflow && swiper.isLocked) ||\n    swiper.params.cssMode\n  )\n    return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n  const swiper = this;\n  if (\n    swiper.support.touch ||\n    (swiper.params.watchOverflow && swiper.isLocked) ||\n    swiper.params.cssMode\n  ) {\n    return;\n  }\n  swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n","export default function appendSlide(slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && swiper.support.observer)) {\n    swiper.update();\n  }\n}\n","export default function prependSlide(slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && swiper.support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex =\n      activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && swiper.support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","export default function removeSlide(slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && swiper.support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","export default function removeAllSlides() {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\n\nexport default function onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (\n    params.noSwiping &&\n    $targetEl.closest(\n      params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`,\n    )[0]\n  ) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection &&\n    (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)\n  ) {\n    return;\n  }\n\n  extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.formElements)) preventDefault = false;\n    if (\n      document.activeElement &&\n      $(document.activeElement).is(data.formElements) &&\n      document.activeElement !== $targetEl[0]\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault =\n      preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\n\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch =\n    e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n        (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n      (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n    return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (\n      (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n      (swiper.isVertical() && touches.currentX === touches.startX)\n    ) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal()\n          ? touchAngle > params.touchAngle\n          : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance)\n      data.currentTranslate =\n        swiper.minTranslate() -\n        1 +\n        (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance)\n      data.currentTranslate =\n        swiper.maxTranslate() +\n        1 -\n        (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (\n    !swiper.allowSlideNext &&\n    swiper.swipeDirection === 'next' &&\n    data.currentTranslate < data.startTranslate\n  ) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (\n    !swiper.allowSlidePrev &&\n    swiper.swipeDirection === 'prev' &&\n    data.currentTranslate > data.startTranslate\n  ) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal()\n          ? touches.currentX - touches.startX\n          : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../../utils/utils';\n\nexport default function onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const { params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (\n    params.grabCursor &&\n    data.isMoved &&\n    data.isTouched &&\n    (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n  ) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (\n    !data.isTouched ||\n    !data.isMoved ||\n    !swiper.swipeDirection ||\n    touches.diff === 0 ||\n    data.currentTranslate === data.startTranslate\n  ) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (\n          Math.abs(snapGrid[nextSlide] - newPosition) <\n            Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n          swiper.swipeDirection === 'next'\n        ) {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeModeSticky) {\n          // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (\n    let i = 0;\n    i < slidesGrid.length;\n    i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n  ) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget =\n      swiper.navigation &&\n      (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n","export default function onResize() {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  swiper.updateSlidesClasses();\n  if (\n    (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n    swiper.isEnd &&\n    !swiper.isBeginning &&\n    !swiper.params.centeredSlides\n  ) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n","export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n","export default function onScroll() {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate } = swiper;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    if (rtlTranslate) {\n      swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n    } else {\n      swiper.translate = -wrapperEl.scrollLeft;\n    }\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === -0) swiper.translate = 0;\n\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!support.touch && support.pointerEvents) {\n    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (support.touch) {\n      const passiveListener =\n        touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n          ? { passive: true, capture: false }\n          : false;\n      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.addEventListener(\n        touchEvents.move,\n        swiper.onTouchMove,\n        support.passiveListener ? { passive: false, capture } : capture,\n      );\n      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n      if (!dummyEventAttached) {\n        document.addEventListener('touchstart', dummyEventListener);\n        dummyEventAttached = true;\n      }\n    }\n    if (\n      (params.simulateTouch && !device.ios && !device.android) ||\n      (params.simulateTouch && !support.touch && device.ios)\n    ) {\n      el.addEventListener('mousedown', swiper.onTouchStart, false);\n      document.addEventListener('mousemove', swiper.onTouchMove, capture);\n      document.addEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.addEventListener('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl.addEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper.on(\n      device.ios || device.android\n        ? 'resize orientationchange observerUpdate'\n        : 'resize observerUpdate',\n      onResize,\n      true,\n    );\n  } else {\n    swiper.on('observerUpdate', onResize, true);\n  }\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  const document = getDocument();\n\n  const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!support.touch && support.pointerEvents) {\n    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (support.touch) {\n      const passiveListener =\n        touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners\n          ? { passive: true, capture: false }\n          : false;\n      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n    }\n    if (\n      (params.simulateTouch && !device.ios && !device.android) ||\n      (params.simulateTouch && !support.touch && device.ios)\n    ) {\n      el.removeEventListener('mousedown', swiper.onTouchStart, false);\n      document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n      document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.removeEventListener('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl.removeEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  swiper.off(\n    device.ios || device.android\n      ? 'resize orientationchange observerUpdate'\n      : 'resize observerUpdate',\n    onResize,\n  );\n}\n\nexport default {\n  attachEvents,\n  detachEvents,\n};\n","import { extend } from '../../../utils/utils';\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      [\n        'slidesPerView',\n        'spaceBetween',\n        'slidesPerGroup',\n        'slidesPerGroupSkip',\n        'slidesPerColumn',\n      ].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = params.slidesPerColumn > 1;\n    const isMultiRow = breakpointParams.slidesPerColumn > 1;\n    if (wasMultiRow && !isMultiRow) {\n      $el.removeClass(\n        `${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`,\n      );\n      swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n      $el.addClass(`${params.containerModifierClass}multirow`);\n      if (breakpointParams.slidesPerColumnFill === 'column') {\n        $el.addClass(`${params.containerModifierClass}multirow-column`);\n      }\n      swiper.emitContainerClasses();\n    }\n\n    const directionChanged =\n      breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop =\n      params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    extend(swiper.params, breakpointParams);\n\n    extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    swiper.emit('_beforeBreakpoint', breakpointParams);\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoints(breakpoints) {\n  const window = getWindow();\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n\n  const points = Object.keys(breakpoints).map((point) => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = window.innerHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (value <= window.innerWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","export default function addClasses() {\n  const swiper = this;\n  const { classNames, params, rtl, $el, device } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n    if (params.slidesPerColumnFill === 'column') {\n      suffixes.push('multirow-column');\n    }\n  }\n  if (device.android) {\n    suffixes.push('android');\n  }\n  if (device.ios) {\n    suffixes.push('ios');\n  }\n\n  if (params.cssMode) {\n    suffixes.push('css-mode');\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n\n  swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n  swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n","export default function preloadImages() {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady,\n    );\n  }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n  loadImage,\n  preloadImages,\n};\n","function checkOverflow() {\n  const swiper = this;\n  const params = swiper.params;\n  const wasLocked = swiper.isLocked;\n  const lastSlidePosition =\n    swiper.slides.length > 0 &&\n    params.slidesOffsetBefore +\n      params.spaceBetween * (swiper.slides.length - 1) +\n      swiper.slides[0].offsetWidth * swiper.slides.length;\n\n  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n    swiper.isLocked = lastSlidePosition <= swiper.size;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    if (swiper.navigation) swiper.navigation.update();\n  }\n}\n\nexport default { checkOverflow };\n","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  nested: false,\n\n  // Overrides\n  width: null,\n  height: null,\n\n  //\n  preventInteractionOnTransition: false,\n\n  // ssr\n  userAgent: null,\n  url: null,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n\n  // Internals\n  _emitClasses: false,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\n\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\n\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n  modular,\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.support = getSupport();\n    swiper.device = getDevice({ userAgent: params.userAgent });\n    swiper.browser = getBrowser();\n\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object' &&\n          !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults);\n    swiper.useParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach((eventName) => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((containerEl) => {\n        const newParams = extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n\n    // Find Wrapper\n    let $wrapperEl;\n    if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n      // Children needs to return slot items\n      $wrapperEl.children = (options) => $el.children(options);\n    } else {\n      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n    }\n    // Extend Swiper\n    extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n      rtlTranslate:\n        swiper.params.direction === 'horizontal' &&\n        (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (swiper.support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return swiper.support.touch || !swiper.params.simulateTouch\n          ? swiper.touchEventsTouch\n          : swiper.touchEventsDesktop;\n      })(),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video, label',\n        // Last click time\n        lastClickTime: now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const classes = swiper.el.className.split(' ').filter((className) => {\n      return (\n        className.indexOf('swiper-container') === 0 ||\n        className.indexOf(swiper.params.containerModifierClass) === 0\n      );\n    });\n    swiper.emit('_containerClasses', classes.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    return slideEl.className\n      .split(' ')\n      .filter((className) => {\n        return (\n          className.indexOf('swiper-slide') === 0 ||\n          className.indexOf(swiper.params.slideClass) === 0\n        );\n      })\n      .join(' ');\n  }\n\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    swiper.slides.each((slideEl) => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const { params, slides, slidesGrid, size: swiperSize, activeIndex } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(\n        Math.max(translateValue, swiper.maxTranslate()),\n        swiper.minTranslate(),\n      );\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if (\n        (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n        swiper.isEnd &&\n        !swiper.params.centeredSlides\n      ) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (\n      newDirection === currentDirection ||\n      (newDirection !== 'horizontal' && newDirection !== 'vertical')\n    ) {\n      return swiper;\n    }\n\n    swiper.$el\n      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(\n        swiper.params.initialSlide + swiper.loopedSlides,\n        0,\n        swiper.params.runCallbacksOnInit,\n      );\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const { params, $el, $wrapperEl, slides } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass(\n            [\n              params.slideVisibleClass,\n              params.slideActiveClass,\n              params.slideNextClass,\n              params.slidePrevClass,\n            ].join(' '),\n          )\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(module) {\n    if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n    const name = module.name || `${Object.keys(Swiper.prototype.modules).length}_${now()}`;\n    Swiper.prototype.modules[name] = module;\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach((m) => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n  Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        })(),\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl\n            .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n            .remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes\n      .sort((a, b) => b - a)\n      .forEach((index) => {\n        swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n      });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(\n          `<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`,\n        );\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nexport default {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      virtual: {\n        ...Virtual,\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      extend(swiper.params, overwriteParams);\n      extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate(swiper) {\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const window = getWindow();\n    const document = getDocument();\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (\n      !swiper.allowSlideNext &&\n      ((swiper.isHorizontal() && isArrowRight) ||\n        (swiper.isVertical() && isArrowDown) ||\n        isPageDown)\n    ) {\n      return false;\n    }\n    if (\n      !swiper.allowSlidePrev &&\n      ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n    ) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (\n      document.activeElement &&\n      document.activeElement.nodeName &&\n      (document.activeElement.nodeName.toLowerCase() === 'input' ||\n        document.activeElement.nodeName.toLowerCase() === 'textarea')\n    ) {\n      return undefined;\n    }\n    if (\n      swiper.params.keyboard.onlyInViewport &&\n      (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n    ) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (\n        swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n        swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n      ) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n        swiper.slideNext();\n      if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n        swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    const document = getDocument();\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    const document = getDocument();\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nexport default {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      keyboard: {\n        enabled: false,\n        ...Keyboard,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy(swiper) {\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { now, nextTick, bindModuleMethods } from '../../utils/utils';\n\nfunction isEventSupported() {\n  const document = getDocument();\n  const eventName = 'onwheel';\n  let isSupported = eventName in document;\n\n  if (!isSupported) {\n    const element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (\n    !isSupported &&\n    document.implementation &&\n    document.implementation.hasFeature &&\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    document.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: now(),\n  lastEventBeforeSnap: undefined,\n  recentWheelEvents: [],\n  event() {\n    const window = getWindow();\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  },\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n      return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n      else return true;\n    } else {\n      delta =\n        Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event,\n      };\n\n      // Keep the most recent events\n      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n      const prevEvent = recentWheelEvents.length\n        ? recentWheelEvents[recentWheelEvents.length - 1]\n        : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (\n          newEvent.direction !== prevEvent.direction ||\n          newEvent.delta > prevEvent.delta ||\n          newEvent.time > prevEvent.time + 150\n        ) {\n          swiper.mousewheel.animateSlider(newEvent);\n        }\n      } else {\n        swiper.mousewheel.animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (swiper.mousewheel.releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n      };\n      const { lastEventBeforeSnap } = swiper.mousewheel;\n      const ignoreWheelEvents =\n        lastEventBeforeSnap &&\n        newEvent.time < lastEventBeforeSnap.time + 500 &&\n        newEvent.delta <= lastEventBeforeSnap.delta &&\n        newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeModeSticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(swiper.mousewheel.timeout);\n          swiper.mousewheel.timeout = undefined;\n          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n          const prevEvent = recentWheelEvents.length\n            ? recentWheelEvents[recentWheelEvents.length - 1]\n            : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (\n            prevEvent &&\n            (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n          ) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (\n            recentWheelEvents.length >= 15 &&\n            newEvent.time - firstEvent.time < 500 &&\n            firstEvent.delta - newEvent.delta >= 1 &&\n            newEvent.delta <= 6\n          ) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            swiper.mousewheel.lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            swiper.mousewheel.timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!swiper.mousewheel.timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            swiper.mousewheel.timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              swiper.mousewheel.lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n          swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  animateSlider(newEvent) {\n    const swiper = this;\n    const window = getWindow();\n\n    if (\n      this.params.mousewheel.thresholdDelta &&\n      newEvent.delta < this.params.mousewheel.thresholdDelta\n    ) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (\n      this.params.mousewheel.thresholdTime &&\n      now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime\n    ) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        swiper.emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      swiper.emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    swiper.mousewheel.lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  },\n  releaseScroll(newEvent) {\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n    target.off(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nexport default {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      mousewheel: {\n        enabled: false,\n        lastScrollTime: now(),\n        lastEventBeforeSnap: undefined,\n        recentWheelEvents: [],\n\n        enable: Mousewheel.enable,\n        disable: Mousewheel.disable,\n        handle: Mousewheel.handle,\n        handleMouseEnter: Mousewheel.handleMouseEnter,\n        handleMouseLeave: Mousewheel.handleMouseLeave,\n        animateSlider: Mousewheel.animateSlider,\n        releaseScroll: Mousewheel.releaseScroll,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n        swiper.mousewheel.disable();\n      }\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy(swiper) {\n      if (swiper.params.cssMode) {\n        swiper.mousewheel.enable();\n      }\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n        params.lockClass,\n      );\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n        params.lockClass,\n      );\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements &&\n        typeof params.nextEl === 'string' &&\n        $nextEl.length > 1 &&\n        swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements &&\n        typeof params.prevEl === 'string' &&\n        $prevEl.length > 1 &&\n        swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nexport default {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      navigation: {\n        ...Navigation,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge(swiper) {\n      swiper.navigation.update();\n    },\n    fromEdge(swiper) {\n      swiper.navigation.update();\n    },\n    destroy(swiper) {\n      swiper.navigation.destroy();\n    },\n    click(swiper, e) {\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick &&\n        !$(e.target).is($prevEl) &&\n        !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow');\n        } else {\n          swiper.emit('navigationHide');\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (\n      !params.el ||\n      !swiper.pagination.el ||\n      !swiper.pagination.$el ||\n      swiper.pagination.$el.length === 0\n    )\n      return;\n    const slidesLength =\n      swiper.virtual && swiper.params.virtual.enabled\n        ? swiper.virtual.slides.length\n        : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop\n      ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n      : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil(\n        (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n      );\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (\n      params.type === 'bullets' &&\n      swiper.pagination.bullets &&\n      swiper.pagination.bullets.length > 0\n    ) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets\n          .eq(0)\n          [swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(\n          swiper.isHorizontal() ? 'width' : 'height',\n          `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`,\n        );\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n          if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(\n        `${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`,\n      );\n      if ($el.length > 1) {\n        bullets.each((bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n              bullets\n                .eq(bullets.length - params.dynamicMainBullets - 1)\n                .addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              $firstDisplayedBullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n              $lastDisplayedBullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          } else {\n            $firstDisplayedBullet\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev`)\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev-prev`);\n            $lastDisplayedBullet\n              .next()\n              .addClass(`${params.bulletActiveClass}-next`)\n              .next()\n              .addClass(`${params.bulletActiveClass}-next-next`);\n          }\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset =\n          (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 -\n          midIndex * swiper.pagination.bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el\n        .find(`.${params.progressbarFillClass}`)\n        .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n        .transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n      params.lockClass,\n    );\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (\n      !params.el ||\n      !swiper.pagination.el ||\n      !swiper.pagination.$el ||\n      swiper.pagination.$el.length === 0\n    )\n      return;\n    const slidesLength =\n      swiper.virtual && swiper.params.virtual.enabled\n        ? swiper.virtual.slides.length\n        : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop\n        ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n        : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML =\n          `<span class=\"${params.currentClass}\"></span>` +\n          ' / ' +\n          `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (\n      !params.el ||\n      !swiper.pagination.el ||\n      !swiper.pagination.$el ||\n      swiper.pagination.$el.length === 0\n    )\n      return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nexport default {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: (number) => number,\n      formatFractionTotal: (number) => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      pagination: {\n        dynamicBulletIndex: 0,\n        ...Pagination,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange(swiper) {\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange(swiper) {\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange(swiper) {\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange(swiper) {\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy(swiper) {\n      swiper.pagination.destroy();\n    },\n    click(swiper, e) {\n      if (\n        swiper.params.pagination.el &&\n        swiper.params.pagination.hideOnClick &&\n        swiper.pagination.$el.length > 0 &&\n        !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow');\n        } else {\n          swiper.emit('paginationHide');\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const { dragSize, trackSize, $dragEl, $el } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n      swiper.params.scrollbar.lockClass,\n    );\n  },\n  getPointerPosition(e) {\n    const swiper = this;\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove'\n        ? e.targetTouches[0].clientX\n        : e.clientX;\n    }\n    return e.type === 'touchstart' || e.type === 'touchmove'\n      ? e.targetTouches[0].clientY\n      : e.clientY;\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const { $el, dragSize, trackSize, dragStartPos } = scrollbar;\n\n    let positionRatio;\n    positionRatio =\n      (scrollbar.getPointerPosition(e) -\n        $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n        (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n      (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position =\n      swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    swiper.scrollbar.dragStartPos =\n      e.target === $dragEl[0] || e.target === $dragEl\n        ? scrollbar.getPointerPosition(e) -\n          e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n        : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const document = getDocument();\n    const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener =\n      support.passiveListener && params.passiveListeners\n        ? { passive: false, capture: false }\n        : false;\n    const passiveListener =\n      support.passiveListener && params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    if (!support.touch) {\n      target.addEventListener(\n        touchEventsDesktop.start,\n        swiper.scrollbar.onDragStart,\n        activeListener,\n      );\n      document.addEventListener(\n        touchEventsDesktop.move,\n        swiper.scrollbar.onDragMove,\n        activeListener,\n      );\n      document.addEventListener(\n        touchEventsDesktop.end,\n        swiper.scrollbar.onDragEnd,\n        passiveListener,\n      );\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const document = getDocument();\n    const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener =\n      support.passiveListener && params.passiveListeners\n        ? { passive: false, capture: false }\n        : false;\n    const passiveListener =\n      support.passiveListener && params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    if (!support.touch) {\n      target.removeEventListener(\n        touchEventsDesktop.start,\n        swiper.scrollbar.onDragStart,\n        activeListener,\n      );\n      document.removeEventListener(\n        touchEventsDesktop.move,\n        swiper.scrollbar.onDragMove,\n        activeListener,\n      );\n      document.removeEventListener(\n        touchEventsDesktop.end,\n        swiper.scrollbar.onDragEnd,\n        passiveListener,\n      );\n    } else {\n      target.removeEventListener(\n        touchEventsTouch.start,\n        swiper.scrollbar.onDragStart,\n        activeListener,\n      );\n      target.removeEventListener(\n        touchEventsTouch.move,\n        swiper.scrollbar.onDragMove,\n        activeListener,\n      );\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (\n      swiper.params.uniqueNavElements &&\n      typeof params.el === 'string' &&\n      $el.length > 1 &&\n      $swiperEl.find(params.el).length === 1\n    ) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nexport default {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      scrollbar: {\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n        ...Scrollbar,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update(swiper) {\n      swiper.scrollbar.updateSize();\n    },\n    resize(swiper) {\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate(swiper) {\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate(swiper) {\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(swiper, duration) {\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy(swiper) {\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const { $el, slides, progress, snapGrid } = swiper;\n    $el\n      .children(\n        '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n      )\n      .each((el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl)\n        .find(\n          '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n        )\n        .each((el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el\n      .find(\n        '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n      )\n      .each((parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration =\n          parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nexport default {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      parallax: {\n        ...Parallax,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init(swiper) {\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate(swiper) {\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(swiper, duration) {\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods, getTranslate } from '../../utils/utils';\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const gesture = zoom.gesture;\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') zoom.onGestureStart(e);\n      return;\n    }\n    if (support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (\n        e.type !== 'touchend' ||\n        (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n      ) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl\n      .transition(swiper.params.speed)\n      .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const device = swiper.device;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal() &&\n        ((Math.floor(image.minX) === Math.floor(image.startX) &&\n          image.touchesCurrent.x < image.touchesStart.x) ||\n          (Math.floor(image.maxX) === Math.floor(image.startX) &&\n            image.touchesCurrent.x > image.touchesStart.x))\n      ) {\n        image.isTouched = false;\n        return;\n      }\n      if (\n        !swiper.isHorizontal() &&\n        ((Math.floor(image.minY) === Math.floor(image.startY) &&\n          image.touchesCurrent.y < image.touchesStart.y) ||\n          (Math.floor(image.maxY) === Math.floor(image.startY) &&\n            image.touchesCurrent.y > image.touchesStart.y))\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x =\n      (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y =\n      (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0)\n      momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0)\n      momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl\n      .transition(momentumDuration)\n      .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl\n      .transition(300)\n      .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n\n  toggleGestures(method) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { slideSelector: selector, passiveListener: passive } = zoom;\n    swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\n    swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\n    swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\n  },\n  enableGestures() {\n    if (this.zoom.gesturesEnabled) return;\n    this.zoom.gesturesEnabled = true;\n    this.zoom.toggleGestures('on');\n  },\n  disableGestures() {\n    if (!this.zoom.gesturesEnabled) return;\n    this.zoom.gesturesEnabled = false;\n    this.zoom.toggleGestures('off');\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const support = swiper.support;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener =\n      swiper.touchEvents.start === 'touchstart' &&\n      support.passiveListener &&\n      swiper.params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    const activeListenerWithCapture = support.passiveListener\n      ? { passive: false, capture: true }\n      : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    swiper.zoom.passiveListener = passiveListener;\n    swiper.zoom.slideSelector = slideSelector;\n\n    // Scale image\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(\n        swiper.touchEvents.start,\n        slideSelector,\n        zoom.onGestureStart,\n        passiveListener,\n      );\n      swiper.$wrapperEl.on(\n        swiper.touchEvents.move,\n        slideSelector,\n        zoom.onGestureChange,\n        activeListenerWithCapture,\n      );\n      swiper.$wrapperEl.on(\n        swiper.touchEvents.end,\n        slideSelector,\n        zoom.onGestureEnd,\n        passiveListener,\n      );\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(\n          swiper.touchEvents.cancel,\n          slideSelector,\n          zoom.onGestureEnd,\n          passiveListener,\n        );\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(\n      swiper.touchEvents.move,\n      `.${swiper.params.zoom.containerClass}`,\n      zoom.onTouchMove,\n      activeListenerWithCapture,\n    );\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener =\n      swiper.touchEvents.start === 'touchstart' &&\n      support.passiveListener &&\n      swiper.params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    const activeListenerWithCapture = support.passiveListener\n      ? { passive: false, capture: true }\n      : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(\n        swiper.touchEvents.start,\n        slideSelector,\n        zoom.onGestureStart,\n        passiveListener,\n      );\n      swiper.$wrapperEl.off(\n        swiper.touchEvents.move,\n        slideSelector,\n        zoom.onGestureChange,\n        activeListenerWithCapture,\n      );\n      swiper.$wrapperEl.off(\n        swiper.touchEvents.end,\n        slideSelector,\n        zoom.onGestureEnd,\n        passiveListener,\n      );\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(\n          swiper.touchEvents.cancel,\n          slideSelector,\n          zoom.onGestureEnd,\n          passiveListener,\n        );\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(\n      swiper.touchEvents.move,\n      `.${swiper.params.zoom.containerClass}`,\n      zoom.onTouchMove,\n      activeListenerWithCapture,\n    );\n  },\n};\n\nexport default {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n\n    bindModuleMethods(swiper, {\n      zoom: {\n        enabled: false,\n        scale: 1,\n        currentScale: 1,\n        isScaling: false,\n        gesture: {\n          $slideEl: undefined,\n          slideWidth: undefined,\n          slideHeight: undefined,\n          $imageEl: undefined,\n          $imageWrapEl: undefined,\n          maxRatio: 3,\n        },\n        image: {\n          isTouched: undefined,\n          isMoved: undefined,\n          currentX: undefined,\n          currentY: undefined,\n          minX: undefined,\n          minY: undefined,\n          maxX: undefined,\n          maxY: undefined,\n          width: undefined,\n          height: undefined,\n          startX: undefined,\n          startY: undefined,\n          touchesStart: {},\n          touchesCurrent: {},\n        },\n        velocity: {\n          x: undefined,\n          y: undefined,\n          prevPositionX: undefined,\n          prevPositionY: undefined,\n          prevTime: undefined,\n        },\n        ...Zoom,\n      },\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl\n            ? swiper.zoom.gesture.$imageEl[0]\n            : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl\n            ? swiper.zoom.gesture.$slideEl[0]\n            : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy(swiper) {\n      swiper.zoom.disable();\n    },\n    touchStart(swiper, e) {\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(swiper, e) {\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(swiper, e) {\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd(swiper) {\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n    slideChange(swiper) {\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(\n          `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n        )\n      : swiper.slides.eq(index);\n\n    const $images = $slideEl.find(\n      `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n    );\n    if (\n      $slideEl.hasClass(params.elementClass) &&\n      !$slideEl.hasClass(params.loadedClass) &&\n      !$slideEl.hasClass(params.loadingClass)\n    ) {\n      $images.push($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (\n          typeof swiper === 'undefined' ||\n          swiper === null ||\n          !swiper ||\n          (swiper && !swiper.params) ||\n          swiper.destroyed\n        )\n          return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each((sourceEl) => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(\n              `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n            );\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(\n              `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n            );\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if (\n          $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n            .length\n        ) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nexport default {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        ...Lazy,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init(swiper) {\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll(swiper) {\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize(swiper) {\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove(swiper) {\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart(swiper) {\n      if (swiper.params.lazy.enabled) {\n        if (\n          swiper.params.lazy.loadOnTransitionStart ||\n          (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)\n        ) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd(swiper) {\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n    slideChange(swiper) {\n      if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = (maxIndex + minIndex) >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    })();\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (\n        ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n      );\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier =\n          (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nexport default {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        ...Controller,\n      },\n    });\n  },\n  on: {\n    update(swiper) {\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize(swiper) {\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate(swiper) {\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(swiper, translate, byController) {\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(swiper, duration, byController) {\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst A11y = {\n  getRandomNumber(size = 16) {\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  },\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElRoleDescription($el, description) {\n    $el.attr('aria-role-description', description);\n    return $el;\n  },\n  addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  addElId($el, id) {\n    $el.attr('id', id);\n    return $el;\n  },\n  addElLive($el, live) {\n    $el.attr('aria-live', live);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop || !swiper.navigation) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n        swiper.a11y.makeElNotFocusable($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n        swiper.a11y.makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n        swiper.a11y.makeElNotFocusable($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n        swiper.a11y.makeElFocusable($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (\n      swiper.pagination &&\n      swiper.params.pagination.clickable &&\n      swiper.pagination.bullets &&\n      swiper.pagination.bullets.length\n    ) {\n      swiper.pagination.bullets.each((bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          swiper.a11y.addElRole($bulletEl, 'button');\n          swiper.a11y.addElLabel(\n            $bulletEl,\n            params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n          );\n        }\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Container\n    const $containerEl = swiper.$el;\n    if (params.containerRoleDescriptionMessage) {\n      swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      swiper.a11y.addElLabel($containerEl, params.containerMessage);\n    }\n\n    // Wrapper\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${swiper.a11y.getRandomNumber(16)}`;\n    let live;\n    swiper.a11y.addElId($wrapperEl, wrapperId);\n\n    if (swiper.params.autoplay && swiper.params.autoplay.enabled) {\n      live = 'off';\n    } else {\n      live = 'polite';\n    }\n    swiper.a11y.addElLive($wrapperEl, live);\n\n    // Slide\n    if (params.itemRoleDescriptionMessage) {\n      swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n    swiper.a11y.addElRole($(swiper.slides), 'group');\n    swiper.slides.each((slideEl) => {\n      const $slideEl = $(slideEl);\n      swiper.a11y.addElLabel($slideEl, `${$slideEl.index() + 1} / ${swiper.slides.length}`);\n    });\n\n    // Navigation\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      swiper.a11y.makeElFocusable($nextEl);\n      if ($nextEl[0].tagName !== 'BUTTON') {\n        swiper.a11y.addElRole($nextEl, 'button');\n        $nextEl.on('keydown', swiper.a11y.onEnterKey);\n      }\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      swiper.a11y.addElControls($nextEl, wrapperId);\n    }\n    if ($prevEl && $prevEl.length) {\n      swiper.a11y.makeElFocusable($prevEl);\n      if ($prevEl[0].tagName !== 'BUTTON') {\n        swiper.a11y.addElRole($prevEl, 'button');\n        $prevEl.on('keydown', swiper.a11y.onEnterKey);\n      }\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      swiper.a11y.addElControls($prevEl, wrapperId);\n    }\n\n    // Pagination\n    if (\n      swiper.pagination &&\n      swiper.params.pagination.clickable &&\n      swiper.pagination.bullets &&\n      swiper.pagination.bullets.length\n    ) {\n      swiper.pagination.$el.on(\n        'keydown',\n        `.${swiper.params.pagination.bulletClass}`,\n        swiper.a11y.onEnterKey,\n      );\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0)\n      swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (\n      swiper.pagination &&\n      swiper.params.pagination.clickable &&\n      swiper.pagination.bullets &&\n      swiper.pagination.bullets.length\n    ) {\n      swiper.pagination.$el.off(\n        'keydown',\n        `.${swiper.params.pagination.bulletClass}`,\n        swiper.a11y.onEnterKey,\n      );\n    }\n  },\n};\nexport default {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      a11y: {\n        ...A11y,\n        liveRegion: $(\n          `<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`,\n        ),\n      },\n    });\n  },\n  on: {\n    afterInit(swiper) {\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge(swiper) {\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge(swiper) {\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate(swiper) {\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy(swiper) {\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n","import { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst History = {\n  init() {\n    const swiper = this;\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues(swiper.params.url);\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues(swiper.params.url);\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues(urlOverride) {\n    const window = getWindow();\n    let location;\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n    const pathArray = location.pathname\n      .slice(1)\n      .split('/')\n      .filter((part) => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    const window = getWindow();\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    let location;\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text\n      .toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nexport default {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      history: {\n        ...History,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy(swiper) {\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd(swiper) {\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n    slideChange(swiper) {\n      if (swiper.history.initialized && swiper.params.cssMode) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    const document = getDocument();\n    swiper.emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl\n        .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n        .index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    const window = getWindow();\n    const document = getDocument();\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (\n      swiper.params.hashNavigation.replaceState &&\n      window.history &&\n      window.history.replaceState\n    ) {\n      window.history.replaceState(\n        null,\n        null,\n        `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n      );\n      swiper.emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      swiper.emit('hashSet');\n    }\n  },\n  init() {\n    const swiper = this;\n    const document = getDocument();\n    const window = getWindow();\n    if (\n      !swiper.params.hashNavigation.enabled ||\n      (swiper.params.history && swiper.params.history.enabled)\n    )\n      return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    const window = getWindow();\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nexport default {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      hashNavigation: {\n        initialized: false,\n        ...HashNavigation,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy(swiper) {\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd(swiper) {\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n    slideChange(swiper) {\n      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.timeout = nextTick(() => {\n      let autoplayResult;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(\n            swiper.slides.length - 1,\n            swiper.params.speed,\n            true,\n            true,\n          );\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n      else if (autoplayResult === false) {\n        swiper.autoplay.run();\n      }\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n  onVisibilityChange() {\n    const swiper = this;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      swiper.autoplay.pause();\n    }\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      swiper.autoplay.run();\n      swiper.autoplay.paused = false;\n    }\n  },\n  onTransitionEnd(e) {\n    const swiper = this;\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n    swiper.$wrapperEl[0].removeEventListener(\n      'webkitTransitionEnd',\n      swiper.autoplay.onTransitionEnd,\n    );\n    swiper.autoplay.paused = false;\n    if (!swiper.autoplay.running) {\n      swiper.autoplay.stop();\n    } else {\n      swiper.autoplay.run();\n    }\n  },\n};\n\nexport default {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      autoplay: {\n        ...Autoplay,\n        running: false,\n        paused: false,\n      },\n    });\n  },\n  on: {\n    init(swiper) {\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n        const document = getDocument();\n        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n      }\n    },\n    beforeTransitionStart(swiper, speed, internal) {\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove(swiper) {\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    touchEnd(swiper) {\n      if (\n        swiper.params.cssMode &&\n        swiper.autoplay.paused &&\n        !swiper.params.autoplay.disableOnInteraction\n      ) {\n        swiper.autoplay.run();\n      }\n    },\n    destroy(swiper) {\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n      const document = getDocument();\n      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n    },\n  },\n};\n","import { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      fadeEffect: {\n        ...Fade,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      extend(swiper.params, overwriteParams);\n      extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate(swiper) {\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(swiper, duration) {\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n        isHorizontal ? slideAngle : 0\n      }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal\n          ? $slideEl.find('.swiper-slide-shadow-left')\n          : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal\n          ? $slideEl.find('.swiper-slide-shadow-right')\n          : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(\n            `<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`,\n          );\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(\n            `<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`,\n          );\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(\n          `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n            -swiperWidth / 2\n          }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n        );\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier =\n          1.5 -\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n            Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(\n          `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n            -swiperHeight / 2 / scale2\n          }px) rotateX(-90deg)`,\n        );\n      }\n    }\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(\n      `translate3d(0px,0,${zFactor}px) rotateX(${\n        swiper.isHorizontal() ? 0 : wrapperRotate\n      }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n    );\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find(\n        '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n      )\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nexport default {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      cubeEffect: {\n        ...Cube,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      extend(swiper.params, overwriteParams);\n      extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate(swiper) {\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(swiper, duration) {\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal()\n          ? $slideEl.find('.swiper-slide-shadow-left')\n          : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal()\n          ? $slideEl.find('.swiper-slide-shadow-right')\n          : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(\n            `<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`,\n          );\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(\n            `<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`,\n          );\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl.transform(\n        `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`,\n      );\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find(\n        '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n      )\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      flipEffect: {\n        ...Flip,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      extend(swiper.params, overwriteParams);\n      extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate(swiper) {\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(swiper, duration) {\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier =\n        ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = (parseFloat(params.stretch) / 100) * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal\n          ? $slideEl.find('.swiper-slide-shadow-left')\n          : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal\n          ? $slideEl.find('.swiper-slide-shadow-right')\n          : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(\n            `<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`,\n          );\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(\n            `<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`,\n          );\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length)\n          $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length)\n          $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find(\n        '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n      )\n      .transition(duration);\n  },\n};\n\nexport default {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      coverflowEffect: {\n        ...Coverflow,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate(swiper) {\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(swiper, duration) {\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n","import { extend, isObject, bindModuleMethods } from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    if (swiper.thumbs.initialized) return false;\n    swiper.thumbs.initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(\n        extend({}, thumbsParams.swiper, {\n          watchSlidesVisibility: true,\n          watchSlidesProgress: true,\n          slideToClickedSlide: false,\n        }),\n      );\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n    return true;\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n      return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides\n        .eq(currentIndex)\n        .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n        .eq(0)\n        .index();\n      const nextIndex = swiper.slides\n        .eq(currentIndex)\n        .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n        .eq(0)\n        .index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView =\n      thumbsSwiper.params.slidesPerView === 'auto'\n        ? thumbsSwiper.slidesPerViewDynamic()\n        : thumbsSwiper.params.slidesPerView;\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        if (\n          thumbsSwiper.slides\n            .eq(currentThumbsIndex)\n            .hasClass(thumbsSwiper.params.slideDuplicateClass)\n        ) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n          .eq(0)\n          .index();\n        const nextThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n          .eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex)\n          newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex)\n          newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (\n        thumbsSwiper.visibleSlidesIndexes &&\n        thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n      ) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (\n      thumbsSwiper.params.loop ||\n      (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n    ) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl\n          .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n          .addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nexport default {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    bindModuleMethods(swiper, {\n      thumbs: {\n        swiper: null,\n        initialized: false,\n        ...Thumbs,\n      },\n    });\n  },\n  on: {\n    beforeInit(swiper) {\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange(swiper) {\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update(swiper) {\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize(swiper) {\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate(swiper) {\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(swiper, duration) {\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy(swiper) {\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n  //INSTALL_COMPONENTS\n];\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","_inheritsLoose","subClass","superClass","prototype","create","__proto__","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_setPrototypeOf","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","toString","call","e","_construct","Parent","args","Class","a","push","apply","Constructor","Function","bind","instance","arguments","_isNativeFunction","fn","indexOf","_wrapNativeSuper","_cache","Map","undefined","TypeError","has","get","set","Wrapper","value","enumerable","writable","configurable","_assertThisInitialized","self","ReferenceError","makeReactive","proto","defineProperty","Dom7","_Array","items","_this","concat","Array","arrayFlat","arr","res","el","isArray","arrayFilter","filter","arrayUnique","uniqueArray","i","qsa","selector","context","$","html","trim","toCreate","tempParent","innerHTML","nodeType","addClass","_len","classes","_key","classNames","map","c","split","_el$classList","classList","add","removeClass","_len2","_key2","_el$classList2","remove","toggleClass","_len3","_key3","className","toggle","hasClass","_len4","_key4","contains","attr","attrs","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","on","_len5","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","_parents","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","_event","dom7LiveListeners","off","_len6","_key6","handlers","handler","splice","dom7proxy","trigger","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","offsetWidth","parseFloat","outerHeight","_styles2","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","_prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","_next","prev","previousElementSibling","prevAll","prevEls","_prev","parent","parentNode","_parent","closest","find","foundElements","found","removeChild","Methods","methodName","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","bindModuleMethods","subKey","support","calcSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","checkObserver","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","device","calcDevice","platform","ua","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isEdge","isWebView","test","getBrowser","name","swiper","resize","resizeHandler","destroyed","initialized","emit","orientationChangeHandler","init","destroy","Observer","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","observe","attributes","childList","characterData","observers","params","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","disconnect","useParams","instanceParams","modules","moduleName","module","useModules","modulesParams","moduleParams","moduleEventName","priority","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","slice","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","size","updateSlides","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideEl","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slideSize","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","currentSnap","prevSnap","prevIndex","slideReset","slideToClosest","threshold","nextSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","appendSlide","update","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","param","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","containerModifierClass","emitContainerClasses","directionChanged","needsReLoop","changeDirection","getBreakpoints","points","point","minRatio","substr","innerHeight","sort","b","innerWidth","addClasses","suffixes","suffix","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","currentSrc","wasLocked","lastSlidePosition","url","uniqueNavElements","wrapperClass","_emitClasses","prototypes","modular","eventsEmitter","manipulation","images","extendedDefaults","Swiper","moduleParamName","swiperParams","defaults","passedParams","eventName","swipers","containerEl","newParams","shadowRoot","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","getSlideClasses","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","Resize","Virtual","force","addSlidesBefore","addSlidesAfter","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","getSlides","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","isEventSupported","isSupported","element","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarget","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","raw","shift","prevEvent","animateSlider","releaseScroll","ignoreWheelEvents","sensitivity","timeout","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","thresholdDelta","thresholdTime","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","hideOnClick","hiddenClass","toEdge","fromEdge","click","isHidden","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","dragStartPos","positionRatio","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","zoomedSlideClass","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","toggleGestures","slideSelector","enableGestures","gesturesEnabled","disableGestures","activeListenerWithCapture","touchStart","touchEnd","doubleTap","slideChange","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","background","$pictureEl","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","loadOnTransitionStart","scroll","scrollbarDragMove","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","inverse","setControlledTransition","A11y","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","label","addElId","addElLive","live","disableEl","enableEl","onEnterKey","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","$containerEl","containerRoleDescriptionMessage","containerMessage","wrapperId","itemRoleDescriptionMessage","tagName","notificationClass","afterInit","paginationUpdate","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","urlOverride","URL","pathArray","part","setHistory","slugify","includes","currentState","state","slideHistory","HashNavigation","onHashCange","newHash","activeSlideHash","setHash","slideHash","watchState","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","disableOnInteraction","beforeTransitionStart","sliderFirstMove","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","$cubeShadowEl","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","depth","slideOffset","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","beforeDestroy","components"],"mappings":"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"}
0 2
\ No newline at end of file
1 3
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(-1 * var(--swiper-navigation-size)/ 2);z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:'next'}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#ffffff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000000}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#ffffff}.swiper-pagination-black{--swiper-pagination-color:#000000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
0 14
\ No newline at end of file
1 15
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Swiper=t()}(this,(function(){"use strict";function e(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(e[s]=i[s])}return e}).apply(this,arguments)}function i(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function s(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((function(a){void 0===e[a]?e[a]=t[a]:i(t[a])&&i(e[a])&&Object.keys(t[a]).length>0&&s(e[a],t[a])}))}var a={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function r(){var e="undefined"!=typeof document?document:{};return s(e,a),e}var n={document:a,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}},requestAnimationFrame:function(e){return"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0)},cancelAnimationFrame:function(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function l(){var e="undefined"!=typeof window?window:{};return s(e,n),e}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function p(e,t,i){return(p=h()?Reflect.construct:function(e,t,i){var s=[null];s.push.apply(s,t);var a=new(Function.bind.apply(e,s));return i&&d(a,i.prototype),a}).apply(null,arguments)}function u(e){var t="function"==typeof Map?new Map:void 0;return(u=function(e){if(null===e||(i=e,-1===Function.toString.call(i).indexOf("[native code]")))return e;var i;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,s)}function s(){return p(e,arguments,o(this).constructor)}return s.prototype=Object.create(e.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),d(s,e)})(e)}var c=function(e){var t,i;function s(t){var i,s,a;return i=e.call.apply(e,[this].concat(t))||this,s=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),a=s.__proto__,Object.defineProperty(s,"__proto__",{get:function(){return a},set:function(e){a.__proto__=e}}),i}return i=e,(t=s).prototype=Object.create(i.prototype),t.prototype.constructor=t,t.__proto__=i,s}(u(Array));function v(e){void 0===e&&(e=[]);var t=[];return e.forEach((function(e){Array.isArray(e)?t.push.apply(t,v(e)):t.push(e)})),t}function f(e,t){return Array.prototype.filter.call(e,t)}function m(e,t){var i=l(),s=r(),a=[];if(!t&&e instanceof c)return e;if(!e)return new c(a);if("string"==typeof e){var n=e.trim();if(n.indexOf("<")>=0&&n.indexOf(">")>=0){var o="div";0===n.indexOf("<li")&&(o="ul"),0===n.indexOf("<tr")&&(o="tbody"),0!==n.indexOf("<td")&&0!==n.indexOf("<th")||(o="tr"),0===n.indexOf("<tbody")&&(o="table"),0===n.indexOf("<option")&&(o="select");var d=s.createElement(o);d.innerHTML=n;for(var h=0;h<d.childNodes.length;h+=1)a.push(d.childNodes[h])}else a=function(e,t){if("string"!=typeof e)return[e];for(var i=[],s=t.querySelectorAll(e),a=0;a<s.length;a+=1)i.push(s[a]);return i}(e.trim(),t||s)}else if(e.nodeType||e===i||e===s)a.push(e);else if(Array.isArray(e)){if(e instanceof c)return e;a=e}return new c(function(e){for(var t=[],i=0;i<e.length;i+=1)-1===t.indexOf(e[i])&&t.push(e[i]);return t}(a))}m.fn=c.prototype;var g,w,y,b={addClass:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=v(t.map((function(e){return e.split(" ")})));return this.forEach((function(e){var t;(t=e.classList).add.apply(t,s)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=v(t.map((function(e){return e.split(" ")})));return this.forEach((function(e){var t;(t=e.classList).remove.apply(t,s)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=v(t.map((function(e){return e.split(" ")})));return f(this,(function(e){return s.filter((function(t){return e.classList.contains(t)})).length>0})).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=v(t.map((function(e){return e.split(" ")})));this.forEach((function(e){s.forEach((function(t){e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(var i=0;i<this.length;i+=1)if(2===arguments.length)this[i].setAttribute(e,t);else for(var s in e)this[i][s]=e[s],this[i].setAttribute(s,e[s]);return this},removeAttr:function(e){for(var t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},transform:function(e){for(var t=0;t<this.length;t+=1)this[t].style.transform=e;return this},transition:function(e){for(var t=0;t<this.length;t+=1)this[t].style.transition="string"!=typeof e?e+"ms":e;return this},on:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],n=t[3];function l(e){var t=e.target;if(t){var i=e.target.dom7EventData||[];if(i.indexOf(e)<0&&i.unshift(e),m(t).is(a))r.apply(t,i);else for(var s=m(t).parents(),n=0;n<s.length;n+=1)m(s[n]).is(a)&&r.apply(s[n],i)}}function o(e){var t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&(s=t[0],r=t[1],n=t[2],a=void 0),n||(n=!1);for(var d,h=s.split(" "),p=0;p<this.length;p+=1){var u=this[p];if(a)for(d=0;d<h.length;d+=1){var c=h[d];u.dom7LiveListeners||(u.dom7LiveListeners={}),u.dom7LiveListeners[c]||(u.dom7LiveListeners[c]=[]),u.dom7LiveListeners[c].push({listener:r,proxyListener:l}),u.addEventListener(c,l,n)}else for(d=0;d<h.length;d+=1){var v=h[d];u.dom7Listeners||(u.dom7Listeners={}),u.dom7Listeners[v]||(u.dom7Listeners[v]=[]),u.dom7Listeners[v].push({listener:r,proxyListener:o}),u.addEventListener(v,o,n)}}return this},off:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],n=t[3];"function"==typeof t[1]&&(s=t[0],r=t[1],n=t[2],a=void 0),n||(n=!1);for(var l=s.split(" "),o=0;o<l.length;o+=1)for(var d=l[o],h=0;h<this.length;h+=1){var p=this[h],u=void 0;if(!a&&p.dom7Listeners?u=p.dom7Listeners[d]:a&&p.dom7LiveListeners&&(u=p.dom7LiveListeners[d]),u&&u.length)for(var c=u.length-1;c>=0;c-=1){var v=u[c];r&&v.listener===r||r&&v.listener&&v.listener.dom7proxy&&v.listener.dom7proxy===r?(p.removeEventListener(d,v.proxyListener,n),u.splice(c,1)):r||(p.removeEventListener(d,v.proxyListener,n),u.splice(c,1))}}return this},trigger:function(){for(var e=l(),t=arguments.length,i=new Array(t),s=0;s<t;s++)i[s]=arguments[s];for(var a=i[0].split(" "),r=i[1],n=0;n<a.length;n+=1)for(var o=a[n],d=0;d<this.length;d+=1){var h=this[d];if(e.CustomEvent){var p=new e.CustomEvent(o,{detail:r,bubbles:!0,cancelable:!0});h.dom7EventData=i.filter((function(e,t){return t>0})),h.dispatchEvent(p),h.dom7EventData=[],delete h.dom7EventData}}return this},transitionEnd:function(e){var t=this;return e&&t.on("transitionend",(function i(s){s.target===this&&(e.call(this,s),t.off("transitionend",i))})),this},outerWidth:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){var e=l();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){var e=l(),t=r(),i=this[0],s=i.getBoundingClientRect(),a=t.body,n=i.clientTop||a.clientTop||0,o=i.clientLeft||a.clientLeft||0,d=i===e?e.scrollY:i.scrollTop,h=i===e?e.scrollX:i.scrollLeft;return{top:s.top+d-n,left:s.left+h-o}}return null},css:function(e,t){var i,s=l();if(1===arguments.length){if("string"!=typeof e){for(i=0;i<this.length;i+=1)for(var a in e)this[i].style[a]=e[a];return this}if(this[0])return s.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(i=0;i<this.length;i+=1)this[i].style[e]=t;return this}return this},each:function(e){return e?(this.forEach((function(t,i){e.apply(t,[t,i])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(var t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(var t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){var t,i,s=l(),a=r(),n=this[0];if(!n||void 0===e)return!1;if("string"==typeof e){if(n.matches)return n.matches(e);if(n.webkitMatchesSelector)return n.webkitMatchesSelector(e);if(n.msMatchesSelector)return n.msMatchesSelector(e);for(t=m(e),i=0;i<t.length;i+=1)if(t[i]===n)return!0;return!1}if(e===a)return n===a;if(e===s)return n===s;if(e.nodeType||e instanceof c){for(t=e.nodeType?[e]:e,i=0;i<t.length;i+=1)if(t[i]===n)return!0;return!1}return!1},index:function(){var e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;var t=this.length;if(e>t-1)return m([]);if(e<0){var i=t+e;return m(i<0?[]:[this[i]])}return m([this[e]])},append:function(){for(var e,t=r(),i=0;i<arguments.length;i+=1){e=i<0||arguments.length<=i?void 0:arguments[i];for(var s=0;s<this.length;s+=1)if("string"==typeof e){var a=t.createElement("div");for(a.innerHTML=e;a.firstChild;)this[s].appendChild(a.firstChild)}else if(e instanceof c)for(var n=0;n<e.length;n+=1)this[s].appendChild(e[n]);else this[s].appendChild(e)}return this},prepend:function(e){var t,i,s=r();for(t=0;t<this.length;t+=1)if("string"==typeof e){var a=s.createElement("div");for(a.innerHTML=e,i=a.childNodes.length-1;i>=0;i-=1)this[t].insertBefore(a.childNodes[i],this[t].childNodes[0])}else if(e instanceof c)for(i=0;i<e.length;i+=1)this[t].insertBefore(e[i],this[t].childNodes[0]);else this[t].insertBefore(e,this[t].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&m(this[0].nextElementSibling).is(e)?m([this[0].nextElementSibling]):m([]):this[0].nextElementSibling?m([this[0].nextElementSibling]):m([]):m([])},nextAll:function(e){var t=[],i=this[0];if(!i)return m([]);for(;i.nextElementSibling;){var s=i.nextElementSibling;e?m(s).is(e)&&t.push(s):t.push(s),i=s}return m(t)},prev:function(e){if(this.length>0){var t=this[0];return e?t.previousElementSibling&&m(t.previousElementSibling).is(e)?m([t.previousElementSibling]):m([]):t.previousElementSibling?m([t.previousElementSibling]):m([])}return m([])},prevAll:function(e){var t=[],i=this[0];if(!i)return m([]);for(;i.previousElementSibling;){var s=i.previousElementSibling;e?m(s).is(e)&&t.push(s):t.push(s),i=s}return m(t)},parent:function(e){for(var t=[],i=0;i<this.length;i+=1)null!==this[i].parentNode&&(e?m(this[i].parentNode).is(e)&&t.push(this[i].parentNode):t.push(this[i].parentNode));return m(t)},parents:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].parentNode;s;)e?m(s).is(e)&&t.push(s):t.push(s),s=s.parentNode;return m(t)},closest:function(e){var t=this;return void 0===e?m([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].querySelectorAll(e),a=0;a<s.length;a+=1)t.push(s[a]);return m(t)},children:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].children,a=0;a<s.length;a+=1)e&&!m(s[a]).is(e)||t.push(s[a]);return m(t)},filter:function(e){return m(f(this,e))},remove:function(){for(var e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}};function E(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function x(){return Date.now()}function T(e,t){void 0===t&&(t="x");var i,s,a,r=l(),n=r.getComputedStyle(e,null);return r.WebKitCSSMatrix?((s=n.transform||n.webkitTransform).split(",").length>6&&(s=s.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),a=new r.WebKitCSSMatrix("none"===s?"":s)):i=(a=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(s=r.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(s=r.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),s||0}function C(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object}function S(){for(var e=Object(arguments.length<=0?void 0:arguments[0]),t=1;t<arguments.length;t+=1){var i=t<0||arguments.length<=t?void 0:arguments[t];if(null!=i)for(var s=Object.keys(Object(i)),a=0,r=s.length;a<r;a+=1){var n=s[a],l=Object.getOwnPropertyDescriptor(i,n);void 0!==l&&l.enumerable&&(C(e[n])&&C(i[n])?S(e[n],i[n]):!C(e[n])&&C(i[n])?(e[n]={},S(e[n],i[n])):e[n]=i[n])}}return e}function M(e,t){Object.keys(t).forEach((function(i){C(t[i])&&Object.keys(t[i]).forEach((function(s){"function"==typeof t[i][s]&&(t[i][s]=t[i][s].bind(e))})),e[i]=t[i]}))}function z(){return g||(g=function(){var e=l(),t=r();return{touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),pointerEvents:!!e.PointerEvent&&"maxTouchPoints"in e.navigator&&e.navigator.maxTouchPoints>=0,observer:"MutationObserver"in e||"WebkitMutationObserver"in e,passiveListener:function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassiveListener",null,i)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),g}function P(e){return void 0===e&&(e={}),w||(w=function(e){var t=(void 0===e?{}:e).userAgent,i=z(),s=l(),a=s.navigator.platform,r=t||s.navigator.userAgent,n={ios:!1,android:!1},o=s.screen.width,d=s.screen.height,h=r.match(/(Android);?[\s\/]+([\d.]+)?/),p=r.match(/(iPad).*OS\s([\d_]+)/),u=r.match(/(iPod)(.*OS\s([\d_]+))?/),c=!p&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),v="Win32"===a,f="MacIntel"===a;return!p&&f&&i.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(o+"x"+d)>=0&&((p=r.match(/(Version)\/([\d.]+)/))||(p=[0,1,"13_0_0"]),f=!1),h&&!v&&(n.os="android",n.android=!0),(p||c||u)&&(n.os="ios",n.ios=!0),n}(e)),w}function k(){return y||(y=function(){var e,t=l();return{isEdge:!!t.navigator.userAgent.match(/Edge/g),isSafari:(e=t.navigator.userAgent.toLowerCase(),e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent)}}()),y}Object.keys(b).forEach((function(e){m.fn[e]=b[e]}));var $={name:"resize",create:function(){var e=this;S(e,{resize:{resizeHandler:function(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init:function(e){var t=l();t.addEventListener("resize",e.resize.resizeHandler),t.addEventListener("orientationchange",e.resize.orientationChangeHandler)},destroy:function(e){var t=l();t.removeEventListener("resize",e.resize.resizeHandler),t.removeEventListener("orientationchange",e.resize.orientationChangeHandler)}}},L={attach:function(e,t){void 0===t&&(t={});var i=l(),s=this,a=new(i.MutationObserver||i.WebkitMutationObserver)((function(e){if(1!==e.length){var t=function(){s.emit("observerUpdate",e[0])};i.requestAnimationFrame?i.requestAnimationFrame(t):i.setTimeout(t,0)}else s.emit("observerUpdate",e[0])}));a.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),s.observer.observers.push(a)},init:function(){if(this.support.observer&&this.params.observer){if(this.params.observeParents)for(var e=this.$el.parents(),t=0;t<e.length;t+=1)this.observer.attach(e[t]);this.observer.attach(this.$el[0],{childList:this.params.observeSlideChildren}),this.observer.attach(this.$wrapperEl[0],{attributes:!1})}},destroy:function(){this.observer.observers.forEach((function(e){e.disconnect()})),this.observer.observers=[]}},I={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create:function(){M(this,{observer:t(t({},L),{},{observers:[]})})},on:{init:function(e){e.observer.init()},destroy:function(e){e.observer.destroy()}}};function O(e){var t=r(),i=l(),s=this.touchEventsData,a=this.params,n=this.touches;if(!this.animating||!a.preventInteractionOnTransition){var o=e;o.originalEvent&&(o=o.originalEvent);var d=m(o.target);if(("wrapper"!==a.touchEventsTarget||d.closest(this.wrapperEl).length)&&(s.isTouchEvent="touchstart"===o.type,(s.isTouchEvent||!("which"in o)||3!==o.which)&&!(!s.isTouchEvent&&"button"in o&&o.button>0||s.isTouched&&s.isMoved)))if(a.noSwiping&&d.closest(a.noSwipingSelector?a.noSwipingSelector:"."+a.noSwipingClass)[0])this.allowClick=!0;else if(!a.swipeHandler||d.closest(a.swipeHandler)[0]){n.currentX="touchstart"===o.type?o.targetTouches[0].pageX:o.pageX,n.currentY="touchstart"===o.type?o.targetTouches[0].pageY:o.pageY;var h=n.currentX,p=n.currentY,u=a.edgeSwipeDetection||a.iOSEdgeSwipeDetection,c=a.edgeSwipeThreshold||a.iOSEdgeSwipeThreshold;if(!u||!(h<=c||h>=i.screen.width-c)){if(S(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=h,n.startY=p,s.touchStartTime=x(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,a.threshold>0&&(s.allowThresholdMove=!1),"touchstart"!==o.type){var v=!0;d.is(s.formElements)&&(v=!1),t.activeElement&&m(t.activeElement).is(s.formElements)&&t.activeElement!==d[0]&&t.activeElement.blur();var f=v&&this.allowTouchMove&&a.touchStartPreventDefault;(a.touchStartForcePreventDefault||f)&&o.preventDefault()}this.emit("touchStart",o)}}}}function A(e){var t=r(),i=this.touchEventsData,s=this.params,a=this.touches,n=this.rtlTranslate,l=e;if(l.originalEvent&&(l=l.originalEvent),i.isTouched){if(!i.isTouchEvent||"touchmove"===l.type){var o="touchmove"===l.type&&l.targetTouches&&(l.targetTouches[0]||l.changedTouches[0]),d="touchmove"===l.type?o.pageX:l.pageX,h="touchmove"===l.type?o.pageY:l.pageY;if(l.preventedByNestedSwiper)return a.startX=d,void(a.startY=h);if(!this.allowTouchMove)return this.allowClick=!1,void(i.isTouched&&(S(a,{startX:d,startY:h,currentX:d,currentY:h}),i.touchStartTime=x()));if(i.isTouchEvent&&s.touchReleaseOnEdges&&!s.loop)if(this.isVertical()){if(h<a.startY&&this.translate<=this.maxTranslate()||h>a.startY&&this.translate>=this.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(d<a.startX&&this.translate<=this.maxTranslate()||d>a.startX&&this.translate>=this.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&l.target===t.activeElement&&m(l.target).is(i.formElements))return i.isMoved=!0,void(this.allowClick=!1);if(i.allowTouchCallbacks&&this.emit("touchMove",l),!(l.targetTouches&&l.targetTouches.length>1)){a.currentX=d,a.currentY=h;var p=a.currentX-a.startX,u=a.currentY-a.startY;if(!(this.params.threshold&&Math.sqrt(Math.pow(p,2)+Math.pow(u,2))<this.params.threshold)){var c;if(void 0===i.isScrolling)this.isHorizontal()&&a.currentY===a.startY||this.isVertical()&&a.currentX===a.startX?i.isScrolling=!1:p*p+u*u>=25&&(c=180*Math.atan2(Math.abs(u),Math.abs(p))/Math.PI,i.isScrolling=this.isHorizontal()?c>s.touchAngle:90-c>s.touchAngle);if(i.isScrolling&&this.emit("touchMoveOpposite",l),void 0===i.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(i.startMoving=!0)),i.isScrolling)i.isTouched=!1;else if(i.startMoving){this.allowClick=!1,!s.cssMode&&l.cancelable&&l.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&l.stopPropagation(),i.isMoved||(s.loop&&this.loopFix(),i.startTranslate=this.getTranslate(),this.setTransition(0),this.animating&&this.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!s.grabCursor||!0!==this.allowSlideNext&&!0!==this.allowSlidePrev||this.setGrabCursor(!0),this.emit("sliderFirstMove",l)),this.emit("sliderMove",l),i.isMoved=!0;var v=this.isHorizontal()?p:u;a.diff=v,v*=s.touchRatio,n&&(v=-v),this.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;var f=!0,g=s.resistanceRatio;if(s.touchReleaseOnEdges&&(g=0),v>0&&i.currentTranslate>this.minTranslate()?(f=!1,s.resistance&&(i.currentTranslate=this.minTranslate()-1+Math.pow(-this.minTranslate()+i.startTranslate+v,g))):v<0&&i.currentTranslate<this.maxTranslate()&&(f=!1,s.resistance&&(i.currentTranslate=this.maxTranslate()+1-Math.pow(this.maxTranslate()-i.startTranslate-v,g))),f&&(l.preventedByNestedSwiper=!0),!this.allowSlideNext&&"next"===this.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!this.allowSlidePrev&&"prev"===this.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),s.threshold>0){if(!(Math.abs(v)>s.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,i.currentTranslate=i.startTranslate,void(a.diff=this.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}s.followFinger&&!s.cssMode&&((s.freeMode||s.watchSlidesProgress||s.watchSlidesVisibility)&&(this.updateActiveIndex(),this.updateSlidesClasses()),s.freeMode&&(0===i.velocities.length&&i.velocities.push({position:a[this.isHorizontal()?"startX":"startY"],time:i.touchStartTime}),i.velocities.push({position:a[this.isHorizontal()?"currentX":"currentY"],time:x()})),this.updateProgress(i.currentTranslate),this.setTranslate(i.currentTranslate))}}}}}else i.startMoving&&i.isScrolling&&this.emit("touchMoveOpposite",l)}function D(e){var t=this,i=t.touchEventsData,s=t.params,a=t.touches,r=t.rtlTranslate,n=t.$wrapperEl,l=t.slidesGrid,o=t.snapGrid,d=e;if(d.originalEvent&&(d=d.originalEvent),i.allowTouchCallbacks&&t.emit("touchEnd",d),i.allowTouchCallbacks=!1,!i.isTouched)return i.isMoved&&s.grabCursor&&t.setGrabCursor(!1),i.isMoved=!1,void(i.startMoving=!1);s.grabCursor&&i.isMoved&&i.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);var h,p=x(),u=p-i.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(d),t.emit("tap click",d),u<300&&p-i.lastClickTime<300&&t.emit("doubleTap doubleClick",d)),i.lastClickTime=x(),E((function(){t.destroyed||(t.allowClick=!0)})),!i.isTouched||!i.isMoved||!t.swipeDirection||0===a.diff||i.currentTranslate===i.startTranslate)return i.isTouched=!1,i.isMoved=!1,void(i.startMoving=!1);if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,h=s.followFinger?r?t.translate:-t.translate:-i.currentTranslate,!s.cssMode)if(s.freeMode){if(h<-t.minTranslate())return void t.slideTo(t.activeIndex);if(h>-t.maxTranslate())return void(t.slides.length<o.length?t.slideTo(o.length-1):t.slideTo(t.slides.length-1));if(s.freeModeMomentum){if(i.velocities.length>1){var c=i.velocities.pop(),v=i.velocities.pop(),f=c.position-v.position,m=c.time-v.time;t.velocity=f/m,t.velocity/=2,Math.abs(t.velocity)<s.freeModeMinimumVelocity&&(t.velocity=0),(m>150||x()-c.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=s.freeModeMomentumVelocityRatio,i.velocities.length=0;var g=1e3*s.freeModeMomentumRatio,w=t.velocity*g,y=t.translate+w;r&&(y=-y);var b,T,C=!1,S=20*Math.abs(t.velocity)*s.freeModeMomentumBounceRatio;if(y<t.maxTranslate())s.freeModeMomentumBounce?(y+t.maxTranslate()<-S&&(y=t.maxTranslate()-S),b=t.maxTranslate(),C=!0,i.allowMomentumBounce=!0):y=t.maxTranslate(),s.loop&&s.centeredSlides&&(T=!0);else if(y>t.minTranslate())s.freeModeMomentumBounce?(y-t.minTranslate()>S&&(y=t.minTranslate()+S),b=t.minTranslate(),C=!0,i.allowMomentumBounce=!0):y=t.minTranslate(),s.loop&&s.centeredSlides&&(T=!0);else if(s.freeModeSticky){for(var M,z=0;z<o.length;z+=1)if(o[z]>-y){M=z;break}y=-(y=Math.abs(o[M]-y)<Math.abs(o[M-1]-y)||"next"===t.swipeDirection?o[M]:o[M-1])}if(T&&t.once("transitionEnd",(function(){t.loopFix()})),0!==t.velocity){if(g=r?Math.abs((-y-t.translate)/t.velocity):Math.abs((y-t.translate)/t.velocity),s.freeModeSticky){var P=Math.abs((r?-y:y)-t.translate),k=t.slidesSizesGrid[t.activeIndex];g=P<k?s.speed:P<2*k?1.5*s.speed:2.5*s.speed}}else if(s.freeModeSticky)return void t.slideToClosest();s.freeModeMomentumBounce&&C?(t.updateProgress(b),t.setTransition(g),t.setTranslate(y),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&i.allowMomentumBounce&&(t.emit("momentumBounce"),t.setTransition(s.speed),setTimeout((function(){t.setTranslate(b),n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(t.updateProgress(y),t.setTransition(g),t.setTranslate(y),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(y),t.updateActiveIndex(),t.updateSlidesClasses()}else if(s.freeModeSticky)return void t.slideToClosest();(!s.freeModeMomentum||u>=s.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var $=0,L=t.slidesSizesGrid[0],I=0;I<l.length;I+=I<s.slidesPerGroupSkip?1:s.slidesPerGroup){var O=I<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;void 0!==l[I+O]?h>=l[I]&&h<l[I+O]&&($=I,L=l[I+O]-l[I]):h>=l[I]&&($=I,L=l[l.length-1]-l[l.length-2])}var A=(h-l[$])/L,D=$<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;if(u>s.longSwipesMs){if(!s.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(A>=s.longSwipesRatio?t.slideTo($+D):t.slideTo($)),"prev"===t.swipeDirection&&(A>1-s.longSwipesRatio?t.slideTo($+D):t.slideTo($))}else{if(!s.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(d.target===t.navigation.nextEl||d.target===t.navigation.prevEl)?d.target===t.navigation.nextEl?t.slideTo($+D):t.slideTo($):("next"===t.swipeDirection&&t.slideTo($+D),"prev"===t.swipeDirection&&t.slideTo($))}}}function G(){var e=this.params,t=this.el;if(!t||0!==t.offsetWidth){e.breakpoints&&this.setBreakpoint();var i=this.allowSlideNext,s=this.allowSlidePrev,a=this.snapGrid;this.allowSlideNext=!0,this.allowSlidePrev=!0,this.updateSize(),this.updateSlides(),this.updateSlidesClasses(),("auto"===e.slidesPerView||e.slidesPerView>1)&&this.isEnd&&!this.isBeginning&&!this.params.centeredSlides?this.slideTo(this.slides.length-1,0,!1,!0):this.slideTo(this.activeIndex,0,!1,!0),this.autoplay&&this.autoplay.running&&this.autoplay.paused&&this.autoplay.run(),this.allowSlidePrev=s,this.allowSlideNext=i,this.params.watchOverflow&&a!==this.snapGrid&&this.checkOverflow()}}function N(e){this.allowClick||(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function B(){var e=this.wrapperEl,t=this.rtlTranslate;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=t?e.scrollWidth-e.offsetWidth-e.scrollLeft:-e.scrollLeft:this.translate=-e.scrollTop,-0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();var i=this.maxTranslate()-this.minTranslate();(0===i?0:(this.translate-this.minTranslate())/i)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}var H=!1;function X(){}var Y={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,nested:!1,width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1},V={modular:{useParams:function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i];s.params&&S(e,s.params)}))},useModules:function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i],a=e[i]||{};s.on&&t.on&&Object.keys(s.on).forEach((function(e){t.on(e,s.on[e])})),s.create&&s.create.bind(t)(a)}))}},eventsEmitter:{on:function(e,t,i){var s=this;if("function"!=typeof t)return s;var a=i?"unshift":"push";return e.split(" ").forEach((function(e){s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][a](t)})),s},once:function(e,t,i){var s=this;if("function"!=typeof t)return s;function a(){s.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];t.apply(s,r)}return a.__emitterProxy=t,s.on(e,a,i)},onAny:function(e,t){if("function"!=typeof e)return this;var i=t?"unshift":"push";return this.eventsAnyListeners.indexOf(e)<0&&this.eventsAnyListeners[i](e),this},offAny:function(e){if(!this.eventsAnyListeners)return this;var t=this.eventsAnyListeners.indexOf(e);return t>=0&&this.eventsAnyListeners.splice(t,1),this},off:function(e,t){var i=this;return i.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].forEach((function(s,a){(s===t||s.__emitterProxy&&s.__emitterProxy===t)&&i.eventsListeners[e].splice(a,1)}))})),i):i},emit:function(){var e,t,i,s=this;if(!s.eventsListeners)return s;for(var a=arguments.length,r=new Array(a),n=0;n<a;n++)r[n]=arguments[n];"string"==typeof r[0]||Array.isArray(r[0])?(e=r[0],t=r.slice(1,r.length),i=s):(e=r[0].events,t=r[0].data,i=r[0].context||s),t.unshift(i);var l=Array.isArray(e)?e:e.split(" ");return l.forEach((function(e){if(s.eventsAnyListeners&&s.eventsAnyListeners.length&&s.eventsAnyListeners.forEach((function(s){s.apply(i,[e].concat(t))})),s.eventsListeners&&s.eventsListeners[e]){var a=[];s.eventsListeners[e].forEach((function(e){a.push(e)})),a.forEach((function(e){e.apply(i,t)}))}})),s}},update:{updateSize:function(){var e,t,i=this.$el;e=void 0!==this.params.width&&null!==this.params.width?this.params.width:i[0].clientWidth,t=void 0!==this.params.height&&null!==this.params.width?this.params.height:i[0].clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(i.css("padding-left")||0,10)-parseInt(i.css("padding-right")||0,10),t=t-parseInt(i.css("padding-top")||0,10)-parseInt(i.css("padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(t)&&(t=0),S(this,{width:e,height:t,size:this.isHorizontal()?e:t}))},updateSlides:function(){var e=l(),t=this.params,i=this.$wrapperEl,s=this.size,a=this.rtlTranslate,r=this.wrongRTL,n=this.virtual&&t.virtual.enabled,o=n?this.virtual.slides.length:this.slides.length,d=i.children("."+this.params.slideClass),h=n?this.virtual.slides.length:d.length,p=[],u=[],c=[];function v(e,i){return!t.cssMode||i!==d.length-1}var f=t.slidesOffsetBefore;"function"==typeof f&&(f=t.slidesOffsetBefore.call(this));var m=t.slidesOffsetAfter;"function"==typeof m&&(m=t.slidesOffsetAfter.call(this));var g=this.snapGrid.length,w=this.snapGrid.length,y=t.spaceBetween,b=-f,E=0,x=0;if(void 0!==s){var T,C;"string"==typeof y&&y.indexOf("%")>=0&&(y=parseFloat(y.replace("%",""))/100*s),this.virtualSize=-y,a?d.css({marginLeft:"",marginTop:""}):d.css({marginRight:"",marginBottom:""}),t.slidesPerColumn>1&&(T=Math.floor(h/t.slidesPerColumn)===h/this.params.slidesPerColumn?h:Math.ceil(h/t.slidesPerColumn)*t.slidesPerColumn,"auto"!==t.slidesPerView&&"row"===t.slidesPerColumnFill&&(T=Math.max(T,t.slidesPerView*t.slidesPerColumn)));for(var M,z=t.slidesPerColumn,P=T/z,k=Math.floor(h/t.slidesPerColumn),$=0;$<h;$+=1){C=0;var L=d.eq($);if(t.slidesPerColumn>1){var I=void 0,O=void 0,A=void 0;if("row"===t.slidesPerColumnFill&&t.slidesPerGroup>1){var D=Math.floor($/(t.slidesPerGroup*t.slidesPerColumn)),G=$-t.slidesPerColumn*t.slidesPerGroup*D,N=0===D?t.slidesPerGroup:Math.min(Math.ceil((h-D*z*t.slidesPerGroup)/z),t.slidesPerGroup);I=(O=G-(A=Math.floor(G/N))*N+D*t.slidesPerGroup)+A*T/z,L.css({"-webkit-box-ordinal-group":I,"-moz-box-ordinal-group":I,"-ms-flex-order":I,"-webkit-order":I,order:I})}else"column"===t.slidesPerColumnFill?(A=$-(O=Math.floor($/z))*z,(O>k||O===k&&A===z-1)&&(A+=1)>=z&&(A=0,O+=1)):O=$-(A=Math.floor($/P))*P;L.css("margin-"+(this.isHorizontal()?"top":"left"),0!==A&&t.spaceBetween&&t.spaceBetween+"px")}if("none"!==L.css("display")){if("auto"===t.slidesPerView){var B=e.getComputedStyle(L[0],null),H=L[0].style.transform,X=L[0].style.webkitTransform;if(H&&(L[0].style.transform="none"),X&&(L[0].style.webkitTransform="none"),t.roundLengths)C=this.isHorizontal()?L.outerWidth(!0):L.outerHeight(!0);else if(this.isHorizontal()){var Y=parseFloat(B.getPropertyValue("width")||0),V=parseFloat(B.getPropertyValue("padding-left")||0),F=parseFloat(B.getPropertyValue("padding-right")||0),R=parseFloat(B.getPropertyValue("margin-left")||0),W=parseFloat(B.getPropertyValue("margin-right")||0),q=B.getPropertyValue("box-sizing");if(q&&"border-box"===q)C=Y+R+W;else{var j=L[0],_=j.clientWidth;C=Y+V+F+R+W+(j.offsetWidth-_)}}else{var U=parseFloat(B.getPropertyValue("height")||0),K=parseFloat(B.getPropertyValue("padding-top")||0),Z=parseFloat(B.getPropertyValue("padding-bottom")||0),J=parseFloat(B.getPropertyValue("margin-top")||0),Q=parseFloat(B.getPropertyValue("margin-bottom")||0),ee=B.getPropertyValue("box-sizing");if(ee&&"border-box"===ee)C=U+J+Q;else{var te=L[0],ie=te.clientHeight;C=U+K+Z+J+Q+(te.offsetHeight-ie)}}H&&(L[0].style.transform=H),X&&(L[0].style.webkitTransform=X),t.roundLengths&&(C=Math.floor(C))}else C=(s-(t.slidesPerView-1)*y)/t.slidesPerView,t.roundLengths&&(C=Math.floor(C)),d[$]&&(this.isHorizontal()?d[$].style.width=C+"px":d[$].style.height=C+"px");d[$]&&(d[$].swiperSlideSize=C),c.push(C),t.centeredSlides?(b=b+C/2+E/2+y,0===E&&0!==$&&(b=b-s/2-y),0===$&&(b=b-s/2-y),Math.abs(b)<.001&&(b=0),t.roundLengths&&(b=Math.floor(b)),x%t.slidesPerGroup==0&&p.push(b),u.push(b)):(t.roundLengths&&(b=Math.floor(b)),(x-Math.min(this.params.slidesPerGroupSkip,x))%this.params.slidesPerGroup==0&&p.push(b),u.push(b),b=b+C+y),this.virtualSize+=C+y,E=C,x+=1}}if(this.virtualSize=Math.max(this.virtualSize,s)+m,a&&r&&("slide"===t.effect||"coverflow"===t.effect)&&i.css({width:this.virtualSize+t.spaceBetween+"px"}),t.setWrapperSize&&(this.isHorizontal()?i.css({width:this.virtualSize+t.spaceBetween+"px"}):i.css({height:this.virtualSize+t.spaceBetween+"px"})),t.slidesPerColumn>1&&(this.virtualSize=(C+t.spaceBetween)*T,this.virtualSize=Math.ceil(this.virtualSize/t.slidesPerColumn)-t.spaceBetween,this.isHorizontal()?i.css({width:this.virtualSize+t.spaceBetween+"px"}):i.css({height:this.virtualSize+t.spaceBetween+"px"}),t.centeredSlides)){M=[];for(var se=0;se<p.length;se+=1){var ae=p[se];t.roundLengths&&(ae=Math.floor(ae)),p[se]<this.virtualSize+p[0]&&M.push(ae)}p=M}if(!t.centeredSlides){M=[];for(var re=0;re<p.length;re+=1){var ne=p[re];t.roundLengths&&(ne=Math.floor(ne)),p[re]<=this.virtualSize-s&&M.push(ne)}p=M,Math.floor(this.virtualSize-s)-Math.floor(p[p.length-1])>1&&p.push(this.virtualSize-s)}if(0===p.length&&(p=[0]),0!==t.spaceBetween&&(this.isHorizontal()?a?d.filter(v).css({marginLeft:y+"px"}):d.filter(v).css({marginRight:y+"px"}):d.filter(v).css({marginBottom:y+"px"})),t.centeredSlides&&t.centeredSlidesBounds){var le=0;c.forEach((function(e){le+=e+(t.spaceBetween?t.spaceBetween:0)}));var oe=(le-=t.spaceBetween)-s;p=p.map((function(e){return e<0?-f:e>oe?oe+m:e}))}if(t.centerInsufficientSlides){var de=0;if(c.forEach((function(e){de+=e+(t.spaceBetween?t.spaceBetween:0)})),(de-=t.spaceBetween)<s){var he=(s-de)/2;p.forEach((function(e,t){p[t]=e-he})),u.forEach((function(e,t){u[t]=e+he}))}}S(this,{slides:d,snapGrid:p,slidesGrid:u,slidesSizesGrid:c}),h!==o&&this.emit("slidesLengthChange"),p.length!==g&&(this.params.watchOverflow&&this.checkOverflow(),this.emit("snapGridLengthChange")),u.length!==w&&this.emit("slidesGridLengthChange"),(t.watchSlidesProgress||t.watchSlidesVisibility)&&this.updateSlidesOffset()}},updateAutoHeight:function(e){var t,i=[],s=0;if("number"==typeof e?this.setTransition(e):!0===e&&this.setTransition(this.params.speed),"auto"!==this.params.slidesPerView&&this.params.slidesPerView>1)if(this.params.centeredSlides)this.visibleSlides.each((function(e){i.push(e)}));else for(t=0;t<Math.ceil(this.params.slidesPerView);t+=1){var a=this.activeIndex+t;if(a>this.slides.length)break;i.push(this.slides.eq(a)[0])}else i.push(this.slides.eq(this.activeIndex)[0]);for(t=0;t<i.length;t+=1)if(void 0!==i[t]){var r=i[t].offsetHeight;s=r>s?r:s}s&&this.$wrapperEl.css("height",s+"px")},updateSlidesOffset:function(){for(var e=this.slides,t=0;t<e.length;t+=1)e[t].swiperSlideOffset=this.isHorizontal()?e[t].offsetLeft:e[t].offsetTop},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);var t=this.params,i=this.slides,s=this.rtlTranslate;if(0!==i.length){void 0===i[0].swiperSlideOffset&&this.updateSlidesOffset();var a=-e;s&&(a=e),i.removeClass(t.slideVisibleClass),this.visibleSlidesIndexes=[],this.visibleSlides=[];for(var r=0;r<i.length;r+=1){var n=i[r],l=(a+(t.centeredSlides?this.minTranslate():0)-n.swiperSlideOffset)/(n.swiperSlideSize+t.spaceBetween);if(t.watchSlidesVisibility||t.centeredSlides&&t.autoHeight){var o=-(a-n.swiperSlideOffset),d=o+this.slidesSizesGrid[r];(o>=0&&o<this.size-1||d>1&&d<=this.size||o<=0&&d>=this.size)&&(this.visibleSlides.push(n),this.visibleSlidesIndexes.push(r),i.eq(r).addClass(t.slideVisibleClass))}n.progress=s?-l:l}this.visibleSlides=m(this.visibleSlides)}},updateProgress:function(e){if(void 0===e){var t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}var i=this.params,s=this.maxTranslate()-this.minTranslate(),a=this.progress,r=this.isBeginning,n=this.isEnd,l=r,o=n;0===s?(a=0,r=!0,n=!0):(r=(a=(e-this.minTranslate())/s)<=0,n=a>=1),S(this,{progress:a,isBeginning:r,isEnd:n}),(i.watchSlidesProgress||i.watchSlidesVisibility||i.centeredSlides&&i.autoHeight)&&this.updateSlidesProgress(e),r&&!l&&this.emit("reachBeginning toEdge"),n&&!o&&this.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&this.emit("fromEdge"),this.emit("progress",a)},updateSlidesClasses:function(){var e,t=this.slides,i=this.params,s=this.$wrapperEl,a=this.activeIndex,r=this.realIndex,n=this.virtual&&i.virtual.enabled;t.removeClass(i.slideActiveClass+" "+i.slideNextClass+" "+i.slidePrevClass+" "+i.slideDuplicateActiveClass+" "+i.slideDuplicateNextClass+" "+i.slideDuplicatePrevClass),(e=n?this.$wrapperEl.find("."+i.slideClass+'[data-swiper-slide-index="'+a+'"]'):t.eq(a)).addClass(i.slideActiveClass),i.loop&&(e.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass));var l=e.nextAll("."+i.slideClass).eq(0).addClass(i.slideNextClass);i.loop&&0===l.length&&(l=t.eq(0)).addClass(i.slideNextClass);var o=e.prevAll("."+i.slideClass).eq(0).addClass(i.slidePrevClass);i.loop&&0===o.length&&(o=t.eq(-1)).addClass(i.slidePrevClass),i.loop&&(l.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass),o.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass)),this.emitSlidesClasses()},updateActiveIndex:function(e){var t,i=this.rtlTranslate?this.translate:-this.translate,s=this.slidesGrid,a=this.snapGrid,r=this.params,n=this.activeIndex,l=this.realIndex,o=this.snapIndex,d=e;if(void 0===d){for(var h=0;h<s.length;h+=1)void 0!==s[h+1]?i>=s[h]&&i<s[h+1]-(s[h+1]-s[h])/2?d=h:i>=s[h]&&i<s[h+1]&&(d=h+1):i>=s[h]&&(d=h);r.normalizeSlideIndex&&(d<0||void 0===d)&&(d=0)}if(a.indexOf(i)>=0)t=a.indexOf(i);else{var p=Math.min(r.slidesPerGroupSkip,d);t=p+Math.floor((d-p)/r.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),d!==n){var u=parseInt(this.slides.eq(d).attr("data-swiper-slide-index")||d,10);S(this,{snapIndex:t,realIndex:u,previousIndex:n,activeIndex:d}),this.emit("activeIndexChange"),this.emit("snapIndexChange"),l!==u&&this.emit("realIndexChange"),(this.initialized||this.params.runCallbacksOnInit)&&this.emit("slideChange")}else t!==o&&(this.snapIndex=t,this.emit("snapIndexChange"))},updateClickedSlide:function(e){var t=this.params,i=m(e.target).closest("."+t.slideClass)[0],s=!1;if(i)for(var a=0;a<this.slides.length;a+=1)this.slides[a]===i&&(s=!0);if(!i||!s)return this.clickedSlide=void 0,void(this.clickedIndex=void 0);this.clickedSlide=i,this.virtual&&this.params.virtual.enabled?this.clickedIndex=parseInt(m(i).attr("data-swiper-slide-index"),10):this.clickedIndex=m(i).index(),t.slideToClickedSlide&&void 0!==this.clickedIndex&&this.clickedIndex!==this.activeIndex&&this.slideToClickedSlide()}},translate:{getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");var t=this.params,i=this.rtlTranslate,s=this.translate,a=this.$wrapperEl;if(t.virtualTranslate)return i?-s:s;if(t.cssMode)return s;var r=T(a[0],e);return i&&(r=-r),r||0},setTranslate:function(e,t){var i=this.rtlTranslate,s=this.params,a=this.$wrapperEl,r=this.wrapperEl,n=this.progress,l=0,o=0;this.isHorizontal()?l=i?-e:e:o=e,s.roundLengths&&(l=Math.floor(l),o=Math.floor(o)),s.cssMode?r[this.isHorizontal()?"scrollLeft":"scrollTop"]=this.isHorizontal()?-l:-o:s.virtualTranslate||a.transform("translate3d("+l+"px, "+o+"px, 0px)"),this.previousTranslate=this.translate,this.translate=this.isHorizontal()?l:o;var d=this.maxTranslate()-this.minTranslate();(0===d?0:(e-this.minTranslate())/d)!==n&&this.updateProgress(e),this.emit("setTranslate",this.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,i,s,a){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0),void 0===s&&(s=!0);var r=this,n=r.params,l=r.wrapperEl;if(r.animating&&n.preventInteractionOnTransition)return!1;var o,d=r.minTranslate(),h=r.maxTranslate();if(o=s&&e>d?d:s&&e<h?h:e,r.updateProgress(o),n.cssMode){var p,u=r.isHorizontal();if(0===t)l[u?"scrollLeft":"scrollTop"]=-o;else if(l.scrollTo)l.scrollTo(((p={})[u?"left":"top"]=-o,p.behavior="smooth",p));else l[u?"scrollLeft":"scrollTop"]=-o;return!0}return 0===t?(r.setTransition(0),r.setTranslate(o),i&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(o),i&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,i&&r.emit("transitionEnd"))}),r.$wrapperEl[0].addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd))),!0}},transition:{setTransition:function(e,t){this.params.cssMode||this.$wrapperEl.transition(e),this.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.params,a=this.previousIndex;if(!s.cssMode){s.autoHeight&&this.updateAutoHeight();var r=t;if(r||(r=i>a?"next":i<a?"prev":"reset"),this.emit("transitionStart"),e&&i!==a){if("reset"===r)return void this.emit("slideResetTransitionStart");this.emit("slideChangeTransitionStart"),"next"===r?this.emit("slideNextTransitionStart"):this.emit("slidePrevTransitionStart")}}},transitionEnd:function(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.previousIndex,a=this.params;if(this.animating=!1,!a.cssMode){this.setTransition(0);var r=t;if(r||(r=i>s?"next":i<s?"prev":"reset"),this.emit("transitionEnd"),e&&i!==s){if("reset"===r)return void this.emit("slideResetTransitionEnd");this.emit("slideChangeTransitionEnd"),"next"===r?this.emit("slideNextTransitionEnd"):this.emit("slidePrevTransitionEnd")}}}},slide:{slideTo:function(e,t,i,s){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var a=this,r=e;r<0&&(r=0);var n=a.params,l=a.snapGrid,o=a.slidesGrid,d=a.previousIndex,h=a.activeIndex,p=a.rtlTranslate,u=a.wrapperEl;if(a.animating&&n.preventInteractionOnTransition)return!1;var c=Math.min(a.params.slidesPerGroupSkip,r),v=c+Math.floor((r-c)/a.params.slidesPerGroup);v>=l.length&&(v=l.length-1),(h||n.initialSlide||0)===(d||0)&&i&&a.emit("beforeSlideChangeStart");var f,m=-l[v];if(a.updateProgress(m),n.normalizeSlideIndex)for(var g=0;g<o.length;g+=1)-Math.floor(100*m)>=Math.floor(100*o[g])&&(r=g);if(a.initialized&&r!==h){if(!a.allowSlideNext&&m<a.translate&&m<a.minTranslate())return!1;if(!a.allowSlidePrev&&m>a.translate&&m>a.maxTranslate()&&(h||0)!==r)return!1}if(f=r>h?"next":r<h?"prev":"reset",p&&-m===a.translate||!p&&m===a.translate)return a.updateActiveIndex(r),n.autoHeight&&a.updateAutoHeight(),a.updateSlidesClasses(),"slide"!==n.effect&&a.setTranslate(m),"reset"!==f&&(a.transitionStart(i,f),a.transitionEnd(i,f)),!1;if(n.cssMode){var w,y=a.isHorizontal(),b=-m;if(p&&(b=u.scrollWidth-u.offsetWidth-b),0===t)u[y?"scrollLeft":"scrollTop"]=b;else if(u.scrollTo)u.scrollTo(((w={})[y?"left":"top"]=b,w.behavior="smooth",w));else u[y?"scrollLeft":"scrollTop"]=b;return!0}return 0===t?(a.setTransition(0),a.setTranslate(m),a.updateActiveIndex(r),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,s),a.transitionStart(i,f),a.transitionEnd(i,f)):(a.setTransition(t),a.setTranslate(m),a.updateActiveIndex(r),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,s),a.transitionStart(i,f),a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.$wrapperEl[0].removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.$wrapperEl[0].removeEventListener("webkitTransitionEnd",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(i,f))}),a.$wrapperEl[0].addEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.$wrapperEl[0].addEventListener("webkitTransitionEnd",a.onSlideToWrapperTransitionEnd))),!0},slideToLoop:function(e,t,i,s){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var a=e;return this.params.loop&&(a+=this.loopedSlides),this.slideTo(a,t,i,s)},slideNext:function(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.activeIndex<s.slidesPerGroupSkip?1:s.slidesPerGroup;if(s.loop){if(a&&s.loopPreventsSlide)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}return this.slideTo(this.activeIndex+r,e,t,i)},slidePrev:function(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.snapGrid,n=this.slidesGrid,l=this.rtlTranslate;if(s.loop){if(a&&s.loopPreventsSlide)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}function o(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}var d,h=o(l?this.translate:-this.translate),p=r.map((function(e){return o(e)})),u=(r[p.indexOf(h)],r[p.indexOf(h)-1]);return void 0===u&&s.cssMode&&r.forEach((function(e){!u&&h>=e&&(u=e)})),void 0!==u&&(d=n.indexOf(u))<0&&(d=this.activeIndex-1),this.slideTo(d,e,t,i)},slideReset:function(e,t,i){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,i)},slideToClosest:function(e,t,i,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===s&&(s=.5);var a=this.activeIndex,r=Math.min(this.params.slidesPerGroupSkip,a),n=r+Math.floor((a-r)/this.params.slidesPerGroup),l=this.rtlTranslate?this.translate:-this.translate;if(l>=this.snapGrid[n]){var o=this.snapGrid[n];l-o>(this.snapGrid[n+1]-o)*s&&(a+=this.params.slidesPerGroup)}else{var d=this.snapGrid[n-1];l-d<=(this.snapGrid[n]-d)*s&&(a-=this.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,this.slidesGrid.length-1),this.slideTo(a,e,t,i)},slideToClickedSlide:function(){var e,t=this,i=t.params,s=t.$wrapperEl,a="auto"===i.slidesPerView?t.slidesPerViewDynamic():i.slidesPerView,r=t.clickedIndex;if(i.loop){if(t.animating)return;e=parseInt(m(t.clickedSlide).attr("data-swiper-slide-index"),10),i.centeredSlides?r<t.loopedSlides-a/2||r>t.slides.length-t.loopedSlides+a/2?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),E((function(){t.slideTo(r)}))):t.slideTo(r):r>t.slides.length-a?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),E((function(){t.slideTo(r)}))):t.slideTo(r)}else t.slideTo(r)}},loop:{loopCreate:function(){var e=this,t=r(),i=e.params,s=e.$wrapperEl;s.children("."+i.slideClass+"."+i.slideDuplicateClass).remove();var a=s.children("."+i.slideClass);if(i.loopFillGroupWithBlank){var n=i.slidesPerGroup-a.length%i.slidesPerGroup;if(n!==i.slidesPerGroup){for(var l=0;l<n;l+=1){var o=m(t.createElement("div")).addClass(i.slideClass+" "+i.slideBlankClass);s.append(o)}a=s.children("."+i.slideClass)}}"auto"!==i.slidesPerView||i.loopedSlides||(i.loopedSlides=a.length),e.loopedSlides=Math.ceil(parseFloat(i.loopedSlides||i.slidesPerView,10)),e.loopedSlides+=i.loopAdditionalSlides,e.loopedSlides>a.length&&(e.loopedSlides=a.length);var d=[],h=[];a.each((function(t,i){var s=m(t);i<e.loopedSlides&&h.push(t),i<a.length&&i>=a.length-e.loopedSlides&&d.push(t),s.attr("data-swiper-slide-index",i)}));for(var p=0;p<h.length;p+=1)s.append(m(h[p].cloneNode(!0)).addClass(i.slideDuplicateClass));for(var u=d.length-1;u>=0;u-=1)s.prepend(m(d[u].cloneNode(!0)).addClass(i.slideDuplicateClass))},loopFix:function(){this.emit("beforeLoopFix");var e,t=this.activeIndex,i=this.slides,s=this.loopedSlides,a=this.allowSlidePrev,r=this.allowSlideNext,n=this.snapGrid,l=this.rtlTranslate;this.allowSlidePrev=!0,this.allowSlideNext=!0;var o=-n[t]-this.getTranslate();if(t<s)e=i.length-3*s+t,e+=s,this.slideTo(e,0,!1,!0)&&0!==o&&this.setTranslate((l?-this.translate:this.translate)-o);else if(t>=i.length-s){e=-i.length+t+s,e+=s,this.slideTo(e,0,!1,!0)&&0!==o&&this.setTranslate((l?-this.translate:this.translate)-o)}this.allowSlidePrev=a,this.allowSlideNext=r,this.emit("loopFix")},loopDestroy:function(){var e=this.$wrapperEl,t=this.params,i=this.slides;e.children("."+t.slideClass+"."+t.slideDuplicateClass+",."+t.slideClass+"."+t.slideBlankClass).remove(),i.removeAttr("data-swiper-slide-index")}},grabCursor:{setGrabCursor:function(e){if(!(this.support.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)){var t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}},unsetGrabCursor:function(){this.support.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}},manipulation:{appendSlide:function(e){var t=this.$wrapperEl,i=this.params;if(i.loop&&this.loopDestroy(),"object"==typeof e&&"length"in e)for(var s=0;s<e.length;s+=1)e[s]&&t.append(e[s]);else t.append(e);i.loop&&this.loopCreate(),i.observer&&this.support.observer||this.update()},prependSlide:function(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&this.loopDestroy();var a=s+1;if("object"==typeof e&&"length"in e){for(var r=0;r<e.length;r+=1)e[r]&&i.prepend(e[r]);a=s+e.length}else i.prepend(e);t.loop&&this.loopCreate(),t.observer&&this.support.observer||this.update(),this.slideTo(a,0,!1)},addSlide:function(e,t){var i=this.$wrapperEl,s=this.params,a=this.activeIndex;s.loop&&(a-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+s.slideClass));var r=this.slides.length;if(e<=0)this.prependSlide(t);else if(e>=r)this.appendSlide(t);else{for(var n=a>e?a+1:a,l=[],o=r-1;o>=e;o-=1){var d=this.slides.eq(o);d.remove(),l.unshift(d)}if("object"==typeof t&&"length"in t){for(var h=0;h<t.length;h+=1)t[h]&&i.append(t[h]);n=a>e?a+t.length:a}else i.append(t);for(var p=0;p<l.length;p+=1)i.append(l[p]);s.loop&&this.loopCreate(),s.observer&&this.support.observer||this.update(),s.loop?this.slideTo(n+this.loopedSlides,0,!1):this.slideTo(n,0,!1)}},removeSlide:function(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&(s-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+t.slideClass));var a,r=s;if("object"==typeof e&&"length"in e){for(var n=0;n<e.length;n+=1)a=e[n],this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1);r=Math.max(r,0)}else a=e,this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1),r=Math.max(r,0);t.loop&&this.loopCreate(),t.observer&&this.support.observer||this.update(),t.loop?this.slideTo(r+this.loopedSlides,0,!1):this.slideTo(r,0,!1)},removeAllSlides:function(){for(var e=[],t=0;t<this.slides.length;t+=1)e.push(t);this.removeSlide(e)}},events:{attachEvents:function(){var e=r(),t=this.params,i=this.touchEvents,s=this.el,a=this.wrapperEl,n=this.device,l=this.support;this.onTouchStart=O.bind(this),this.onTouchMove=A.bind(this),this.onTouchEnd=D.bind(this),t.cssMode&&(this.onScroll=B.bind(this)),this.onClick=N.bind(this);var o=!!t.nested;if(!l.touch&&l.pointerEvents)s.addEventListener(i.start,this.onTouchStart,!1),e.addEventListener(i.move,this.onTouchMove,o),e.addEventListener(i.end,this.onTouchEnd,!1);else{if(l.touch){var d=!("touchstart"!==i.start||!l.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};s.addEventListener(i.start,this.onTouchStart,d),s.addEventListener(i.move,this.onTouchMove,l.passiveListener?{passive:!1,capture:o}:o),s.addEventListener(i.end,this.onTouchEnd,d),i.cancel&&s.addEventListener(i.cancel,this.onTouchEnd,d),H||(e.addEventListener("touchstart",X),H=!0)}(t.simulateTouch&&!n.ios&&!n.android||t.simulateTouch&&!l.touch&&n.ios)&&(s.addEventListener("mousedown",this.onTouchStart,!1),e.addEventListener("mousemove",this.onTouchMove,o),e.addEventListener("mouseup",this.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&s.addEventListener("click",this.onClick,!0),t.cssMode&&a.addEventListener("scroll",this.onScroll),t.updateOnWindowResize?this.on(n.ios||n.android?"resize orientationchange observerUpdate":"resize observerUpdate",G,!0):this.on("observerUpdate",G,!0)},detachEvents:function(){var e=r(),t=this.params,i=this.touchEvents,s=this.el,a=this.wrapperEl,n=this.device,l=this.support,o=!!t.nested;if(!l.touch&&l.pointerEvents)s.removeEventListener(i.start,this.onTouchStart,!1),e.removeEventListener(i.move,this.onTouchMove,o),e.removeEventListener(i.end,this.onTouchEnd,!1);else{if(l.touch){var d=!("onTouchStart"!==i.start||!l.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};s.removeEventListener(i.start,this.onTouchStart,d),s.removeEventListener(i.move,this.onTouchMove,o),s.removeEventListener(i.end,this.onTouchEnd,d),i.cancel&&s.removeEventListener(i.cancel,this.onTouchEnd,d)}(t.simulateTouch&&!n.ios&&!n.android||t.simulateTouch&&!l.touch&&n.ios)&&(s.removeEventListener("mousedown",this.onTouchStart,!1),e.removeEventListener("mousemove",this.onTouchMove,o),e.removeEventListener("mouseup",this.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&s.removeEventListener("click",this.onClick,!0),t.cssMode&&a.removeEventListener("scroll",this.onScroll),this.off(n.ios||n.android?"resize orientationchange observerUpdate":"resize observerUpdate",G)}},breakpoints:{setBreakpoint:function(){var e=this.activeIndex,t=this.initialized,i=this.loopedSlides,s=void 0===i?0:i,a=this.params,r=this.$el,n=a.breakpoints;if(n&&(!n||0!==Object.keys(n).length)){var l=this.getBreakpoint(n);if(l&&this.currentBreakpoint!==l){var o=l in n?n[l]:void 0;o&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach((function(e){var t=o[e];void 0!==t&&(o[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")}));var d=o||this.originalParams,h=a.slidesPerColumn>1,p=d.slidesPerColumn>1;h&&!p?(r.removeClass(a.containerModifierClass+"multirow "+a.containerModifierClass+"multirow-column"),this.emitContainerClasses()):!h&&p&&(r.addClass(a.containerModifierClass+"multirow"),"column"===d.slidesPerColumnFill&&r.addClass(a.containerModifierClass+"multirow-column"),this.emitContainerClasses());var u=d.direction&&d.direction!==a.direction,c=a.loop&&(d.slidesPerView!==a.slidesPerView||u);u&&t&&this.changeDirection(),S(this.params,d),S(this,{allowTouchMove:this.params.allowTouchMove,allowSlideNext:this.params.allowSlideNext,allowSlidePrev:this.params.allowSlidePrev}),this.currentBreakpoint=l,this.emit("_beforeBreakpoint",d),c&&t&&(this.loopDestroy(),this.loopCreate(),this.updateSlides(),this.slideTo(e-s+this.loopedSlides,0,!1)),this.emit("breakpoint",d)}}},getBreakpoint:function(e){var t=l();if(e){var i=!1,s=Object.keys(e).map((function(e){if("string"==typeof e&&0===e.indexOf("@")){var i=parseFloat(e.substr(1));return{value:t.innerHeight*i,point:e}}return{value:e,point:e}}));s.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var a=0;a<s.length;a+=1){var r=s[a],n=r.point;r.value<=t.innerWidth&&(i=n)}return i||"max"}}},checkOverflow:{checkOverflow:function(){var e=this.params,t=this.isLocked,i=this.slides.length>0&&e.slidesOffsetBefore+e.spaceBetween*(this.slides.length-1)+this.slides[0].offsetWidth*this.slides.length;e.slidesOffsetBefore&&e.slidesOffsetAfter&&i?this.isLocked=i<=this.size:this.isLocked=1===this.snapGrid.length,this.allowSlideNext=!this.isLocked,this.allowSlidePrev=!this.isLocked,t!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock"),t&&t!==this.isLocked&&(this.isEnd=!1,this.navigation&&this.navigation.update())}},classes:{addClasses:function(){var e=this.classNames,t=this.params,i=this.rtl,s=this.$el,a=this.device,r=[];r.push("initialized"),r.push(t.direction),t.freeMode&&r.push("free-mode"),t.autoHeight&&r.push("autoheight"),i&&r.push("rtl"),t.slidesPerColumn>1&&(r.push("multirow"),"column"===t.slidesPerColumnFill&&r.push("multirow-column")),a.android&&r.push("android"),a.ios&&r.push("ios"),t.cssMode&&r.push("css-mode"),r.forEach((function(i){e.push(t.containerModifierClass+i)})),s.addClass(e.join(" ")),this.emitContainerClasses()},removeClasses:function(){var e=this.$el,t=this.classNames;e.removeClass(t.join(" ")),this.emitContainerClasses()}},images:{loadImage:function(e,t,i,s,a,r){var n,o=l();function d(){r&&r()}m(e).parent("picture")[0]||e.complete&&a?d():t?((n=new o.Image).onload=d,n.onerror=d,s&&(n.sizes=s),i&&(n.srcset=i),t&&(n.src=t)):d()},preloadImages:function(){var e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(var i=0;i<e.imagesToLoad.length;i+=1){var s=e.imagesToLoad[i];e.loadImage(s,s.currentSrc||s.getAttribute("src"),s.srcset||s.getAttribute("srcset"),s.sizes||s.getAttribute("sizes"),!0,t)}}}},F={},R=function(){function t(){for(var e,i,s=arguments.length,a=new Array(s),r=0;r<s;r++)a[r]=arguments[r];1===a.length&&a[0].constructor&&a[0].constructor===Object?i=a[0]:(e=a[0],i=a[1]),i||(i={}),i=S({},i),e&&!i.el&&(i.el=e);var n=this;n.support=z(),n.device=P({userAgent:i.userAgent}),n.browser=k(),n.eventsListeners={},n.eventsAnyListeners=[],void 0===n.modules&&(n.modules={}),Object.keys(n.modules).forEach((function(e){var t=n.modules[e];if(t.params){var s=Object.keys(t.params)[0],a=t.params[s];if("object"!=typeof a||null===a)return;if(!(s in i)||!("enabled"in a))return;!0===i[s]&&(i[s]={enabled:!0}),"object"!=typeof i[s]||"enabled"in i[s]||(i[s].enabled=!0),i[s]||(i[s]={enabled:!1})}}));var l=S({},Y);n.useParams(l),n.params=S({},l,F,i),n.originalParams=S({},n.params),n.passedParams=S({},i),n.params&&n.params.on&&Object.keys(n.params.on).forEach((function(e){n.on(e,n.params.on[e])})),n.params&&n.params.onAny&&n.onAny(n.params.onAny),n.$=m;var o=m(n.params.el);if(e=o[0]){if(o.length>1){var d=[];return o.each((function(e){var s=S({},i,{el:e});d.push(new t(s))})),d}var h,p,u;return e.swiper=n,e&&e.shadowRoot&&e.shadowRoot.querySelector?(h=m(e.shadowRoot.querySelector("."+n.params.wrapperClass))).children=function(e){return o.children(e)}:h=o.children("."+n.params.wrapperClass),S(n,{$el:o,el:e,$wrapperEl:h,wrapperEl:h[0],classNames:[],slides:m(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===n.params.direction},isVertical:function(){return"vertical"===n.params.direction},rtl:"rtl"===e.dir.toLowerCase()||"rtl"===o.css("direction"),rtlTranslate:"horizontal"===n.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===o.css("direction")),wrongRTL:"-webkit-box"===h.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:n.params.allowSlideNext,allowSlidePrev:n.params.allowSlidePrev,touchEvents:(p=["touchstart","touchmove","touchend","touchcancel"],u=["mousedown","mousemove","mouseup"],n.support.pointerEvents&&(u=["pointerdown","pointermove","pointerup"]),n.touchEventsTouch={start:p[0],move:p[1],end:p[2],cancel:p[3]},n.touchEventsDesktop={start:u[0],move:u[1],end:u[2]},n.support.touch||!n.params.simulateTouch?n.touchEventsTouch:n.touchEventsDesktop),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,formElements:"input, select, option, textarea, button, video, label",lastClickTime:x(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:n.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),n.useModules(),n.emit("_swiper"),n.params.init&&n.init(),n}}var i,s,a,r=t.prototype;return r.emitContainerClasses=function(){var e=this;if(e.params._emitClasses&&e.el){var t=e.el.className.split(" ").filter((function(t){return 0===t.indexOf("swiper-container")||0===t.indexOf(e.params.containerModifierClass)}));e.emit("_containerClasses",t.join(" "))}},r.getSlideClasses=function(e){var t=this;return e.className.split(" ").filter((function(e){return 0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)})).join(" ")},r.emitSlidesClasses=function(){var e=this;e.params._emitClasses&&e.el&&e.slides.each((function(t){var i=e.getSlideClasses(t);e.emit("_slideClass",t,i)}))},r.slidesPerViewDynamic=function(){var e=this.params,t=this.slides,i=this.slidesGrid,s=this.size,a=this.activeIndex,r=1;if(e.centeredSlides){for(var n,l=t[a].swiperSlideSize,o=a+1;o<t.length;o+=1)t[o]&&!n&&(r+=1,(l+=t[o].swiperSlideSize)>s&&(n=!0));for(var d=a-1;d>=0;d-=1)t[d]&&!n&&(r+=1,(l+=t[d].swiperSlideSize)>s&&(n=!0))}else for(var h=a+1;h<t.length;h+=1)i[h]-i[a]<s&&(r+=1);return r},r.update=function(){var e=this;if(e&&!e.destroyed){var t=e.snapGrid,i=e.params;i.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode?(s(),e.params.autoHeight&&e.updateAutoHeight()):(("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||s(),i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function s(){var t=e.rtlTranslate?-1*e.translate:e.translate,i=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(i),e.updateActiveIndex(),e.updateSlidesClasses()}},r.changeDirection=function(e,t){void 0===t&&(t=!0);var i=this.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(this.$el.removeClass(""+this.params.containerModifierClass+i).addClass(""+this.params.containerModifierClass+e),this.emitContainerClasses(),this.params.direction=e,this.slides.each((function(t){"vertical"===e?t.style.width="":t.style.height=""})),this.emit("changeDirection"),t&&this.update()),this},r.init=function(){this.initialized||(this.emit("beforeInit"),this.params.breakpoints&&this.setBreakpoint(),this.addClasses(),this.params.loop&&this.loopCreate(),this.updateSize(),this.updateSlides(),this.params.watchOverflow&&this.checkOverflow(),this.params.grabCursor&&this.setGrabCursor(),this.params.preloadImages&&this.preloadImages(),this.params.loop?this.slideTo(this.params.initialSlide+this.loopedSlides,0,this.params.runCallbacksOnInit):this.slideTo(this.params.initialSlide,0,this.params.runCallbacksOnInit),this.attachEvents(),this.initialized=!0,this.emit("init"),this.emit("afterInit"))},r.destroy=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);var i,s=this,a=s.params,r=s.$el,n=s.$wrapperEl,l=s.slides;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttr("style"),n.removeAttr("style"),l&&l.length&&l.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((function(e){s.off(e)})),!1!==e&&(s.$el[0].swiper=null,i=s,Object.keys(i).forEach((function(e){try{i[e]=null}catch(e){}try{delete i[e]}catch(e){}}))),s.destroyed=!0),null},t.extendDefaults=function(e){S(F,e)},t.installModule=function(e){t.prototype.modules||(t.prototype.modules={});var i=e.name||Object.keys(t.prototype.modules).length+"_"+x();t.prototype.modules[i]=e},t.use=function(e){return Array.isArray(e)?(e.forEach((function(e){return t.installModule(e)})),t):(t.installModule(e),t)},i=t,a=[{key:"extendedDefaults",get:function(){return F}},{key:"defaults",get:function(){return Y}}],(s=null)&&e(i.prototype,s),a&&e(i,a),t}();Object.keys(V).forEach((function(e){Object.keys(V[e]).forEach((function(t){R.prototype[t]=V[e][t]}))})),R.use([$,I]);var W={update:function(e){var t=this,i=t.params,s=i.slidesPerView,a=i.slidesPerGroup,r=i.centeredSlides,n=t.params.virtual,l=n.addSlidesBefore,o=n.addSlidesAfter,d=t.virtual,h=d.from,p=d.to,u=d.slides,c=d.slidesGrid,v=d.renderSlide,f=d.offset;t.updateActiveIndex();var m,g,w,y=t.activeIndex||0;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",r?(g=Math.floor(s/2)+a+o,w=Math.floor(s/2)+a+l):(g=s+(a-1)+o,w=a+l);var b=Math.max((y||0)-w,0),E=Math.min((y||0)+g,u.length-1),x=(t.slidesGrid[b]||0)-(t.slidesGrid[0]||0);function T(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(S(t.virtual,{from:b,to:E,offset:x,slidesGrid:t.slidesGrid}),h===b&&p===E&&!e)return t.slidesGrid!==c&&x!==f&&t.slides.css(m,x+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:x,from:b,to:E,slides:function(){for(var e=[],t=b;t<=E;t+=1)e.push(u[t]);return e}()}),void(t.params.virtual.renderExternalUpdate&&T());var C=[],M=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(var z=h;z<=p;z+=1)(z<b||z>E)&&t.$wrapperEl.find("."+t.params.slideClass+'[data-swiper-slide-index="'+z+'"]').remove();for(var P=0;P<u.length;P+=1)P>=b&&P<=E&&(void 0===p||e?M.push(P):(P>p&&M.push(P),P<h&&C.push(P)));M.forEach((function(e){t.$wrapperEl.append(v(u[e],e))})),C.sort((function(e,t){return t-e})).forEach((function(e){t.$wrapperEl.prepend(v(u[e],e))})),t.$wrapperEl.children(".swiper-slide").css(m,x+"px"),T()},renderSlide:function(e,t){var i=this.params.virtual;if(i.cache&&this.virtual.cache[t])return this.virtual.cache[t];var s=i.renderSlide?m(i.renderSlide.call(this,e,t)):m('<div class="'+this.params.slideClass+'" data-swiper-slide-index="'+t+'">'+e+"</div>");return s.attr("data-swiper-slide-index")||s.attr("data-swiper-slide-index",t),i.cache&&(this.virtual.cache[t]=s),s},appendSlide:function(e){if("object"==typeof e&&"length"in e)for(var t=0;t<e.length;t+=1)e[t]&&this.virtual.slides.push(e[t]);else this.virtual.slides.push(e);this.virtual.update(!0)},prependSlide:function(e){var t=this.activeIndex,i=t+1,s=1;if(Array.isArray(e)){for(var a=0;a<e.length;a+=1)e[a]&&this.virtual.slides.unshift(e[a]);i=t+e.length,s=e.length}else this.virtual.slides.unshift(e);if(this.params.virtual.cache){var r=this.virtual.cache,n={};Object.keys(r).forEach((function(e){var t=r[e],i=t.attr("data-swiper-slide-index");i&&t.attr("data-swiper-slide-index",parseInt(i,10)+1),n[parseInt(e,10)+s]=t})),this.virtual.cache=n}this.virtual.update(!0),this.slideTo(i,0)},removeSlide:function(e){if(null!=e){var t=this.activeIndex;if(Array.isArray(e))for(var i=e.length-1;i>=0;i-=1)this.virtual.slides.splice(e[i],1),this.params.virtual.cache&&delete this.virtual.cache[e[i]],e[i]<t&&(t-=1),t=Math.max(t,0);else this.virtual.slides.splice(e,1),this.params.virtual.cache&&delete this.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);this.virtual.update(!0),this.slideTo(t,0)}},removeAllSlides:function(){this.virtual.slides=[],this.params.virtual.cache&&(this.virtual.cache={}),this.virtual.update(!0),this.slideTo(0,0)}},q={name:"virtual",params:{virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}},create:function(){M(this,{virtual:t(t({},W),{},{slides:this.params.virtual.slides,cache:{}})})},on:{beforeInit:function(e){if(e.params.virtual.enabled){e.classNames.push(e.params.containerModifierClass+"virtual");var t={watchSlidesProgress:!0};S(e.params,t),S(e.originalParams,t),e.params.initialSlide||e.virtual.update()}},setTranslate:function(e){e.params.virtual.enabled&&e.virtual.update()}}},j={handle:function(e){var t=l(),i=r(),s=this.rtlTranslate,a=e;a.originalEvent&&(a=a.originalEvent);var n=a.keyCode||a.charCode,o=this.params.keyboard.pageUpDown,d=o&&33===n,h=o&&34===n,p=37===n,u=39===n,c=38===n,v=40===n;if(!this.allowSlideNext&&(this.isHorizontal()&&u||this.isVertical()&&v||h))return!1;if(!this.allowSlidePrev&&(this.isHorizontal()&&p||this.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||i.activeElement&&i.activeElement.nodeName&&("input"===i.activeElement.nodeName.toLowerCase()||"textarea"===i.activeElement.nodeName.toLowerCase()))){if(this.params.keyboard.onlyInViewport&&(d||h||p||u||c||v)){var f=!1;if(this.$el.parents("."+this.params.slideClass).length>0&&0===this.$el.parents("."+this.params.slideActiveClass).length)return;var m=t.innerWidth,g=t.innerHeight,w=this.$el.offset();s&&(w.left-=this.$el[0].scrollLeft);for(var y=[[w.left,w.top],[w.left+this.width,w.top],[w.left,w.top+this.height],[w.left+this.width,w.top+this.height]],b=0;b<y.length;b+=1){var E=y[b];E[0]>=0&&E[0]<=m&&E[1]>=0&&E[1]<=g&&(f=!0)}if(!f)return}this.isHorizontal()?((d||h||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((h||u)&&!s||(d||p)&&s)&&this.slideNext(),((d||p)&&!s||(h||u)&&s)&&this.slidePrev()):((d||h||c||v)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(h||v)&&this.slideNext(),(d||c)&&this.slidePrev()),this.emit("keyPress",n)}},enable:function(){var e=r();this.keyboard.enabled||(m(e).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable:function(){var e=r();this.keyboard.enabled&&(m(e).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}},_={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}},create:function(){M(this,{keyboard:t({enabled:!1},j)})},on:{init:function(e){e.params.keyboard.enabled&&e.keyboard.enable()},destroy:function(e){e.keyboard.enabled&&e.keyboard.disable()}}};var U={lastScrollTime:x(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:function(){return l().navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":function(){var e=r(),t="onwheel"in e;if(!t){var i=e.createElement("div");i.setAttribute("onwheel","return;"),t="function"==typeof i.onwheel}return!t&&e.implementation&&e.implementation.hasFeature&&!0!==e.implementation.hasFeature("","")&&(t=e.implementation.hasFeature("Events.wheel","3.0")),t}()?"wheel":"mousewheel"},normalize:function(e){var t=0,i=0,s=0,a=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),s=10*t,a=10*i,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=a,a=0),(s||a)&&e.deltaMode&&(1===e.deltaMode?(s*=40,a*=40):(s*=800,a*=800)),s&&!t&&(t=s<1?-1:1),a&&!i&&(i=a<1?-1:1),{spinX:t,spinY:i,pixelX:s,pixelY:a}},handleMouseEnter:function(){this.mouseEntered=!0},handleMouseLeave:function(){this.mouseEntered=!1},handle:function(e){var t=e,i=this,s=i.params.mousewheel;i.params.cssMode&&t.preventDefault();var a=i.$el;if("container"!==i.params.mousewheel.eventsTarget&&(a=m(i.params.mousewheel.eventsTarget)),!i.mouseEntered&&!a[0].contains(t.target)&&!s.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);var r=0,n=i.rtlTranslate?-1:1,l=U.normalize(t);if(s.forceToAxis)if(i.isHorizontal()){if(!(Math.abs(l.pixelX)>Math.abs(l.pixelY)))return!0;r=-l.pixelX*n}else{if(!(Math.abs(l.pixelY)>Math.abs(l.pixelX)))return!0;r=-l.pixelY}else r=Math.abs(l.pixelX)>Math.abs(l.pixelY)?-l.pixelX*n:-l.pixelY;if(0===r)return!0;if(s.invert&&(r=-r),i.params.freeMode){var o={time:x(),delta:Math.abs(r),direction:Math.sign(r)},d=i.mousewheel.lastEventBeforeSnap,h=d&&o.time<d.time+500&&o.delta<=d.delta&&o.direction===d.direction;if(!h){i.mousewheel.lastEventBeforeSnap=void 0,i.params.loop&&i.loopFix();var p=i.getTranslate()+r*s.sensitivity,u=i.isBeginning,c=i.isEnd;if(p>=i.minTranslate()&&(p=i.minTranslate()),p<=i.maxTranslate()&&(p=i.maxTranslate()),i.setTransition(0),i.setTranslate(p),i.updateProgress(),i.updateActiveIndex(),i.updateSlidesClasses(),(!u&&i.isBeginning||!c&&i.isEnd)&&i.updateSlidesClasses(),i.params.freeModeSticky){clearTimeout(i.mousewheel.timeout),i.mousewheel.timeout=void 0;var v=i.mousewheel.recentWheelEvents;v.length>=15&&v.shift();var f=v.length?v[v.length-1]:void 0,g=v[0];if(v.push(o),f&&(o.delta>f.delta||o.direction!==f.direction))v.splice(0);else if(v.length>=15&&o.time-g.time<500&&g.delta-o.delta>=1&&o.delta<=6){var w=r>0?.8:.2;i.mousewheel.lastEventBeforeSnap=o,v.splice(0),i.mousewheel.timeout=E((function(){i.slideToClosest(i.params.speed,!0,void 0,w)}),0)}i.mousewheel.timeout||(i.mousewheel.timeout=E((function(){i.mousewheel.lastEventBeforeSnap=o,v.splice(0),i.slideToClosest(i.params.speed,!0,void 0,.5)}),500))}if(h||i.emit("scroll",t),i.params.autoplay&&i.params.autoplayDisableOnInteraction&&i.autoplay.stop(),p===i.minTranslate()||p===i.maxTranslate())return!0}}else{var y={time:x(),delta:Math.abs(r),direction:Math.sign(r),raw:e},b=i.mousewheel.recentWheelEvents;b.length>=2&&b.shift();var T=b.length?b[b.length-1]:void 0;if(b.push(y),T?(y.direction!==T.direction||y.delta>T.delta||y.time>T.time+150)&&i.mousewheel.animateSlider(y):i.mousewheel.animateSlider(y),i.mousewheel.releaseScroll(y))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider:function(e){var t=l();return!(this.params.mousewheel.thresholdDelta&&e.delta<this.params.mousewheel.thresholdDelta)&&(!(this.params.mousewheel.thresholdTime&&x()-this.mousewheel.lastScrollTime<this.params.mousewheel.thresholdTime)&&(e.delta>=6&&x()-this.mousewheel.lastScrollTime<60||(e.direction<0?this.isEnd&&!this.params.loop||this.animating||(this.slideNext(),this.emit("scroll",e.raw)):this.isBeginning&&!this.params.loop||this.animating||(this.slidePrev(),this.emit("scroll",e.raw)),this.mousewheel.lastScrollTime=(new t.Date).getTime(),!1)))},releaseScroll:function(e){var t=this.params.mousewheel;if(e.direction<0){if(this.isEnd&&!this.params.loop&&t.releaseOnEdges)return!0}else if(this.isBeginning&&!this.params.loop&&t.releaseOnEdges)return!0;return!1},enable:function(){var e=U.event();if(this.params.cssMode)return this.wrapperEl.removeEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarget&&(t=m(this.params.mousewheel.eventsTarget)),t.on("mouseenter",this.mousewheel.handleMouseEnter),t.on("mouseleave",this.mousewheel.handleMouseLeave),t.on(e,this.mousewheel.handle),this.mousewheel.enabled=!0,!0},disable:function(){var e=U.event();if(this.params.cssMode)return this.wrapperEl.addEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(!this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarget&&(t=m(this.params.mousewheel.eventsTarget)),t.off(e,this.mousewheel.handle),this.mousewheel.enabled=!1,!0}},K={update:function(){var e=this.params.navigation;if(!this.params.loop){var t=this.navigation,i=t.$nextEl,s=t.$prevEl;s&&s.length>0&&(this.isBeginning?s.addClass(e.disabledClass):s.removeClass(e.disabledClass),s[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass)),i&&i.length>0&&(this.isEnd?i.addClass(e.disabledClass):i.removeClass(e.disabledClass),i[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass))}},onPrevClick:function(e){e.preventDefault(),this.isBeginning&&!this.params.loop||this.slidePrev()},onNextClick:function(e){e.preventDefault(),this.isEnd&&!this.params.loop||this.slideNext()},init:function(){var e,t,i=this.params.navigation;(i.nextEl||i.prevEl)&&(i.nextEl&&(e=m(i.nextEl),this.params.uniqueNavElements&&"string"==typeof i.nextEl&&e.length>1&&1===this.$el.find(i.nextEl).length&&(e=this.$el.find(i.nextEl))),i.prevEl&&(t=m(i.prevEl),this.params.uniqueNavElements&&"string"==typeof i.prevEl&&t.length>1&&1===this.$el.find(i.prevEl).length&&(t=this.$el.find(i.prevEl))),e&&e.length>0&&e.on("click",this.navigation.onNextClick),t&&t.length>0&&t.on("click",this.navigation.onPrevClick),S(this.navigation,{$nextEl:e,nextEl:e&&e[0],$prevEl:t,prevEl:t&&t[0]}))},destroy:function(){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;t&&t.length&&(t.off("click",this.navigation.onNextClick),t.removeClass(this.params.navigation.disabledClass)),i&&i.length&&(i.off("click",this.navigation.onPrevClick),i.removeClass(this.params.navigation.disabledClass))}},Z={update:function(){var e=this.rtl,t=this.params.pagination;if(t.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var i,s=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,a=this.pagination.$el,r=this.params.loop?Math.ceil((s-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length;if(this.params.loop?((i=Math.ceil((this.activeIndex-this.loopedSlides)/this.params.slidesPerGroup))>s-1-2*this.loopedSlides&&(i-=s-2*this.loopedSlides),i>r-1&&(i-=r),i<0&&"bullets"!==this.params.paginationType&&(i=r+i)):i=void 0!==this.snapIndex?this.snapIndex:this.activeIndex||0,"bullets"===t.type&&this.pagination.bullets&&this.pagination.bullets.length>0){var n,l,o,d=this.pagination.bullets;if(t.dynamicBullets&&(this.pagination.bulletSize=d.eq(0)[this.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(this.isHorizontal()?"width":"height",this.pagination.bulletSize*(t.dynamicMainBullets+4)+"px"),t.dynamicMainBullets>1&&void 0!==this.previousIndex&&(this.pagination.dynamicBulletIndex+=i-this.previousIndex,this.pagination.dynamicBulletIndex>t.dynamicMainBullets-1?this.pagination.dynamicBulletIndex=t.dynamicMainBullets-1:this.pagination.dynamicBulletIndex<0&&(this.pagination.dynamicBulletIndex=0)),n=i-this.pagination.dynamicBulletIndex,o=((l=n+(Math.min(d.length,t.dynamicMainBullets)-1))+n)/2),d.removeClass(t.bulletActiveClass+" "+t.bulletActiveClass+"-next "+t.bulletActiveClass+"-next-next "+t.bulletActiveClass+"-prev "+t.bulletActiveClass+"-prev-prev "+t.bulletActiveClass+"-main"),a.length>1)d.each((function(e){var s=m(e),a=s.index();a===i&&s.addClass(t.bulletActiveClass),t.dynamicBullets&&(a>=n&&a<=l&&s.addClass(t.bulletActiveClass+"-main"),a===n&&s.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),a===l&&s.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next"))}));else{var h=d.eq(i),p=h.index();if(h.addClass(t.bulletActiveClass),t.dynamicBullets){for(var u=d.eq(n),c=d.eq(l),v=n;v<=l;v+=1)d.eq(v).addClass(t.bulletActiveClass+"-main");if(this.params.loop)if(p>=d.length-t.dynamicMainBullets){for(var f=t.dynamicMainBullets;f>=0;f-=1)d.eq(d.length-f).addClass(t.bulletActiveClass+"-main");d.eq(d.length-t.dynamicMainBullets-1).addClass(t.bulletActiveClass+"-prev")}else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),c.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next");else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),c.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next")}}if(t.dynamicBullets){var g=Math.min(d.length,t.dynamicMainBullets+4),w=(this.pagination.bulletSize*g-this.pagination.bulletSize)/2-o*this.pagination.bulletSize,y=e?"right":"left";d.css(this.isHorizontal()?y:"top",w+"px")}}if("fraction"===t.type&&(a.find("."+t.currentClass).text(t.formatFractionCurrent(i+1)),a.find("."+t.totalClass).text(t.formatFractionTotal(r))),"progressbar"===t.type){var b;b=t.progressbarOpposite?this.isHorizontal()?"vertical":"horizontal":this.isHorizontal()?"horizontal":"vertical";var E=(i+1)/r,x=1,T=1;"horizontal"===b?x=E:T=E,a.find("."+t.progressbarFillClass).transform("translate3d(0,0,0) scaleX("+x+") scaleY("+T+")").transition(this.params.speed)}"custom"===t.type&&t.renderCustom?(a.html(t.renderCustom(this,i+1,r)),this.emit("paginationRender",a[0])):this.emit("paginationUpdate",a[0]),a[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](t.lockClass)}},render:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,i=this.pagination.$el,s="";if("bullets"===e.type){for(var a=this.params.loop?Math.ceil((t-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length,r=0;r<a;r+=1)e.renderBullet?s+=e.renderBullet.call(this,r,e.bulletClass):s+="<"+e.bulletElement+' class="'+e.bulletClass+'"></'+e.bulletElement+">";i.html(s),this.pagination.bullets=i.find("."+e.bulletClass)}"fraction"===e.type&&(s=e.renderFraction?e.renderFraction.call(this,e.currentClass,e.totalClass):'<span class="'+e.currentClass+'"></span> / <span class="'+e.totalClass+'"></span>',i.html(s)),"progressbar"===e.type&&(s=e.renderProgressbar?e.renderProgressbar.call(this,e.progressbarFillClass):'<span class="'+e.progressbarFillClass+'"></span>',i.html(s)),"custom"!==e.type&&this.emit("paginationRender",this.pagination.$el[0])}},init:function(){var e=this,t=e.params.pagination;if(t.el){var i=m(t.el);0!==i.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&i.length>1&&(i=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&i.addClass(t.clickableClass),i.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(i.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&i.addClass(t.progressbarOppositeClass),t.clickable&&i.on("click","."+t.bulletClass,(function(t){t.preventDefault();var i=m(this).index()*e.params.slidesPerGroup;e.params.loop&&(i+=e.loopedSlides),e.slideTo(i)})),S(e.pagination,{$el:i,el:i[0]}))}},destroy:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}}},J={setTranslate:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=this.rtlTranslate,i=this.progress,s=e.dragSize,a=e.trackSize,r=e.$dragEl,n=e.$el,l=this.params.scrollbar,o=s,d=(a-s)*i;t?(d=-d)>0?(o=s-d,d=0):-d+s>a&&(o=a+d):d<0?(o=s+d,d=0):d+s>a&&(o=a-d),this.isHorizontal()?(r.transform("translate3d("+d+"px, 0, 0)"),r[0].style.width=o+"px"):(r.transform("translate3d(0px, "+d+"px, 0)"),r[0].style.height=o+"px"),l.hide&&(clearTimeout(this.scrollbar.timeout),n[0].style.opacity=1,this.scrollbar.timeout=setTimeout((function(){n[0].style.opacity=0,n.transition(400)}),1e3))}},setTransition:function(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=e.$dragEl,i=e.$el;t[0].style.width="",t[0].style.height="";var s,a=this.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,r=this.size/this.virtualSize,n=r*(a/this.size);s="auto"===this.params.scrollbar.dragSize?a*r:parseInt(this.params.scrollbar.dragSize,10),this.isHorizontal()?t[0].style.width=s+"px":t[0].style.height=s+"px",i[0].style.display=r>=1?"none":"",this.params.scrollbar.hide&&(i[0].style.opacity=0),S(e,{trackSize:a,divider:r,moveDivider:n,dragSize:s}),e.$el[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](this.params.scrollbar.lockClass)}},getPointerPosition:function(e){return this.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition:function(e){var t,i=this.scrollbar,s=this.rtlTranslate,a=i.$el,r=i.dragSize,n=i.trackSize,l=i.dragStartPos;t=(i.getPointerPosition(e)-a.offset()[this.isHorizontal()?"left":"top"]-(null!==l?l:r/2))/(n-r),t=Math.max(Math.min(t,1),0),s&&(t=1-t);var o=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*t;this.updateProgress(o),this.setTranslate(o),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el,r=i.$dragEl;this.scrollbar.isTouched=!0,this.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[this.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),s.transition(100),r.transition(100),i.setDragPosition(e),clearTimeout(this.scrollbar.dragTimeout),a.transition(0),t.hide&&a.css("opacity",1),this.params.cssMode&&this.$wrapperEl.css("scroll-snap-type","none"),this.emit("scrollbarDragStart",e)},onDragMove:function(e){var t=this.scrollbar,i=this.$wrapperEl,s=t.$el,a=t.$dragEl;this.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,t.setDragPosition(e),i.transition(0),s.transition(0),a.transition(0),this.emit("scrollbarDragMove",e))},onDragEnd:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el;this.scrollbar.isTouched&&(this.scrollbar.isTouched=!1,this.params.cssMode&&(this.$wrapperEl.css("scroll-snap-type",""),s.transition("")),t.hide&&(clearTimeout(this.scrollbar.dragTimeout),this.scrollbar.dragTimeout=E((function(){a.css("opacity",0),a.transition(400)}),1e3)),this.emit("scrollbarDragEnd",e),t.snapOnRelease&&this.slideToClosest())},enableDraggable:function(){if(this.params.scrollbar.el){var e=r(),t=this.scrollbar,i=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,n=this.support,l=t.$el[0],o=!(!n.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},d=!(!n.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};n.touch?(l.addEventListener(i.start,this.scrollbar.onDragStart,o),l.addEventListener(i.move,this.scrollbar.onDragMove,o),l.addEventListener(i.end,this.scrollbar.onDragEnd,d)):(l.addEventListener(s.start,this.scrollbar.onDragStart,o),e.addEventListener(s.move,this.scrollbar.onDragMove,o),e.addEventListener(s.end,this.scrollbar.onDragEnd,d))}},disableDraggable:function(){if(this.params.scrollbar.el){var e=r(),t=this.scrollbar,i=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,n=this.support,l=t.$el[0],o=!(!n.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},d=!(!n.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};n.touch?(l.removeEventListener(i.start,this.scrollbar.onDragStart,o),l.removeEventListener(i.move,this.scrollbar.onDragMove,o),l.removeEventListener(i.end,this.scrollbar.onDragEnd,d)):(l.removeEventListener(s.start,this.scrollbar.onDragStart,o),e.removeEventListener(s.move,this.scrollbar.onDragMove,o),e.removeEventListener(s.end,this.scrollbar.onDragEnd,d))}},init:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.$el,i=this.params.scrollbar,s=m(i.el);this.params.uniqueNavElements&&"string"==typeof i.el&&s.length>1&&1===t.find(i.el).length&&(s=t.find(i.el));var a=s.find("."+this.params.scrollbar.dragClass);0===a.length&&(a=m('<div class="'+this.params.scrollbar.dragClass+'"></div>'),s.append(a)),S(e,{$el:s,el:s[0],$dragEl:a,dragEl:a[0]}),i.draggable&&e.enableDraggable()}},destroy:function(){this.scrollbar.disableDraggable()}},Q={setTransform:function(e,t){var i=this.rtl,s=m(e),a=i?-1:1,r=s.attr("data-swiper-parallax")||"0",n=s.attr("data-swiper-parallax-x"),l=s.attr("data-swiper-parallax-y"),o=s.attr("data-swiper-parallax-scale"),d=s.attr("data-swiper-parallax-opacity");if(n||l?(n=n||"0",l=l||"0"):this.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*t*a+"%":n*t*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=d){var h=d-(d-1)*(1-Math.abs(t));s[0].style.opacity=h}if(null==o)s.transform("translate3d("+n+", "+l+", 0px)");else{var p=o-(o-1)*(1-Math.abs(t));s.transform("translate3d("+n+", "+l+", 0px) scale("+p+")")}},setTranslate:function(){var e=this,t=e.$el,i=e.slides,s=e.progress,a=e.snapGrid;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){e.parallax.setTransform(t,s)})),i.each((function(t,i){var r=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(r+=Math.ceil(i/2)-s*(a.length-1)),r=Math.min(Math.max(r,-1),1),m(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){e.parallax.setTransform(t,r)}))}))},setTransition:function(e){void 0===e&&(e=this.params.speed);this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){var i=m(t),s=parseInt(i.attr("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),i.transition(s)}))}},ee={getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var t=e.targetTouches[0].pageX,i=e.targetTouches[0].pageY,s=e.targetTouches[1].pageX,a=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-t,2)+Math.pow(a-i,2))},onGestureStart:function(e){var t=this.support,i=this.params.zoom,s=this.zoom,a=s.gesture;if(s.fakeGestureTouched=!1,s.fakeGestureMoved=!1,!t.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;s.fakeGestureTouched=!0,a.scaleStart=ee.getDistanceBetweenTouches(e)}a.$slideEl&&a.$slideEl.length||(a.$slideEl=m(e.target).closest("."+this.params.slideClass),0===a.$slideEl.length&&(a.$slideEl=this.slides.eq(this.activeIndex)),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+i.containerClass),a.maxRatio=a.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,0!==a.$imageWrapEl.length)?(a.$imageEl&&a.$imageEl.transition(0),this.zoom.isScaling=!0):a.$imageEl=void 0},onGestureChange:function(e){var t=this.support,i=this.params.zoom,s=this.zoom,a=s.gesture;if(!t.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;s.fakeGestureMoved=!0,a.scaleMove=ee.getDistanceBetweenTouches(e)}a.$imageEl&&0!==a.$imageEl.length?(t.gestures?s.scale=e.scale*s.currentScale:s.scale=a.scaleMove/a.scaleStart*s.currentScale,s.scale>a.maxRatio&&(s.scale=a.maxRatio-1+Math.pow(s.scale-a.maxRatio+1,.5)),s.scale<i.minRatio&&(s.scale=i.minRatio+1-Math.pow(i.minRatio-s.scale+1,.5)),a.$imageEl.transform("translate3d(0,0,0) scale("+s.scale+")")):"gesturechange"===e.type&&s.onGestureStart(e)},onGestureEnd:function(e){var t=this.device,i=this.support,s=this.params.zoom,a=this.zoom,r=a.gesture;if(!i.gestures){if(!a.fakeGestureTouched||!a.fakeGestureMoved)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!t.android)return;a.fakeGestureTouched=!1,a.fakeGestureMoved=!1}r.$imageEl&&0!==r.$imageEl.length&&(a.scale=Math.max(Math.min(a.scale,r.maxRatio),s.minRatio),r.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale("+a.scale+")"),a.currentScale=a.scale,a.isScaling=!1,1===a.scale&&(r.$slideEl=void 0))},onTouchStart:function(e){var t=this.device,i=this.zoom,s=i.gesture,a=i.image;s.$imageEl&&0!==s.$imageEl.length&&(a.isTouched||(t.android&&e.cancelable&&e.preventDefault(),a.isTouched=!0,a.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,a.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))},onTouchMove:function(e){var t=this.zoom,i=t.gesture,s=t.image,a=t.velocity;if(i.$imageEl&&0!==i.$imageEl.length&&(this.allowClick=!1,s.isTouched&&i.$slideEl)){s.isMoved||(s.width=i.$imageEl[0].offsetWidth,s.height=i.$imageEl[0].offsetHeight,s.startX=T(i.$imageWrapEl[0],"x")||0,s.startY=T(i.$imageWrapEl[0],"y")||0,i.slideWidth=i.$slideEl[0].offsetWidth,i.slideHeight=i.$slideEl[0].offsetHeight,i.$imageWrapEl.transition(0),this.rtl&&(s.startX=-s.startX,s.startY=-s.startY));var r=s.width*t.scale,n=s.height*t.scale;if(!(r<i.slideWidth&&n<i.slideHeight)){if(s.minX=Math.min(i.slideWidth/2-r/2,0),s.maxX=-s.minX,s.minY=Math.min(i.slideHeight/2-n/2,0),s.maxY=-s.minY,s.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,s.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!s.isMoved&&!t.isScaling){if(this.isHorizontal()&&(Math.floor(s.minX)===Math.floor(s.startX)&&s.touchesCurrent.x<s.touchesStart.x||Math.floor(s.maxX)===Math.floor(s.startX)&&s.touchesCurrent.x>s.touchesStart.x))return void(s.isTouched=!1);if(!this.isHorizontal()&&(Math.floor(s.minY)===Math.floor(s.startY)&&s.touchesCurrent.y<s.touchesStart.y||Math.floor(s.maxY)===Math.floor(s.startY)&&s.touchesCurrent.y>s.touchesStart.y))return void(s.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),s.isMoved=!0,s.currentX=s.touchesCurrent.x-s.touchesStart.x+s.startX,s.currentY=s.touchesCurrent.y-s.touchesStart.y+s.startY,s.currentX<s.minX&&(s.currentX=s.minX+1-Math.pow(s.minX-s.currentX+1,.8)),s.currentX>s.maxX&&(s.currentX=s.maxX-1+Math.pow(s.currentX-s.maxX+1,.8)),s.currentY<s.minY&&(s.currentY=s.minY+1-Math.pow(s.minY-s.currentY+1,.8)),s.currentY>s.maxY&&(s.currentY=s.maxY-1+Math.pow(s.currentY-s.maxY+1,.8)),a.prevPositionX||(a.prevPositionX=s.touchesCurrent.x),a.prevPositionY||(a.prevPositionY=s.touchesCurrent.y),a.prevTime||(a.prevTime=Date.now()),a.x=(s.touchesCurrent.x-a.prevPositionX)/(Date.now()-a.prevTime)/2,a.y=(s.touchesCurrent.y-a.prevPositionY)/(Date.now()-a.prevTime)/2,Math.abs(s.touchesCurrent.x-a.prevPositionX)<2&&(a.x=0),Math.abs(s.touchesCurrent.y-a.prevPositionY)<2&&(a.y=0),a.prevPositionX=s.touchesCurrent.x,a.prevPositionY=s.touchesCurrent.y,a.prevTime=Date.now(),i.$imageWrapEl.transform("translate3d("+s.currentX+"px, "+s.currentY+"px,0)")}}},onTouchEnd:function(){var e=this.zoom,t=e.gesture,i=e.image,s=e.velocity;if(t.$imageEl&&0!==t.$imageEl.length){if(!i.isTouched||!i.isMoved)return i.isTouched=!1,void(i.isMoved=!1);i.isTouched=!1,i.isMoved=!1;var a=300,r=300,n=s.x*a,l=i.currentX+n,o=s.y*r,d=i.currentY+o;0!==s.x&&(a=Math.abs((l-i.currentX)/s.x)),0!==s.y&&(r=Math.abs((d-i.currentY)/s.y));var h=Math.max(a,r);i.currentX=l,i.currentY=d;var p=i.width*e.scale,u=i.height*e.scale;i.minX=Math.min(t.slideWidth/2-p/2,0),i.maxX=-i.minX,i.minY=Math.min(t.slideHeight/2-u/2,0),i.maxY=-i.minY,i.currentX=Math.max(Math.min(i.currentX,i.maxX),i.minX),i.currentY=Math.max(Math.min(i.currentY,i.maxY),i.minY),t.$imageWrapEl.transition(h).transform("translate3d("+i.currentX+"px, "+i.currentY+"px,0)")}},onTransitionEnd:function(){var e=this.zoom,t=e.gesture;t.$slideEl&&this.previousIndex!==this.activeIndex&&(t.$imageEl&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&t.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,e.currentScale=1,t.$slideEl=void 0,t.$imageEl=void 0,t.$imageWrapEl=void 0)},toggle:function(e){var t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in:function(e){var t,i,s,a,r,n,l,o,d,h,p,u,c,v,f,m,g=this.zoom,w=this.params.zoom,y=g.gesture,b=g.image;(y.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?y.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):y.$slideEl=this.slides.eq(this.activeIndex),y.$imageEl=y.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),y.$imageWrapEl=y.$imageEl.parent("."+w.containerClass)),y.$imageEl&&0!==y.$imageEl.length)&&(y.$slideEl.addClass(""+w.zoomedSlideClass),void 0===b.touchesStart.x&&e?(t="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,i="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(t=b.touchesStart.x,i=b.touchesStart.y),g.scale=y.$imageWrapEl.attr("data-swiper-zoom")||w.maxRatio,g.currentScale=y.$imageWrapEl.attr("data-swiper-zoom")||w.maxRatio,e?(f=y.$slideEl[0].offsetWidth,m=y.$slideEl[0].offsetHeight,s=y.$slideEl.offset().left+f/2-t,a=y.$slideEl.offset().top+m/2-i,l=y.$imageEl[0].offsetWidth,o=y.$imageEl[0].offsetHeight,d=l*g.scale,h=o*g.scale,c=-(p=Math.min(f/2-d/2,0)),v=-(u=Math.min(m/2-h/2,0)),(r=s*g.scale)<p&&(r=p),r>c&&(r=c),(n=a*g.scale)<u&&(n=u),n>v&&(n=v)):(r=0,n=0),y.$imageWrapEl.transition(300).transform("translate3d("+r+"px, "+n+"px,0)"),y.$imageEl.transition(300).transform("translate3d(0,0,0) scale("+g.scale+")"))},out:function(){var e=this.zoom,t=this.params.zoom,i=e.gesture;i.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?i.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):i.$slideEl=this.slides.eq(this.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+t.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&(e.scale=1,e.currentScale=1,i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),i.$slideEl.removeClass(""+t.zoomedSlideClass),i.$slideEl=void 0)},toggleGestures:function(e){var t=this.zoom,i=t.slideSelector,s=t.passiveListener;this.$wrapperEl[e]("gesturestart",i,t.onGestureStart,s),this.$wrapperEl[e]("gesturechange",i,t.onGestureChange,s),this.$wrapperEl[e]("gestureend",i,t.onGestureEnd,s)},enableGestures:function(){this.zoom.gesturesEnabled||(this.zoom.gesturesEnabled=!0,this.zoom.toggleGestures("on"))},disableGestures:function(){this.zoom.gesturesEnabled&&(this.zoom.gesturesEnabled=!1,this.zoom.toggleGestures("off"))},enable:function(){var e=this.support,t=this.zoom;if(!t.enabled){t.enabled=!0;var i=!("touchstart"!==this.touchEvents.start||!e.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},s=!e.passiveListener||{passive:!1,capture:!0},a="."+this.params.slideClass;this.zoom.passiveListener=i,this.zoom.slideSelector=a,e.gestures?(this.$wrapperEl.on(this.touchEvents.start,this.zoom.enableGestures,i),this.$wrapperEl.on(this.touchEvents.end,this.zoom.disableGestures,i)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.on(this.touchEvents.start,a,t.onGestureStart,i),this.$wrapperEl.on(this.touchEvents.move,a,t.onGestureChange,s),this.$wrapperEl.on(this.touchEvents.end,a,t.onGestureEnd,i),this.touchEvents.cancel&&this.$wrapperEl.on(this.touchEvents.cancel,a,t.onGestureEnd,i)),this.$wrapperEl.on(this.touchEvents.move,"."+this.params.zoom.containerClass,t.onTouchMove,s)}},disable:function(){var e=this.zoom;if(e.enabled){var t=this.support;this.zoom.enabled=!1;var i=!("touchstart"!==this.touchEvents.start||!t.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},s=!t.passiveListener||{passive:!1,capture:!0},a="."+this.params.slideClass;t.gestures?(this.$wrapperEl.off(this.touchEvents.start,this.zoom.enableGestures,i),this.$wrapperEl.off(this.touchEvents.end,this.zoom.disableGestures,i)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.off(this.touchEvents.start,a,e.onGestureStart,i),this.$wrapperEl.off(this.touchEvents.move,a,e.onGestureChange,s),this.$wrapperEl.off(this.touchEvents.end,a,e.onGestureEnd,i),this.touchEvents.cancel&&this.$wrapperEl.off(this.touchEvents.cancel,a,e.onGestureEnd,i)),this.$wrapperEl.off(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,s)}}},te={loadInSlide:function(e,t){void 0===t&&(t=!0);var i=this,s=i.params.lazy;if(void 0!==e&&0!==i.slides.length){var a=i.virtual&&i.params.virtual.enabled?i.$wrapperEl.children("."+i.params.slideClass+'[data-swiper-slide-index="'+e+'"]'):i.slides.eq(e),r=a.find("."+s.elementClass+":not(."+s.loadedClass+"):not(."+s.loadingClass+")");!a.hasClass(s.elementClass)||a.hasClass(s.loadedClass)||a.hasClass(s.loadingClass)||r.push(a[0]),0!==r.length&&r.each((function(e){var r=m(e);r.addClass(s.loadingClass);var n=r.attr("data-background"),l=r.attr("data-src"),o=r.attr("data-srcset"),d=r.attr("data-sizes"),h=r.parent("picture");i.loadImage(r[0],l||n,o,d,!1,(function(){if(null!=i&&i&&(!i||i.params)&&!i.destroyed){if(n?(r.css("background-image",'url("'+n+'")'),r.removeAttr("data-background")):(o&&(r.attr("srcset",o),r.removeAttr("data-srcset")),d&&(r.attr("sizes",d),r.removeAttr("data-sizes")),h.length&&h.children("source").each((function(e){var t=m(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),l&&(r.attr("src",l),r.removeAttr("data-src"))),r.addClass(s.loadedClass).removeClass(s.loadingClass),a.find("."+s.preloaderClass).remove(),i.params.loop&&t){var e=a.attr("data-swiper-slide-index");if(a.hasClass(i.params.slideDuplicateClass)){var p=i.$wrapperEl.children('[data-swiper-slide-index="'+e+'"]:not(.'+i.params.slideDuplicateClass+")");i.lazy.loadInSlide(p.index(),!1)}else{var u=i.$wrapperEl.children("."+i.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');i.lazy.loadInSlide(u.index(),!1)}}i.emit("lazyImageReady",a[0],r[0]),i.params.autoHeight&&i.updateAutoHeight()}})),i.emit("lazyImageLoad",a[0],r[0])}))}},load:function(){var e=this,t=e.$wrapperEl,i=e.params,s=e.slides,a=e.activeIndex,r=e.virtual&&i.virtual.enabled,n=i.lazy,l=i.slidesPerView;function o(e){if(r){if(t.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]').length)return!0}else if(s[e])return!0;return!1}function d(e){return r?m(e).attr("data-swiper-slide-index"):m(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+i.slideVisibleClass).each((function(t){var i=r?m(t).attr("data-swiper-slide-index"):m(t).index();e.lazy.loadInSlide(i)}));else if(l>1)for(var h=a;h<a+l;h+=1)o(h)&&e.lazy.loadInSlide(h);else e.lazy.loadInSlide(a);if(n.loadPrevNext)if(l>1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){for(var p=n.loadPrevNextAmount,u=l,c=Math.min(a+u+Math.max(p,u),s.length),v=Math.max(a-Math.max(u,p),0),f=a+l;f<c;f+=1)o(f)&&e.lazy.loadInSlide(f);for(var g=v;g<a;g+=1)o(g)&&e.lazy.loadInSlide(g)}else{var w=t.children("."+i.slideNextClass);w.length>0&&e.lazy.loadInSlide(d(w));var y=t.children("."+i.slidePrevClass);y.length>0&&e.lazy.loadInSlide(d(y))}}},ie={LinearSpline:function(e,t){var i,s,a,r,n,l=function(e,t){for(s=-1,i=e.length;i-s>1;)e[a=i+s>>1]<=t?s=a:i=a;return i};return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(n=l(this.x,e),r=n-1,(e-this.x[r])*(this.y[n]-this.y[r])/(this.x[n]-this.x[r])+this.y[r]):0},this},getInterpolateFunction:function(e){this.controller.spline||(this.controller.spline=this.params.loop?new ie.LinearSpline(this.slidesGrid,e.slidesGrid):new ie.LinearSpline(this.snapGrid,e.snapGrid))},setTranslate:function(e,t){var i,s,a=this,r=a.controller.control,n=a.constructor;function l(e){var t=a.rtlTranslate?-a.translate:a.translate;"slide"===a.params.controller.by&&(a.controller.getInterpolateFunction(e),s=-a.controller.spline.interpolate(-t)),s&&"container"!==a.params.controller.by||(i=(e.maxTranslate()-e.minTranslate())/(a.maxTranslate()-a.minTranslate()),s=(t-a.minTranslate())*i+e.minTranslate()),a.params.controller.inverse&&(s=e.maxTranslate()-s),e.updateProgress(s),e.setTranslate(s,a),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(r))for(var o=0;o<r.length;o+=1)r[o]!==t&&r[o]instanceof n&&l(r[o]);else r instanceof n&&t!==r&&l(r)},setTransition:function(e,t){var i,s=this,a=s.constructor,r=s.controller.control;function n(t){t.setTransition(e,s),0!==e&&(t.transitionStart(),t.params.autoHeight&&E((function(){t.updateAutoHeight()})),t.$wrapperEl.transitionEnd((function(){r&&(t.params.loop&&"slide"===s.params.controller.by&&t.loopFix(),t.transitionEnd())})))}if(Array.isArray(r))for(i=0;i<r.length;i+=1)r[i]!==t&&r[i]instanceof a&&n(r[i]);else r instanceof a&&t!==r&&n(r)}},se={getRandomNumber:function(e){void 0===e&&(e=16);return"x".repeat(e).replace(/x/g,(function(){return Math.round(16*Math.random()).toString(16)}))},makeElFocusable:function(e){return e.attr("tabIndex","0"),e},makeElNotFocusable:function(e){return e.attr("tabIndex","-1"),e},addElRole:function(e,t){return e.attr("role",t),e},addElRoleDescription:function(e,t){return e.attr("aria-role-description",t),e},addElControls:function(e,t){return e.attr("aria-controls",t),e},addElLabel:function(e,t){return e.attr("aria-label",t),e},addElId:function(e,t){return e.attr("id",t),e},addElLive:function(e,t){return e.attr("aria-live",t),e},disableEl:function(e){return e.attr("aria-disabled",!0),e},enableEl:function(e){return e.attr("aria-disabled",!1),e},onEnterKey:function(e){var t=this.params.a11y;if(13===e.keyCode){var i=m(e.target);this.navigation&&this.navigation.$nextEl&&i.is(this.navigation.$nextEl)&&(this.isEnd&&!this.params.loop||this.slideNext(),this.isEnd?this.a11y.notify(t.lastSlideMessage):this.a11y.notify(t.nextSlideMessage)),this.navigation&&this.navigation.$prevEl&&i.is(this.navigation.$prevEl)&&(this.isBeginning&&!this.params.loop||this.slidePrev(),this.isBeginning?this.a11y.notify(t.firstSlideMessage):this.a11y.notify(t.prevSlideMessage)),this.pagination&&i.is("."+this.params.pagination.bulletClass)&&i[0].click()}},notify:function(e){var t=this.a11y.liveRegion;0!==t.length&&(t.html(""),t.html(e))},updateNavigation:function(){if(!this.params.loop&&this.navigation){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;i&&i.length>0&&(this.isBeginning?(this.a11y.disableEl(i),this.a11y.makeElNotFocusable(i)):(this.a11y.enableEl(i),this.a11y.makeElFocusable(i))),t&&t.length>0&&(this.isEnd?(this.a11y.disableEl(t),this.a11y.makeElNotFocusable(t)):(this.a11y.enableEl(t),this.a11y.makeElFocusable(t)))}},updatePagination:function(){var e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((function(i){var s=m(i);e.a11y.makeElFocusable(s),e.params.pagination.renderBullet||(e.a11y.addElRole(s,"button"),e.a11y.addElLabel(s,t.paginationBulletMessage.replace(/\{\{index\}\}/,s.index()+1)))}))},init:function(){var e=this,t=e.params.a11y;e.$el.append(e.a11y.liveRegion);var i=e.$el;t.containerRoleDescriptionMessage&&e.a11y.addElRoleDescription(i,t.containerRoleDescriptionMessage),t.containerMessage&&e.a11y.addElLabel(i,t.containerMessage);var s,a,r,n=e.$wrapperEl,l=n.attr("id")||"swiper-wrapper-"+e.a11y.getRandomNumber(16);e.a11y.addElId(n,l),s=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite",e.a11y.addElLive(n,s),t.itemRoleDescriptionMessage&&e.a11y.addElRoleDescription(m(e.slides),t.itemRoleDescriptionMessage),e.a11y.addElRole(m(e.slides),"group"),e.slides.each((function(t){var i=m(t);e.a11y.addElLabel(i,i.index()+1+" / "+e.slides.length)})),e.navigation&&e.navigation.$nextEl&&(a=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(r=e.navigation.$prevEl),a&&a.length&&(e.a11y.makeElFocusable(a),"BUTTON"!==a[0].tagName&&(e.a11y.addElRole(a,"button"),a.on("keydown",e.a11y.onEnterKey)),e.a11y.addElLabel(a,t.nextSlideMessage),e.a11y.addElControls(a,l)),r&&r.length&&(e.a11y.makeElFocusable(r),"BUTTON"!==r[0].tagName&&(e.a11y.addElRole(r,"button"),r.on("keydown",e.a11y.onEnterKey)),e.a11y.addElLabel(r,t.prevSlideMessage),e.a11y.addElControls(r,l)),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.on("keydown","."+e.params.pagination.bulletClass,e.a11y.onEnterKey)},destroy:function(){var e,t;this.a11y.liveRegion&&this.a11y.liveRegion.length>0&&this.a11y.liveRegion.remove(),this.navigation&&this.navigation.$nextEl&&(e=this.navigation.$nextEl),this.navigation&&this.navigation.$prevEl&&(t=this.navigation.$prevEl),e&&e.off("keydown",this.a11y.onEnterKey),t&&t.off("keydown",this.a11y.onEnterKey),this.pagination&&this.params.pagination.clickable&&this.pagination.bullets&&this.pagination.bullets.length&&this.pagination.$el.off("keydown","."+this.params.pagination.bulletClass,this.a11y.onEnterKey)}},ae={init:function(){var e=l();if(this.params.history){if(!e.history||!e.history.pushState)return this.params.history.enabled=!1,void(this.params.hashNavigation.enabled=!0);var t=this.history;t.initialized=!0,t.paths=ae.getPathValues(this.params.url),(t.paths.key||t.paths.value)&&(t.scrollToSlide(0,t.paths.value,this.params.runCallbacksOnInit),this.params.history.replaceState||e.addEventListener("popstate",this.history.setHistoryPopState))}},destroy:function(){var e=l();this.params.history.replaceState||e.removeEventListener("popstate",this.history.setHistoryPopState)},setHistoryPopState:function(){this.history.paths=ae.getPathValues(this.params.url),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues:function(e){var t=l(),i=(e?new URL(e):t.location).pathname.slice(1).split("/").filter((function(e){return""!==e})),s=i.length;return{key:i[s-2],value:i[s-1]}},setHistory:function(e,t){var i=l();if(this.history.initialized&&this.params.history.enabled){var s;s=this.params.url?new URL(this.params.url):i.location;var a=this.slides.eq(t),r=ae.slugify(a.attr("data-history"));s.pathname.includes(e)||(r=e+"/"+r);var n=i.history.state;n&&n.value===r||(this.params.history.replaceState?i.history.replaceState({value:r},null,r):i.history.pushState({value:r},null,r))}},slugify:function(e){return e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")},scrollToSlide:function(e,t,i){if(t)for(var s=0,a=this.slides.length;s<a;s+=1){var r=this.slides.eq(s);if(ae.slugify(r.attr("data-history"))===t&&!r.hasClass(this.params.slideDuplicateClass)){var n=r.index();this.slideTo(n,e,i)}}else this.slideTo(0,e,i)}},re={onHashCange:function(){var e=r();this.emit("hashChange");var t=e.location.hash.replace("#","");if(t!==this.slides.eq(this.activeIndex).attr("data-hash")){var i=this.$wrapperEl.children("."+this.params.slideClass+'[data-hash="'+t+'"]').index();if(void 0===i)return;this.slideTo(i)}},setHash:function(){var e=l(),t=r();if(this.hashNavigation.initialized&&this.params.hashNavigation.enabled)if(this.params.hashNavigation.replaceState&&e.history&&e.history.replaceState)e.history.replaceState(null,null,"#"+this.slides.eq(this.activeIndex).attr("data-hash")||""),this.emit("hashSet");else{var i=this.slides.eq(this.activeIndex),s=i.attr("data-hash")||i.attr("data-history");t.location.hash=s||"",this.emit("hashSet")}},init:function(){var e=r(),t=l();if(!(!this.params.hashNavigation.enabled||this.params.history&&this.params.history.enabled)){this.hashNavigation.initialized=!0;var i=e.location.hash.replace("#","");if(i)for(var s=0,a=this.slides.length;s<a;s+=1){var n=this.slides.eq(s);if((n.attr("data-hash")||n.attr("data-history"))===i&&!n.hasClass(this.params.slideDuplicateClass)){var o=n.index();this.slideTo(o,0,this.params.runCallbacksOnInit,!0)}}this.params.hashNavigation.watchState&&m(t).on("hashchange",this.hashNavigation.onHashCange)}},destroy:function(){var e=l();this.params.hashNavigation.watchState&&m(e).off("hashchange",this.hashNavigation.onHashCange)}},ne={run:function(){var e=this,t=e.slides.eq(e.activeIndex),i=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(i=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(e.autoplay.timeout),e.autoplay.timeout=E((function(){var t;e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),t=e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(t=e.slideTo(e.slides.length-1,e.params.speed,!0,!0),e.emit("autoplay")):(t=e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.params.loop?(e.loopFix(),t=e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(t=e.slideTo(0,e.params.speed,!0,!0),e.emit("autoplay")):(t=e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")),(e.params.cssMode&&e.autoplay.running||!1===t)&&e.autoplay.run()}),i)},start:function(){return void 0===this.autoplay.timeout&&(!this.autoplay.running&&(this.autoplay.running=!0,this.emit("autoplayStart"),this.autoplay.run(),!0))},stop:function(){return!!this.autoplay.running&&(void 0!==this.autoplay.timeout&&(this.autoplay.timeout&&(clearTimeout(this.autoplay.timeout),this.autoplay.timeout=void 0),this.autoplay.running=!1,this.emit("autoplayStop"),!0))},pause:function(e){this.autoplay.running&&(this.autoplay.paused||(this.autoplay.timeout&&clearTimeout(this.autoplay.timeout),this.autoplay.paused=!0,0!==e&&this.params.autoplay.waitForTransition?(this.$wrapperEl[0].addEventListener("transitionend",this.autoplay.onTransitionEnd),this.$wrapperEl[0].addEventListener("webkitTransitionEnd",this.autoplay.onTransitionEnd)):(this.autoplay.paused=!1,this.autoplay.run())))},onVisibilityChange:function(){var e=r();"hidden"===e.visibilityState&&this.autoplay.running&&this.autoplay.pause(),"visible"===e.visibilityState&&this.autoplay.paused&&(this.autoplay.run(),this.autoplay.paused=!1)},onTransitionEnd:function(e){this&&!this.destroyed&&this.$wrapperEl&&e.target===this.$wrapperEl[0]&&(this.$wrapperEl[0].removeEventListener("transitionend",this.autoplay.onTransitionEnd),this.$wrapperEl[0].removeEventListener("webkitTransitionEnd",this.autoplay.onTransitionEnd),this.autoplay.paused=!1,this.autoplay.running?this.autoplay.run():this.autoplay.stop())}},le={setTranslate:function(){for(var e=this.slides,t=0;t<e.length;t+=1){var i=this.slides.eq(t),s=-i[0].swiperSlideOffset;this.params.virtualTranslate||(s-=this.translate);var a=0;this.isHorizontal()||(a=s,s=0);var r=this.params.fadeEffect.crossFade?Math.max(1-Math.abs(i[0].progress),0):1+Math.min(Math.max(i[0].progress,-1),0);i.css({opacity:r}).transform("translate3d("+s+"px, "+a+"px, 0px)")}},setTransition:function(e){var t=this,i=t.slides,s=t.$wrapperEl;if(i.transition(e),t.params.virtualTranslate&&0!==e){var a=!1;i.transitionEnd((function(){if(!a&&t&&!t.destroyed){a=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)s.trigger(e[i])}}))}}},oe={setTranslate:function(){var e,t=this.$el,i=this.$wrapperEl,s=this.slides,a=this.width,r=this.height,n=this.rtlTranslate,l=this.size,o=this.browser,d=this.params.cubeEffect,h=this.isHorizontal(),p=this.virtual&&this.params.virtual.enabled,u=0;d.shadow&&(h?(0===(e=i.find(".swiper-cube-shadow")).length&&(e=m('<div class="swiper-cube-shadow"></div>'),i.append(e)),e.css({height:a+"px"})):0===(e=t.find(".swiper-cube-shadow")).length&&(e=m('<div class="swiper-cube-shadow"></div>'),t.append(e)));for(var c=0;c<s.length;c+=1){var v=s.eq(c),f=c;p&&(f=parseInt(v.attr("data-swiper-slide-index"),10));var g=90*f,w=Math.floor(g/360);n&&(g=-g,w=Math.floor(-g/360));var y=Math.max(Math.min(v[0].progress,1),-1),b=0,E=0,x=0;f%4==0?(b=4*-w*l,x=0):(f-1)%4==0?(b=0,x=4*-w*l):(f-2)%4==0?(b=l+4*w*l,x=l):(f-3)%4==0&&(b=-l,x=3*l+4*l*w),n&&(b=-b),h||(E=b,b=0);var T="rotateX("+(h?0:-g)+"deg) rotateY("+(h?g:0)+"deg) translate3d("+b+"px, "+E+"px, "+x+"px)";if(y<=1&&y>-1&&(u=90*f+90*y,n&&(u=90*-f-90*y)),v.transform(T),d.slideShadows){var C=h?v.find(".swiper-slide-shadow-left"):v.find(".swiper-slide-shadow-top"),S=h?v.find(".swiper-slide-shadow-right"):v.find(".swiper-slide-shadow-bottom");0===C.length&&(C=m('<div class="swiper-slide-shadow-'+(h?"left":"top")+'"></div>'),v.append(C)),0===S.length&&(S=m('<div class="swiper-slide-shadow-'+(h?"right":"bottom")+'"></div>'),v.append(S)),C.length&&(C[0].style.opacity=Math.max(-y,0)),S.length&&(S[0].style.opacity=Math.max(y,0))}}if(i.css({"-webkit-transform-origin":"50% 50% -"+l/2+"px","-moz-transform-origin":"50% 50% -"+l/2+"px","-ms-transform-origin":"50% 50% -"+l/2+"px","transform-origin":"50% 50% -"+l/2+"px"}),d.shadow)if(h)e.transform("translate3d(0px, "+(a/2+d.shadowOffset)+"px, "+-a/2+"px) rotateX(90deg) rotateZ(0deg) scale("+d.shadowScale+")");else{var M=Math.abs(u)-90*Math.floor(Math.abs(u)/90),z=1.5-(Math.sin(2*M*Math.PI/360)/2+Math.cos(2*M*Math.PI/360)/2),P=d.shadowScale,k=d.shadowScale/z,$=d.shadowOffset;e.transform("scale3d("+P+", 1, "+k+") translate3d(0px, "+(r/2+$)+"px, "+-r/2/k+"px) rotateX(-90deg)")}var L=o.isSafari||o.isWebView?-l/2:0;i.transform("translate3d(0px,0,"+L+"px) rotateX("+(this.isHorizontal()?0:u)+"deg) rotateY("+(this.isHorizontal()?-u:0)+"deg)")},setTransition:function(e){var t=this.$el;this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),this.params.cubeEffect.shadow&&!this.isHorizontal()&&t.find(".swiper-cube-shadow").transition(e)}},de={setTranslate:function(){for(var e=this.slides,t=this.rtlTranslate,i=0;i<e.length;i+=1){var s=e.eq(i),a=s[0].progress;this.params.flipEffect.limitRotation&&(a=Math.max(Math.min(s[0].progress,1),-1));var r=-180*a,n=0,l=-s[0].swiperSlideOffset,o=0;if(this.isHorizontal()?t&&(r=-r):(o=l,l=0,n=-r,r=0),s[0].style.zIndex=-Math.abs(Math.round(a))+e.length,this.params.flipEffect.slideShadows){var d=this.isHorizontal()?s.find(".swiper-slide-shadow-left"):s.find(".swiper-slide-shadow-top"),h=this.isHorizontal()?s.find(".swiper-slide-shadow-right"):s.find(".swiper-slide-shadow-bottom");0===d.length&&(d=m('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"left":"top")+'"></div>'),s.append(d)),0===h.length&&(h=m('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"right":"bottom")+'"></div>'),s.append(h)),d.length&&(d[0].style.opacity=Math.max(-a,0)),h.length&&(h[0].style.opacity=Math.max(a,0))}s.transform("translate3d("+l+"px, "+o+"px, 0px) rotateX("+n+"deg) rotateY("+r+"deg)")}},setTransition:function(e){var t=this,i=t.slides,s=t.activeIndex,a=t.$wrapperEl;if(i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){var r=!1;i.eq(s).transitionEnd((function(){if(!r&&t&&!t.destroyed){r=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)a.trigger(e[i])}}))}}},he={setTranslate:function(){for(var e=this.width,t=this.height,i=this.slides,s=this.slidesSizesGrid,a=this.params.coverflowEffect,r=this.isHorizontal(),n=this.translate,l=r?e/2-n:t/2-n,o=r?a.rotate:-a.rotate,d=a.depth,h=0,p=i.length;h<p;h+=1){var u=i.eq(h),c=s[h],v=(l-u[0].swiperSlideOffset-c/2)/c*a.modifier,f=r?o*v:0,g=r?0:o*v,w=-d*Math.abs(v),y=a.stretch;"string"==typeof y&&-1!==y.indexOf("%")&&(y=parseFloat(a.stretch)/100*c);var b=r?0:y*v,E=r?y*v:0,x=1-(1-a.scale)*Math.abs(v);Math.abs(E)<.001&&(E=0),Math.abs(b)<.001&&(b=0),Math.abs(w)<.001&&(w=0),Math.abs(f)<.001&&(f=0),Math.abs(g)<.001&&(g=0),Math.abs(x)<.001&&(x=0);var T="translate3d("+E+"px,"+b+"px,"+w+"px)  rotateX("+g+"deg) rotateY("+f+"deg) scale("+x+")";if(u.transform(T),u[0].style.zIndex=1-Math.abs(Math.round(v)),a.slideShadows){var C=r?u.find(".swiper-slide-shadow-left"):u.find(".swiper-slide-shadow-top"),S=r?u.find(".swiper-slide-shadow-right"):u.find(".swiper-slide-shadow-bottom");0===C.length&&(C=m('<div class="swiper-slide-shadow-'+(r?"left":"top")+'"></div>'),u.append(C)),0===S.length&&(S=m('<div class="swiper-slide-shadow-'+(r?"right":"bottom")+'"></div>'),u.append(S)),C.length&&(C[0].style.opacity=v>0?v:0),S.length&&(S[0].style.opacity=-v>0?-v:0)}}},setTransition:function(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}},pe={init:function(){var e=this.params.thumbs;if(this.thumbs.initialized)return!1;this.thumbs.initialized=!0;var t=this.constructor;return e.swiper instanceof t?(this.thumbs.swiper=e.swiper,S(this.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),S(this.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):C(e.swiper)&&(this.thumbs.swiper=new t(S({},e.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),this.thumbs.swiperCreated=!0),this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass),this.thumbs.swiper.on("tap",this.thumbs.onThumbClick),!0},onThumbClick:function(){var e=this.thumbs.swiper;if(e){var t=e.clickedIndex,i=e.clickedSlide;if(!(i&&m(i).hasClass(this.params.thumbs.slideThumbActiveClass)||null==t)){var s;if(s=e.params.loop?parseInt(m(e.clickedSlide).attr("data-swiper-slide-index"),10):t,this.params.loop){var a=this.activeIndex;this.slides.eq(a).hasClass(this.params.slideDuplicateClass)&&(this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft,a=this.activeIndex);var r=this.slides.eq(a).prevAll('[data-swiper-slide-index="'+s+'"]').eq(0).index(),n=this.slides.eq(a).nextAll('[data-swiper-slide-index="'+s+'"]').eq(0).index();s=void 0===r?n:void 0===n?r:n-a<a-r?n:r}this.slideTo(s)}}},update:function(e){var t=this.thumbs.swiper;if(t){var i="auto"===t.params.slidesPerView?t.slidesPerViewDynamic():t.params.slidesPerView,s=this.params.thumbs.autoScrollOffset,a=s&&!t.params.loop;if(this.realIndex!==t.realIndex||a){var r,n,l=t.activeIndex;if(t.params.loop){t.slides.eq(l).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,l=t.activeIndex);var o=t.slides.eq(l).prevAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index(),d=t.slides.eq(l).nextAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index();r=void 0===o?d:void 0===d?o:d-l==l-o?l:d-l<l-o?d:o,n=this.activeIndex>this.previousIndex?"next":"prev"}else n=(r=this.realIndex)>this.previousIndex?"next":"prev";a&&(r+="next"===n?s:-1*s),t.visibleSlidesIndexes&&t.visibleSlidesIndexes.indexOf(r)<0&&(t.params.centeredSlides?r=r>l?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>l&&(r=r-i+1),t.slideTo(r,e?0:void 0))}var h=1,p=this.params.thumbs.slideThumbActiveClass;if(this.params.slidesPerView>1&&!this.params.centeredSlides&&(h=this.params.slidesPerView),this.params.thumbs.multipleActiveThumbs||(h=1),h=Math.floor(h),t.slides.removeClass(p),t.params.loop||t.params.virtual&&t.params.virtual.enabled)for(var u=0;u<h;u+=1)t.$wrapperEl.children('[data-swiper-slide-index="'+(this.realIndex+u)+'"]').addClass(p);else for(var c=0;c<h;c+=1)t.slides.eq(this.realIndex+c).addClass(p)}}},ue=[q,_,{name:"mousewheel",params:{mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}},create:function(){M(this,{mousewheel:{enabled:!1,lastScrollTime:x(),lastEventBeforeSnap:void 0,recentWheelEvents:[],enable:U.enable,disable:U.disable,handle:U.handle,handleMouseEnter:U.handleMouseEnter,handleMouseLeave:U.handleMouseLeave,animateSlider:U.animateSlider,releaseScroll:U.releaseScroll}})},on:{init:function(e){!e.params.mousewheel.enabled&&e.params.cssMode&&e.mousewheel.disable(),e.params.mousewheel.enabled&&e.mousewheel.enable()},destroy:function(e){e.params.cssMode&&e.mousewheel.enable(),e.mousewheel.enabled&&e.mousewheel.disable()}}},{name:"navigation",params:{navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}},create:function(){M(this,{navigation:t({},K)})},on:{init:function(e){e.navigation.init(),e.navigation.update()},toEdge:function(e){e.navigation.update()},fromEdge:function(e){e.navigation.update()},destroy:function(e){e.navigation.destroy()},click:function(e,t){var i,s=e.navigation,a=s.$nextEl,r=s.$prevEl;!e.params.navigation.hideOnClick||m(t.target).is(r)||m(t.target).is(a)||(a?i=a.hasClass(e.params.navigation.hiddenClass):r&&(i=r.hasClass(e.params.navigation.hiddenClass)),!0===i?e.emit("navigationShow"):e.emit("navigationHide"),a&&a.toggleClass(e.params.navigation.hiddenClass),r&&r.toggleClass(e.params.navigation.hiddenClass))}}},{name:"pagination",params:{pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:function(e){return e},formatFractionTotal:function(e){return e},bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",modifierClass:"swiper-pagination-",currentClass:"swiper-pagination-current",totalClass:"swiper-pagination-total",hiddenClass:"swiper-pagination-hidden",progressbarFillClass:"swiper-pagination-progressbar-fill",progressbarOppositeClass:"swiper-pagination-progressbar-opposite",clickableClass:"swiper-pagination-clickable",lockClass:"swiper-pagination-lock"}},create:function(){M(this,{pagination:t({dynamicBulletIndex:0},Z)})},on:{init:function(e){e.pagination.init(),e.pagination.render(),e.pagination.update()},activeIndexChange:function(e){(e.params.loop||void 0===e.snapIndex)&&e.pagination.update()},snapIndexChange:function(e){e.params.loop||e.pagination.update()},slidesLengthChange:function(e){e.params.loop&&(e.pagination.render(),e.pagination.update())},snapGridLengthChange:function(e){e.params.loop||(e.pagination.render(),e.pagination.update())},destroy:function(e){e.pagination.destroy()},click:function(e,t){e.params.pagination.el&&e.params.pagination.hideOnClick&&e.pagination.$el.length>0&&!m(t.target).hasClass(e.params.pagination.bulletClass)&&(!0===e.pagination.$el.hasClass(e.params.pagination.hiddenClass)?e.emit("paginationShow"):e.emit("paginationHide"),e.pagination.$el.toggleClass(e.params.pagination.hiddenClass))}}},{name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create:function(){M(this,{scrollbar:t({isTouched:!1,timeout:null,dragTimeout:null},J)})},on:{init:function(e){e.scrollbar.init(),e.scrollbar.updateSize(),e.scrollbar.setTranslate()},update:function(e){e.scrollbar.updateSize()},resize:function(e){e.scrollbar.updateSize()},observerUpdate:function(e){e.scrollbar.updateSize()},setTranslate:function(e){e.scrollbar.setTranslate()},setTransition:function(e,t){e.scrollbar.setTransition(t)},destroy:function(e){e.scrollbar.destroy()}}},{name:"parallax",params:{parallax:{enabled:!1}},create:function(){M(this,{parallax:t({},Q)})},on:{beforeInit:function(e){e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)},init:function(e){e.params.parallax.enabled&&e.parallax.setTranslate()},setTranslate:function(e){e.params.parallax.enabled&&e.parallax.setTranslate()},setTransition:function(e,t){e.params.parallax.enabled&&e.parallax.setTransition(t)}}},{name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create:function(){var e=this;M(e,{zoom:t({enabled:!1,scale:1,currentScale:1,isScaling:!1,gesture:{$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0}},ee)});var i=1;Object.defineProperty(e.zoom,"scale",{get:function(){return i},set:function(t){if(i!==t){var s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,a=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,s,a)}i=t}})},on:{init:function(e){e.params.zoom.enabled&&e.zoom.enable()},destroy:function(e){e.zoom.disable()},touchStart:function(e,t){e.zoom.enabled&&e.zoom.onTouchStart(t)},touchEnd:function(e,t){e.zoom.enabled&&e.zoom.onTouchEnd(t)},doubleTap:function(e,t){e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&e.zoom.toggle(t)},transitionEnd:function(e){e.zoom.enabled&&e.params.zoom.enabled&&e.zoom.onTransitionEnd()},slideChange:function(e){e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&e.zoom.onTransitionEnd()}}},{name:"lazy",params:{lazy:{enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}},create:function(){M(this,{lazy:t({initialImageLoaded:!1},te)})},on:{beforeInit:function(e){e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)},init:function(e){e.params.lazy.enabled&&!e.params.loop&&0===e.params.initialSlide&&e.lazy.load()},scroll:function(e){e.params.freeMode&&!e.params.freeModeSticky&&e.lazy.load()},resize:function(e){e.params.lazy.enabled&&e.lazy.load()},scrollbarDragMove:function(e){e.params.lazy.enabled&&e.lazy.load()},transitionStart:function(e){e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!e.lazy.initialImageLoaded)&&e.lazy.load()},transitionEnd:function(e){e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&e.lazy.load()},slideChange:function(e){e.params.lazy.enabled&&e.params.cssMode&&e.lazy.load()}}},{name:"controller",params:{controller:{control:void 0,inverse:!1,by:"slide"}},create:function(){M(this,{controller:t({control:this.params.controller.control},ie)})},on:{update:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},resize:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},observerUpdate:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},setTranslate:function(e,t,i){e.controller.control&&e.controller.setTranslate(t,i)},setTransition:function(e,t,i){e.controller.control&&e.controller.setTransition(t,i)}}},{name:"a11y",params:{a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null}},create:function(){M(this,{a11y:t(t({},se),{},{liveRegion:m('<span class="'+this.params.a11y.notificationClass+'" aria-live="assertive" aria-atomic="true"></span>')})})},on:{afterInit:function(e){e.params.a11y.enabled&&(e.a11y.init(),e.a11y.updateNavigation())},toEdge:function(e){e.params.a11y.enabled&&e.a11y.updateNavigation()},fromEdge:function(e){e.params.a11y.enabled&&e.a11y.updateNavigation()},paginationUpdate:function(e){e.params.a11y.enabled&&e.a11y.updatePagination()},destroy:function(e){e.params.a11y.enabled&&e.a11y.destroy()}}},{name:"history",params:{history:{enabled:!1,replaceState:!1,key:"slides"}},create:function(){M(this,{history:t({},ae)})},on:{init:function(e){e.params.history.enabled&&e.history.init()},destroy:function(e){e.params.history.enabled&&e.history.destroy()},transitionEnd:function(e){e.history.initialized&&e.history.setHistory(e.params.history.key,e.activeIndex)},slideChange:function(e){e.history.initialized&&e.params.cssMode&&e.history.setHistory(e.params.history.key,e.activeIndex)}}},{name:"hash-navigation",params:{hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}},create:function(){M(this,{hashNavigation:t({initialized:!1},re)})},on:{init:function(e){e.params.hashNavigation.enabled&&e.hashNavigation.init()},destroy:function(e){e.params.hashNavigation.enabled&&e.hashNavigation.destroy()},transitionEnd:function(e){e.hashNavigation.initialized&&e.hashNavigation.setHash()},slideChange:function(e){e.hashNavigation.initialized&&e.params.cssMode&&e.hashNavigation.setHash()}}},{name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1}},create:function(){M(this,{autoplay:t(t({},ne),{},{running:!1,paused:!1})})},on:{init:function(e){e.params.autoplay.enabled&&(e.autoplay.start(),r().addEventListener("visibilitychange",e.autoplay.onVisibilityChange))},beforeTransitionStart:function(e,t,i){e.autoplay.running&&(i||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(t):e.autoplay.stop())},sliderFirstMove:function(e){e.autoplay.running&&(e.params.autoplay.disableOnInteraction?e.autoplay.stop():e.autoplay.pause())},touchEnd:function(e){e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&e.autoplay.run()},destroy:function(e){e.autoplay.running&&e.autoplay.stop(),r().removeEventListener("visibilitychange",e.autoplay.onVisibilityChange)}}},{name:"effect-fade",params:{fadeEffect:{crossFade:!1}},create:function(){M(this,{fadeEffect:t({},le)})},on:{beforeInit:function(e){if("fade"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"fade");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};S(e.params,t),S(e.originalParams,t)}},setTranslate:function(e){"fade"===e.params.effect&&e.fadeEffect.setTranslate()},setTransition:function(e,t){"fade"===e.params.effect&&e.fadeEffect.setTransition(t)}}},{name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create:function(){M(this,{cubeEffect:t({},oe)})},on:{beforeInit:function(e){if("cube"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"cube"),e.classNames.push(e.params.containerModifierClass+"3d");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};S(e.params,t),S(e.originalParams,t)}},setTranslate:function(e){"cube"===e.params.effect&&e.cubeEffect.setTranslate()},setTransition:function(e,t){"cube"===e.params.effect&&e.cubeEffect.setTransition(t)}}},{name:"effect-flip",params:{flipEffect:{slideShadows:!0,limitRotation:!0}},create:function(){M(this,{flipEffect:t({},de)})},on:{beforeInit:function(e){if("flip"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"flip"),e.classNames.push(e.params.containerModifierClass+"3d");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};S(e.params,t),S(e.originalParams,t)}},setTranslate:function(e){"flip"===e.params.effect&&e.flipEffect.setTranslate()},setTransition:function(e,t){"flip"===e.params.effect&&e.flipEffect.setTransition(t)}}},{name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}},create:function(){M(this,{coverflowEffect:t({},he)})},on:{beforeInit:function(e){"coverflow"===e.params.effect&&(e.classNames.push(e.params.containerModifierClass+"coverflow"),e.classNames.push(e.params.containerModifierClass+"3d"),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)},setTranslate:function(e){"coverflow"===e.params.effect&&e.coverflowEffect.setTranslate()},setTransition:function(e,t){"coverflow"===e.params.effect&&e.coverflowEffect.setTransition(t)}}},{name:"thumbs",params:{thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create:function(){M(this,{thumbs:t({swiper:null,initialized:!1},pe)})},on:{beforeInit:function(e){var t=e.params.thumbs;t&&t.swiper&&(e.thumbs.init(),e.thumbs.update(!0))},slideChange:function(e){e.thumbs.swiper&&e.thumbs.update()},update:function(e){e.thumbs.swiper&&e.thumbs.update()},resize:function(e){e.thumbs.swiper&&e.thumbs.update()},observerUpdate:function(e){e.thumbs.swiper&&e.thumbs.update()},setTransition:function(e,t){var i=e.thumbs.swiper;i&&i.setTransition(t)},beforeDestroy:function(e){var t=e.thumbs.swiper;t&&e.thumbs.swiperCreated&&t&&t.destroy()}}}];return R.use(ue),R}));
14
+//# sourceMappingURL=swiper-bundle.min.js.map
0 15
\ No newline at end of file
1 16
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+{"version":3,"sources":["0"],"names":["global","factory","exports","module","define","amd","self","Swiper","this","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","isObject","obj","constructor","extend","src","keys","forEach","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","toString","e","_construct","Parent","args","Class","a","push","instance","Function","bind","_wrapNativeSuper","_cache","Map","undefined","fn","indexOf","TypeError","has","get","set","Wrapper","create","value","Dom7","_Array","subClass","superClass","items","_this","proto","concat","ReferenceError","_assertThisInitialized","Array","arrayFlat","arr","res","el","isArray","arrayFilter","filter","$","selector","context","html","trim","toCreate","tempParent","innerHTML","qsa","nodeType","uniqueArray","arrayUnique","support","device","browser","Methods","addClass","_len","classes","_key","classNames","map","c","split","_el$classList","classList","add","removeClass","_len2","_key2","_el$classList2","remove","hasClass","_len4","_key4","className","contains","toggleClass","_len3","_key3","toggle","attr","attrs","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","on","_len5","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","_parents","parents","k","handleEvent","j","events","_event","dom7LiveListeners","proxyListener","event","dom7Listeners","off","_len6","_key6","handlers","handler","dom7proxy","splice","trigger","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","offsetWidth","parseFloat","outerHeight","_styles2","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","_prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","_next","prev","previousElementSibling","prevAll","prevEls","_prev","parent","parentNode","_parent","closest","find","foundElements","found","removeChild","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isObject$1","extend$1","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","bindModuleMethods","subKey","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isEdge","isSafari","toLowerCase","isWebView","test","calcBrowser","methodName","Resize","name","swiper","resize","resizeHandler","destroyed","initialized","emit","orientationChangeHandler","init","destroy","Observer","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","observe","attributes","childList","characterData","observers","params","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","disconnect","Observer$1","onTouchStart","touchEventsData","touches","animating","preventInteractionOnTransition","originalEvent","$targetEl","touchEventsTarget","wrapperEl","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","rtl","rtlTranslate","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","loop","isVertical","translate","maxTranslate","minTranslate","diffX","diffY","Math","sqrt","pow","touchAngle","isHorizontal","atan2","abs","PI","cssMode","touchMoveStopPropagation","nested","stopPropagation","loopFix","startTranslate","setTransition","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","watchSlidesVisibility","updateActiveIndex","updateSlidesClasses","velocities","position","time","updateProgress","setTranslate","onTouchEnd","slidesGrid","snapGrid","currentPos","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","slideTo","activeIndex","slides","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","centeredSlides","freeModeSticky","nextSlide","once","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","transitionStart","longSwipesMs","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","_increment","ratio","increment","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","updateSlides","slidesPerView","isEnd","isBeginning","autoplay","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","previousTranslate","scrollWidth","translatesDiff","progress","dummyEventAttached","dummyEventListener","defaults","direction","initialSlide","updateOnWindowResize","url","autoHeight","setWrapperSize","virtualTranslate","effect","spaceBetween","slidesPerColumn","slidesPerColumnFill","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","passiveListeners","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","prototypes","modular","useParams","instanceParams","modules","moduleName","useModules","modulesParams","moduleParams","moduleEventName","eventsEmitter","priority","method","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","slice","eventsArray","update","clientWidth","clientHeight","parseInt","Number","isNaN","size","swiperSize","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","slidesForMargin","slideEl","slideIndex","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","floor","ceil","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","min","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","_slide$","paddingTop","paddingBottom","_boxSizing","_slide$2","swiperSlideSize","_i","slidesGridItem","_i2","_slidesGridItem","allSlidesSize","slideSizeValue","maxSnap","snap","_allSlidesSize","allSlidesOffset","snapIndex","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","visibleSlides","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideProgress","slideBefore","slideAfter","multiplier","wasBeginning","wasEnd","activeSlide","realIndex","prevSlide","emitSlidesClasses","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","skip","slideFound","clickedSlide","clickedIndex","byController","x","y","translateTo","runCallbacks","translateBounds","internal","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","dir","t","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","param","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","emitContainerClasses","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","_points$i","innerWidth","wasLocked","lastSlidePosition","addClasses","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","moduleParamName","swiperParams","passedParams","eventName","swipers","containerEl","newParams","desktop","shadowRoot","touchEventsTouch","touchEventsDesktop","clickTimeout","Constructor","protoProps","staticProps","_proto","getSlideClasses","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","deleteInstance","cleanStyles","object","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","Virtual","force","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarget","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","_newEvent","sign","ignoreWheelEvents","sensitivity","timeout","_recentWheelEvents","shift","_prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","thresholdDelta","thresholdTime","getTime","Navigation","_swiper$navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","toggleGestures","slideSelector","enableGestures","gesturesEnabled","disableGestures","activeListenerWithCapture","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","background","$pictureEl","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","controller","spline","_setTranslate","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","A11y","getRandomNumber","repeat","round","random","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","label","addElId","addElLive","live","disableEl","enableEl","onEnterKey","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","$containerEl","containerRoleDescriptionMessage","containerMessage","wrapperId","itemRoleDescriptionMessage","tagName","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","urlOverride","pathArray","URL","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","components","hideOnClick","toEdge","fromEdge","isHidden","_swiper$navigation3","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scroll","scrollbarDragMove","notificationClass","afterInit","paginationUpdate","disableOnInteraction","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"mappings":"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","file":"swiper-bundle.min.js"}
0 2
\ No newline at end of file
1 3
new file mode 100644
... ...
@@ -0,0 +1,23 @@
1
+/**
2
+ * Swiper React 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+"use strict";
14
+
15
+exports.__esModule = true;
16
+
17
+var _swiper = require("./cjs/react/swiper");
18
+
19
+exports.Swiper = _swiper.Swiper;
20
+
21
+var _swiperSlide = require("./cjs/react/swiper-slide");
22
+
23
+exports.SwiperSlide = _swiperSlide.SwiperSlide;
0 24
new file mode 100644
... ...
@@ -0,0 +1,313 @@
1
+import * as React from 'react';
2
+
3
+import { SwiperOptions } from './types/swiper-options';
4
+import SwiperClass from './types/swiper-class';
5
+
6
+interface Swiper extends SwiperOptions {
7
+  /**
8
+   * Swiper container tag
9
+   *
10
+   * @default 'div'
11
+   */
12
+  tag?: string;
13
+
14
+  /**
15
+   * Swiper wrapper tag
16
+   *
17
+   * @default 'div'
18
+   */
19
+  wrapperTag?: string;
20
+
21
+  /**
22
+   * Get Swiper instance
23
+   */
24
+  onSwiper?: (swiper: SwiperClass) => void;
25
+
26
+  
27
+  /**
28
+   * Fired right after Swiper initialization.
29
+   * @note Note that with swiper.on('init') syntax it will
30
+   * work only in case you set init: false parameter.
31
+   *
32
+   * @example
33
+   * var swiper = new Swiper('.swiper-container', {
34
+   *   init: false,
35
+   *   // other parameters
36
+   * });
37
+   * swiper.on('init', function() {
38
+   *  // do something
39
+   * });
40
+   * // init Swiper
41
+   * swiper.init();
42
+   *
43
+   * @example
44
+   * // Otherwise use it as the parameter:
45
+   * var swiper = new Swiper('.swiper-container', {
46
+   *   // other parameters
47
+   *   on: {
48
+   *     init: function () {
49
+   *       // do something
50
+   *     },
51
+   *   }
52
+   * });
53
+   */
54
+  onInit?: (swiper: SwiperClass) => any;
55
+
56
+  /**
57
+   * Event will be fired right before Swiper destroyed
58
+   */
59
+  onBeforeDestroy?: (swiper: SwiperClass) => void;
60
+
61
+  /**
62
+   * Event will be fired when currently active slide is changed
63
+   */
64
+  onSlideChange?: (swiper: SwiperClass) => void;
65
+
66
+  /**
67
+   * Event will be fired in the beginning of animation to other slide (next or previous).
68
+   */
69
+  onSlideChangeTransitionStart?: (swiper: SwiperClass) => void;
70
+
71
+  /**
72
+   * Event will be fired after animation to other slide (next or previous).
73
+   */
74
+  onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void;
75
+
76
+  /**
77
+   * Same as "slideChangeTransitionStart" but for "forward" direction only
78
+   */
79
+  onSlideNextTransitionStart?: (swiper: SwiperClass) => void;
80
+
81
+  /**
82
+   * Same as "slideChangeTransitionEnd" but for "forward" direction only
83
+   */
84
+  onSlideNextTransitionEnd?: (swiper: SwiperClass) => void;
85
+
86
+  /**
87
+   * Same as "slideChangeTransitionStart" but for "backward" direction only
88
+   */
89
+  onSlidePrevTransitionStart?: (swiper: SwiperClass) => void;
90
+
91
+  /**
92
+   * Same as "slideChangeTransitionEnd" but for "backward" direction only
93
+   */
94
+  onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void;
95
+
96
+  /**
97
+   * Event will be fired in the beginning of transition.
98
+   */
99
+  onTransitionStart?: (swiper: SwiperClass) => void;
100
+
101
+  /**
102
+   * Event will be fired after transition.
103
+   */
104
+  onTransitionEnd?: (swiper: SwiperClass) => void;
105
+
106
+  /**
107
+   * Event will be fired when user touch Swiper. Receives 'touchstart' event as an arguments.
108
+   */
109
+  onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
110
+
111
+  /**
112
+   * Event will be fired when user touch and move finger over Swiper. Receives 'touchmove' event as an arguments.
113
+   */
114
+  onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
115
+
116
+  /**
117
+   * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives 'touchmove' event as an arguments.
118
+   */
119
+  onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
120
+
121
+  /**
122
+   * Event will be fired when user touch and move finger over Swiper and move it. Receives 'touchmove' event as an arguments.
123
+   */
124
+  onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
125
+
126
+  /**
127
+   * Event will be fired when user release Swiper. Receives 'touchend' event as an arguments.
128
+   */
129
+  onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
130
+
131
+  /**
132
+   * Event will be fired when user click/tap on Swiper. Receives 'touchend' event as an arguments.
133
+   */
134
+  onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
135
+
136
+  /**
137
+   * Event will be fired when user click/tap on Swiper. Receives 'touchend' event as an arguments.
138
+   */
139
+  onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
140
+
141
+  /**
142
+   * Event will be fired when user double tap on Swiper's container. Receives 'touchend' event as an arguments
143
+   */
144
+  onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
145
+
146
+  /**
147
+   * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled
148
+   */
149
+  onImagesReady?: (swiper: SwiperClass) => void;
150
+
151
+  /**
152
+   * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1
153
+   */
154
+  onProgress?: (swiper: SwiperClass, progress: number) => void;
155
+
156
+  /**
157
+   * Event will be fired when Swiper reach its beginning (initial position)
158
+   */
159
+  onReachBeginning?: (swiper: SwiperClass) => void;
160
+
161
+  /**
162
+   * Event will be fired when Swiper reach last slide
163
+   */
164
+  onReachEnd?: (swiper: SwiperClass) => void;
165
+
166
+  /**
167
+   * Event will be fired when Swiper goes to beginning or end position
168
+   */
169
+  onToEdge?: (swiper: SwiperClass) => void;
170
+
171
+  /**
172
+   * Event will be fired when Swiper goes from beginning or end position
173
+   */
174
+  onFromEdge?: (swiper: SwiperClass) => void;
175
+
176
+  /**
177
+   * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments
178
+   */
179
+  onSetTranslate?: (swiper: SwiperClass, translate: number) => void;
180
+
181
+  /**
182
+   * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments
183
+   */
184
+  onSetTransition?: (swiper: SwiperClass, transition: number) => void;
185
+
186
+  /**
187
+   * Event will be fired on window resize right before swiper's onresize manipulation
188
+   */
189
+  onResize?: (swiper: SwiperClass) => void;
190
+
191
+  /**
192
+   * Event will be fired if observer is enabled and it detects DOM mutations
193
+   */
194
+  onObserverUpdate?: (swiper: SwiperClass) => void;
195
+
196
+  /**
197
+   * Event will be fired right before "loop fix"
198
+   */
199
+  onBeforeLoopFix?: (swiper: SwiperClass) => void;
200
+
201
+  /**
202
+   * Event will be fired after "loop fix"
203
+   */
204
+  onLoopFix?: (swiper: SwiperClass) => void;
205
+
206
+  /**
207
+   * Event will be fired on breakpoint change
208
+   */
209
+  onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void;
210
+  
211
+  /**
212
+   * Event will be fired in when autoplay started
213
+   */
214
+  onAutoplayStart?: (swiper: SwiperClass) => void;
215
+  /**
216
+   * Event will be fired when autoplay stopped
217
+   */
218
+  onAutoplayStop?: (swiper: SwiperClass) => void;
219
+  /**
220
+   * Event will be fired when slide changed with autoplay
221
+   */
222
+  onAutoplay?: (swiper: SwiperClass) => void;/**
223
+   * Event will be fired on window hash change
224
+   */
225
+  onHashChange?: (swiper: SwiperClass) => void;
226
+  /**
227
+   * Event will be fired when swiper updates the hash
228
+   */
229
+  onHashSet?: (swiper: SwiperClass) => void;/**
230
+   * Event will be fired in the beginning of lazy loading of image
231
+   */
232
+  onLazyImageLoad?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;
233
+  /**
234
+   * Event will be fired when lazy loading image will be loaded
235
+   */
236
+  onLazyImageReady?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/**
237
+   * Event will be fired on navigation hide
238
+   */
239
+  onNavigationHide?: (swiper: SwiperClass) => void;
240
+  /**
241
+   * Event will be fired on navigation show
242
+   */
243
+  onNavigationShow?: (swiper: SwiperClass) => void;/**
244
+   * Event will be fired after pagination rendered
245
+   */
246
+  onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void;
247
+
248
+  /**
249
+   * Event will be fired when pagination updated
250
+   */
251
+  onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void;
252
+
253
+  /**
254
+   * Event will be fired on pagination hide
255
+   */
256
+  onPaginationHide?: (swiper: SwiperClass) => void;
257
+
258
+  /**
259
+   * Event will be fired on pagination show
260
+   */
261
+  onPaginationShow?: (swiper: SwiperClass) => void;/**
262
+   * Event will be fired on draggable scrollbar drag start
263
+   */
264
+  onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
265
+
266
+  /**
267
+   * Event will be fired on draggable scrollbar drag move
268
+   */
269
+  onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;
270
+
271
+  /**
272
+   * Event will be fired on draggable scrollbar drag end
273
+   */
274
+  onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/**
275
+   * Event will be fired on zoom change
276
+   */
277
+  onZoomChange?: (swiper: SwiperClass, value: number, imageEl: HTMLElement, slideEl: HTMLElement) => void;
278
+}
279
+
280
+interface SwiperSlide {
281
+  /**
282
+   * Slide tag
283
+   *
284
+   * @default 'div'
285
+   */
286
+  tag?: string;
287
+
288
+  /**
289
+   * Enables additional wrapper required for zoom mode
290
+   *
291
+   * @default false
292
+   */
293
+  zoom?: boolean;
294
+
295
+  /**
296
+   * Slide's index in slides array/collection
297
+   *
298
+   * @default false
299
+   */
300
+  virtualIndex?: number;
301
+}
302
+
303
+interface Swiper
304
+  extends Omit<
305
+    React.HTMLAttributes<HTMLElement>,
306
+    'onProgress' | 'onClick' | 'onTouchEnd' | 'onTouchMove' | 'onTouchStart' | 'onTransitionEnd'
307
+  > {}
308
+interface SwiperSlide extends React.HTMLAttributes<HTMLElement> {}
309
+
310
+declare const Swiper: React.FunctionComponent<Swiper>;
311
+declare const SwiperSlide: React.FunctionComponent<SwiperSlide>;
312
+
313
+export { Swiper, SwiperSlide };
0 314
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+/**
2
+ * Swiper React 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+import { Swiper } from './esm/react/swiper';
14
+import { SwiperSlide } from './esm/react/swiper-slide';
15
+export { Swiper, SwiperSlide };
0 16
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+/**
2
+ * Swiper Svelte 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+"use strict";
14
+
15
+exports.__esModule = true;
16
+
17
+var _swiper = _interopRequireDefault(require("./cjs/svelte/swiper"));
18
+
19
+exports.Swiper = _swiper.default;
20
+
21
+var _swiperSlide = _interopRequireDefault(require("./cjs/svelte/swiper-slide"));
22
+
23
+exports.SwiperSlide = _swiperSlide.default;
24
+
25
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
0 26
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+/**
2
+ * Swiper Svelte 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+/* eslint-disable */
14
+import Swiper from './esm/svelte/swiper';
15
+import SwiperSlide from './esm/svelte/swiper-slide';
16
+export { Swiper, SwiperSlide };
0 17
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+@themeColor: #007aff;
2
+@colors: white #ffffff, black #000000;
0 3
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+$themeColor: #007aff !default;
2
+$colors: (
3
+  'white': #ffffff,
4
+  'black': #000000,
5
+) !default;
0 6
new file mode 100644
... ...
@@ -0,0 +1,23 @@
1
+/**
2
+ * Swiper Vue 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+"use strict";
14
+
15
+exports.__esModule = true;
16
+
17
+var _swiper = require("./cjs/vue/swiper");
18
+
19
+exports.Swiper = _swiper.Swiper;
20
+
21
+var _swiperSlide = require("./cjs/vue/swiper-slide");
22
+
23
+exports.SwiperSlide = _swiperSlide.SwiperSlide;
0 24
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+/**
2
+ * Swiper Vue 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+import { Swiper } from './esm/vue/swiper';
14
+import { SwiperSlide } from './esm/vue/swiper-slide';
15
+export { Swiper, SwiperSlide };
0 16
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+'use strict';
14
+
15
+Object.defineProperty(exports, '__esModule', { value: true });
16
+
17
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
18
+
19
+var Swiper = _interopDefault(require('./cjs/components/core/core-class'));
20
+var virtual = _interopDefault(require('./cjs/components/virtual/virtual'));
21
+var keyboard = _interopDefault(require('./cjs/components/keyboard/keyboard'));
22
+var mousewheel = _interopDefault(require('./cjs/components/mousewheel/mousewheel'));
23
+var navigation = _interopDefault(require('./cjs/components/navigation/navigation'));
24
+var pagination = _interopDefault(require('./cjs/components/pagination/pagination'));
25
+var scrollbar = _interopDefault(require('./cjs/components/scrollbar/scrollbar'));
26
+var parallax = _interopDefault(require('./cjs/components/parallax/parallax'));
27
+var zoom = _interopDefault(require('./cjs/components/zoom/zoom'));
28
+var lazy = _interopDefault(require('./cjs/components/lazy/lazy'));
29
+var controller = _interopDefault(require('./cjs/components/controller/controller'));
30
+var a11y = _interopDefault(require('./cjs/components/a11y/a11y'));
31
+var history = _interopDefault(require('./cjs/components/history/history'));
32
+var hashNavigation = _interopDefault(require('./cjs/components/hash-navigation/hash-navigation'));
33
+var autoplay = _interopDefault(require('./cjs/components/autoplay/autoplay'));
34
+var effectFade = _interopDefault(require('./cjs/components/effect-fade/effect-fade'));
35
+var effectCube = _interopDefault(require('./cjs/components/effect-cube/effect-cube'));
36
+var effectFlip = _interopDefault(require('./cjs/components/effect-flip/effect-flip'));
37
+var effectCoverflow = _interopDefault(require('./cjs/components/effect-coverflow/effect-coverflow'));
38
+var thumbs = _interopDefault(require('./cjs/components/thumbs/thumbs'));
39
+
40
+// Swiper Class
41
+var components = [];
42
+Swiper.use(components);
43
+
44
+exports.Swiper = Swiper;
45
+exports.default = Swiper;
46
+exports.Virtual = virtual;
47
+exports.Keyboard = keyboard;
48
+exports.Mousewheel = mousewheel;
49
+exports.Navigation = navigation;
50
+exports.Pagination = pagination;
51
+exports.Scrollbar = scrollbar;
52
+exports.Parallax = parallax;
53
+exports.Zoom = zoom;
54
+exports.Lazy = lazy;
55
+exports.Controller = controller;
56
+exports.A11y = a11y;
57
+exports.History = history;
58
+exports.HashNavigation = hashNavigation;
59
+exports.Autoplay = autoplay;
60
+exports.EffectFade = effectFade;
61
+exports.EffectCube = effectCube;
62
+exports.EffectFlip = effectFlip;
63
+exports.EffectCoverflow = effectCoverflow;
64
+exports.Thumbs = thumbs;
0 65
new file mode 100644
... ...
@@ -0,0 +1,48 @@
1
+import Swiper from './types/swiper-class';
2
+import { SwiperOptions } from './types/swiper-options';
3
+import { SwiperComponent } from './types/shared';
4
+
5
+declare const A11y: SwiperComponent;
6
+declare const Autoplay: SwiperComponent;
7
+declare const Controller: SwiperComponent;
8
+declare const EffectCoverflow: SwiperComponent;
9
+declare const EffectCube: SwiperComponent;
10
+declare const EffectFade: SwiperComponent;
11
+declare const EffectFlip: SwiperComponent;
12
+declare const HashNavigation: SwiperComponent;
13
+declare const History: SwiperComponent;
14
+declare const Keyboard: SwiperComponent;
15
+declare const Lazy: SwiperComponent;
16
+declare const Mousewheel: SwiperComponent;
17
+declare const Navigation: SwiperComponent;
18
+declare const Pagination: SwiperComponent;
19
+declare const Parallax: SwiperComponent;
20
+declare const Scrollbar: SwiperComponent;
21
+declare const Thumbs: SwiperComponent;
22
+declare const Virtual: SwiperComponent;
23
+declare const Zoom: SwiperComponent;
24
+
25
+export default Swiper;
26
+export {
27
+  Swiper,
28
+  SwiperOptions,
29
+  A11y,
30
+  Autoplay,
31
+  Controller,
32
+  EffectCoverflow,
33
+  EffectCube,
34
+  EffectFade,
35
+  EffectFlip,
36
+  HashNavigation,
37
+  History,
38
+  Keyboard,
39
+  Lazy,
40
+  Mousewheel,
41
+  Navigation,
42
+  Pagination,
43
+  Parallax,
44
+  Scrollbar,
45
+  Thumbs,
46
+  Virtual,
47
+  Zoom,
48
+};
0 49
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+/**
2
+ * Swiper 6.3.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: October 9, 2020
11
+ */
12
+
13
+import Swiper from './esm/components/core/core-class';
14
+export { default as Swiper, default } from './esm/components/core/core-class';
15
+export { default as Virtual } from './esm/components/virtual/virtual';
16
+export { default as Keyboard } from './esm/components/keyboard/keyboard';
17
+export { default as Mousewheel } from './esm/components/mousewheel/mousewheel';
18
+export { default as Navigation } from './esm/components/navigation/navigation';
19
+export { default as Pagination } from './esm/components/pagination/pagination';
20
+export { default as Scrollbar } from './esm/components/scrollbar/scrollbar';
21
+export { default as Parallax } from './esm/components/parallax/parallax';
22
+export { default as Zoom } from './esm/components/zoom/zoom';
23
+export { default as Lazy } from './esm/components/lazy/lazy';
24
+export { default as Controller } from './esm/components/controller/controller';
25
+export { default as A11y } from './esm/components/a11y/a11y';
26
+export { default as History } from './esm/components/history/history';
27
+export { default as HashNavigation } from './esm/components/hash-navigation/hash-navigation';
28
+export { default as Autoplay } from './esm/components/autoplay/autoplay';
29
+export { default as EffectFade } from './esm/components/effect-fade/effect-fade';
30
+export { default as EffectCube } from './esm/components/effect-cube/effect-cube';
31
+export { default as EffectFlip } from './esm/components/effect-flip/effect-flip';
32
+export { default as EffectCoverflow } from './esm/components/effect-coverflow/effect-coverflow';
33
+export { default as Thumbs } from './esm/components/thumbs/thumbs';
34
+
35
+// Swiper Class
36
+var components = [];
37
+Swiper.use(components);
0 38
new file mode 100644
... ...
@@ -0,0 +1,138 @@
1
+
2
+
3
+@themeColor: #007aff;
4
+@colors: white #ffffff, black #000000;
5
+
6
+@font-face {
7
+  @fontBase64: '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';
8
+  font-family: 'swiper-icons';
9
+  src: url('data:application/font-woff;charset=utf-8;base64, @{fontBase64}') format('woff');
10
+  font-weight: 400;
11
+  font-style: normal;
12
+}
13
+
14
+:root {
15
+  --swiper-theme-color: @themeColor;
16
+}
17
+.swiper-container {
18
+  margin-left: auto;
19
+  margin-right: auto;
20
+  position: relative;
21
+  overflow: hidden;
22
+  list-style: none;
23
+  padding: 0;
24
+  /* Fix of Webkit flickering */
25
+  z-index: 1;
26
+}
27
+.swiper-container-vertical > .swiper-wrapper {
28
+  flex-direction: column;
29
+}
30
+.swiper-wrapper {
31
+  position: relative;
32
+  width: 100%;
33
+  height: 100%;
34
+  z-index: 1;
35
+  display: flex;
36
+  transition-property: transform;
37
+  box-sizing: content-box;
38
+}
39
+.swiper-container-android .swiper-slide,
40
+.swiper-wrapper {
41
+  transform: translate3d(0px, 0, 0);
42
+}
43
+.swiper-container-multirow > .swiper-wrapper {
44
+  flex-wrap: wrap;
45
+}
46
+.swiper-container-multirow-column > .swiper-wrapper {
47
+  flex-wrap: wrap;
48
+  flex-direction: column;
49
+}
50
+.swiper-container-free-mode > .swiper-wrapper {
51
+  transition-timing-function: ease-out;
52
+  margin: 0 auto;
53
+}
54
+.swiper-slide {
55
+  flex-shrink: 0;
56
+  width: 100%;
57
+  height: 100%;
58
+  position: relative;
59
+  transition-property: transform;
60
+}
61
+.swiper-slide-invisible-blank {
62
+  visibility: hidden;
63
+}
64
+/* Auto Height */
65
+.swiper-container-autoheight,
66
+.swiper-container-autoheight .swiper-slide {
67
+  height: auto;
68
+}
69
+.swiper-container-autoheight .swiper-wrapper {
70
+  align-items: flex-start;
71
+  transition-property: transform, height;
72
+}
73
+
74
+/* 3D Effects */
75
+.swiper-container-3d {
76
+  perspective: 1200px;
77
+  .swiper-wrapper,
78
+  .swiper-slide,
79
+  .swiper-slide-shadow-left,
80
+  .swiper-slide-shadow-right,
81
+  .swiper-slide-shadow-top,
82
+  .swiper-slide-shadow-bottom,
83
+  .swiper-cube-shadow {
84
+    transform-style: preserve-3d;
85
+  }
86
+  .swiper-slide-shadow-left,
87
+  .swiper-slide-shadow-right,
88
+  .swiper-slide-shadow-top,
89
+  .swiper-slide-shadow-bottom {
90
+    position: absolute;
91
+    left: 0;
92
+    top: 0;
93
+    width: 100%;
94
+    height: 100%;
95
+    pointer-events: none;
96
+    z-index: 10;
97
+  }
98
+  .swiper-slide-shadow-left {
99
+    background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
100
+  }
101
+  .swiper-slide-shadow-right {
102
+    background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
103
+  }
104
+  .swiper-slide-shadow-top {
105
+    background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
106
+  }
107
+  .swiper-slide-shadow-bottom {
108
+    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
109
+  }
110
+}
111
+
112
+/* CSS Mode */
113
+.swiper-container-css-mode {
114
+  > .swiper-wrapper {
115
+    overflow: auto;
116
+    scrollbar-width: none; /* For Firefox */
117
+    -ms-overflow-style: none; /* For Internet Explorer and Edge */
118
+    &::-webkit-scrollbar {
119
+      display: none;
120
+    }
121
+  }
122
+  > .swiper-wrapper > .swiper-slide {
123
+    scroll-snap-align: start start;
124
+  }
125
+}
126
+.swiper-container-horizontal.swiper-container-css-mode {
127
+  > .swiper-wrapper {
128
+    scroll-snap-type: x mandatory;
129
+  }
130
+}
131
+.swiper-container-vertical.swiper-container-css-mode {
132
+  > .swiper-wrapper {
133
+    scroll-snap-type: y mandatory;
134
+  }
135
+}
136
+
137
+
138
+
0 139
new file mode 100644
... ...
@@ -0,0 +1,138 @@
1
+@import 'swiper-vars.scss';
2
+
3
+@font-face {
4
+  font-family: 'swiper-icons';
5
+  src: url('data:application/font-woff;charset=utf-8;base64, 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')
6
+    format('woff');
7
+  font-weight: 400;
8
+  font-style: normal;
9
+}
10
+
11
+:root {
12
+  --swiper-theme-color: #{$themeColor};
13
+}
14
+.swiper-container {
15
+  margin-left: auto;
16
+  margin-right: auto;
17
+  position: relative;
18
+  overflow: hidden;
19
+  list-style: none;
20
+  padding: 0;
21
+  /* Fix of Webkit flickering */
22
+  z-index: 1;
23
+}
24
+.swiper-container-vertical > .swiper-wrapper {
25
+  flex-direction: column;
26
+}
27
+.swiper-wrapper {
28
+  position: relative;
29
+  width: 100%;
30
+  height: 100%;
31
+  z-index: 1;
32
+  display: flex;
33
+  transition-property: transform;
34
+  box-sizing: content-box;
35
+}
36
+.swiper-container-android .swiper-slide,
37
+.swiper-wrapper {
38
+  transform: translate3d(0px, 0, 0);
39
+}
40
+.swiper-container-multirow > .swiper-wrapper {
41
+  flex-wrap: wrap;
42
+}
43
+.swiper-container-multirow-column > .swiper-wrapper {
44
+  flex-wrap: wrap;
45
+  flex-direction: column;
46
+}
47
+.swiper-container-free-mode > .swiper-wrapper {
48
+  transition-timing-function: ease-out;
49
+  margin: 0 auto;
50
+}
51
+.swiper-slide {
52
+  flex-shrink: 0;
53
+  width: 100%;
54
+  height: 100%;
55
+  position: relative;
56
+  transition-property: transform;
57
+}
58
+.swiper-slide-invisible-blank {
59
+  visibility: hidden;
60
+}
61
+/* Auto Height */
62
+.swiper-container-autoheight {
63
+  &,
64
+  .swiper-slide {
65
+    height: auto;
66
+  }
67
+
68
+  .swiper-wrapper {
69
+    align-items: flex-start;
70
+    transition-property: transform, height;
71
+  }
72
+}
73
+
74
+/* 3D Effects */
75
+.swiper-container-3d {
76
+  perspective: 1200px;
77
+  .swiper-wrapper,
78
+  .swiper-slide,
79
+  .swiper-slide-shadow-left,
80
+  .swiper-slide-shadow-right,
81
+  .swiper-slide-shadow-top,
82
+  .swiper-slide-shadow-bottom,
83
+  .swiper-cube-shadow {
84
+    transform-style: preserve-3d;
85
+  }
86
+  .swiper-slide-shadow-left,
87
+  .swiper-slide-shadow-right,
88
+  .swiper-slide-shadow-top,
89
+  .swiper-slide-shadow-bottom {
90
+    position: absolute;
91
+    left: 0;
92
+    top: 0;
93
+    width: 100%;
94
+    height: 100%;
95
+    pointer-events: none;
96
+    z-index: 10;
97
+  }
98
+  .swiper-slide-shadow-left {
99
+    background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
100
+  }
101
+  .swiper-slide-shadow-right {
102
+    background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
103
+  }
104
+  .swiper-slide-shadow-top {
105
+    background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
106
+  }
107
+  .swiper-slide-shadow-bottom {
108
+    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
109
+  }
110
+}
111
+
112
+/* CSS Mode */
113
+.swiper-container-css-mode {
114
+  > .swiper-wrapper {
115
+    overflow: auto;
116
+    scrollbar-width: none; /* For Firefox */
117
+    -ms-overflow-style: none; /* For Internet Explorer and Edge */
118
+    &::-webkit-scrollbar {
119
+      display: none;
120
+    }
121
+  }
122
+  > .swiper-wrapper > .swiper-slide {
123
+    scroll-snap-align: start start;
124
+  }
125
+}
126
+.swiper-container-horizontal.swiper-container-css-mode {
127
+  > .swiper-wrapper {
128
+    scroll-snap-type: x mandatory;
129
+  }
130
+}
131
+.swiper-container-vertical.swiper-container-css-mode {
132
+  > .swiper-wrapper {
133
+    scroll-snap-type: y mandatory;
134
+  }
135
+}
136
+
137
+
138
+
0 139
new file mode 100644
... ...
@@ -0,0 +1,75 @@
1
+export interface A11yMethods {}
2
+
3
+export interface A11yEvents {}
4
+
5
+export interface A11yOptions {
6
+  /**
7
+   * Enables A11y
8
+   *
9
+   * @default true
10
+   */
11
+  enabled?: boolean;
12
+
13
+  /**
14
+   * Message for screen readers for previous button
15
+   *
16
+   * @default 'Previous slide'
17
+   */
18
+  prevSlideMessage?: string;
19
+
20
+  /**
21
+   * Message for screen readers for next button
22
+   *
23
+   * @default 'Next slide'
24
+   */
25
+  nextSlideMessage?: string;
26
+
27
+  /**
28
+   * Message for screen readers for previous button when swiper is on first slide
29
+   *
30
+   * @default 'This is the first slide'
31
+   */
32
+  firstSlideMessage?: string;
33
+
34
+  /**
35
+   * Message for screen readers for previous button when swiper is on last slide
36
+   *
37
+   * @default 'This is the last slide'
38
+   */
39
+  lastSlideMessage?: string;
40
+
41
+  /**
42
+   * Message for screen readers for single pagination bullet
43
+   *
44
+   * @default 'Go to slide {{index}}'
45
+   */
46
+  paginationBulletMessage?: string;
47
+
48
+  /**
49
+   * CSS class name of a11 notification
50
+   *
51
+   * @default 'swiper-notification'
52
+   */
53
+  notificationClass?: string;
54
+
55
+  /**
56
+   * Message for screen readers for outer swiper container
57
+   *
58
+   * @default null
59
+   */
60
+  containerMessage?: string;
61
+
62
+  /**
63
+   * Message for screen readers describing the role of outer swiper container
64
+   *
65
+   * @default null
66
+   */
67
+  containerRoleDescriptionMessage?: string;
68
+
69
+  /**
70
+   * Message for screen readers describing the role of slide element
71
+   *
72
+   * @default null
73
+   */
74
+  itemRoleDescriptionMessage?: string;
75
+}
0 76
new file mode 100644
... ...
@@ -0,0 +1,91 @@
1
+import Swiper from '../swiper-class';
2
+
3
+export interface AutoplayMethods {
4
+  /**
5
+   * Whether autoplay enabled and running
6
+   */
7
+  running: boolean;
8
+
9
+  /**
10
+   * Start autoplay
11
+   */
12
+  start(): boolean;
13
+
14
+  /**
15
+   * Stop autoplay
16
+   */
17
+  stop(): boolean;
18
+}
19
+
20
+export interface AutoplayEvents {
21
+  /**
22
+   * Event will be fired in when autoplay started
23
+   */
24
+  autoplayStart: (swiper: Swiper) => void;
25
+  /**
26
+   * Event will be fired when autoplay stopped
27
+   */
28
+  autoplayStop: (swiper: Swiper) => void;
29
+  /**
30
+   * Event will be fired when slide changed with autoplay
31
+   */
32
+  autoplay: (swiper: Swiper) => void;
33
+}
34
+
35
+/**
36
+ * Object with autoplay parameters or boolean true to enable with default settings.
37
+ *
38
+ * @example
39
+ * var mySwiper = new Swiper('.swiper-container', {
40
+ *   autoplay: {
41
+ *     delay: 5000,
42
+ *   },
43
+ * });
44
+ */
45
+export interface AutoplayOptions {
46
+  /**
47
+   * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled
48
+   *
49
+   * If you need to specify different delay for specifi slides you can do it by using
50
+   * data-swiper-autoplay (in ms) attribute on slide.
51
+   *
52
+   * @example
53
+   * <!-- hold this slide for 2 seconds -->
54
+   * <div class="swiper-slide" data-swiper-autoplay="2000">
55
+   *
56
+   * @default 3000
57
+   */
58
+  delay?: number;
59
+
60
+  /**
61
+   * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode)
62
+   *
63
+   * @default false
64
+   */
65
+  stopOnLastSlide?: boolean;
66
+
67
+  /**
68
+   * Set to false and autoplay will not be disabled after
69
+   * user interactions (swipes), it will be restarted
70
+   * every time after interaction
71
+   *
72
+   * @default true
73
+   */
74
+  disableOnInteraction?: boolean;
75
+
76
+  /**
77
+   * Enables autoplay in reverse direction
78
+   *
79
+   * @default false
80
+   */
81
+  reverseDirection?: boolean;
82
+
83
+  /**
84
+   * When enabled autoplay will wait for wrapper transition to continue.
85
+   * Can be disabled in case of using Virtual Translate when your
86
+   * slider may not have transition
87
+   *
88
+   * @default true
89
+   */
90
+  waitForTransition?: boolean;
91
+}
0 92
new file mode 100644
... ...
@@ -0,0 +1,29 @@
1
+import Swiper from '../swiper-class';
2
+
3
+export interface ControllerMethods {}
4
+
5
+export interface ControllerEvents {}
6
+
7
+export interface ControllerOptions {
8
+  /**
9
+   * Pass here another Swiper instance or array with Swiper instances that should be controlled
10
+   * by this Swiper
11
+   */
12
+  control?: Swiper;
13
+
14
+  /**
15
+   * Set to true and controlling will be in inverse direction
16
+   *
17
+   * @default false
18
+   */
19
+  inverse?: boolean;
20
+
21
+  /**
22
+   * Can be 'slide' or 'container'. Defines a way how to control another slider: slide by slide
23
+   * (with respect to other slider's grid) or depending on all slides/container
24
+   * (depending on total slider percentage).
25
+   *
26
+   * @default 'slide'
27
+   */
28
+  by?: 'slide' | 'container';
29
+}
0 30
new file mode 100644
... ...
@@ -0,0 +1,36 @@
1
+export interface CoverflowEffectMethods {}
2
+
3
+export interface CoverflowEffectEvents {}
4
+
5
+export interface CoverflowEffectOptions {
6
+  /**
7
+   * Enables slides shadows
8
+   *
9
+   * @default true
10
+   */
11
+  slideShadows?: boolean;
12
+  /**
13
+   * Slide rotate in degrees
14
+   *
15
+   * @default 50
16
+   */
17
+  rotate?: number;
18
+  /**
19
+   * Stretch space between slides (in px)
20
+   *
21
+   * @default 0
22
+   */
23
+  stretch?: number;
24
+  /**
25
+   * Depth offset in px (slides translate in Z axis)
26
+   *
27
+   * @default 100
28
+   */
29
+  depth?: number;
30
+  /**
31
+   * Effect multipler
32
+   *
33
+   * @default 1
34
+   */
35
+  modifier?: number;
36
+}
0 37
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+export interface CubeEffectMethods {}
2
+
3
+export interface CubeEffectEvents {}
4
+
5
+export interface CubeEffectOptions {
6
+  /**
7
+   * Enables slides shadows
8
+   *
9
+   * @default true
10
+   */
11
+  slideShadows?: boolean;
12
+  /**
13
+   * Enables main slider shadow
14
+   *
15
+   * @default true
16
+   */
17
+  shadow?: boolean;
18
+  /**
19
+   * Main shadow offset in px
20
+   *
21
+   * @default 20
22
+   */
23
+  shadowOffset?: number;
24
+  /**
25
+   * Main shadow scale ratio
26
+   *
27
+   * @default 0.94
28
+   */
29
+  shadowScale?: number;
30
+}
0 31
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+export interface FadeEffectMethods {}
2
+
3
+export interface FadeEffectEvents {}
4
+
5
+export interface FadeEffectOptions {
6
+  /**
7
+   * Enables slides cross fade
8
+   *
9
+   * @default false
10
+   */
11
+  crossFade?: boolean;
12
+}
0 13
new file mode 100644
... ...
@@ -0,0 +1,18 @@
1
+export interface FlipEffectMethods {}
2
+
3
+export interface FlipEffectEvents {}
4
+
5
+export interface FlipEffectOptions {
6
+  /**
7
+   * Enables slides shadows
8
+   *
9
+   * @default true
10
+   */
11
+  slideShadows?: boolean;
12
+  /**
13
+   * Limit edge slides rotation
14
+   *
15
+   * @default true
16
+   */
17
+  limitRotation?: boolean;
18
+}
0 19
new file mode 100644
... ...
@@ -0,0 +1,32 @@
1
+import Swiper from '../swiper-class';
2
+
3
+export interface HashNavigationMethods {}
4
+
5
+export interface HashNavigationEvents {
6
+  /**
7
+   * Event will be fired on window hash change
8
+   */
9
+  hashChange: (swiper: Swiper) => void;
10
+  /**
11
+   * Event will be fired when swiper updates the hash
12
+   */
13
+  hashSet: (swiper: Swiper) => void;
14
+}
15
+
16
+export interface HashNavigationOptions {
17
+  /**
18
+   * Set to true to enable also navigation through slides (when hashnav
19
+   * is enabled) by browser history or by setting directly hash on document location
20
+   *
21
+   * @default false
22
+   */
23
+  watchState?: boolean;
24
+
25
+  /**
26
+   * Works in addition to hashnav to replace current url state with the
27
+   * new one instead of adding it to history
28
+   *
29
+   * @default     false
30
+   */
31
+  replaceState?: boolean;
32
+}
0 33
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+export interface HistoryMethods {}
2
+
3
+export interface HistoryEvents {}
4
+
5
+export interface HistoryOptions {
6
+  /**
7
+   * Works in addition to hashnav or history to replace current url state with the
8
+   * new one instead of adding it to history
9
+   *
10
+   * @default false
11
+   */
12
+  replaceState?: boolean;
13
+
14
+  /**
15
+   * Url key for slides
16
+   *
17
+   * @default 'slides'
18
+   */
19
+  key?: string;
20
+}
0 21
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+export interface KeyboardMethods {
2
+  /**
3
+   * Whether the keyboard control is enabled
4
+   */
5
+  enabled: boolean;
6
+
7
+  /**
8
+   * Enable keyboard control
9
+   */
10
+  enable(): void;
11
+
12
+  /**
13
+   * Disable keyboard control
14
+   */
15
+  disable(): void;
16
+}
17
+
18
+export interface KeyboardEvents {}
19
+
20
+export interface KeyboardOptions {
21
+  /**
22
+   * Set to true to enable keyboard contro
23
+   *
24
+   * @default false
25
+   */
26
+  enabled?: boolean;
27
+  /**
28
+   * When enabled it will control sliders that are currently in viewport
29
+   *
30
+   * @default true
31
+   */
32
+  onlyInViewport?: boolean;
33
+  /**
34
+   * When enabled it will enable keyboard navigation by Page Up and Page Down keys
35
+   *
36
+   * @default true
37
+   */
38
+  pageUpDown?: boolean;
39
+}
0 40
new file mode 100644
... ...
@@ -0,0 +1,42 @@
1
+import Swiper from '../swiper-class';
2
+
3
+export interface LazyMethods {
4
+  /**
5
+   * Load/update lazy images based on current slider state (position)
6
+   */
7
+  load(): void;
8
+
9
+  /**
10
+   * Force to load lazy images in slide by specified index
11
+   * @param number index number of slide to load lazy images in
12
+   */
13
+  loadInSlide(index: number): void;
14
+}
15
+
16
+export interface LazyEvents {
17
+  /**
18
+   * Event will be fired in the beginning of lazy loading of image
19
+   */
20
+  lazyImageLoad: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void;
21
+  /**
22
+   * Event will be fired when lazy loading image will be loaded
23
+   */
24
+  lazyImageReady: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void;
25
+}
26
+
27
+export interface LazyOptions {
28
+  /** Set to "true" to enable lazy loading for the closest slides images (for previous and next slide images) */
29
+  loadPrevNext?: boolean;
30
+  /** Amount of next/prev slides to preload lazy images in. Can't be less than slidesPerView */
31
+  loadPrevNextAmount?: number;
32
+  /** By default, Swiper will load lazy images after transition to this slide, so you may enable this parameter if you need it to start loading of new image in the beginning of transition */
33
+  loadOnTransitionStart?: boolean;
34
+  /** CSS class name of lazy element */
35
+  elementClass?: string;
36
+  /** CSS class name of lazy loading element */
37
+  loadingClass?: string;
38
+  /** CSS class name of lazy loaded element */
39
+  loadedClass?: string;
40
+  /** CSS class name of lazy preloader */
41
+  preloaderClass?: string;
42
+}
0 43
new file mode 100644
... ...
@@ -0,0 +1,69 @@
1
+import { CSSSelector } from '../shared';
2
+
3
+export interface MousewheelMethods {
4
+  /**
5
+   * Whether the mousewheel control is enabled
6
+   */
7
+  enabled: boolean;
8
+
9
+  /**
10
+   * Enable mousewheel control
11
+   */
12
+  enable(): void;
13
+
14
+  /**
15
+   * Disable mousewheel control
16
+   */
17
+  disable(): void;
18
+}
19
+
20
+export interface MousewheelEvents {}
21
+
22
+export interface MousewheelOptions {
23
+  /**
24
+   * Set to true to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode.
25
+
26
+   *
27
+   * @default false
28
+   */
29
+  forceToAxis?: boolean;
30
+  /**
31
+   * Set to true and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end)
32
+
33
+   *
34
+   * @default false
35
+   */
36
+  releaseOnEdges?: boolean;
37
+  /**
38
+   * Set to true to invert sliding direction
39
+   *
40
+   * @default false
41
+   */
42
+  invert?: boolean;
43
+  /**
44
+   * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity
45
+   *
46
+   * @default 1
47
+   */
48
+  sensitivity?: number;
49
+  /**
50
+   * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper-container
51
+   *
52
+   * @default 'container'
53
+   */
54
+  eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement;
55
+
56
+  /**
57
+   * Minimum mousewheel scroll delta to trigger swiper slide change
58
+   *
59
+   * @default null
60
+   */
61
+  thresholdDelta?: number;
62
+
63
+  /**
64
+   * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change
65
+   *
66
+   * @default null
67
+   */
68
+  thresholdTime?: number;
69
+}
0 70
new file mode 100644
... ...
@@ -0,0 +1,76 @@
1
+import { CSSSelector } from '../shared';
2
+import Swiper from '../swiper-class';
3
+
4
+export interface NavigationMethods {
5
+  /**
6
+   * HTMLElement of "next" navigation button
7
+   */
8
+  nextEl: HTMLElement;
9
+
10
+  /**
11
+   * HTMLElement of "previous" navigation button
12
+   */
13
+  prevEl: HTMLElement;
14
+
15
+  /**
16
+   * Update navigation buttons state (enabled/disabled)
17
+   */
18
+  update(): void;
19
+}
20
+
21
+export interface NavigationEvents {
22
+  /**
23
+   * Event will be fired on navigation hide
24
+   */
25
+  navigationHide: (swiper: Swiper) => void;
26
+  /**
27
+   * Event will be fired on navigation show
28
+   */
29
+  navigationShow: (swiper: Swiper) => void;
30
+}
31
+
32
+export interface NavigationOptions {
33
+  /**
34
+   * String with CSS selector or HTML element of the element that will work
35
+   * like "next" button after click on it
36
+   *
37
+   * @default null
38
+   */
39
+  nextEl?: CSSSelector | HTMLElement;
40
+
41
+  /**
42
+   * String with CSS selector or HTML element of the element that will work
43
+   * like "prev" button after click on it
44
+   *
45
+   * @default null
46
+   */
47
+  prevEl?: CSSSelector | HTMLElement;
48
+
49
+  /**
50
+   * Toggle navigation buttons visibility after click on Slider's container
51
+   *
52
+   * @default false
53
+   */
54
+  hideOnClick?: boolean;
55
+
56
+  /**
57
+   * CSS class name added to navigation button when it becomes disabled
58
+   *
59
+   * @default 'swiper-button-disabled'
60
+   */
61
+  disabledClass?: string;
62
+
63
+  /**
64
+   * CSS class name added to navigation button when it becomes hidden
65
+   *
66
+   * @default 'swiper-button-hidden'
67
+   */
68
+  hiddenClass?: string;
69
+
70
+  /**
71
+   * CSS class name added to navigation button when it is disabled
72
+   *
73
+   * @default 'swiper-button-lock'
74
+   */
75
+  lockClass?: string;
76
+}
0 77
new file mode 100644
... ...
@@ -0,0 +1,183 @@
1
+import { Dom7Array } from 'dom7';
2
+import { CSSSelector } from '../shared';
3
+import Swiper from '../swiper-class';
4
+
5
+export interface PaginationMethods {
6
+  /**
7
+   * HTMLElement of pagination container element
8
+   */
9
+  el: HTMLElement;
10
+
11
+  /**
12
+   * Dom7 array-like collection of pagination bullets
13
+   * HTML elements. To get specific slide HTMLElement
14
+   * use `mySwiper.pagination.bullets[1]`.
15
+   */
16
+  bullets: Dom7Array[];
17
+
18
+  /**
19
+   * Render pagination layout
20
+   */
21
+  render(): void;
22
+
23
+  /**
24
+   * Update pagination state (enabled/disabled/active)
25
+   */
26
+  update(): void;
27
+}
28
+
29
+export interface PaginationEvents {
30
+  /**
31
+   * Event will be fired after pagination rendered
32
+   */
33
+  paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void;
34
+
35
+  /**
36
+   * Event will be fired when pagination updated
37
+   */
38
+  paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void;
39
+
40
+  /**
41
+   * Event will be fired on pagination hide
42
+   */
43
+  paginationHide: (swiper: Swiper) => void;
44
+
45
+  /**
46
+   * Event will be fired on pagination show
47
+   */
48
+  paginationShow: (swiper: Swiper) => void;
49
+}
50
+
51
+export interface PaginationOptions {
52
+  /**
53
+   * String with CSS selector or HTML element of the container with pagination
54
+   */
55
+  el?: CSSSelector | HTMLElement;
56
+
57
+  /**
58
+   * String with type of pagination. Can be "bullets", "fraction", "progressbar" or "custom"
59
+   */
60
+  type?: 'bullets' | 'fraction' | 'progressbar' | 'custom';
61
+
62
+  /**
63
+   * Defines which HTML tag will be use to represent single pagination bullet. Only for bullets pagination type.
64
+   */
65
+  bulletElement?: string;
66
+
67
+  /**
68
+   * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time.
69
+   */
70
+  dynamicBullets?: boolean;
71
+
72
+  /**
73
+   * The number of main bullets visible when dynamicBullets enabled.
74
+   */
75
+  dynamicMainBullets?: number;
76
+
77
+  /**
78
+   * Toggle (hide/true) pagination container visibility after click on Slider's container
79
+   */
80
+  hideOnClick?: boolean;
81
+
82
+  /**
83
+   * If true then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type
84
+   */
85
+  clickable?: boolean;
86
+
87
+  /**
88
+   * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper
89
+   * direction and horizontal progressbar for vertical swiper direction
90
+   */
91
+  progressbarOpposite?: boolean;
92
+
93
+  /**
94
+   * format fraction pagination current number. Function receives current number,
95
+   * and you need to return formatted value
96
+   */
97
+  formatFractionCurrent?: (number: number) => number;
98
+
99
+  /**
100
+   * format fraction pagination total number. Function receives total number, and you
101
+   * need to return formatted value
102
+   */
103
+  formatFractionTotal?: (number: number) => number;
104
+
105
+  /**
106
+   * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts index number of
107
+   * pagination bullet and required element class name (className). Only for bullets pagination type
108
+   */
109
+  renderBullet?: (index: number, className: string) => void;
110
+
111
+  /**
112
+   * This parameter allows to customize "fraction" pagination html. Only for fraction pagination type
113
+   */
114
+  renderFraction?: (currentClass: string, totalClass: string) => void;
115
+
116
+  /**
117
+   * This parameter allows to customize "progress" pagination. Only for progress pagination type
118
+   */
119
+  renderProgressbar?: (progressbarFillClass: string) => void;
120
+
121
+  /**
122
+   * This parameter is required for custom pagination type where you have to specify
123
+   * how it should be rendered.
124
+   *
125
+   * @example
126
+   * var swiper = new Swiper('.swiper-container', {
127
+   *   //...
128
+   *   renderCustom: function (swiper, current, total) {
129
+   *     return current + ' of ' + total;
130
+   *   }
131
+   * });
132
+   */
133
+  renderCustom?: (swiper: Swiper, current: number, total: number) => void;
134
+
135
+  /**
136
+   * CSS class name of single pagination bullet
137
+   */
138
+  bulletClass?: string;
139
+
140
+  /**
141
+   * CSS class name of currently active pagination bullet
142
+   */
143
+  bulletActiveClass?: string;
144
+
145
+  /**
146
+   * The beginning of the modifier CSS class name that will be added to pagination depending on parameters
147
+   */
148
+  modifierClass?: string;
149
+
150
+  /**
151
+   * CSS class name of the element with currently active index in "fraction" pagination
152
+   */
153
+  currentClass?: string;
154
+
155
+  /**
156
+   * CSS class name of the element with total number of "snaps" in "fraction" pagination
157
+   */
158
+  totalClass?: string;
159
+
160
+  /**
161
+   * CSS class name of pagination when it becomes inactive
162
+   */
163
+  hiddenClass?: string;
164
+
165
+  /**
166
+   * CSS class name of pagination progressbar fill element
167
+   */
168
+  progressbarFillClass?: string;
169
+
170
+  /**
171
+   * CSS class name of pagination progressbar opposite
172
+   */
173
+  progressbarOppositeClass?: string;
174
+  /**
175
+   * CSS class name set to pagination when it is clickable
176
+   */
177
+  clickableClass?: string;
178
+
179
+  /**
180
+   * CSS class name set to pagination when it is disabled
181
+   */
182
+  lockClass?: string;
183
+}
0 184
new file mode 100644
... ...
@@ -0,0 +1,3 @@
1
+export interface ParallaxMethods {}
2
+
3
+export interface ParallaxEvents {}
0 4
new file mode 100644
... ...
@@ -0,0 +1,96 @@
1
+import { CSSSelector } from '../shared';
2
+import Swiper from '../swiper-class';
3
+
4
+export interface ScrollbarMethods {
5
+  /**
6
+   * HTMLElement of Scrollbar container element
7
+   */
8
+  el: HTMLElement;
9
+
10
+  /**
11
+   * HTMLElement of Scrollbar draggable handler element
12
+   */
13
+  dragEl: HTMLElement;
14
+
15
+  /**
16
+   * Updates scrollbar track and handler sizes
17
+   */
18
+  updateSize(): void;
19
+}
20
+
21
+export interface ScrollbarEvents {
22
+  /**
23
+   * Event will be fired on draggable scrollbar drag start
24
+   */
25
+  scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
26
+
27
+  /**
28
+   * Event will be fired on draggable scrollbar drag move
29
+   */
30
+  scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
31
+
32
+  /**
33
+   * Event will be fired on draggable scrollbar drag end
34
+   */
35
+  scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
36
+}
37
+
38
+/**
39
+ * Object with scrollbar parameters.
40
+ *
41
+ * @example
42
+ * var mySwiper = new Swiper('.swiper-container', {
43
+ *   scrollbar: {
44
+ *     el: '.swiper-scrollbar',
45
+ *     draggable: true,
46
+ *   },
47
+ * });
48
+ */
49
+export interface ScrollbarOptions {
50
+  /**
51
+   * String with CSS selector or HTML element of the container with scrollbar.
52
+   */
53
+  el?: CSSSelector | HTMLElement;
54
+
55
+  /**
56
+   * Hide scrollbar automatically after user interaction
57
+   *
58
+   * @default true
59
+   */
60
+  hide?: boolean;
61
+
62
+  /**
63
+   * Set to true to enable make scrollbar draggable that allows you to control slider position
64
+   *
65
+   * @default true
66
+   */
67
+  draggable?: boolean;
68
+
69
+  /**
70
+   * Set to true to snap slider position to slides when you release scrollbar
71
+   *
72
+   * @default false
73
+   */
74
+  snapOnRelease?: boolean;
75
+
76
+  /**
77
+   * Size of scrollbar draggable element in px
78
+   *
79
+   * @default 'auto'
80
+   */
81
+  dragSize?: 'auto' | number;
82
+
83
+  /**
84
+   * Scrollbar element additional CSS class when it is disabled
85
+   *
86
+   * @default 'swiper-scrollbar-lock'
87
+   */
88
+  lockClass?: string;
89
+
90
+  /**
91
+   *     Scrollbar draggable element CSS class
92
+   *
93
+   * @default 'swiper-scrollbar-drag'
94
+   */
95
+  dragClass?: string;
96
+}
0 97
new file mode 100644
... ...
@@ -0,0 +1,44 @@
1
+import Swiper from '../swiper-class';
2
+
3
+export interface ThumbsMethods {
4
+  /**
5
+   * Swiper instance of thumbs swiper
6
+   */
7
+  swiper: Swiper;
8
+}
9
+
10
+export interface ThumbsEvents {}
11
+
12
+export interface ThumbsOptions {
13
+  /**
14
+   * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper
15
+   *
16
+   * @default null
17
+   */
18
+  swiper?: Swiper;
19
+  /**
20
+   * Additional class that will be added to activated thumbs swiper slide
21
+   *
22
+   * @default 'swiper-slide-thumb-active'
23
+   */
24
+  slideThumbActiveClass?: string;
25
+  /**
26
+   * Additional class that will be added to thumbs swiper-container
27
+   *
28
+   * @default 'swiper-container-thumbs'
29
+   */
30
+  thumbsContainerClass?: string;
31
+  /**
32
+   * When enabled multiple thumbnail slides may get activated
33
+   *
34
+   * @default true
35
+   */
36
+  multipleActiveThumbs?: boolean;
37
+  /**
38
+   * Allows to set on which thumbs active slide from edge it should automaticall move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs
39
+
40
+   *
41
+   * @default 0
42
+   */
43
+  autoScrollOffset?: number;
44
+}
0 45
new file mode 100644
... ...
@@ -0,0 +1,116 @@
1
+export interface VirtualMethods {
2
+  /**
3
+   * Object with cached slides HTML elements
4
+   */
5
+  cache: object;
6
+
7
+  /**
8
+   * Index of first rendered slide
9
+   */
10
+  from: number;
11
+
12
+  /**
13
+   * Index of last rendered slide
14
+   */
15
+  to: number;
16
+
17
+  /**
18
+   * Array with slide items passed by virtual.slides parameter
19
+   */
20
+  slides: any[];
21
+
22
+  /*
23
+   * Methods
24
+   */
25
+
26
+  /**
27
+   * Append slide. slides can be a single slide item or array with such slides.
28
+   */
29
+  appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void;
30
+
31
+  /**
32
+   * Prepend slide. slides can be a single slide item or array with such slides.
33
+   */
34
+  prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void;
35
+
36
+  /**
37
+   * Remove specific slide or slides. slideIndexes can be a number with slide index to remove or array with indexes.
38
+   */
39
+  removeSlide(slideIndexes: number[]): void;
40
+
41
+  /**
42
+   * Remove all slides
43
+   */
44
+  removeAllSlides(): void;
45
+
46
+  /**
47
+   * Update virutal slides state
48
+   */
49
+  update(): void;
50
+}
51
+
52
+export interface VirtualEvents {}
53
+
54
+export interface VirtualData {
55
+  /**
56
+   * slides left/top offset in px
57
+   */
58
+  offset: number;
59
+  /**
60
+   * index of first slide required to be rendered
61
+   */
62
+  from: number;
63
+  /**
64
+   * index of last slide required to be rendered
65
+   */
66
+  to: number;
67
+  /**
68
+   * array with slide items to be rendered
69
+   */
70
+  slides: any[];
71
+}
72
+
73
+export interface VirtualOptions {
74
+  /**
75
+   * Array with slides
76
+   *
77
+   * @default []
78
+   */
79
+  slides?: any[];
80
+  /**
81
+   * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it.
82
+   *
83
+   * @default true
84
+   */
85
+  cache?: boolean;
86
+  /**
87
+   * Increases amount of pre-rendered slides before active slide
88
+   *
89
+   * @default 0
90
+   */
91
+  addSlidesBefore?: number;
92
+  /**
93
+   * Increases amount of pre-rendered slides after active slide
94
+   *
95
+   * @default 0
96
+   */
97
+  addSlidesAfter?: number;
98
+  /**
99
+   * Function to render slide. As an argument it accepts current slide item for slides array and index number of the current slide. Function must return an outter HTML of the swiper slide.
100
+   *
101
+   * @default null
102
+   */
103
+  renderSlide?: (slide: any, index: any) => any;
104
+  /**
105
+   * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts data object with the following properties:
106
+   *
107
+   * @default null
108
+   */
109
+  renderExternal?: (data: VirtualData) => any;
110
+  /**
111
+   * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously
112
+   *
113
+   * @default true
114
+   */
115
+  renderExternalUpdate?: boolean;
116
+}
0 117
new file mode 100644
... ...
@@ -0,0 +1,79 @@
1
+import Swiper from '../swiper-class';
2
+
3
+export interface ZoomMethods {
4
+  /**
5
+   * Whether the zoom module is enabled
6
+   */
7
+  enabled: boolean;
8
+
9
+  /**
10
+   * Current image scale ratio
11
+   */
12
+  scale: number;
13
+
14
+  /**
15
+   * Enable zoom module
16
+   */
17
+  enable(): void;
18
+
19
+  /**
20
+   * Disable zoom module
21
+   */
22
+  disable(): void;
23
+
24
+  /**
25
+   * Zoom in image of the currently active slide
26
+   */
27
+  in(): void;
28
+
29
+  /**
30
+   * Zoom out image of the currently active slide
31
+   */
32
+  out(): void;
33
+
34
+  /**
35
+   * Toggle image zoom of the currently active slide
36
+   */
37
+  toggle(): void;
38
+}
39
+
40
+export interface ZoomEvents {
41
+  /**
42
+   * Event will be fired on zoom change
43
+   */
44
+  zoomChange: (swiper: Swiper, value: number, imageEl: HTMLElement, slideEl: HTMLElement) => void;
45
+}
46
+
47
+export interface ZoomOptions {
48
+  /**
49
+   * Maximum image zoom multiplier
50
+   *
51
+   * @default 3
52
+   */
53
+  maxRatio?: number;
54
+  /**
55
+   * Minimal image zoom multiplier
56
+   *
57
+   * @default 1
58
+   */
59
+  minRatio?: number;
60
+  /**
61
+   * Enable/disable zoom-in by slide's double tap
62
+   *
63
+   * @default true
64
+   */
65
+  toggle?: boolean;
66
+  /**
67
+   * CSS class name of zoom container
68
+   *
69
+   * @default 'swiper-zoom-container'
70
+   */
71
+  containerClass?: string;
72
+  /**
73
+   * CSS class name of zoomed in container
74
+   *
75
+   * @default 'swiper-slide-zoomed'
76
+
77
+   */
78
+  zoomedSlideClass?: string;
79
+}
0 80
new file mode 100644
... ...
@@ -0,0 +1,3 @@
1
+export interface CSSSelector extends String {}
2
+
3
+export interface SwiperComponent {}
0 4
new file mode 100644
... ...
@@ -0,0 +1,417 @@
1
+import { Dom7Array } from 'dom7';
2
+import { SwiperOptions } from './swiper-options';
3
+import { CSSSelector, SwiperComponent } from './shared';
4
+import { SwiperEvents } from './swiper-events';
5
+
6
+import { A11yMethods } from './components/a11y';
7
+import { AutoplayMethods } from './components/autoplay';
8
+import { ControllerMethods } from './components/controller';
9
+import { CoverflowEffectMethods } from './components/effect-coverflow';
10
+import { CubeEffectMethods } from './components/effect-cube';
11
+import { FadeEffectMethods } from './components/effect-fade';
12
+import { FlipEffectMethods } from './components/effect-flip';
13
+import { HashNavigationMethods } from './components/hash-navigation';
14
+import { HistoryMethods } from './components/history';
15
+import { KeyboardMethods } from './components/keyboard';
16
+import { LazyMethods } from './components/lazy';
17
+import { MousewheelMethods } from './components/mousewheel';
18
+import { NavigationMethods } from './components/navigation';
19
+import { PaginationMethods } from './components/pagination';
20
+import { ParallaxMethods } from './components/parallax';
21
+import { ScrollbarMethods } from './components/scrollbar';
22
+import { ThumbsMethods } from './components/thumbs';
23
+import { VirtualMethods } from './components/virtual';
24
+import { ZoomMethods } from './components/zoom';
25
+
26
+interface SwiperClass<Events> {
27
+  /** Add event handler */
28
+  on<E extends keyof Events>(event: E, handler: Events[E]): void;
29
+  /** Add event handler that will be removed after it was fired */
30
+  once<E extends keyof Events>(event: E, handler: Events[E]): void;
31
+  /** Remove event handler */
32
+  off<E extends keyof Events>(event: E, handler: Events[E]): void;
33
+  /** Remove all handlers for specified event */
34
+  off<E extends keyof Events>(event: E): void;
35
+  /** Fire event on instance */
36
+  emit<E extends keyof Events>(event: E, ...args: any[]): void;
37
+}
38
+
39
+interface Swiper extends SwiperClass<SwiperEvents> {
40
+  /**
41
+   * Object with passed initialization parameters
42
+   */
43
+  params: SwiperOptions;
44
+
45
+  /**
46
+   * Dom7 element with slider container HTML element. To get vanilla HTMLElement use mySwiper.el
47
+   */
48
+  $el: Dom7Array;
49
+
50
+  /**
51
+   * Dom7 element with slider wrapper HTML element. To get vanilla HTMLElement use mySwiper.wrapperEl
52
+   */
53
+  $wrapperEl: Dom7Array;
54
+
55
+  /**
56
+   * Dom7 array-like collection of slides HTML elements. To get specific slide HTMLElement use mySwiper.slides[1]
57
+   */
58
+  slides: Dom7Array;
59
+
60
+  /**
61
+   * Width of container
62
+   */
63
+  width: number;
64
+
65
+  /**
66
+   * Height of container
67
+   */
68
+  height: number;
69
+
70
+  /**
71
+   * Current value of wrapper translate
72
+   */
73
+  translate: number;
74
+
75
+  /**
76
+   * Current progress of wrapper translate (from 0 to 1)
77
+   */
78
+  progress: number;
79
+
80
+  /**
81
+   * Index number of currently active slide
82
+   *
83
+   * @note Note, that in loop mode active index value will be always shifted on a number of looped/duplicated slides
84
+   */
85
+  activeIndex: number;
86
+
87
+  /**
88
+   * Index number of currently active slide considering duplicated slides in loop mode
89
+   */
90
+  realIndex: number;
91
+
92
+  /**
93
+   * Index number of previously active slide
94
+   */
95
+  previousIndex: number;
96
+
97
+  /**
98
+   * true if slider on most "left"/"top" position
99
+   */
100
+  isBeginning: boolean;
101
+
102
+  /**
103
+   * true if slider on most "right"/"bottom" position
104
+   */
105
+  isEnd: boolean;
106
+
107
+  /**
108
+   * true if swiper is in transition
109
+   */
110
+  animating: boolean;
111
+
112
+  /**
113
+   * Object with the following touch event properties:
114
+   */
115
+  touches: {
116
+    startX: number;
117
+    startY: number;
118
+    currentX: number;
119
+    currentY: number;
120
+    diff: number;
121
+  };
122
+
123
+  /**
124
+   * Index number of last clicked slide
125
+   */
126
+  clickedIndex: number;
127
+
128
+  /**
129
+   * Link to last clicked slide (HTMLElement)
130
+   */
131
+  clickedSlide: HTMLElement;
132
+
133
+  /**
134
+   * Disable / enable ability to slide to the next slides by assigning false/true to this property
135
+   */
136
+  allowSlideNext: boolean;
137
+
138
+  /**
139
+   * Disable / enable ability to slide to the previous slides by assigning false/true to this property
140
+   */
141
+  allowSlidePrev: boolean;
142
+
143
+  /**
144
+   * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning false/true to this property
145
+   */
146
+  allowTouchMove: boolean;
147
+
148
+  /**
149
+   * Run transition to next slide.
150
+   *
151
+   * @param speed Transition duration (in ms).
152
+   * @param runCallbacks Set it to false (by default it is true) and transition will
153
+   *  not produce transition events.
154
+   */
155
+  slideNext(speed?: number, runCallbacks?: boolean): void;
156
+
157
+  /**
158
+   * Run transition to previous slide.
159
+   *
160
+   * @param speed Transition duration (in ms).
161
+   * @param runCallbacks Set it to false (by default it is true) and transition will
162
+   *  not produce transition events.
163
+   */
164
+  slidePrev(speed?: number, runCallbacks?: boolean): void;
165
+
166
+  /**
167
+   * Run transition to the slide with index number equal to 'index' parameter for the
168
+   *  duration equal to 'speed' parameter.
169
+   *
170
+   * @param index Index number of slide.
171
+   * @param speed Transition duration (in ms).
172
+   * @param runCallbacks Set it to false (by default it is true) and transition will
173
+   *  not produce transition events.
174
+   */
175
+  slideTo(index: number, speed?: number, runCallbacks?: boolean): void;
176
+
177
+  /**
178
+   * Does the same as .slideTo but for the case when used with enabled loop. So this
179
+   * method will slide to slides with realIndex matching to passed index
180
+   *
181
+   * @param index Index number of slide.
182
+   * @param speed Transition duration (in ms).
183
+   * @param runCallbacks Set it to false (by default it is true) and transition will
184
+   *  not produce transition events.
185
+   */
186
+  slideToLoop(index: number, speed?: number, runCallbacks?: boolean): void;
187
+
188
+  /**
189
+   * Reset swiper position to currently active slide for the duration equal to 'speed'
190
+   * parameter.
191
+   *
192
+   * @param speed Transition duration (in ms).
193
+   * @param runCallbacks Set it to false (by default it is true) and transition will
194
+   *  not produce transition events.
195
+   */
196
+  slideReset(speed?: number, runCallbacks?: boolean): void;
197
+
198
+  /**
199
+   * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter.
200
+   *
201
+   * @param speed Transition duration (in ms).
202
+   * @param runCallbacks Set it to false (by default it is true) and transition will
203
+   *  not produce transition events.
204
+   */
205
+  slideToClosest(speed?: number, runCallbacks?: boolean): void;
206
+
207
+  /**
208
+   * Force swiper to update its height (when autoHeight enabled) for the duration equal to
209
+   * 'speed' parameter
210
+   *
211
+   * @param speed Transition duration (in ms).
212
+   */
213
+  updateAutoHeight(speed?: number): void;
214
+
215
+  /**
216
+   * You should call it after you add/remove slides
217
+   * manually, or after you hide/show it, or do any
218
+   * custom DOM modifications with Swiper
219
+   * This method also includes subcall of the following
220
+   * methods which you can use separately:
221
+   */
222
+  update(): void;
223
+
224
+  /**
225
+   * recalculate size of swiper container
226
+   */
227
+  updateSize(): void;
228
+
229
+  /**
230
+   * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript
231
+   */
232
+  updateSlides(): void;
233
+
234
+  /**
235
+   * recalculate swiper progress
236
+   */
237
+  updateProgress(): void;
238
+
239
+  /**
240
+   * update active/prev/next classes on slides and bullets
241
+   */
242
+  updateSlidesClasses(): void;
243
+
244
+  /**
245
+   * Changes slider direction from horizontal to vertical and back.
246
+   *
247
+   * @param direction New direction. If not specified, then will automatically changed to opposite direction
248
+   */
249
+  changeDirection(direction?: 'horizontal' | 'vertical'): void;
250
+
251
+  /**
252
+   * Detach all events listeners
253
+   */
254
+  detachEvents(): void;
255
+
256
+  /**
257
+   * Attach all events listeners again
258
+   */
259
+  attachEvents(): void;
260
+
261
+  /**
262
+   * Destroy slider instance and detach all events listeners
263
+   *
264
+   * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance
265
+   * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container.
266
+   * Useful if you need to destroy Swiper and to init again with new options or in different direction
267
+   */
268
+  destroy(deleteInstance?: boolean, cleanStyles?: boolean): void;
269
+
270
+  /**
271
+   * Add new slides to the end. slides could be
272
+   * HTMLElement or HTML string with new slide or
273
+   * array with such slides, for example:
274
+   *
275
+   * @example appendSlide('<div class="swiper-slide">Slide 10"</div>')
276
+   * @example
277
+   * appendSlide([
278
+   *  '<div class="swiper-slide">Slide 10"</div>',
279
+   *  '<div class="swiper-slide">Slide 11"</div>'
280
+   * ]);
281
+   */
282
+  appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void;
283
+
284
+  /**
285
+   * Add new slides to the beginning. slides could be
286
+   * HTMLElement or HTML string with new slide or array with such slides, for example:
287
+   *
288
+   * @example prependSlide('<div class="swiper-slide">Slide 0"</div>')
289
+   * @example prependSlide([
290
+   *  '<div class="swiper-slide">Slide 1"</div>',
291
+   *  '<div class="swiper-slide">Slide 2"</div>'
292
+   * ]);
293
+   */
294
+  prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void;
295
+
296
+  /**
297
+   * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example:
298
+   *
299
+   * @example addSlide(1, '<div class="swiper-slide">Slide 10"</div>')
300
+   * @example addSlide(1, [
301
+   *  '<div class="swiper-slide">Slide 10"</div>',
302
+   *  '<div class="swiper-slide">Slide 11"</div>'
303
+   * ]);
304
+   */
305
+  addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void;
306
+
307
+  /**
308
+   * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes.
309
+   *
310
+   * @example removeSlide(0); // remove first slide
311
+   * @example removeSlide([0, 1]); // remove first and second slides
312
+   * @example removeAllSlides();    // Remove all slides
313
+   */
314
+  removeSlide(slideIndex: number | number[]): void;
315
+
316
+  /**
317
+   * Remove all slides
318
+   */
319
+  removeAllSlides(): void;
320
+
321
+  /**
322
+   * Set custom css3 transform's translate value for swiper wrapper
323
+   */
324
+  setTranslate(translate: any): void;
325
+
326
+  /**
327
+   * Get current value of swiper wrapper css3 transform translate
328
+   */
329
+  getTranslate(): any;
330
+
331
+  /**
332
+   * Animate custom css3 transform's translate value for swiper wrapper
333
+   *
334
+   * @param translate Translate value (in px)
335
+   * @param speed Transition duration (in ms)
336
+   * @param runCallbacks Set it to false (by default it is true) and transition will not produce  transition events
337
+   * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate
338
+   *
339
+   */
340
+  translateTo(
341
+    translate: number,
342
+    speed: number,
343
+    runCallbacks?: boolean,
344
+    translateBounds?: boolean,
345
+  ): any;
346
+
347
+  /**
348
+   * Unset grab cursor
349
+   */
350
+  unsetGrabCursor(): void;
351
+
352
+  /**
353
+   * Set grab cursor
354
+   */
355
+  setGrabCursor(): void;
356
+
357
+  /**
358
+   * Add event listener that will be fired on all events
359
+   */
360
+  onAny(handler: (eventName: string, ...args: any[]) => void): void;
361
+
362
+  /**
363
+   * Remove event listener that will be fired on all events
364
+   */
365
+  offAny(handler: (eventName: string, ...args: any[]) => void): void;
366
+
367
+  a11y: A11yMethods;
368
+  autoplay: AutoplayMethods;
369
+  controller: ControllerMethods;
370
+  coverflowEffect: CoverflowEffectMethods;
371
+  cubeEffect: CubeEffectMethods;
372
+  fadeEffect: FadeEffectMethods;
373
+  flipEffect: FlipEffectMethods;
374
+  hashNavigation: HashNavigationMethods;
375
+  history: HistoryMethods;
376
+  keyboard: KeyboardMethods;
377
+  lazy: LazyMethods;
378
+  mousewheel: MousewheelMethods;
379
+  navigation: NavigationMethods;
380
+  pagination: PaginationMethods;
381
+  parallax: ParallaxMethods;
382
+  scrollbar: ScrollbarMethods;
383
+  thumbs: ThumbsMethods;
384
+  virtual: VirtualMethods;
385
+  zoom: ZoomMethods;
386
+}
387
+
388
+declare class Swiper implements Swiper {
389
+  /**
390
+   * Constructs a new Swiper instance.
391
+   *
392
+   * @param container Where Swiper applies to.
393
+   * @param options   Instance options.
394
+   */
395
+  constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions);
396
+  /**
397
+   * Installs modules on Swiper in runtime.
398
+   */
399
+  static use(modules: SwiperComponent[]): void;
400
+
401
+  /**
402
+   * Swiper default options
403
+   */
404
+  static defaults: SwiperOptions;
405
+
406
+  /**
407
+   * Extend global Swiper defaults
408
+   */
409
+  static extendDefaults(options: SwiperOptions): void;
410
+
411
+  /**
412
+   * Object with global Swiper exntended options
413
+   */
414
+  static extendedDefaults: SwiperOptions;
415
+}
416
+
417
+export default Swiper;
0 418
new file mode 100644
... ...
@@ -0,0 +1,230 @@
1
+import { SwiperOptions } from './swiper-options';
2
+import Swiper from './swiper-class';
3
+
4
+import { A11yEvents } from './components/a11y';
5
+import { AutoplayEvents } from './components/autoplay';
6
+import { ControllerEvents } from './components/controller';
7
+import { CoverflowEffectEvents } from './components/effect-coverflow';
8
+import { CubeEffectEvents } from './components/effect-cube';
9
+import { FadeEffectEvents } from './components/effect-fade';
10
+import { FlipEffectEvents } from './components/effect-flip';
11
+import { HashNavigationEvents } from './components/hash-navigation';
12
+import { HistoryEvents } from './components/history';
13
+import { KeyboardEvents } from './components/keyboard';
14
+import { LazyEvents } from './components/lazy';
15
+import { MousewheelEvents } from './components/mousewheel';
16
+import { NavigationEvents } from './components/navigation';
17
+import { PaginationEvents } from './components/pagination';
18
+import { ParallaxEvents } from './components/parallax';
19
+import { ScrollbarEvents } from './components/scrollbar';
20
+import { ThumbsEvents } from './components/thumbs';
21
+import { VirtualEvents } from './components/virtual';
22
+import { ZoomEvents } from './components/zoom';
23
+
24
+export interface SwiperEvents {
25
+  // CORE_EVENTS_START
26
+  /**
27
+   * Fired right after Swiper initialization.
28
+   * @note Note that with swiper.on('init') syntax it will
29
+   * work only in case you set init: false parameter.
30
+   *
31
+   * @example
32
+   * var swiper = new Swiper('.swiper-container', {
33
+   *   init: false,
34
+   *   // other parameters
35
+   * });
36
+   * swiper.on('init', function() {
37
+   *  // do something
38
+   * });
39
+   * // init Swiper
40
+   * swiper.init();
41
+   *
42
+   * @example
43
+   * // Otherwise use it as the parameter:
44
+   * var swiper = new Swiper('.swiper-container', {
45
+   *   // other parameters
46
+   *   on: {
47
+   *     init: function () {
48
+   *       // do something
49
+   *     },
50
+   *   }
51
+   * });
52
+   */
53
+  init: (swiper: Swiper) => any;
54
+
55
+  /**
56
+   * Event will be fired right before Swiper destroyed
57
+   */
58
+  beforeDestroy: (swiper: Swiper) => void;
59
+
60
+  /**
61
+   * Event will be fired when currently active slide is changed
62
+   */
63
+  slideChange: (swiper: Swiper) => void;
64
+
65
+  /**
66
+   * Event will be fired in the beginning of animation to other slide (next or previous).
67
+   */
68
+  slideChangeTransitionStart: (swiper: Swiper) => void;
69
+
70
+  /**
71
+   * Event will be fired after animation to other slide (next or previous).
72
+   */
73
+  slideChangeTransitionEnd: (swiper: Swiper) => void;
74
+
75
+  /**
76
+   * Same as "slideChangeTransitionStart" but for "forward" direction only
77
+   */
78
+  slideNextTransitionStart: (swiper: Swiper) => void;
79
+
80
+  /**
81
+   * Same as "slideChangeTransitionEnd" but for "forward" direction only
82
+   */
83
+  slideNextTransitionEnd: (swiper: Swiper) => void;
84
+
85
+  /**
86
+   * Same as "slideChangeTransitionStart" but for "backward" direction only
87
+   */
88
+  slidePrevTransitionStart: (swiper: Swiper) => void;
89
+
90
+  /**
91
+   * Same as "slideChangeTransitionEnd" but for "backward" direction only
92
+   */
93
+  slidePrevTransitionEnd: (swiper: Swiper) => void;
94
+
95
+  /**
96
+   * Event will be fired in the beginning of transition.
97
+   */
98
+  transitionStart: (swiper: Swiper) => void;
99
+
100
+  /**
101
+   * Event will be fired after transition.
102
+   */
103
+  transitionEnd: (swiper: Swiper) => void;
104
+
105
+  /**
106
+   * Event will be fired when user touch Swiper. Receives 'touchstart' event as an arguments.
107
+   */
108
+  touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
109
+
110
+  /**
111
+   * Event will be fired when user touch and move finger over Swiper. Receives 'touchmove' event as an arguments.
112
+   */
113
+  touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
114
+
115
+  /**
116
+   * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives 'touchmove' event as an arguments.
117
+   */
118
+  touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
119
+
120
+  /**
121
+   * Event will be fired when user touch and move finger over Swiper and move it. Receives 'touchmove' event as an arguments.
122
+   */
123
+  sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
124
+
125
+  /**
126
+   * Event will be fired when user release Swiper. Receives 'touchend' event as an arguments.
127
+   */
128
+  touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
129
+
130
+  /**
131
+   * Event will be fired when user click/tap on Swiper. Receives 'touchend' event as an arguments.
132
+   */
133
+  click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
134
+
135
+  /**
136
+   * Event will be fired when user click/tap on Swiper. Receives 'touchend' event as an arguments.
137
+   */
138
+  tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
139
+
140
+  /**
141
+   * Event will be fired when user double tap on Swiper's container. Receives 'touchend' event as an arguments
142
+   */
143
+  doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void;
144
+
145
+  /**
146
+   * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled
147
+   */
148
+  imagesReady: (swiper: Swiper) => void;
149
+
150
+  /**
151
+   * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1
152
+   */
153
+  progress: (swiper: Swiper, progress: number) => void;
154
+
155
+  /**
156
+   * Event will be fired when Swiper reach its beginning (initial position)
157
+   */
158
+  reachBeginning: (swiper: Swiper) => void;
159
+
160
+  /**
161
+   * Event will be fired when Swiper reach last slide
162
+   */
163
+  reachEnd: (swiper: Swiper) => void;
164
+
165
+  /**
166
+   * Event will be fired when Swiper goes to beginning or end position
167
+   */
168
+  toEdge: (swiper: Swiper) => void;
169
+
170
+  /**
171
+   * Event will be fired when Swiper goes from beginning or end position
172
+   */
173
+  fromEdge: (swiper: Swiper) => void;
174
+
175
+  /**
176
+   * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments
177
+   */
178
+  setTranslate: (swiper: Swiper, translate: number) => void;
179
+
180
+  /**
181
+   * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments
182
+   */
183
+  setTransition: (swiper: Swiper, transition: number) => void;
184
+
185
+  /**
186
+   * Event will be fired on window resize right before swiper's onresize manipulation
187
+   */
188
+  resize: (swiper: Swiper) => void;
189
+
190
+  /**
191
+   * Event will be fired if observer is enabled and it detects DOM mutations
192
+   */
193
+  observerUpdate: (swiper: Swiper) => void;
194
+
195
+  /**
196
+   * Event will be fired right before "loop fix"
197
+   */
198
+  beforeLoopFix: (swiper: Swiper) => void;
199
+
200
+  /**
201
+   * Event will be fired after "loop fix"
202
+   */
203
+  loopFix: (swiper: Swiper) => void;
204
+
205
+  /**
206
+   * Event will be fired on breakpoint change
207
+   */
208
+  breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void;
209
+  // CORE_EVENTS_END
210
+}
211
+
212
+interface SwiperEvents extends A11yEvents {}
213
+interface SwiperEvents extends AutoplayEvents {}
214
+interface SwiperEvents extends ControllerEvents {}
215
+interface SwiperEvents extends CoverflowEffectEvents {}
216
+interface SwiperEvents extends CubeEffectEvents {}
217
+interface SwiperEvents extends FadeEffectEvents {}
218
+interface SwiperEvents extends FlipEffectEvents {}
219
+interface SwiperEvents extends HashNavigationEvents {}
220
+interface SwiperEvents extends HistoryEvents {}
221
+interface SwiperEvents extends KeyboardEvents {}
222
+interface SwiperEvents extends LazyEvents {}
223
+interface SwiperEvents extends MousewheelEvents {}
224
+interface SwiperEvents extends NavigationEvents {}
225
+interface SwiperEvents extends PaginationEvents {}
226
+interface SwiperEvents extends ParallaxEvents {}
227
+interface SwiperEvents extends ScrollbarEvents {}
228
+interface SwiperEvents extends ThumbsEvents {}
229
+interface SwiperEvents extends VirtualEvents {}
230
+interface SwiperEvents extends ZoomEvents {}
0 231
new file mode 100644
... ...
@@ -0,0 +1,611 @@
1
+import { A11yOptions } from './components/a11y';
2
+import { AutoplayOptions } from './components/autoplay';
3
+import { ControllerOptions } from './components/controller';
4
+import { CoverflowEffectOptions } from './components/effect-coverflow';
5
+import { CubeEffectOptions } from './components/effect-cube';
6
+import { FadeEffectOptions } from './components/effect-fade';
7
+import { FlipEffectOptions } from './components/effect-flip';
8
+import { HashNavigationOptions } from './components/hash-navigation';
9
+import { HistoryOptions } from './components/history';
10
+import { KeyboardOptions } from './components/keyboard';
11
+import { LazyOptions } from './components/lazy';
12
+import { MousewheelOptions } from './components/mousewheel';
13
+import { NavigationOptions } from './components/navigation';
14
+import { PaginationOptions } from './components/pagination';
15
+import { ScrollbarOptions } from './components/scrollbar';
16
+import { ThumbsOptions } from './components/thumbs';
17
+import { VirtualOptions } from './components/virtual';
18
+import { ZoomOptions } from './components/zoom';
19
+
20
+import { CSSSelector } from './shared';
21
+import { SwiperEvents } from './swiper-events';
22
+
23
+export interface SwiperOptions {
24
+  /**
25
+   * Whether Swiper should be initialised automatically when you create an instance.
26
+   * If disabled, then you need to init it manually by calling mySwiper.init()
27
+   *
28
+   * @default true
29
+   */
30
+  init?: boolean;
31
+
32
+  /**
33
+   * Swiper will recalculate slides position on window resize (orientationchange)
34
+   *
35
+   * @default true
36
+   */
37
+  updateOnWindowResize?: boolean;
38
+
39
+  /**
40
+   * Index number of initial slide.
41
+   *
42
+   * @default 0
43
+   */
44
+  initialSlide?: number;
45
+
46
+  /**
47
+   * Could be 'horizontal' or 'vertical' (for vertical slider).
48
+   *
49
+   * @default 'horizontal'
50
+   */
51
+  direction?: 'horizontal' | 'vertical';
52
+
53
+  /**
54
+   * Duration of transition between slides (in ms)
55
+   *
56
+   * @default 300
57
+   */
58
+  speed?: number;
59
+
60
+  /**
61
+   * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides.
62
+   * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well
63
+   */
64
+  setWrapperSize?: boolean;
65
+
66
+  /**
67
+   * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set.
68
+   * Useful when you may need to create custom slide transition
69
+   */
70
+  virtualTranslate?: boolean;
71
+
72
+  /**
73
+   * Swiper width (in px). Parameter allows to force Swiper width.
74
+   * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization
75
+   *
76
+   * @note Setting this parameter will make Swiper not responsive
77
+   * @default null
78
+   */
79
+  width?: number;
80
+
81
+  /**
82
+   * Swiper height (in px). Parameter allows to force Swiper height.
83
+   * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization
84
+   *
85
+   * @note Setting this parameter will make Swiper not responsive
86
+   * @default null
87
+   */
88
+  height?: number;
89
+
90
+  /**
91
+   * Set to true and slider wrapper will adopt its height to the height of the currently active slide
92
+   *
93
+   * @default false
94
+   */
95
+  autoHeight?: boolean;
96
+
97
+  /**
98
+   * Set to true to round values of slides width and height to prevent blurry texts on usual
99
+   * resolution screens (if you have such)
100
+   *
101
+   * @default false
102
+   */
103
+  roundLengths?: boolean;
104
+
105
+  /**
106
+   * Set to true on  Swiper for correct touch events interception. Use only on
107
+   * swipers that use same direction as the parent one
108
+   *
109
+   * @default false
110
+   */
111
+  nested?: boolean;
112
+
113
+  /**
114
+   * If enabled (by default) and navigation elements' parameters passed as a string (like ".pagination")
115
+   * then Swiper will look for such elements through child elements first.
116
+   * Applies for pagination, prev/next buttons and scrollbar elements
117
+   *
118
+   * @default true
119
+   */
120
+  uniqueNavElements?: boolean;
121
+
122
+  /**
123
+   * Transition effect. Could be "slide", "fade", "cube", "coverflow" or "flip"
124
+   *
125
+   * @default 'slide'
126
+   */
127
+  effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip';
128
+
129
+  /**
130
+   * Fire [Transition/SlideChange][Start/End] events on swiper initialization.
131
+   * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode
132
+   *
133
+   * @default true
134
+   */
135
+  runCallbacksOnInit?: boolean;
136
+
137
+  /**
138
+   * When enabled Swiper will be disabled and hide navigation buttons on
139
+   * case there are not enough slides for sliding.
140
+   *
141
+   * @default false
142
+   */
143
+  watchOverflow?: boolean;
144
+
145
+  /**
146
+   * Register event handlers.
147
+   */
148
+  on?: {
149
+    [event in keyof SwiperEvents]?: SwiperEvents[event];
150
+  };
151
+
152
+  // CSS Scroll Snap
153
+
154
+  /**
155
+   * When enabled it will use modern CSS Scroll Snap API.
156
+   * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations.
157
+   *
158
+   * @default false
159
+   */
160
+  cssMode?: boolean;
161
+
162
+  // Slides grid
163
+
164
+  /**
165
+   * Distance between slides in px.
166
+   */
167
+  spaceBetween?: number;
168
+
169
+  /**
170
+   * Number of slides per view (slides visible at the same time on slider's container).
171
+   * If you use it with "auto" value and along with loop: true then you need to specify loopedSlides parameter with amount of slides to loop (duplicate)
172
+   * slidesPerView: 'auto' is currently not compatible with multirow mode, when slidesPerColumn > 1
173
+   */
174
+  slidesPerView?: number | 'auto';
175
+
176
+  /**
177
+   * Number of slides per column, for multirow layout
178
+   * slidesPerColumn > 1 is currently not compatible with loop mode (loop: true)
179
+   */
180
+  slidesPerColumn?: number;
181
+
182
+  /**
183
+   * Could be 'column' or 'row'. Defines how slides should fill rows, by column or by row
184
+   */
185
+  slidesPerColumnFill?: 'row' | 'column';
186
+
187
+  /**
188
+   * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1
189
+   */
190
+  slidesPerGroup?: number;
191
+
192
+  /**
193
+   * The parameter works in the following way: If slidesPerGroupSkip equals 0 (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change.
194
+   * If slidesPerGroupSkip is equal or greater than 1 the first X slides are treated as single groups, whereas all following slides are grouped by the slidesPerGroup value.
195
+   *
196
+   * @default 0
197
+   */
198
+  slidesPerGroupSkip?: number;
199
+
200
+  /**
201
+   * If true, then active slide will be centered, not always on the left side.
202
+   */
203
+  centeredSlides?: boolean;
204
+
205
+  /**
206
+   * If true, then active slide will be centered without adding gaps at the beginning and end of slider.
207
+   * Required centeredSlides: true. Not intended to be used with loop or pagination
208
+   *
209
+   * @default false
210
+   */
211
+  centeredSlidesBounds?: boolean;
212
+
213
+  /**
214
+   * Add (in px) additional slide offset in the beginning of the container (before all slides)
215
+   */
216
+  slidesOffsetBefore?: number;
217
+
218
+  /**
219
+   * Add (in px) additional slide offset in the end of the container (after all slides)
220
+   */
221
+  slidesOffsetAfter?: number;
222
+
223
+  /**
224
+   * Normalize slide index.
225
+   */
226
+  normalizeSlideIndex?: boolean;
227
+
228
+  /**
229
+   * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used loop mode and slidesPerColumn
230
+   */
231
+  centerInsufficientSlides?: boolean;
232
+
233
+  // Grab Cursor
234
+  grabCursor?: boolean;
235
+
236
+  // Touches
237
+
238
+  /**
239
+   * Target element to listen touch events on. Can be 'container' (to listen for touch events on swiper-container) or 'wrapper'
240
+   * (to listen for touch events on swiper-wrapper)
241
+   */
242
+  touchEventsTarget?: 'container' | 'wrapper';
243
+
244
+  /**
245
+   * Touch ratio
246
+   */
247
+  touchRatio?: number;
248
+
249
+  /**
250
+   * Allowable angle (in degrees) to trigger touch move
251
+   */
252
+  touchAngle?: number;
253
+
254
+  /**
255
+   * If true, Swiper will accept mouse events like touch events (click and drag to change slides)
256
+   */
257
+  simulateTouch?: boolean;
258
+
259
+  /**
260
+   * Set to false if you want to disable short swipes
261
+   */
262
+  shortSwipes?: boolean;
263
+
264
+  /**
265
+   * Set to false if you want to disable long swipes
266
+   */
267
+  longSwipes?: boolean;
268
+
269
+  /**
270
+   * Ratio to trigger swipe to next/previous slide during long swipes
271
+   */
272
+  longSwipesRatio?: number;
273
+
274
+  /**
275
+   * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes
276
+   */
277
+  longSwipesMs?: number;
278
+
279
+  /**
280
+   * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it
281
+   */
282
+  followFinger?: boolean;
283
+
284
+  /**
285
+   * If false, then the only way to switch the slide is use of external API functions like slidePrev or slideNext
286
+   */
287
+  allowTouchMove?: boolean;
288
+
289
+  /**
290
+   * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move
291
+   */
292
+  threshold?: number;
293
+
294
+  /**
295
+   * If disabled, `touchstart` (`mousedown`) event won't be prevented
296
+   */
297
+  touchStartPreventDefault?: boolean;
298
+
299
+  /**
300
+   * Force to always prevent default for `touchstart` (`mousedown`) event
301
+   */
302
+  touchStartForcePreventDefault?: boolean;
303
+
304
+  /**
305
+   * If enabled, then propagation of "touchmove" will be stopped
306
+   */
307
+  touchMoveStopPropagation?: boolean;
308
+
309
+  /**
310
+   * Enable to release Swiper events for swipe-to-go-back work in iOS UIWebView
311
+   */
312
+  iOSEdgeSwipeDetection?: boolean;
313
+
314
+  /**
315
+   * Area (in px) from left edge of the screen to release touch events for swipe-to-go-back in iOS UIWebView
316
+   */
317
+  iOSEdgeSwipeThreshold?: number;
318
+
319
+  /**
320
+   * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling
321
+   */
322
+  touchReleaseOnEdges?: boolean;
323
+
324
+  /**
325
+   * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices.
326
+   * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter
327
+   */
328
+  passiveListeners?: boolean;
329
+
330
+  // Touch Resistance
331
+
332
+  /**
333
+   * Set to false if you want to disable resistant bounds
334
+   */
335
+  resistance?: boolean;
336
+
337
+  /**
338
+   * This option allows you to control resistance ratio
339
+   */
340
+  resistanceRatio?: number;
341
+
342
+  // Swiping / No swiping
343
+  /**
344
+   * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition
345
+   *
346
+   * @default false
347
+   */
348
+  preventInteractionOnTransition?: boolean;
349
+
350
+  /**
351
+   * Set to false to disable swiping to previous slide direction (to left or top)
352
+   *
353
+   * @default true
354
+   */
355
+  allowSlidePrev?: boolean;
356
+
357
+  /**
358
+   * Set to false to disable swiping to next slide direction (to right or bottom)
359
+   *
360
+   * @default true
361
+   */
362
+  allowSlideNext?: boolean;
363
+
364
+  /**
365
+   * Enable/disable swiping on elements matched to class specified in noSwipingClass
366
+   *
367
+   * @default true
368
+   */
369
+  noSwiping?: boolean;
370
+
371
+  /**
372
+   * Specify noSwiping's' element css class
373
+   *
374
+   * @default 'swiper-no-swiping'
375
+   */
376
+  noSwipingClass?: string;
377
+
378
+  /**
379
+   * Can be used instead of noSwipingClass to specify elements to disable swiping on.
380
+   * For example 'input' will disable swiping on all inputs
381
+   *
382
+   * @default
383
+   */
384
+  noSwipingSelector?: string;
385
+
386
+  /**
387
+   * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping
388
+   *
389
+   * @default null
390
+   */
391
+  swipeHandler?: CSSSelector | HTMLElement;
392
+
393
+  // Clicks
394
+  /**
395
+   * Set to true to prevent accidental unwanted clicks on links during swiping
396
+   *
397
+   * @default true
398
+   */
399
+  preventClicks?: boolean;
400
+
401
+  /**
402
+   * Set to true to stop clicks event propagation on links during swiping
403
+   *
404
+   * @default true
405
+   */
406
+  preventClicksPropagation?: boolean;
407
+
408
+  /**
409
+   * Set to true and click on any slide will produce transition to this slide
410
+   *
411
+   * @default false
412
+   */
413
+  slideToClickedSlide?: boolean;
414
+
415
+  // Freemode
416
+
417
+  /**
418
+   * If enabled then slides will not have fixed positions
419
+   *
420
+   * @default false
421
+   */
422
+  freeMode?: boolean;
423
+
424
+  /**
425
+   * If enabled, then slide will keep moving for a while after you release it
426
+   *
427
+   * @default true
428
+   */
429
+  freeModeMomentum?: boolean;
430
+
431
+  /**
432
+   * Higher value produces larger momentum distance after you release slider
433
+   *
434
+   * @default 1
435
+   */
436
+  freeModeMomentumRatio?: number;
437
+
438
+  /**
439
+   * Higher value produces larger momentum velocity after you release slider
440
+   *
441
+   * @default 1
442
+   */
443
+  freeModeMomentumVelocityRatio?: number;
444
+
445
+  /**
446
+   * Set to false if you want to disable momentum bounce in free mode
447
+   *
448
+   * @default true
449
+   */
450
+  freeModeMomentumBounce?: boolean;
451
+
452
+  /**
453
+   * Higher value produces larger momentum bounce effect
454
+   *
455
+   * @default 1
456
+   */
457
+  freeModeMomentumBounceRatio?: number;
458
+
459
+  /**
460
+   * Minimum touchmove-velocity required to trigger free mode momentum
461
+   *
462
+   * @default 0.02
463
+   */
464
+  freeModeMinimumVelocity?: number;
465
+
466
+  /**
467
+   * Set to enabled to enable snap to slides positions in free mode
468
+   *
469
+   * @default false
470
+   */
471
+  freeModeSticky?: boolean;
472
+
473
+  // Progress
474
+  /**
475
+   * Enable this feature to calculate each slides progress
476
+   *
477
+   * @default false
478
+   */
479
+  watchSlidesProgress?: boolean;
480
+
481
+  /**
482
+   * watchSlidesProgress should be enabled. Enable this option and slides that are in viewport will have additional visible class
483
+   *
484
+   * @default false
485
+   */
486
+  watchSlidesVisibility?: boolean;
487
+
488
+  // Images
489
+  /**
490
+   * When enabled Swiper will force to load all images
491
+   *
492
+   * @default true
493
+   */
494
+  preloadImages?: boolean;
495
+
496
+  /**
497
+   * When enabled Swiper will be reinitialized after all inner images (<img> tags) are loaded. Required preloadImages: true
498
+   *
499
+   * @default true
500
+   */
501
+  updateOnImagesReady?: boolean;
502
+
503
+  // Loop
504
+  /**
505
+   * Enables continuous loop mode
506
+   *
507
+   * @default false
508
+   */
509
+  loop?: boolean;
510
+
511
+  /**
512
+   * Addition number of slides that will be cloned after creating of loop
513
+   *
514
+   * @default 0
515
+   */
516
+  loopAdditionalSlides?: number;
517
+
518
+  /**
519
+   * If you use slidesPerView:'auto' with loop mode you should tell to Swiper how many slides it should loop (duplicate) using this parameter
520
+   *
521
+   * @default null
522
+   */
523
+  loopedSlides?: number;
524
+
525
+  /**
526
+   * Enable and loop mode will fill groups with insufficient number of slides with blank slides. Good to be used with slidesPerGroup parameter
527
+   *
528
+   * @default false
529
+   */
530
+  loopFillGroupWithBlank?: boolean;
531
+  /**
532
+   * When enabled it prevents Swiper slide prev/next transitions when transitions is already in progress (has effect when `loop` enabled)
533
+   *
534
+   * @default true
535
+   */
536
+  loopPreventsSlide?: boolean;
537
+
538
+  // Breakpoints
539
+  breakpoints?: {
540
+    [width: number]: SwiperOptions;
541
+    [ratio: string]: SwiperOptions;
542
+  };
543
+
544
+  // Observer
545
+  /**
546
+   * Set to true to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides)
547
+   *
548
+   * @default false
549
+   */
550
+  observer?: boolean;
551
+  /**
552
+   * Set to true if you also need to watch Mutations for Swiper slide children elements
553
+   *
554
+   * @default false
555
+   */
556
+  observeSlideChildren?: boolean;
557
+  /**
558
+   * Set to true if you also need to watch Mutations for Swiper parent elements
559
+   *
560
+   * @default false
561
+   */
562
+  observeParents?: boolean;
563
+
564
+  // Namespace
565
+  containerModifierClass?: string;
566
+  slideClass?: string;
567
+  slideBlankClass?: string;
568
+  slideActiveClass?: string;
569
+  slideDuplicateActiveClass?: string;
570
+  slideVisibleClass?: string;
571
+  slideDuplicateClass?: string;
572
+  slideNextClass?: string;
573
+  slideDuplicateNextClass?: string;
574
+  slidePrevClass?: string;
575
+  slideDuplicatePrevClass?: string;
576
+  wrapperClass?: string;
577
+
578
+  // ssr
579
+  /**
580
+   * userAgent string. Required for browser/device detection when rendered on server-side
581
+   *
582
+   * @default null
583
+   */
584
+  userAgent?: string;
585
+  /**
586
+   * Required for active slide detection when rendered on server-side and enabled history
587
+   *
588
+   * @default null
589
+   */
590
+  url?: string;
591
+
592
+  a11y?: A11yOptions;
593
+  autoplay?: AutoplayOptions | boolean;
594
+  controller?: ControllerOptions;
595
+  coverflowEffect?: CoverflowEffectOptions;
596
+  cubeEffect?: CubeEffectOptions;
597
+  fadeEffect?: FadeEffectOptions;
598
+  flipEffect?: FlipEffectOptions;
599
+  hashNavigation?: HashNavigationOptions | boolean;
600
+  history?: HistoryOptions | boolean;
601
+  keyboard?: KeyboardOptions | boolean;
602
+  lazy?: LazyOptions | boolean;
603
+  mousewheel?: MousewheelOptions | boolean;
604
+  navigation?: NavigationOptions | boolean;
605
+  pagination?: PaginationOptions | boolean;
606
+  parallax?: boolean;
607
+  scrollbar?: ScrollbarOptions | boolean;
608
+  thumbs?: ThumbsOptions;
609
+  virtual?: VirtualOptions | boolean;
610
+  zoom?: ZoomOptions | boolean;
611
+}
0 612
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+{
2
+  "name": "swiper/vue",
3
+  "private": true,
4
+  "main": "../swiper-vue.cjs.js",
5
+  "jsnext:main": "../swiper-vue.esm.js",
6
+  "module": "../swiper-vue.esm.js",
7
+  "sideEffects": false
8
+}
... ...
@@ -12,7 +12,7 @@
12 12
 /**
13 13
  * Asset version
14 14
  */
15
-$GLOBALS['TL_ASSETS']['SWIPERJS'] = '5.4.0';
15
+$GLOBALS['TL_ASSETS']['SWIPERJS'] = '6.3.3';
16 16
 
17 17
 /**
18 18
  * Content elements
... ...
@@ -1,11 +1,11 @@
1 1
 <?php
2 2
 
3
-$GLOBALS['TL_CSS'][] = '/system/modules/eSM_swiper/assets/lib/swiper/' . $GLOBALS['TL_ASSETS']['SWIPERJS'] . '/css/swiper.min.css';
3
+$GLOBALS['TL_CSS'][] = '/system/modules/eSM_swiper/assets/lib/swiper/' . $GLOBALS['TL_ASSETS']['SWIPERJS'] . '/swiper-bundle.min.css';
4 4
 $GLOBALS['TL_CSS'][] = '/system/modules/eSM_swiper/assets/css/swiper-custom.css';
5 5
 
6 6
 ?>
7 7
 
8
-<script src="/system/modules/eSM_swiper/assets/lib/swiper/<?= $GLOBALS['TL_ASSETS']['SWIPERJS'] ?>/js/swiper.min.js"></script>
8
+<script src="/system/modules/eSM_swiper/assets/lib/swiper/<?= $GLOBALS['TL_ASSETS']['SWIPERJS'] ?>/swiper-bundle.min.js"></script>
9 9
 
10 10
 <script>
11 11
   (function () {