Browse code

Refactor and rewrite as contao bundle

Benjamin Roth authored on04/11/2022 22:32:32
Showing1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,364 +0,0 @@
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
-      if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {
172
-        numberOfBullets = slidesLength;
173
-      }
174
-
175
-      for (var i = 0; i < numberOfBullets; i += 1) {
176
-        if (params.renderBullet) {
177
-          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
178
-        } else {
179
-          paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
180
-        }
181
-      }
182
-
183
-      $el.html(paginationHTML);
184
-      swiper.pagination.bullets = $el.find("." + params.bulletClass.replace(/ /g, '.'));
185
-    }
186
-
187
-    if (params.type === 'fraction') {
188
-      if (params.renderFraction) {
189
-        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
190
-      } else {
191
-        paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
192
-      }
193
-
194
-      $el.html(paginationHTML);
195
-    }
196
-
197
-    if (params.type === 'progressbar') {
198
-      if (params.renderProgressbar) {
199
-        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
200
-      } else {
201
-        paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
202
-      }
203
-
204
-      $el.html(paginationHTML);
205
-    }
206
-
207
-    if (params.type !== 'custom') {
208
-      swiper.emit('paginationRender', swiper.pagination.$el[0]);
209
-    }
210
-  },
211
-  init: function init() {
212
-    var swiper = this;
213
-    var params = swiper.params.pagination;
214
-    if (!params.el) return;
215
-    var $el = $(params.el);
216
-    if ($el.length === 0) return;
217
-
218
-    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
219
-      $el = swiper.$el.find(params.el);
220
-    }
221
-
222
-    if (params.type === 'bullets' && params.clickable) {
223
-      $el.addClass(params.clickableClass);
224
-    }
225
-
226
-    $el.addClass(params.modifierClass + params.type);
227
-
228
-    if (params.type === 'bullets' && params.dynamicBullets) {
229
-      $el.addClass("" + params.modifierClass + params.type + "-dynamic");
230
-      swiper.pagination.dynamicBulletIndex = 0;
231
-
232
-      if (params.dynamicMainBullets < 1) {
233
-        params.dynamicMainBullets = 1;
234
-      }
235
-    }
236
-
237
-    if (params.type === 'progressbar' && params.progressbarOpposite) {
238
-      $el.addClass(params.progressbarOppositeClass);
239
-    }
240
-
241
-    if (params.clickable) {
242
-      $el.on('click', "." + params.bulletClass.replace(/ /g, '.'), function onClick(e) {
243
-        e.preventDefault();
244
-        var index = $(this).index() * swiper.params.slidesPerGroup;
245
-        if (swiper.params.loop) index += swiper.loopedSlides;
246
-        swiper.slideTo(index);
247
-      });
248
-    }
249
-
250
-    extend(swiper.pagination, {
251
-      $el: $el,
252
-      el: $el[0]
253
-    });
254
-  },
255
-  destroy: function destroy() {
256
-    var swiper = this;
257
-    var params = swiper.params.pagination;
258
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
259
-    var $el = swiper.pagination.$el;
260
-    $el.removeClass(params.hiddenClass);
261
-    $el.removeClass(params.modifierClass + params.type);
262
-    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
263
-
264
-    if (params.clickable) {
265
-      $el.off('click', "." + params.bulletClass.replace(/ /g, '.'));
266
-    }
267
-  }
268
-};
269
-export default {
270
-  name: 'pagination',
271
-  params: {
272
-    pagination: {
273
-      el: null,
274
-      bulletElement: 'span',
275
-      clickable: false,
276
-      hideOnClick: false,
277
-      renderBullet: null,
278
-      renderProgressbar: null,
279
-      renderFraction: null,
280
-      renderCustom: null,
281
-      progressbarOpposite: false,
282
-      type: 'bullets',
283
-      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
284
-      dynamicBullets: false,
285
-      dynamicMainBullets: 1,
286
-      formatFractionCurrent: function formatFractionCurrent(number) {
287
-        return number;
288
-      },
289
-      formatFractionTotal: function formatFractionTotal(number) {
290
-        return number;
291
-      },
292
-      bulletClass: 'swiper-pagination-bullet',
293
-      bulletActiveClass: 'swiper-pagination-bullet-active',
294
-      modifierClass: 'swiper-pagination-',
295
-      // NEW
296
-      currentClass: 'swiper-pagination-current',
297
-      totalClass: 'swiper-pagination-total',
298
-      hiddenClass: 'swiper-pagination-hidden',
299
-      progressbarFillClass: 'swiper-pagination-progressbar-fill',
300
-      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
301
-      clickableClass: 'swiper-pagination-clickable',
302
-      // NEW
303
-      lockClass: 'swiper-pagination-lock'
304
-    }
305
-  },
306
-  create: function create() {
307
-    var swiper = this;
308
-    bindModuleMethods(swiper, {
309
-      pagination: _extends({
310
-        dynamicBulletIndex: 0
311
-      }, Pagination)
312
-    });
313
-  },
314
-  on: {
315
-    init: function init(swiper) {
316
-      swiper.pagination.init();
317
-      swiper.pagination.render();
318
-      swiper.pagination.update();
319
-    },
320
-    activeIndexChange: function activeIndexChange(swiper) {
321
-      if (swiper.params.loop) {
322
-        swiper.pagination.update();
323
-      } else if (typeof swiper.snapIndex === 'undefined') {
324
-        swiper.pagination.update();
325
-      }
326
-    },
327
-    snapIndexChange: function snapIndexChange(swiper) {
328
-      if (!swiper.params.loop) {
329
-        swiper.pagination.update();
330
-      }
331
-    },
332
-    slidesLengthChange: function slidesLengthChange(swiper) {
333
-      if (swiper.params.loop) {
334
-        swiper.pagination.render();
335
-        swiper.pagination.update();
336
-      }
337
-    },
338
-    snapGridLengthChange: function snapGridLengthChange(swiper) {
339
-      if (!swiper.params.loop) {
340
-        swiper.pagination.render();
341
-        swiper.pagination.update();
342
-      }
343
-    },
344
-    destroy: function destroy(swiper) {
345
-      swiper.pagination.destroy();
346
-    },
347
-    click: function click(swiper, e) {
348
-      var targetEl = e.target;
349
-
350
-      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
351
-        if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
352
-        var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
353
-
354
-        if (isHidden === true) {
355
-          swiper.emit('paginationShow');
356
-        } else {
357
-          swiper.emit('paginationHide');
358
-        }
359
-
360
-        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
361
-      }
362
-    }
363
-  }
364
-};
365 0
\ No newline at end of file
Browse code

swiper.js version 6.5.0

Benjamin Roth authored on14/03/2021 15:29:46
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,364 @@
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
+      if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {
172
+        numberOfBullets = slidesLength;
173
+      }
174
+
175
+      for (var i = 0; i < numberOfBullets; i += 1) {
176
+        if (params.renderBullet) {
177
+          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
178
+        } else {
179
+          paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
180
+        }
181
+      }
182
+
183
+      $el.html(paginationHTML);
184
+      swiper.pagination.bullets = $el.find("." + params.bulletClass.replace(/ /g, '.'));
185
+    }
186
+
187
+    if (params.type === 'fraction') {
188
+      if (params.renderFraction) {
189
+        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
190
+      } else {
191
+        paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
192
+      }
193
+
194
+      $el.html(paginationHTML);
195
+    }
196
+
197
+    if (params.type === 'progressbar') {
198
+      if (params.renderProgressbar) {
199
+        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
200
+      } else {
201
+        paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
202
+      }
203
+
204
+      $el.html(paginationHTML);
205
+    }
206
+
207
+    if (params.type !== 'custom') {
208
+      swiper.emit('paginationRender', swiper.pagination.$el[0]);
209
+    }
210
+  },
211
+  init: function init() {
212
+    var swiper = this;
213
+    var params = swiper.params.pagination;
214
+    if (!params.el) return;
215
+    var $el = $(params.el);
216
+    if ($el.length === 0) return;
217
+
218
+    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
219
+      $el = swiper.$el.find(params.el);
220
+    }
221
+
222
+    if (params.type === 'bullets' && params.clickable) {
223
+      $el.addClass(params.clickableClass);
224
+    }
225
+
226
+    $el.addClass(params.modifierClass + params.type);
227
+
228
+    if (params.type === 'bullets' && params.dynamicBullets) {
229
+      $el.addClass("" + params.modifierClass + params.type + "-dynamic");
230
+      swiper.pagination.dynamicBulletIndex = 0;
231
+
232
+      if (params.dynamicMainBullets < 1) {
233
+        params.dynamicMainBullets = 1;
234
+      }
235
+    }
236
+
237
+    if (params.type === 'progressbar' && params.progressbarOpposite) {
238
+      $el.addClass(params.progressbarOppositeClass);
239
+    }
240
+
241
+    if (params.clickable) {
242
+      $el.on('click', "." + params.bulletClass.replace(/ /g, '.'), function onClick(e) {
243
+        e.preventDefault();
244
+        var index = $(this).index() * swiper.params.slidesPerGroup;
245
+        if (swiper.params.loop) index += swiper.loopedSlides;
246
+        swiper.slideTo(index);
247
+      });
248
+    }
249
+
250
+    extend(swiper.pagination, {
251
+      $el: $el,
252
+      el: $el[0]
253
+    });
254
+  },
255
+  destroy: function destroy() {
256
+    var swiper = this;
257
+    var params = swiper.params.pagination;
258
+    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
259
+    var $el = swiper.pagination.$el;
260
+    $el.removeClass(params.hiddenClass);
261
+    $el.removeClass(params.modifierClass + params.type);
262
+    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
263
+
264
+    if (params.clickable) {
265
+      $el.off('click', "." + params.bulletClass.replace(/ /g, '.'));
266
+    }
267
+  }
268
+};
269
+export default {
270
+  name: 'pagination',
271
+  params: {
272
+    pagination: {
273
+      el: null,
274
+      bulletElement: 'span',
275
+      clickable: false,
276
+      hideOnClick: false,
277
+      renderBullet: null,
278
+      renderProgressbar: null,
279
+      renderFraction: null,
280
+      renderCustom: null,
281
+      progressbarOpposite: false,
282
+      type: 'bullets',
283
+      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
284
+      dynamicBullets: false,
285
+      dynamicMainBullets: 1,
286
+      formatFractionCurrent: function formatFractionCurrent(number) {
287
+        return number;
288
+      },
289
+      formatFractionTotal: function formatFractionTotal(number) {
290
+        return number;
291
+      },
292
+      bulletClass: 'swiper-pagination-bullet',
293
+      bulletActiveClass: 'swiper-pagination-bullet-active',
294
+      modifierClass: 'swiper-pagination-',
295
+      // NEW
296
+      currentClass: 'swiper-pagination-current',
297
+      totalClass: 'swiper-pagination-total',
298
+      hiddenClass: 'swiper-pagination-hidden',
299
+      progressbarFillClass: 'swiper-pagination-progressbar-fill',
300
+      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
301
+      clickableClass: 'swiper-pagination-clickable',
302
+      // NEW
303
+      lockClass: 'swiper-pagination-lock'
304
+    }
305
+  },
306
+  create: function create() {
307
+    var swiper = this;
308
+    bindModuleMethods(swiper, {
309
+      pagination: _extends({
310
+        dynamicBulletIndex: 0
311
+      }, Pagination)
312
+    });
313
+  },
314
+  on: {
315
+    init: function init(swiper) {
316
+      swiper.pagination.init();
317
+      swiper.pagination.render();
318
+      swiper.pagination.update();
319
+    },
320
+    activeIndexChange: function activeIndexChange(swiper) {
321
+      if (swiper.params.loop) {
322
+        swiper.pagination.update();
323
+      } else if (typeof swiper.snapIndex === 'undefined') {
324
+        swiper.pagination.update();
325
+      }
326
+    },
327
+    snapIndexChange: function snapIndexChange(swiper) {
328
+      if (!swiper.params.loop) {
329
+        swiper.pagination.update();
330
+      }
331
+    },
332
+    slidesLengthChange: function slidesLengthChange(swiper) {
333
+      if (swiper.params.loop) {
334
+        swiper.pagination.render();
335
+        swiper.pagination.update();
336
+      }
337
+    },
338
+    snapGridLengthChange: function snapGridLengthChange(swiper) {
339
+      if (!swiper.params.loop) {
340
+        swiper.pagination.render();
341
+        swiper.pagination.update();
342
+      }
343
+    },
344
+    destroy: function destroy(swiper) {
345
+      swiper.pagination.destroy();
346
+    },
347
+    click: function click(swiper, e) {
348
+      var targetEl = e.target;
349
+
350
+      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
351
+        if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
352
+        var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
353
+
354
+        if (isHidden === true) {
355
+          swiper.emit('paginationShow');
356
+        } else {
357
+          swiper.emit('paginationHide');
358
+        }
359
+
360
+        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
361
+      }
362
+    }
363
+  }
364
+};
0 365
\ No newline at end of file