swiper-rails 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +6 -14
- data/app/assets/javascripts/swiper.js +1289 -941
- data/app/assets/stylesheets/swiper.css +55 -25
- data/lib/swiper-rails/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZTM3MjBmZDU1NmMxMWU0YmJmN2MxYTY5NmVlNjk0NWFhNTg1NzNiNjE0Yjg4
|
10
|
-
Y2NkYTYxZDhmY2NmMjAxMGNkZTdlNWY4NDNjNTYwMGVkNDg5OWZjYTAwNzdi
|
11
|
-
ZTQ0M2Y0YWU0NWZmMWYyN2E5MjY1ODFhY2UyOTU4NzFlYzQwOTY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ODE4NTI1NDFhNTlmMDFhYjc5NzZjMzBkYzM5ZDIyNDM2ZmQ3ZTQwNzkzMzgw
|
14
|
-
NDlmODZjOTk5OWU5MzgwMDlkYmMxOGUwNWZhMGE0Y2RhMWY4ZDhkMjEzOGQ2
|
15
|
-
ODAxMWUyZjI1MmMzZWQ3Y2UzNWNjNTJkZmU5ZWUwMTdmOWU5Mjg=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 118b7afde4a47cdf56fe73bf7bd2f2108f75fc21
|
4
|
+
data.tar.gz: f2176db71cecf8cc3af76b271c5a0b74b8e50a34
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 15f36c4e178419f0bb92aebe0d1b9f786b2684d542f6fb593742012ee8923ca70b5a517bd2a1988399dfa3be4571fb20ca10f14037fe91ec2bd69b274a91f443
|
7
|
+
data.tar.gz: 4bcc75a38564af8f5e1cadd6cec194a090a926e78fc2c03c00b66408e8a9d92191ef98b67539246727d0756134be487b6081239ab0c0ff97e678e2fb1300856d
|
@@ -1,16 +1,6 @@
|
|
1
|
-
/*
|
2
|
-
* Swiper 2.1 - Mobile Touch Slider
|
3
|
-
* http://www.idangero.us/sliders/swiper/
|
4
|
-
*
|
5
|
-
* Copyright 2012-2013, Vladimir Kharlampidi
|
6
|
-
* The iDangero.us
|
7
|
-
* http://www.idangero.us/
|
8
|
-
*
|
9
|
-
* Licensed under GPL & MIT
|
10
|
-
*
|
11
|
-
* Updated on: August 22, 2013
|
12
|
-
*/
|
13
1
|
var Swiper = function (selector, params) {
|
2
|
+
'use strict';
|
3
|
+
|
14
4
|
/*=========================
|
15
5
|
A little bit dirty but required part for IE8 and old FF support
|
16
6
|
===========================*/
|
@@ -18,7 +8,7 @@ var Swiper = function (selector, params) {
|
|
18
8
|
if (HTMLElement) {
|
19
9
|
var element = HTMLElement.prototype;
|
20
10
|
if (element.__defineGetter__) {
|
21
|
-
element.__defineGetter__(
|
11
|
+
element.__defineGetter__('outerHTML', function () { return new XMLSerializer().serializeToString(this); });
|
22
12
|
}
|
23
13
|
}
|
24
14
|
}
|
@@ -35,34 +25,34 @@ var Swiper = function (selector, params) {
|
|
35
25
|
});
|
36
26
|
}
|
37
27
|
return el.currentStyle[prop] ? el.currentStyle[prop] : null;
|
38
|
-
}
|
28
|
+
};
|
39
29
|
return this;
|
40
|
-
}
|
30
|
+
};
|
41
31
|
}
|
42
32
|
if (!Array.prototype.indexOf) {
|
43
|
-
Array.prototype.indexOf = function(obj, start) {
|
33
|
+
Array.prototype.indexOf = function (obj, start) {
|
44
34
|
for (var i = (start || 0), j = this.length; i < j; i++) {
|
45
35
|
if (this[i] === obj) { return i; }
|
46
36
|
}
|
47
37
|
return -1;
|
48
|
-
}
|
38
|
+
};
|
49
39
|
}
|
50
40
|
if (!document.querySelectorAll) {
|
51
41
|
if (!window.jQuery) return;
|
52
42
|
}
|
53
|
-
function $$(
|
43
|
+
function $$(selector, context) {
|
54
44
|
if (document.querySelectorAll)
|
55
|
-
return document.querySelectorAll(
|
45
|
+
return (context || document).querySelectorAll(selector);
|
56
46
|
else
|
57
|
-
return jQuery(
|
47
|
+
return jQuery(selector, context);
|
58
48
|
}
|
59
49
|
|
60
50
|
/*=========================
|
61
51
|
Check for correct selector
|
62
52
|
===========================*/
|
63
|
-
if(typeof selector === 'undefined') return;
|
53
|
+
if (typeof selector === 'undefined') return;
|
64
54
|
|
65
|
-
if(!(selector.nodeType)){
|
55
|
+
if (!(selector.nodeType)) {
|
66
56
|
if ($$(selector).length === 0) return;
|
67
57
|
}
|
68
58
|
|
@@ -75,24 +65,24 @@ var Swiper = function (selector, params) {
|
|
75
65
|
Default Flags and vars
|
76
66
|
===========================*/
|
77
67
|
_this.touches = {
|
78
|
-
start:0,
|
79
|
-
startX:0,
|
80
|
-
startY:0,
|
81
|
-
current:0,
|
82
|
-
currentX:0,
|
83
|
-
currentY:0,
|
84
|
-
diff:0,
|
85
|
-
abs:0
|
68
|
+
start: 0,
|
69
|
+
startX: 0,
|
70
|
+
startY: 0,
|
71
|
+
current: 0,
|
72
|
+
currentX: 0,
|
73
|
+
currentY: 0,
|
74
|
+
diff: 0,
|
75
|
+
abs: 0
|
86
76
|
};
|
87
77
|
_this.positions = {
|
88
|
-
start:0,
|
89
|
-
abs:0,
|
90
|
-
diff:0,
|
91
|
-
current:0
|
78
|
+
start: 0,
|
79
|
+
abs: 0,
|
80
|
+
diff: 0,
|
81
|
+
current: 0
|
92
82
|
};
|
93
83
|
_this.times = {
|
94
|
-
start:0,
|
95
|
-
end:0
|
84
|
+
start: 0,
|
85
|
+
end: 0
|
96
86
|
};
|
97
87
|
|
98
88
|
_this.id = (new Date()).getTime();
|
@@ -100,6 +90,7 @@ var Swiper = function (selector, params) {
|
|
100
90
|
_this.isTouched = false;
|
101
91
|
_this.isMoved = false;
|
102
92
|
_this.activeIndex = 0;
|
93
|
+
_this.centerIndex = 0;
|
103
94
|
_this.activeLoaderIndex = 0;
|
104
95
|
_this.activeLoopIndex = 0;
|
105
96
|
_this.previousIndex = null;
|
@@ -108,16 +99,18 @@ var Swiper = function (selector, params) {
|
|
108
99
|
_this.slidesGrid = [];
|
109
100
|
_this.imagesToLoad = [];
|
110
101
|
_this.imagesLoaded = 0;
|
111
|
-
_this.wrapperLeft=0;
|
112
|
-
_this.wrapperRight=0;
|
113
|
-
_this.wrapperTop=0;
|
114
|
-
_this.wrapperBottom=0;
|
102
|
+
_this.wrapperLeft = 0;
|
103
|
+
_this.wrapperRight = 0;
|
104
|
+
_this.wrapperTop = 0;
|
105
|
+
_this.wrapperBottom = 0;
|
106
|
+
_this.isAndroid = navigator.userAgent.toLowerCase().indexOf('android') >= 0;
|
115
107
|
var wrapper, slideSize, wrapperSize, direction, isScrolling, containerSize;
|
116
108
|
|
117
109
|
/*=========================
|
118
110
|
Default Parameters
|
119
111
|
===========================*/
|
120
112
|
var defaults = {
|
113
|
+
eventTarget: 'wrapper', // or 'container'
|
121
114
|
mode : 'horizontal', // or 'vertical'
|
122
115
|
touchRatio : 1,
|
123
116
|
speed : 300,
|
@@ -128,11 +121,12 @@ var Swiper = function (selector, params) {
|
|
128
121
|
momentumBounceRatio: 1,
|
129
122
|
slidesPerView : 1,
|
130
123
|
slidesPerGroup : 1,
|
124
|
+
slidesPerViewFit: true, //Fit to slide when spv "auto" and slides larger than container
|
131
125
|
simulateTouch : true,
|
132
126
|
followFinger : true,
|
133
127
|
shortSwipes : true,
|
134
|
-
|
135
|
-
|
128
|
+
longSwipesRatio: 0.5,
|
129
|
+
moveStartThreshold: false,
|
136
130
|
onlyExternal : false,
|
137
131
|
createPagination : true,
|
138
132
|
pagination : false,
|
@@ -142,18 +136,24 @@ var Swiper = function (selector, params) {
|
|
142
136
|
resistance : true, // or false or 100%
|
143
137
|
scrollContainer : false,
|
144
138
|
preventLinks : true,
|
139
|
+
preventLinksPropagation: false,
|
145
140
|
noSwiping : false, // or class
|
146
141
|
noSwipingClass : 'swiper-no-swiping', //:)
|
147
142
|
initialSlide: 0,
|
148
143
|
keyboardControl: false,
|
149
144
|
mousewheelControl : false,
|
150
|
-
|
145
|
+
mousewheelControlForceToAxis : false,
|
151
146
|
useCSS3Transforms : true,
|
147
|
+
// Autoplay
|
148
|
+
autoplay: false,
|
149
|
+
autoplayDisableOnInteraction: true,
|
150
|
+
autoplayStopOnLast: false,
|
152
151
|
//Loop mode
|
153
|
-
loop:false,
|
154
|
-
loopAdditionalSlides:0,
|
152
|
+
loop: false,
|
153
|
+
loopAdditionalSlides: 0,
|
155
154
|
//Auto Height
|
156
155
|
calculateHeight: false,
|
156
|
+
cssWidthAndHeight: false,
|
157
157
|
//Images Preloader
|
158
158
|
updateOnImagesReady : true,
|
159
159
|
//Form elements
|
@@ -178,25 +178,26 @@ var Swiper = function (selector, params) {
|
|
178
178
|
DOMAnimation : true,
|
179
179
|
//Slides Loader
|
180
180
|
loader: {
|
181
|
-
slides:[], //array with slides
|
182
|
-
slidesHTMLType:'inner', // or 'outer'
|
181
|
+
slides: [], //array with slides
|
182
|
+
slidesHTMLType: 'inner', // or 'outer'
|
183
183
|
surroundGroups: 1, //keep preloaded slides groups around view
|
184
184
|
logic: 'reload', //or 'change'
|
185
185
|
loadAllSlides: false
|
186
186
|
},
|
187
187
|
//Namespace
|
188
|
-
slideElement
|
189
|
-
slideClass
|
190
|
-
slideActiveClass
|
191
|
-
slideVisibleClass
|
192
|
-
|
188
|
+
slideElement: 'div',
|
189
|
+
slideClass: 'swiper-slide',
|
190
|
+
slideActiveClass: 'swiper-slide-active',
|
191
|
+
slideVisibleClass: 'swiper-slide-visible',
|
192
|
+
slideDuplicateClass: 'swiper-slide-duplicate',
|
193
|
+
wrapperClass: 'swiper-wrapper',
|
193
194
|
paginationElementClass: 'swiper-pagination-switch',
|
194
|
-
paginationActiveClass
|
195
|
-
paginationVisibleClass
|
196
|
-
}
|
195
|
+
paginationActiveClass: 'swiper-active-switch',
|
196
|
+
paginationVisibleClass: 'swiper-visible-switch'
|
197
|
+
};
|
197
198
|
params = params || {};
|
198
199
|
for (var prop in defaults) {
|
199
|
-
if (prop in params && typeof params[prop]==='object') {
|
200
|
+
if (prop in params && typeof params[prop] === 'object') {
|
200
201
|
for (var subProp in defaults[prop]) {
|
201
202
|
if (! (subProp in params[prop])) {
|
202
203
|
params[prop][subProp] = defaults[prop][subProp];
|
@@ -204,7 +205,7 @@ var Swiper = function (selector, params) {
|
|
204
205
|
}
|
205
206
|
}
|
206
207
|
else if (! (prop in params)) {
|
207
|
-
params[prop] = defaults[prop]
|
208
|
+
params[prop] = defaults[prop];
|
208
209
|
}
|
209
210
|
}
|
210
211
|
_this.params = params;
|
@@ -215,16 +216,19 @@ var Swiper = function (selector, params) {
|
|
215
216
|
if (params.loop) {
|
216
217
|
params.resistance = '100%';
|
217
218
|
}
|
218
|
-
var isH = params.mode==='horizontal';
|
219
|
+
var isH = params.mode === 'horizontal';
|
219
220
|
|
220
221
|
/*=========================
|
221
222
|
Define Touch Events
|
222
223
|
===========================*/
|
224
|
+
var desktopEvents = ['mousedown', 'mousemove', 'mouseup'];
|
225
|
+
if (_this.browser.ie10) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];
|
226
|
+
if (_this.browser.ie11) desktopEvents = ['pointerdown', 'pointermove', 'pointerup'];
|
223
227
|
|
224
228
|
_this.touchEvents = {
|
225
|
-
touchStart : _this.support.touch || !params.simulateTouch ? 'touchstart' :
|
226
|
-
touchMove : _this.support.touch || !params.simulateTouch ? 'touchmove' :
|
227
|
-
touchEnd : _this.support.touch || !params.simulateTouch ? 'touchend' :
|
229
|
+
touchStart : _this.support.touch || !params.simulateTouch ? 'touchstart' : desktopEvents[0],
|
230
|
+
touchMove : _this.support.touch || !params.simulateTouch ? 'touchmove' : desktopEvents[1],
|
231
|
+
touchEnd : _this.support.touch || !params.simulateTouch ? 'touchend' : desktopEvents[2]
|
228
232
|
};
|
229
233
|
|
230
234
|
/*=========================
|
@@ -232,14 +236,14 @@ var Swiper = function (selector, params) {
|
|
232
236
|
===========================*/
|
233
237
|
for (var i = _this.container.childNodes.length - 1; i >= 0; i--) {
|
234
238
|
if (_this.container.childNodes[i].className) {
|
235
|
-
var _wrapperClasses = _this.container.childNodes[i].className.split(
|
239
|
+
var _wrapperClasses = _this.container.childNodes[i].className.split(/\s+/);
|
236
240
|
for (var j = 0; j < _wrapperClasses.length; j++) {
|
237
|
-
if (_wrapperClasses[j]===params.wrapperClass) {
|
241
|
+
if (_wrapperClasses[j] === params.wrapperClass) {
|
238
242
|
wrapper = _this.container.childNodes[i];
|
239
243
|
}
|
240
|
-
}
|
244
|
+
}
|
241
245
|
}
|
242
|
-
}
|
246
|
+
}
|
243
247
|
|
244
248
|
_this.wrapper = wrapper;
|
245
249
|
/*=========================
|
@@ -248,18 +252,15 @@ var Swiper = function (selector, params) {
|
|
248
252
|
_this._extendSwiperSlide = function (el) {
|
249
253
|
el.append = function () {
|
250
254
|
if (params.loop) {
|
251
|
-
el.insertAfter(_this.slides.length-_this.loopedSlides);
|
252
|
-
_this.removeLoopedSlides();
|
253
|
-
_this.calcSlides();
|
254
|
-
_this.createLoop();
|
255
|
+
el.insertAfter(_this.slides.length - _this.loopedSlides);
|
255
256
|
}
|
256
257
|
else {
|
257
258
|
_this.wrapper.appendChild(el);
|
259
|
+
_this.reInit();
|
258
260
|
}
|
259
261
|
|
260
|
-
_this.reInit();
|
261
262
|
return el;
|
262
|
-
}
|
263
|
+
};
|
263
264
|
el.prepend = function () {
|
264
265
|
if (params.loop) {
|
265
266
|
_this.wrapper.insertBefore(el, _this.slides[_this.loopedSlides]);
|
@@ -272,32 +273,37 @@ var Swiper = function (selector, params) {
|
|
272
273
|
}
|
273
274
|
_this.reInit();
|
274
275
|
return el;
|
275
|
-
}
|
276
|
+
};
|
276
277
|
el.insertAfter = function (index) {
|
277
|
-
if(typeof index === 'undefined') return false;
|
278
|
+
if (typeof index === 'undefined') return false;
|
278
279
|
var beforeSlide;
|
279
280
|
|
280
281
|
if (params.loop) {
|
281
282
|
beforeSlide = _this.slides[index + 1 + _this.loopedSlides];
|
282
|
-
|
283
|
+
if (beforeSlide) {
|
284
|
+
_this.wrapper.insertBefore(el, beforeSlide);
|
285
|
+
}
|
286
|
+
else {
|
287
|
+
_this.wrapper.appendChild(el);
|
288
|
+
}
|
283
289
|
_this.removeLoopedSlides();
|
284
290
|
_this.calcSlides();
|
285
291
|
_this.createLoop();
|
286
292
|
}
|
287
293
|
else {
|
288
294
|
beforeSlide = _this.slides[index + 1];
|
289
|
-
_this.wrapper.insertBefore(el, beforeSlide)
|
295
|
+
_this.wrapper.insertBefore(el, beforeSlide);
|
290
296
|
}
|
291
297
|
_this.reInit();
|
292
298
|
return el;
|
293
|
-
}
|
299
|
+
};
|
294
300
|
el.clone = function () {
|
295
|
-
return _this._extendSwiperSlide(el.cloneNode(true))
|
296
|
-
}
|
301
|
+
return _this._extendSwiperSlide(el.cloneNode(true));
|
302
|
+
};
|
297
303
|
el.remove = function () {
|
298
304
|
_this.wrapper.removeChild(el);
|
299
305
|
_this.reInit();
|
300
|
-
}
|
306
|
+
};
|
301
307
|
el.html = function (html) {
|
302
308
|
if (typeof html === 'undefined') {
|
303
309
|
return el.innerHTML;
|
@@ -306,46 +312,46 @@ var Swiper = function (selector, params) {
|
|
306
312
|
el.innerHTML = html;
|
307
313
|
return el;
|
308
314
|
}
|
309
|
-
}
|
315
|
+
};
|
310
316
|
el.index = function () {
|
311
317
|
var index;
|
312
318
|
for (var i = _this.slides.length - 1; i >= 0; i--) {
|
313
|
-
if(el === _this.slides[i]) index = i;
|
319
|
+
if (el === _this.slides[i]) index = i;
|
314
320
|
}
|
315
321
|
return index;
|
316
|
-
}
|
322
|
+
};
|
317
323
|
el.isActive = function () {
|
318
324
|
if (el.index() === _this.activeIndex) return true;
|
319
325
|
else return false;
|
320
|
-
}
|
321
|
-
if (!el.swiperSlideDataStorage) el.swiperSlideDataStorage={};
|
326
|
+
};
|
327
|
+
if (!el.swiperSlideDataStorage) el.swiperSlideDataStorage = {};
|
322
328
|
el.getData = function (name) {
|
323
329
|
return el.swiperSlideDataStorage[name];
|
324
|
-
}
|
330
|
+
};
|
325
331
|
el.setData = function (name, value) {
|
326
332
|
el.swiperSlideDataStorage[name] = value;
|
327
333
|
return el;
|
328
|
-
}
|
334
|
+
};
|
329
335
|
el.data = function (name, value) {
|
330
|
-
if (
|
331
|
-
return el.getAttribute('data-'+name);
|
336
|
+
if (typeof value === 'undefined') {
|
337
|
+
return el.getAttribute('data-' + name);
|
332
338
|
}
|
333
339
|
else {
|
334
|
-
el.setAttribute('data-'+name,value);
|
340
|
+
el.setAttribute('data-' + name, value);
|
335
341
|
return el;
|
336
342
|
}
|
337
|
-
}
|
343
|
+
};
|
338
344
|
el.getWidth = function (outer) {
|
339
345
|
return _this.h.getWidth(el, outer);
|
340
|
-
}
|
346
|
+
};
|
341
347
|
el.getHeight = function (outer) {
|
342
348
|
return _this.h.getHeight(el, outer);
|
343
|
-
}
|
344
|
-
el.getOffset = function() {
|
349
|
+
};
|
350
|
+
el.getOffset = function () {
|
345
351
|
return _this.h.getOffset(el);
|
346
|
-
}
|
352
|
+
};
|
347
353
|
return el;
|
348
|
-
}
|
354
|
+
};
|
349
355
|
|
350
356
|
//Calculate information about number of slides
|
351
357
|
_this.calcSlides = function (forceCalcSlides) {
|
@@ -355,9 +361,9 @@ var Swiper = function (selector, params) {
|
|
355
361
|
for (var i = 0; i < _this.wrapper.childNodes.length; i++) {
|
356
362
|
if (_this.wrapper.childNodes[i].className) {
|
357
363
|
var _className = _this.wrapper.childNodes[i].className;
|
358
|
-
var _slideClasses = _className.split(
|
364
|
+
var _slideClasses = _className.split(/\s+/);
|
359
365
|
for (var j = 0; j < _slideClasses.length; j++) {
|
360
|
-
if(_slideClasses[j]===params.slideClass) {
|
366
|
+
if (_slideClasses[j] === params.slideClass) {
|
361
367
|
_this.slides.push(_this.wrapper.childNodes[i]);
|
362
368
|
}
|
363
369
|
}
|
@@ -366,46 +372,47 @@ var Swiper = function (selector, params) {
|
|
366
372
|
for (i = _this.slides.length - 1; i >= 0; i--) {
|
367
373
|
_this._extendSwiperSlide(_this.slides[i]);
|
368
374
|
}
|
369
|
-
if (
|
370
|
-
if(oldNumber!==_this.slides.length || forceCalcSlides) {
|
375
|
+
if (oldNumber === false) return;
|
376
|
+
if (oldNumber !== _this.slides.length || forceCalcSlides) {
|
377
|
+
|
371
378
|
// Number of slides has been changed
|
372
379
|
removeSlideEvents();
|
373
380
|
addSlideEvents();
|
374
381
|
_this.updateActiveSlide();
|
375
|
-
if (
|
382
|
+
if (_this.params.pagination) _this.createPagination();
|
376
383
|
_this.callPlugins('numberOfSlidesChanged');
|
377
384
|
}
|
378
|
-
}
|
385
|
+
};
|
379
386
|
|
380
387
|
//Create Slide
|
381
388
|
_this.createSlide = function (html, slideClassList, el) {
|
382
|
-
|
383
|
-
|
389
|
+
slideClassList = slideClassList || _this.params.slideClass;
|
390
|
+
el = el || params.slideElement;
|
384
391
|
var newSlide = document.createElement(el);
|
385
|
-
newSlide.innerHTML = html||'';
|
392
|
+
newSlide.innerHTML = html || '';
|
386
393
|
newSlide.className = slideClassList;
|
387
394
|
return _this._extendSwiperSlide(newSlide);
|
388
|
-
}
|
395
|
+
};
|
389
396
|
|
390
397
|
//Append Slide
|
391
398
|
_this.appendSlide = function (html, slideClassList, el) {
|
392
399
|
if (!html) return;
|
393
400
|
if (html.nodeType) {
|
394
|
-
return _this._extendSwiperSlide(html).append()
|
401
|
+
return _this._extendSwiperSlide(html).append();
|
395
402
|
}
|
396
403
|
else {
|
397
|
-
return _this.createSlide(html, slideClassList, el).append()
|
404
|
+
return _this.createSlide(html, slideClassList, el).append();
|
398
405
|
}
|
399
|
-
}
|
406
|
+
};
|
400
407
|
_this.prependSlide = function (html, slideClassList, el) {
|
401
408
|
if (!html) return;
|
402
409
|
if (html.nodeType) {
|
403
|
-
return _this._extendSwiperSlide(html).prepend()
|
410
|
+
return _this._extendSwiperSlide(html).prepend();
|
404
411
|
}
|
405
412
|
else {
|
406
|
-
return _this.createSlide(html, slideClassList, el).prepend()
|
413
|
+
return _this.createSlide(html, slideClassList, el).prepend();
|
407
414
|
}
|
408
|
-
}
|
415
|
+
};
|
409
416
|
_this.insertSlideAfter = function (index, html, slideClassList, el) {
|
410
417
|
if (typeof index === 'undefined') return false;
|
411
418
|
if (html.nodeType) {
|
@@ -414,12 +421,12 @@ var Swiper = function (selector, params) {
|
|
414
421
|
else {
|
415
422
|
return _this.createSlide(html, slideClassList, el).insertAfter(index);
|
416
423
|
}
|
417
|
-
}
|
424
|
+
};
|
418
425
|
_this.removeSlide = function (index) {
|
419
426
|
if (_this.slides[index]) {
|
420
427
|
if (params.loop) {
|
421
|
-
if (!_this.slides[index+_this.loopedSlides]) return false;
|
422
|
-
_this.slides[index+_this.loopedSlides].remove();
|
428
|
+
if (!_this.slides[index + _this.loopedSlides]) return false;
|
429
|
+
_this.slides[index + _this.loopedSlides].remove();
|
423
430
|
_this.removeLoopedSlides();
|
424
431
|
_this.calcSlides();
|
425
432
|
_this.createLoop();
|
@@ -428,42 +435,92 @@ var Swiper = function (selector, params) {
|
|
428
435
|
return true;
|
429
436
|
}
|
430
437
|
else return false;
|
431
|
-
}
|
438
|
+
};
|
432
439
|
_this.removeLastSlide = function () {
|
433
|
-
if (_this.slides.length>0) {
|
440
|
+
if (_this.slides.length > 0) {
|
434
441
|
if (params.loop) {
|
435
442
|
_this.slides[_this.slides.length - 1 - _this.loopedSlides].remove();
|
436
443
|
_this.removeLoopedSlides();
|
437
444
|
_this.calcSlides();
|
438
445
|
_this.createLoop();
|
439
446
|
}
|
440
|
-
else _this.slides[
|
447
|
+
else _this.slides[_this.slides.length - 1].remove();
|
441
448
|
return true;
|
442
449
|
}
|
443
450
|
else {
|
444
451
|
return false;
|
445
452
|
}
|
446
|
-
}
|
453
|
+
};
|
447
454
|
_this.removeAllSlides = function () {
|
448
455
|
for (var i = _this.slides.length - 1; i >= 0; i--) {
|
449
|
-
_this.slides[i].remove()
|
456
|
+
_this.slides[i].remove();
|
450
457
|
}
|
451
|
-
}
|
458
|
+
};
|
452
459
|
_this.getSlide = function (index) {
|
453
|
-
return _this.slides[index]
|
454
|
-
}
|
460
|
+
return _this.slides[index];
|
461
|
+
};
|
455
462
|
_this.getLastSlide = function () {
|
456
|
-
return _this.slides[
|
457
|
-
}
|
463
|
+
return _this.slides[_this.slides.length - 1];
|
464
|
+
};
|
458
465
|
_this.getFirstSlide = function () {
|
459
|
-
return _this.slides[0]
|
460
|
-
}
|
466
|
+
return _this.slides[0];
|
467
|
+
};
|
461
468
|
|
462
469
|
//Currently Active Slide
|
463
470
|
_this.activeSlide = function () {
|
464
|
-
return _this.slides[_this.activeIndex]
|
471
|
+
return _this.slides[_this.activeIndex];
|
472
|
+
};
|
473
|
+
|
474
|
+
/*=========================
|
475
|
+
Wrapper for Callbacks : Allows additive callbacks via function arrays
|
476
|
+
===========================*/
|
477
|
+
_this.fireCallback = function () {
|
478
|
+
var callback = arguments[0];
|
479
|
+
if (Object.prototype.toString.call(callback) === '[object Array]') {
|
480
|
+
for (var i = 0; i < callback.length; i++) {
|
481
|
+
if (typeof callback[i] === 'function') {
|
482
|
+
callback[i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
|
483
|
+
}
|
484
|
+
}
|
485
|
+
} else if (Object.prototype.toString.call(callback) === '[object String]') {
|
486
|
+
if (params['on' + callback]) _this.fireCallback(params['on' + callback]);
|
487
|
+
} else {
|
488
|
+
callback(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
|
489
|
+
}
|
490
|
+
};
|
491
|
+
function isArray(obj) {
|
492
|
+
if (Object.prototype.toString.apply(obj) === '[object Array]') return true;
|
493
|
+
return false;
|
465
494
|
}
|
466
495
|
|
496
|
+
/**
|
497
|
+
* Allows user to add callbacks, rather than replace them
|
498
|
+
* @param callback
|
499
|
+
* @param func
|
500
|
+
* @return {*}
|
501
|
+
*/
|
502
|
+
_this.addCallback = function (callback, func) {
|
503
|
+
var _this = this, tempFunc;
|
504
|
+
if (_this.params['on' + callback]) {
|
505
|
+
if (isArray(this.params['on' + callback])) {
|
506
|
+
return this.params['on' + callback].push(func);
|
507
|
+
} else if (typeof this.params['on' + callback] === 'function') {
|
508
|
+
tempFunc = this.params['on' + callback];
|
509
|
+
this.params['on' + callback] = [];
|
510
|
+
this.params['on' + callback].push(tempFunc);
|
511
|
+
return this.params['on' + callback].push(func);
|
512
|
+
}
|
513
|
+
} else {
|
514
|
+
this.params['on' + callback] = [];
|
515
|
+
return this.params['on' + callback].push(func);
|
516
|
+
}
|
517
|
+
};
|
518
|
+
_this.removeCallbacks = function (callback) {
|
519
|
+
if (_this.params['on' + callback]) {
|
520
|
+
_this.params['on' + callback] = null;
|
521
|
+
}
|
522
|
+
};
|
523
|
+
|
467
524
|
/*=========================
|
468
525
|
Plugins API
|
469
526
|
===========================*/
|
@@ -471,44 +528,46 @@ var Swiper = function (selector, params) {
|
|
471
528
|
for (var plugin in _this.plugins) {
|
472
529
|
if (params[plugin]) {
|
473
530
|
var p = _this.plugins[plugin](_this, params[plugin]);
|
474
|
-
if (p) _plugins.push(
|
531
|
+
if (p) _plugins.push(p);
|
475
532
|
}
|
476
533
|
}
|
477
|
-
_this.callPlugins = function(method, args) {
|
478
|
-
if (!args) args = {}
|
479
|
-
for (var i=0; i<_plugins.length; i++) {
|
534
|
+
_this.callPlugins = function (method, args) {
|
535
|
+
if (!args) args = {};
|
536
|
+
for (var i = 0; i < _plugins.length; i++) {
|
480
537
|
if (method in _plugins[i]) {
|
481
538
|
_plugins[i][method](args);
|
482
539
|
}
|
483
540
|
}
|
484
|
-
}
|
541
|
+
};
|
485
542
|
|
486
543
|
/*=========================
|
487
|
-
|
544
|
+
Windows Phone 8 Fix
|
488
545
|
===========================*/
|
489
|
-
if (_this.browser.ie10 && !params.onlyExternal) {
|
490
|
-
|
491
|
-
else _this.wrapper.classList.add('swiper-wp8-vertical');
|
546
|
+
if ((_this.browser.ie10 || _this.browser.ie11) && !params.onlyExternal) {
|
547
|
+
_this.wrapper.classList.add('swiper-wp8-' + (isH ? 'horizontal' : 'vertical'));
|
492
548
|
}
|
493
549
|
|
494
550
|
/*=========================
|
495
551
|
Free Mode Class
|
496
552
|
===========================*/
|
497
553
|
if (params.freeMode) {
|
498
|
-
_this.container.className+=' swiper-free-mode';
|
554
|
+
_this.container.className += ' swiper-free-mode';
|
499
555
|
}
|
500
556
|
|
501
557
|
/*==================================================
|
502
558
|
Init/Re-init/Resize Fix
|
503
559
|
====================================================*/
|
504
560
|
_this.initialized = false;
|
505
|
-
_this.init = function(force, forceCalcSlides) {
|
561
|
+
_this.init = function (force, forceCalcSlides) {
|
506
562
|
var _width = _this.h.getWidth(_this.container);
|
507
563
|
var _height = _this.h.getHeight(_this.container);
|
508
|
-
if (_width===_this.width && _height===_this.height && !force) return;
|
564
|
+
if (_width === _this.width && _height === _this.height && !force) return;
|
565
|
+
|
509
566
|
_this.width = _width;
|
510
567
|
_this.height = _height;
|
511
568
|
|
569
|
+
var slideWidth, slideHeight, slideMaxHeight, wrapperWidth, wrapperHeight, slideLeft;
|
570
|
+
var i; // loop index variable to avoid JSHint W004 / W038
|
512
571
|
containerSize = isH ? _width : _height;
|
513
572
|
var wrapper = _this.wrapper;
|
514
573
|
|
@@ -516,13 +575,13 @@ var Swiper = function (selector, params) {
|
|
516
575
|
_this.calcSlides(forceCalcSlides);
|
517
576
|
}
|
518
577
|
|
519
|
-
if (params.slidesPerView==='auto') {
|
578
|
+
if (params.slidesPerView === 'auto') {
|
520
579
|
//Auto mode
|
521
580
|
var slidesWidth = 0;
|
522
581
|
var slidesHeight = 0;
|
523
582
|
|
524
583
|
//Unset Styles
|
525
|
-
if (params.slidesOffset>0) {
|
584
|
+
if (params.slidesOffset > 0) {
|
526
585
|
wrapper.style.paddingLeft = '';
|
527
586
|
wrapper.style.paddingRight = '';
|
528
587
|
wrapper.style.paddingTop = '';
|
@@ -530,71 +589,87 @@ var Swiper = function (selector, params) {
|
|
530
589
|
}
|
531
590
|
wrapper.style.width = '';
|
532
591
|
wrapper.style.height = '';
|
533
|
-
if (params.offsetPxBefore>0) {
|
592
|
+
if (params.offsetPxBefore > 0) {
|
534
593
|
if (isH) _this.wrapperLeft = params.offsetPxBefore;
|
535
594
|
else _this.wrapperTop = params.offsetPxBefore;
|
536
595
|
}
|
537
|
-
if (params.offsetPxAfter>0) {
|
596
|
+
if (params.offsetPxAfter > 0) {
|
538
597
|
if (isH) _this.wrapperRight = params.offsetPxAfter;
|
539
598
|
else _this.wrapperBottom = params.offsetPxAfter;
|
540
599
|
}
|
541
600
|
|
542
601
|
if (params.centeredSlides) {
|
543
602
|
if (isH) {
|
544
|
-
_this.wrapperLeft = (containerSize - this.slides[0].getWidth(true)
|
545
|
-
_this.wrapperRight = (containerSize - _this.slides[
|
603
|
+
_this.wrapperLeft = (containerSize - this.slides[0].getWidth(true)) / 2;
|
604
|
+
_this.wrapperRight = (containerSize - _this.slides[_this.slides.length - 1].getWidth(true)) / 2;
|
546
605
|
}
|
547
606
|
else {
|
548
|
-
_this.wrapperTop = (containerSize - _this.slides[0].getHeight(true))/2;
|
549
|
-
_this.wrapperBottom = (containerSize - _this.slides[
|
607
|
+
_this.wrapperTop = (containerSize - _this.slides[0].getHeight(true)) / 2;
|
608
|
+
_this.wrapperBottom = (containerSize - _this.slides[_this.slides.length - 1].getHeight(true)) / 2;
|
550
609
|
}
|
551
610
|
}
|
552
611
|
|
553
612
|
if (isH) {
|
554
|
-
if (_this.wrapperLeft>=0) wrapper.style.paddingLeft = _this.wrapperLeft+'px';
|
555
|
-
if (_this.wrapperRight>=0) wrapper.style.paddingRight = _this.wrapperRight+'px';
|
613
|
+
if (_this.wrapperLeft >= 0) wrapper.style.paddingLeft = _this.wrapperLeft + 'px';
|
614
|
+
if (_this.wrapperRight >= 0) wrapper.style.paddingRight = _this.wrapperRight + 'px';
|
556
615
|
}
|
557
616
|
else {
|
558
|
-
if (_this.wrapperTop>=0) wrapper.style.paddingTop = _this.wrapperTop+'px';
|
559
|
-
if (_this.wrapperBottom>=0) wrapper.style.paddingBottom = _this.wrapperBottom+'px';
|
617
|
+
if (_this.wrapperTop >= 0) wrapper.style.paddingTop = _this.wrapperTop + 'px';
|
618
|
+
if (_this.wrapperBottom >= 0) wrapper.style.paddingBottom = _this.wrapperBottom + 'px';
|
560
619
|
}
|
561
|
-
|
562
|
-
var centeredSlideLeft=0;
|
620
|
+
slideLeft = 0;
|
621
|
+
var centeredSlideLeft = 0;
|
563
622
|
_this.snapGrid = [];
|
564
623
|
_this.slidesGrid = [];
|
565
624
|
|
566
|
-
|
567
|
-
for(
|
568
|
-
|
569
|
-
|
625
|
+
slideMaxHeight = 0;
|
626
|
+
for (i = 0; i < _this.slides.length; i++) {
|
627
|
+
slideWidth = _this.slides[i].getWidth(true);
|
628
|
+
slideHeight = _this.slides[i].getHeight(true);
|
570
629
|
if (params.calculateHeight) {
|
571
|
-
slideMaxHeight = Math.max(slideMaxHeight, slideHeight)
|
630
|
+
slideMaxHeight = Math.max(slideMaxHeight, slideHeight);
|
572
631
|
}
|
573
632
|
var _slideSize = isH ? slideWidth : slideHeight;
|
574
633
|
if (params.centeredSlides) {
|
575
|
-
var nextSlideWidth = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getWidth(true);
|
576
|
-
var nextSlideHeight = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getHeight(true);
|
634
|
+
var nextSlideWidth = i === _this.slides.length - 1 ? 0 : _this.slides[i + 1].getWidth(true);
|
635
|
+
var nextSlideHeight = i === _this.slides.length - 1 ? 0 : _this.slides[i + 1].getHeight(true);
|
577
636
|
var nextSlideSize = isH ? nextSlideWidth : nextSlideHeight;
|
578
|
-
if (_slideSize>containerSize) {
|
579
|
-
|
580
|
-
|
581
|
-
|
637
|
+
if (_slideSize > containerSize) {
|
638
|
+
if (params.slidesPerViewFit) {
|
639
|
+
_this.snapGrid.push(slideLeft + _this.wrapperLeft);
|
640
|
+
_this.snapGrid.push(slideLeft + _slideSize - containerSize + _this.wrapperLeft);
|
641
|
+
}
|
642
|
+
else {
|
643
|
+
for (var j = 0; j <= Math.floor(_slideSize / (containerSize + _this.wrapperLeft)); j++) {
|
644
|
+
if (j === 0) _this.snapGrid.push(slideLeft + _this.wrapperLeft);
|
645
|
+
else _this.snapGrid.push(slideLeft + _this.wrapperLeft + containerSize * j);
|
646
|
+
}
|
582
647
|
}
|
583
|
-
_this.slidesGrid.push(slideLeft+_this.wrapperLeft);
|
648
|
+
_this.slidesGrid.push(slideLeft + _this.wrapperLeft);
|
584
649
|
}
|
585
650
|
else {
|
586
651
|
_this.snapGrid.push(centeredSlideLeft);
|
587
652
|
_this.slidesGrid.push(centeredSlideLeft);
|
588
653
|
}
|
589
|
-
|
590
|
-
centeredSlideLeft += _slideSize/2 + nextSlideSize/2;
|
591
|
-
|
654
|
+
centeredSlideLeft += _slideSize / 2 + nextSlideSize / 2;
|
592
655
|
}
|
593
656
|
else {
|
594
|
-
if (_slideSize>containerSize) {
|
595
|
-
|
596
|
-
_this.snapGrid.push(slideLeft
|
657
|
+
if (_slideSize > containerSize) {
|
658
|
+
if (params.slidesPerViewFit) {
|
659
|
+
_this.snapGrid.push(slideLeft);
|
660
|
+
_this.snapGrid.push(slideLeft + _slideSize - containerSize);
|
661
|
+
}
|
662
|
+
else {
|
663
|
+
if (containerSize !== 0) {
|
664
|
+
for (var k = 0; k <= Math.floor(_slideSize / containerSize); k++) {
|
665
|
+
_this.snapGrid.push(slideLeft + containerSize * k);
|
666
|
+
}
|
667
|
+
}
|
668
|
+
else {
|
669
|
+
_this.snapGrid.push(slideLeft);
|
670
|
+
}
|
597
671
|
}
|
672
|
+
|
598
673
|
}
|
599
674
|
else {
|
600
675
|
_this.snapGrid.push(slideLeft);
|
@@ -608,15 +683,15 @@ var Swiper = function (selector, params) {
|
|
608
683
|
slidesHeight += slideHeight;
|
609
684
|
}
|
610
685
|
if (params.calculateHeight) _this.height = slideMaxHeight;
|
611
|
-
if(isH) {
|
686
|
+
if (isH) {
|
612
687
|
wrapperSize = slidesWidth + _this.wrapperRight + _this.wrapperLeft;
|
613
|
-
wrapper.style.width = (slidesWidth)+'px';
|
614
|
-
wrapper.style.height = (_this.height)+'px';
|
688
|
+
wrapper.style.width = (slidesWidth) + 'px';
|
689
|
+
wrapper.style.height = (_this.height) + 'px';
|
615
690
|
}
|
616
691
|
else {
|
617
692
|
wrapperSize = slidesHeight + _this.wrapperTop + _this.wrapperBottom;
|
618
|
-
wrapper.style.width = (_this.width)+'px';
|
619
|
-
wrapper.style.height = (slidesHeight)+'px';
|
693
|
+
wrapper.style.width = (_this.width) + 'px';
|
694
|
+
wrapper.style.height = (slidesHeight) + 'px';
|
620
695
|
}
|
621
696
|
|
622
697
|
}
|
@@ -624,125 +699,158 @@ var Swiper = function (selector, params) {
|
|
624
699
|
//Scroll Container
|
625
700
|
wrapper.style.width = '';
|
626
701
|
wrapper.style.height = '';
|
627
|
-
|
628
|
-
|
702
|
+
wrapperWidth = _this.slides[0].getWidth(true);
|
703
|
+
wrapperHeight = _this.slides[0].getHeight(true);
|
629
704
|
wrapperSize = isH ? wrapperWidth : wrapperHeight;
|
630
|
-
wrapper.style.width = wrapperWidth+'px';
|
631
|
-
wrapper.style.height = wrapperHeight+'px';
|
705
|
+
wrapper.style.width = wrapperWidth + 'px';
|
706
|
+
wrapper.style.height = wrapperHeight + 'px';
|
632
707
|
slideSize = isH ? wrapperWidth : wrapperHeight;
|
633
708
|
|
634
709
|
}
|
635
710
|
else {
|
636
711
|
//For usual slides
|
637
712
|
if (params.calculateHeight) {
|
638
|
-
|
639
|
-
|
713
|
+
slideMaxHeight = 0;
|
714
|
+
wrapperHeight = 0;
|
640
715
|
//ResetWrapperSize
|
641
|
-
if (!isH) _this.container.style.height= '';
|
642
|
-
wrapper.style.height='';
|
716
|
+
if (!isH) _this.container.style.height = '';
|
717
|
+
wrapper.style.height = '';
|
643
718
|
|
644
|
-
for (
|
719
|
+
for (i = 0; i < _this.slides.length; i++) {
|
645
720
|
//ResetSlideSize
|
646
|
-
_this.slides[i].style.height='';
|
647
|
-
slideMaxHeight = Math.max(
|
648
|
-
if (!isH) wrapperHeight+=_this.slides[i].getHeight(true);
|
721
|
+
_this.slides[i].style.height = '';
|
722
|
+
slideMaxHeight = Math.max(_this.slides[i].getHeight(true), slideMaxHeight);
|
723
|
+
if (!isH) wrapperHeight += _this.slides[i].getHeight(true);
|
649
724
|
}
|
650
|
-
|
725
|
+
slideHeight = slideMaxHeight;
|
651
726
|
_this.height = slideHeight;
|
652
727
|
|
653
728
|
if (isH) wrapperHeight = slideHeight;
|
654
|
-
else
|
729
|
+
else {
|
730
|
+
containerSize = slideHeight;
|
731
|
+
_this.container.style.height = containerSize + 'px';
|
732
|
+
}
|
655
733
|
}
|
656
734
|
else {
|
657
|
-
|
658
|
-
|
735
|
+
slideHeight = isH ? _this.height : _this.height / params.slidesPerView;
|
736
|
+
wrapperHeight = isH ? _this.height : _this.slides.length * slideHeight;
|
659
737
|
}
|
660
|
-
|
661
|
-
|
738
|
+
slideWidth = isH ? _this.width / params.slidesPerView : _this.width;
|
739
|
+
wrapperWidth = isH ? _this.slides.length * slideWidth : _this.width;
|
662
740
|
slideSize = isH ? slideWidth : slideHeight;
|
663
741
|
|
664
|
-
if (params.offsetSlidesBefore>0) {
|
665
|
-
if (isH) _this.wrapperLeft = slideSize*params.offsetSlidesBefore;
|
666
|
-
else _this.wrapperTop = slideSize*params.offsetSlidesBefore;
|
742
|
+
if (params.offsetSlidesBefore > 0) {
|
743
|
+
if (isH) _this.wrapperLeft = slideSize * params.offsetSlidesBefore;
|
744
|
+
else _this.wrapperTop = slideSize * params.offsetSlidesBefore;
|
667
745
|
}
|
668
|
-
if (params.offsetSlidesAfter>0) {
|
669
|
-
if (isH) _this.wrapperRight = slideSize*params.offsetSlidesAfter;
|
670
|
-
else _this.wrapperBottom = slideSize*params.offsetSlidesAfter;
|
746
|
+
if (params.offsetSlidesAfter > 0) {
|
747
|
+
if (isH) _this.wrapperRight = slideSize * params.offsetSlidesAfter;
|
748
|
+
else _this.wrapperBottom = slideSize * params.offsetSlidesAfter;
|
671
749
|
}
|
672
|
-
if (params.offsetPxBefore>0) {
|
750
|
+
if (params.offsetPxBefore > 0) {
|
673
751
|
if (isH) _this.wrapperLeft = params.offsetPxBefore;
|
674
752
|
else _this.wrapperTop = params.offsetPxBefore;
|
675
753
|
}
|
676
|
-
if (params.offsetPxAfter>0) {
|
754
|
+
if (params.offsetPxAfter > 0) {
|
677
755
|
if (isH) _this.wrapperRight = params.offsetPxAfter;
|
678
756
|
else _this.wrapperBottom = params.offsetPxAfter;
|
679
757
|
}
|
680
758
|
if (params.centeredSlides) {
|
681
759
|
if (isH) {
|
682
|
-
_this.wrapperLeft = (containerSize - slideSize)/2;
|
683
|
-
_this.wrapperRight = (containerSize - slideSize)/2;
|
760
|
+
_this.wrapperLeft = (containerSize - slideSize) / 2;
|
761
|
+
_this.wrapperRight = (containerSize - slideSize) / 2;
|
684
762
|
}
|
685
763
|
else {
|
686
|
-
_this.wrapperTop = (containerSize - slideSize)/2;
|
687
|
-
_this.wrapperBottom = (containerSize - slideSize)/2;
|
764
|
+
_this.wrapperTop = (containerSize - slideSize) / 2;
|
765
|
+
_this.wrapperBottom = (containerSize - slideSize) / 2;
|
688
766
|
}
|
689
767
|
}
|
690
768
|
if (isH) {
|
691
|
-
if (_this.wrapperLeft>0) wrapper.style.paddingLeft = _this.wrapperLeft+'px';
|
692
|
-
if (_this.wrapperRight>0) wrapper.style.paddingRight = _this.wrapperRight+'px';
|
769
|
+
if (_this.wrapperLeft > 0) wrapper.style.paddingLeft = _this.wrapperLeft + 'px';
|
770
|
+
if (_this.wrapperRight > 0) wrapper.style.paddingRight = _this.wrapperRight + 'px';
|
693
771
|
}
|
694
772
|
else {
|
695
|
-
if (_this.wrapperTop>0) wrapper.style.paddingTop = _this.wrapperTop+'px';
|
696
|
-
if (_this.wrapperBottom>0) wrapper.style.paddingBottom = _this.wrapperBottom+'px';
|
773
|
+
if (_this.wrapperTop > 0) wrapper.style.paddingTop = _this.wrapperTop + 'px';
|
774
|
+
if (_this.wrapperBottom > 0) wrapper.style.paddingBottom = _this.wrapperBottom + 'px';
|
697
775
|
}
|
698
776
|
|
699
777
|
wrapperSize = isH ? wrapperWidth + _this.wrapperRight + _this.wrapperLeft : wrapperHeight + _this.wrapperTop + _this.wrapperBottom;
|
700
|
-
|
701
|
-
|
702
|
-
|
778
|
+
if (!params.cssWidthAndHeight) {
|
779
|
+
if (parseFloat(wrapperWidth) > 0) {
|
780
|
+
wrapper.style.width = wrapperWidth + 'px';
|
781
|
+
}
|
782
|
+
if (parseFloat(wrapperHeight) > 0) {
|
783
|
+
wrapper.style.height = wrapperHeight + 'px';
|
784
|
+
}
|
785
|
+
}
|
786
|
+
slideLeft = 0;
|
703
787
|
_this.snapGrid = [];
|
704
788
|
_this.slidesGrid = [];
|
705
|
-
for (
|
789
|
+
for (i = 0; i < _this.slides.length; i++) {
|
706
790
|
_this.snapGrid.push(slideLeft);
|
707
791
|
_this.slidesGrid.push(slideLeft);
|
708
|
-
slideLeft+=slideSize;
|
709
|
-
|
710
|
-
|
792
|
+
slideLeft += slideSize;
|
793
|
+
if (!params.cssWidthAndHeight) {
|
794
|
+
if (parseFloat(slideWidth) > 0) {
|
795
|
+
_this.slides[i].style.width = slideWidth + 'px';
|
796
|
+
}
|
797
|
+
if (parseFloat(slideHeight) > 0) {
|
798
|
+
_this.slides[i].style.height = slideHeight + 'px';
|
799
|
+
}
|
800
|
+
}
|
711
801
|
}
|
712
802
|
|
713
803
|
}
|
714
804
|
|
715
805
|
if (!_this.initialized) {
|
716
806
|
_this.callPlugins('onFirstInit');
|
717
|
-
if (params.onFirstInit) params.onFirstInit
|
807
|
+
if (params.onFirstInit) _this.fireCallback(params.onFirstInit, _this);
|
718
808
|
}
|
719
809
|
else {
|
720
810
|
_this.callPlugins('onInit');
|
721
|
-
if (params.onInit) params.onInit
|
811
|
+
if (params.onInit) _this.fireCallback(params.onInit, _this);
|
722
812
|
}
|
723
813
|
_this.initialized = true;
|
724
|
-
}
|
814
|
+
};
|
815
|
+
|
725
816
|
_this.reInit = function (forceCalcSlides) {
|
726
817
|
_this.init(true, forceCalcSlides);
|
727
|
-
}
|
728
|
-
|
818
|
+
};
|
819
|
+
|
820
|
+
_this.resizeFix = function (reInit) {
|
729
821
|
_this.callPlugins('beforeResizeFix');
|
730
|
-
|
822
|
+
|
823
|
+
_this.init(params.resizeReInit || reInit);
|
824
|
+
|
825
|
+
// swipe to active slide in fixed mode
|
731
826
|
if (!params.freeMode) {
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
827
|
+
_this.swipeTo((params.loop ? _this.activeLoopIndex : _this.activeIndex), 0, false);
|
828
|
+
// Fix autoplay
|
829
|
+
if (params.autoplay) {
|
830
|
+
if (_this.support.transitions && typeof autoplayTimeoutId !== 'undefined') {
|
831
|
+
if (typeof autoplayTimeoutId !== 'undefined') {
|
832
|
+
clearTimeout(autoplayTimeoutId);
|
833
|
+
autoplayTimeoutId = undefined;
|
834
|
+
_this.startAutoplay();
|
835
|
+
}
|
836
|
+
}
|
837
|
+
else {
|
838
|
+
if (typeof autoplayIntervalId !== 'undefined') {
|
839
|
+
clearInterval(autoplayIntervalId);
|
840
|
+
autoplayIntervalId = undefined;
|
841
|
+
_this.startAutoplay();
|
842
|
+
}
|
843
|
+
}
|
742
844
|
}
|
743
845
|
}
|
846
|
+
// move wrapper to the beginning in free mode
|
847
|
+
else if (_this.getWrapperTranslate() < -maxWrapperPosition()) {
|
848
|
+
_this.setWrapperTransition(0);
|
849
|
+
_this.setWrapperTranslate(-maxWrapperPosition());
|
850
|
+
}
|
851
|
+
|
744
852
|
_this.callPlugins('afterResizeFix');
|
745
|
-
}
|
853
|
+
};
|
746
854
|
|
747
855
|
/*==========================================
|
748
856
|
Max and Min Positions
|
@@ -753,13 +861,10 @@ var Swiper = function (selector, params) {
|
|
753
861
|
a = wrapperSize - containerSize;
|
754
862
|
}
|
755
863
|
// if (params.loop) a -= containerSize;
|
756
|
-
if (params.slidesPerView > _this.slides.length
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
function minWrapperPosition() {
|
761
|
-
var a = 0;
|
762
|
-
// if (params.loop) a = containerSize;
|
864
|
+
if (params.slidesPerView > _this.slides.length && !params.centeredSlides) {
|
865
|
+
a = 0;
|
866
|
+
}
|
867
|
+
if (a < 0) a = 0;
|
763
868
|
return a;
|
764
869
|
}
|
765
870
|
|
@@ -767,100 +872,105 @@ var Swiper = function (selector, params) {
|
|
767
872
|
Event Listeners
|
768
873
|
============================================*/
|
769
874
|
function initEvents() {
|
875
|
+
var bind = _this.h.addEventListener;
|
876
|
+
var eventTarget = params.eventTarget === 'wrapper' ? _this.wrapper : _this.container;
|
770
877
|
//Touch Events
|
771
|
-
if (!_this.browser.ie10) {
|
878
|
+
if (! (_this.browser.ie10 || _this.browser.ie11)) {
|
772
879
|
if (_this.support.touch) {
|
773
|
-
|
774
|
-
|
775
|
-
|
880
|
+
bind(eventTarget, 'touchstart', onTouchStart);
|
881
|
+
bind(eventTarget, 'touchmove', onTouchMove);
|
882
|
+
bind(eventTarget, 'touchend', onTouchEnd);
|
776
883
|
}
|
777
884
|
if (params.simulateTouch) {
|
778
|
-
|
779
|
-
|
780
|
-
|
885
|
+
bind(eventTarget, 'mousedown', onTouchStart);
|
886
|
+
bind(document, 'mousemove', onTouchMove);
|
887
|
+
bind(document, 'mouseup', onTouchEnd);
|
781
888
|
}
|
782
889
|
}
|
783
890
|
else {
|
784
|
-
|
785
|
-
|
786
|
-
|
891
|
+
bind(eventTarget, _this.touchEvents.touchStart, onTouchStart);
|
892
|
+
bind(document, _this.touchEvents.touchMove, onTouchMove);
|
893
|
+
bind(document, _this.touchEvents.touchEnd, onTouchEnd);
|
787
894
|
}
|
895
|
+
|
788
896
|
//Resize Event
|
789
897
|
if (params.autoResize) {
|
790
|
-
|
898
|
+
bind(window, 'resize', _this.resizeFix);
|
791
899
|
}
|
792
900
|
//Slide Events
|
793
901
|
addSlideEvents();
|
794
902
|
//Mousewheel
|
795
903
|
_this._wheelEvent = false;
|
796
904
|
if (params.mousewheelControl) {
|
797
|
-
if (
|
798
|
-
_this._wheelEvent =
|
905
|
+
if (document.onmousewheel !== undefined) {
|
906
|
+
_this._wheelEvent = 'mousewheel';
|
799
907
|
}
|
800
908
|
try {
|
801
|
-
WheelEvent(
|
802
|
-
_this._wheelEvent =
|
909
|
+
new WheelEvent('wheel');
|
910
|
+
_this._wheelEvent = 'wheel';
|
803
911
|
} catch (e) {}
|
804
|
-
if (
|
805
|
-
_this._wheelEvent =
|
912
|
+
if (!_this._wheelEvent) {
|
913
|
+
_this._wheelEvent = 'DOMMouseScroll';
|
806
914
|
}
|
807
915
|
|
808
916
|
if (_this._wheelEvent) {
|
809
|
-
|
917
|
+
bind(_this.container, _this._wheelEvent, handleMousewheel);
|
810
918
|
}
|
811
919
|
}
|
812
920
|
|
813
921
|
//Keyboard
|
814
|
-
if (params.keyboardControl) {
|
815
|
-
_this.h.addEventListener(document, 'keydown', handleKeyboardKeys, false);
|
816
|
-
}
|
817
|
-
if (params.updateOnImagesReady) {
|
818
|
-
if (document.querySelectorAll) _this.imagesToLoad = _this.container.querySelectorAll('img');
|
819
|
-
else if (window.jQuery) _this.imagesToLoad = $$(_this.container).find('img');
|
820
|
-
|
821
|
-
for (var i=0; i<_this.imagesToLoad.length; i++) {
|
822
|
-
_loadImage(_this.imagesToLoad[i].getAttribute('src'))
|
823
|
-
}
|
824
|
-
}
|
825
922
|
function _loadImage(src) {
|
826
923
|
var image = new Image();
|
827
|
-
image.onload = function(){
|
828
|
-
_this.imagesLoaded++;
|
829
|
-
if (_this.imagesLoaded
|
924
|
+
image.onload = function () {
|
925
|
+
if (_this && _this.imagesLoaded) _this.imagesLoaded++;
|
926
|
+
if (_this.imagesLoaded === _this.imagesToLoad.length) {
|
830
927
|
_this.reInit();
|
831
|
-
if (params.onImagesReady) params.onImagesReady
|
928
|
+
if (params.onImagesReady) _this.fireCallback(params.onImagesReady, _this);
|
832
929
|
}
|
833
|
-
}
|
930
|
+
};
|
834
931
|
image.src = src;
|
835
932
|
}
|
836
|
-
}
|
837
933
|
|
934
|
+
if (params.keyboardControl) {
|
935
|
+
bind(document, 'keydown', handleKeyboardKeys);
|
936
|
+
}
|
937
|
+
if (params.updateOnImagesReady) {
|
938
|
+
_this.imagesToLoad = $$('img', _this.container);
|
838
939
|
|
940
|
+
for (var i = 0; i < _this.imagesToLoad.length; i++) {
|
941
|
+
_loadImage(_this.imagesToLoad[i].getAttribute('src'));
|
942
|
+
}
|
943
|
+
}
|
944
|
+
}
|
839
945
|
|
840
946
|
//Remove Event Listeners
|
841
|
-
_this.destroy = function(
|
947
|
+
_this.destroy = function () {
|
948
|
+
var unbind = _this.h.removeEventListener;
|
949
|
+
var eventTarget = params.eventTarget === 'wrapper' ? _this.wrapper : _this.container;
|
842
950
|
//Touch Events
|
843
|
-
if (!_this.browser.ie10) {
|
951
|
+
if (! (_this.browser.ie10 || _this.browser.ie11)) {
|
844
952
|
if (_this.support.touch) {
|
845
|
-
|
846
|
-
|
847
|
-
|
953
|
+
unbind(eventTarget, 'touchstart', onTouchStart);
|
954
|
+
unbind(eventTarget, 'touchmove', onTouchMove);
|
955
|
+
unbind(eventTarget, 'touchend', onTouchEnd);
|
848
956
|
}
|
849
957
|
if (params.simulateTouch) {
|
850
|
-
|
851
|
-
|
852
|
-
|
958
|
+
unbind(eventTarget, 'mousedown', onTouchStart);
|
959
|
+
unbind(document, 'mousemove', onTouchMove);
|
960
|
+
unbind(document, 'mouseup', onTouchEnd);
|
853
961
|
}
|
854
962
|
}
|
855
963
|
else {
|
856
|
-
|
857
|
-
|
858
|
-
|
964
|
+
unbind(eventTarget, _this.touchEvents.touchStart, onTouchStart);
|
965
|
+
unbind(document, _this.touchEvents.touchMove, onTouchMove);
|
966
|
+
unbind(document, _this.touchEvents.touchEnd, onTouchEnd);
|
859
967
|
}
|
968
|
+
|
860
969
|
//Resize Event
|
861
970
|
if (params.autoResize) {
|
862
|
-
|
971
|
+
unbind(window, 'resize', _this.resizeFix);
|
863
972
|
}
|
973
|
+
|
864
974
|
//Init Slide Events
|
865
975
|
removeSlideEvents();
|
866
976
|
|
@@ -871,12 +981,12 @@ var Swiper = function (selector, params) {
|
|
871
981
|
|
872
982
|
//Mousewheel
|
873
983
|
if (params.mousewheelControl && _this._wheelEvent) {
|
874
|
-
|
984
|
+
unbind(_this.container, _this._wheelEvent, handleMousewheel);
|
875
985
|
}
|
876
986
|
|
877
987
|
//Keyboard
|
878
988
|
if (params.keyboardControl) {
|
879
|
-
|
989
|
+
unbind(document, 'keydown', handleKeyboardKeys);
|
880
990
|
}
|
881
991
|
|
882
992
|
//Stop autoplay
|
@@ -887,83 +997,79 @@ var Swiper = function (selector, params) {
|
|
887
997
|
|
888
998
|
//Destroy variable
|
889
999
|
_this = null;
|
890
|
-
}
|
1000
|
+
};
|
1001
|
+
|
891
1002
|
function addSlideEvents() {
|
1003
|
+
var bind = _this.h.addEventListener,
|
1004
|
+
i;
|
1005
|
+
|
892
1006
|
//Prevent Links Events
|
893
1007
|
if (params.preventLinks) {
|
894
|
-
var links =
|
895
|
-
|
896
|
-
links
|
897
|
-
}
|
898
|
-
else if (window.jQuery) {
|
899
|
-
links = $$(_this.container).find('a');
|
900
|
-
}
|
901
|
-
for (var i=0; i<links.length; i++) {
|
902
|
-
_this.h.addEventListener(links[i], 'click', preventClick, false);
|
1008
|
+
var links = $$('a', _this.container);
|
1009
|
+
for (i = 0; i < links.length; i++) {
|
1010
|
+
bind(links[i], 'click', preventClick);
|
903
1011
|
}
|
904
1012
|
}
|
905
1013
|
//Release Form Elements
|
906
1014
|
if (params.releaseFormElements) {
|
907
|
-
var formElements =
|
908
|
-
for (
|
909
|
-
|
1015
|
+
var formElements = $$('input, textarea, select', _this.container);
|
1016
|
+
for (i = 0; i < formElements.length; i++) {
|
1017
|
+
bind(formElements[i], _this.touchEvents.touchStart, releaseForms, true);
|
910
1018
|
}
|
911
1019
|
}
|
912
1020
|
|
913
1021
|
//Slide Clicks & Touches
|
914
1022
|
if (params.onSlideClick) {
|
915
|
-
for (
|
916
|
-
|
1023
|
+
for (i = 0; i < _this.slides.length; i++) {
|
1024
|
+
bind(_this.slides[i], 'click', slideClick);
|
917
1025
|
}
|
918
1026
|
}
|
919
1027
|
if (params.onSlideTouch) {
|
920
|
-
for (
|
921
|
-
|
1028
|
+
for (i = 0; i < _this.slides.length; i++) {
|
1029
|
+
bind(_this.slides[i], _this.touchEvents.touchStart, slideTouch);
|
922
1030
|
}
|
923
1031
|
}
|
924
1032
|
}
|
925
1033
|
function removeSlideEvents() {
|
1034
|
+
var unbind = _this.h.removeEventListener,
|
1035
|
+
i;
|
1036
|
+
|
926
1037
|
//Slide Clicks & Touches
|
927
1038
|
if (params.onSlideClick) {
|
928
|
-
for (
|
929
|
-
|
1039
|
+
for (i = 0; i < _this.slides.length; i++) {
|
1040
|
+
unbind(_this.slides[i], 'click', slideClick);
|
930
1041
|
}
|
931
1042
|
}
|
932
1043
|
if (params.onSlideTouch) {
|
933
|
-
for (
|
934
|
-
|
1044
|
+
for (i = 0; i < _this.slides.length; i++) {
|
1045
|
+
unbind(_this.slides[i], _this.touchEvents.touchStart, slideTouch);
|
935
1046
|
}
|
936
1047
|
}
|
937
1048
|
//Release Form Elements
|
938
1049
|
if (params.releaseFormElements) {
|
939
|
-
var formElements =
|
940
|
-
for (
|
941
|
-
|
1050
|
+
var formElements = $$('input, textarea, select', _this.container);
|
1051
|
+
for (i = 0; i < formElements.length; i++) {
|
1052
|
+
unbind(formElements[i], _this.touchEvents.touchStart, releaseForms, true);
|
942
1053
|
}
|
943
1054
|
}
|
944
1055
|
//Prevent Links Events
|
945
1056
|
if (params.preventLinks) {
|
946
|
-
var links =
|
947
|
-
|
948
|
-
links
|
949
|
-
}
|
950
|
-
else if (window.jQuery) {
|
951
|
-
links = $$(_this.container).find('a');
|
952
|
-
}
|
953
|
-
for (var i=0; i<links.length; i++) {
|
954
|
-
_this.h.removeEventListener(links[i], 'click', preventClick, false);
|
1057
|
+
var links = $$('a', _this.container);
|
1058
|
+
for (i = 0; i < links.length; i++) {
|
1059
|
+
unbind(links[i], 'click', preventClick);
|
955
1060
|
}
|
956
1061
|
}
|
957
1062
|
}
|
958
1063
|
/*==========================================
|
959
1064
|
Keyboard Control
|
960
1065
|
============================================*/
|
961
|
-
function handleKeyboardKeys
|
1066
|
+
function handleKeyboardKeys(e) {
|
962
1067
|
var kc = e.keyCode || e.charCode;
|
963
|
-
if (
|
1068
|
+
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) return;
|
1069
|
+
if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {
|
964
1070
|
var inView = false;
|
965
1071
|
//Check that swiper should be inside of visible area of window
|
966
|
-
var swiperOffset = _this.h.getOffset(
|
1072
|
+
var swiperOffset = _this.h.getOffset(_this.container);
|
967
1073
|
var scrollLeft = _this.h.windowScroll().left;
|
968
1074
|
var scrollTop = _this.h.windowScroll().top;
|
969
1075
|
var windowWidth = _this.h.windowWidth();
|
@@ -973,12 +1079,12 @@ var Swiper = function (selector, params) {
|
|
973
1079
|
[swiperOffset.left + _this.width, swiperOffset.top],
|
974
1080
|
[swiperOffset.left, swiperOffset.top + _this.height],
|
975
1081
|
[swiperOffset.left + _this.width, swiperOffset.top + _this.height]
|
976
|
-
]
|
977
|
-
for (var i=0; i<swiperCoord.length; i++) {
|
1082
|
+
];
|
1083
|
+
for (var i = 0; i < swiperCoord.length; i++) {
|
978
1084
|
var point = swiperCoord[i];
|
979
1085
|
if (
|
980
|
-
point[0]>=scrollLeft && point[0]<=scrollLeft+windowWidth &&
|
981
|
-
point[1]>=scrollTop && point[1]<=scrollTop+windowHeight
|
1086
|
+
point[0] >= scrollLeft && point[0] <= scrollLeft + windowWidth &&
|
1087
|
+
point[1] >= scrollTop && point[1] <= scrollTop + windowHeight
|
982
1088
|
) {
|
983
1089
|
inView = true;
|
984
1090
|
}
|
@@ -987,68 +1093,103 @@ var Swiper = function (selector, params) {
|
|
987
1093
|
if (!inView) return;
|
988
1094
|
}
|
989
1095
|
if (isH) {
|
990
|
-
if (kc
|
1096
|
+
if (kc === 37 || kc === 39) {
|
991
1097
|
if (e.preventDefault) e.preventDefault();
|
992
1098
|
else e.returnValue = false;
|
993
1099
|
}
|
994
|
-
if (kc
|
995
|
-
if (kc
|
1100
|
+
if (kc === 39) _this.swipeNext();
|
1101
|
+
if (kc === 37) _this.swipePrev();
|
996
1102
|
}
|
997
1103
|
else {
|
998
|
-
if (kc
|
1104
|
+
if (kc === 38 || kc === 40) {
|
999
1105
|
if (e.preventDefault) e.preventDefault();
|
1000
1106
|
else e.returnValue = false;
|
1001
1107
|
}
|
1002
|
-
if (kc
|
1003
|
-
if (kc
|
1108
|
+
if (kc === 40) _this.swipeNext();
|
1109
|
+
if (kc === 38) _this.swipePrev();
|
1004
1110
|
}
|
1005
1111
|
}
|
1006
1112
|
|
1113
|
+
_this.disableKeyboardControl = function () {
|
1114
|
+
params.keyboardControl = false;
|
1115
|
+
_this.h.removeEventListener(document, 'keydown', handleKeyboardKeys);
|
1116
|
+
};
|
1117
|
+
|
1118
|
+
_this.enableKeyboardControl = function () {
|
1119
|
+
params.keyboardControl = true;
|
1120
|
+
_this.h.addEventListener(document, 'keydown', handleKeyboardKeys);
|
1121
|
+
};
|
1122
|
+
|
1007
1123
|
/*==========================================
|
1008
1124
|
Mousewheel Control
|
1009
1125
|
============================================*/
|
1010
|
-
var
|
1011
|
-
function handleMousewheel
|
1126
|
+
var lastScrollTime = (new Date()).getTime();
|
1127
|
+
function handleMousewheel(e) {
|
1012
1128
|
var we = _this._wheelEvent;
|
1013
|
-
var delta;
|
1129
|
+
var delta = 0;
|
1130
|
+
|
1014
1131
|
//Opera & IE
|
1015
1132
|
if (e.detail) delta = -e.detail;
|
1016
1133
|
//WebKits
|
1017
|
-
else if (we
|
1134
|
+
else if (we === 'mousewheel') {
|
1135
|
+
if (params.mousewheelControlForceToAxis) {
|
1136
|
+
if (isH) {
|
1137
|
+
if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX;
|
1138
|
+
else return;
|
1139
|
+
}
|
1140
|
+
else {
|
1141
|
+
if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY;
|
1142
|
+
else return;
|
1143
|
+
}
|
1144
|
+
}
|
1145
|
+
else {
|
1146
|
+
delta = e.wheelDelta;
|
1147
|
+
}
|
1148
|
+
}
|
1018
1149
|
//Old FireFox
|
1019
|
-
else if (we
|
1150
|
+
else if (we === 'DOMMouseScroll') delta = -e.detail;
|
1020
1151
|
//New FireFox
|
1021
|
-
else if (we
|
1022
|
-
|
1152
|
+
else if (we === 'wheel') {
|
1153
|
+
if (params.mousewheelControlForceToAxis) {
|
1154
|
+
if (isH) {
|
1155
|
+
if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX;
|
1156
|
+
else return;
|
1157
|
+
}
|
1158
|
+
else {
|
1159
|
+
if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY;
|
1160
|
+
else return;
|
1161
|
+
}
|
1162
|
+
}
|
1163
|
+
else {
|
1164
|
+
delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX : - e.deltaY;
|
1165
|
+
}
|
1023
1166
|
}
|
1167
|
+
|
1024
1168
|
if (!params.freeMode) {
|
1025
|
-
if(
|
1026
|
-
|
1169
|
+
if ((new Date()).getTime() - lastScrollTime > 60) {
|
1170
|
+
if (delta < 0) _this.swipeNext();
|
1171
|
+
else _this.swipePrev();
|
1172
|
+
}
|
1173
|
+
lastScrollTime = (new Date()).getTime();
|
1174
|
+
|
1027
1175
|
}
|
1028
1176
|
else {
|
1029
1177
|
//Freemode or scrollContainer:
|
1030
|
-
var
|
1031
|
-
|
1032
|
-
if (
|
1033
|
-
|
1034
|
-
|
1035
|
-
if (x>0) x = 0;
|
1036
|
-
if (x<-maxWrapperPosition()) x = -maxWrapperPosition();
|
1037
|
-
}
|
1038
|
-
else {
|
1039
|
-
x = _this.getWrapperTranslate('x');
|
1040
|
-
y = _this.getWrapperTranslate('y')+delta;
|
1041
|
-
if (y>0) y = 0;
|
1042
|
-
if (y<-maxWrapperPosition()) y = -maxWrapperPosition();
|
1043
|
-
}
|
1178
|
+
var position = _this.getWrapperTranslate() + delta;
|
1179
|
+
|
1180
|
+
if (position > 0) position = 0;
|
1181
|
+
if (position < -maxWrapperPosition()) position = -maxWrapperPosition();
|
1182
|
+
|
1044
1183
|
_this.setWrapperTransition(0);
|
1045
|
-
_this.setWrapperTranslate(
|
1046
|
-
|
1047
|
-
|
1184
|
+
_this.setWrapperTranslate(position);
|
1185
|
+
_this.updateActiveSlide(position);
|
1186
|
+
|
1187
|
+
// Return page scroll on edge positions
|
1188
|
+
if (position === 0 || position === -maxWrapperPosition()) return;
|
1048
1189
|
}
|
1049
|
-
if (params.autoplay) _this.stopAutoplay();
|
1190
|
+
if (params.autoplay) _this.stopAutoplay(true);
|
1050
1191
|
|
1051
|
-
if(e.preventDefault) e.preventDefault();
|
1192
|
+
if (e.preventDefault) e.preventDefault();
|
1052
1193
|
else e.returnValue = false;
|
1053
1194
|
return false;
|
1054
1195
|
}
|
@@ -1057,51 +1198,59 @@ var Swiper = function (selector, params) {
|
|
1057
1198
|
Grab Cursor
|
1058
1199
|
===========================*/
|
1059
1200
|
if (params.grabCursor) {
|
1060
|
-
_this.container.style
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1201
|
+
var containerStyle = _this.container.style;
|
1202
|
+
containerStyle.cursor = 'move';
|
1203
|
+
containerStyle.cursor = 'grab';
|
1204
|
+
containerStyle.cursor = '-moz-grab';
|
1205
|
+
containerStyle.cursor = '-webkit-grab';
|
1064
1206
|
}
|
1065
1207
|
|
1066
1208
|
/*=========================
|
1067
1209
|
Slides Events Handlers
|
1068
1210
|
===========================*/
|
1069
|
-
|
1070
|
-
var found = false;
|
1071
|
-
while(!found) {
|
1072
|
-
if (el.className.indexOf(params.slideClass)>-1)
|
1073
|
-
{
|
1074
|
-
found = el;
|
1075
|
-
}
|
1076
|
-
el = el.parentElement;
|
1077
|
-
}
|
1078
|
-
return found;
|
1079
|
-
}
|
1211
|
+
|
1080
1212
|
_this.allowSlideClick = true;
|
1081
|
-
function slideClick(
|
1082
|
-
if(_this.allowSlideClick) {
|
1083
|
-
|
1084
|
-
|
1085
|
-
_this.clickedSlideIndex = _this.slides.indexOf(_this.clickedSlide);
|
1086
|
-
}
|
1087
|
-
else {
|
1088
|
-
_this.clickedSlide = this;
|
1089
|
-
_this.clickedSlideIndex = _this.slides.indexOf(this);
|
1090
|
-
}
|
1091
|
-
params.onSlideClick(_this);
|
1213
|
+
function slideClick(event) {
|
1214
|
+
if (_this.allowSlideClick) {
|
1215
|
+
setClickedSlide(event);
|
1216
|
+
_this.fireCallback(params.onSlideClick, _this, event);
|
1092
1217
|
}
|
1093
1218
|
}
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
_this.
|
1098
|
-
|
1219
|
+
|
1220
|
+
function slideTouch(event) {
|
1221
|
+
setClickedSlide(event);
|
1222
|
+
_this.fireCallback(params.onSlideTouch, _this, event);
|
1223
|
+
}
|
1224
|
+
|
1225
|
+
function setClickedSlide(event) {
|
1226
|
+
|
1227
|
+
// IE 6-8 support
|
1228
|
+
if (!event.currentTarget) {
|
1229
|
+
var element = event.srcElement;
|
1230
|
+
do {
|
1231
|
+
if (element.className.indexOf(params.slideClass) > -1) {
|
1232
|
+
break;
|
1233
|
+
}
|
1234
|
+
element = element.parentNode;
|
1235
|
+
} while (element);
|
1236
|
+
_this.clickedSlide = element;
|
1237
|
+
}
|
1238
|
+
else {
|
1239
|
+
_this.clickedSlide = event.currentTarget;
|
1240
|
+
}
|
1241
|
+
|
1242
|
+
_this.clickedSlideIndex = _this.slides.indexOf(_this.clickedSlide);
|
1243
|
+
_this.clickedSlideLoopIndex = _this.clickedSlideIndex - (_this.loopedSlides || 0);
|
1099
1244
|
}
|
1245
|
+
|
1100
1246
|
_this.allowLinks = true;
|
1101
1247
|
function preventClick(e) {
|
1102
1248
|
if (!_this.allowLinks) {
|
1103
|
-
if(e.preventDefault) e.preventDefault();
|
1249
|
+
if (e.preventDefault) e.preventDefault();
|
1104
1250
|
else e.returnValue = false;
|
1251
|
+
if (params.preventLinksPropagation && 'stopPropagation' in e) {
|
1252
|
+
e.stopPropagation();
|
1253
|
+
}
|
1105
1254
|
return false;
|
1106
1255
|
}
|
1107
1256
|
}
|
@@ -1109,6 +1258,7 @@ var Swiper = function (selector, params) {
|
|
1109
1258
|
if (e.stopPropagation) e.stopPropagation();
|
1110
1259
|
else e.returnValue = false;
|
1111
1260
|
return false;
|
1261
|
+
|
1112
1262
|
}
|
1113
1263
|
|
1114
1264
|
/*==================================================
|
@@ -1126,17 +1276,15 @@ var Swiper = function (selector, params) {
|
|
1126
1276
|
|
1127
1277
|
if (params.noSwiping && (event.target || event.srcElement) && noSwipingSlide(event.target || event.srcElement)) return false;
|
1128
1278
|
allowMomentumBounce = false;
|
1129
|
-
|
1130
1279
|
//Check For Nested Swipers
|
1131
1280
|
_this.isTouched = true;
|
1132
|
-
isTouchEvent = event.type
|
1281
|
+
isTouchEvent = event.type === 'touchstart';
|
1133
1282
|
|
1134
|
-
if (!isTouchEvent || event.targetTouches.length
|
1135
|
-
if (params.loop) _this.fixLoop();
|
1283
|
+
if (!isTouchEvent || event.targetTouches.length === 1) {
|
1136
1284
|
_this.callPlugins('onTouchStartBegin');
|
1137
1285
|
|
1138
|
-
if(!isTouchEvent) {
|
1139
|
-
if(event.preventDefault) event.preventDefault();
|
1286
|
+
if (!isTouchEvent && !_this.isAndroid) {
|
1287
|
+
if (event.preventDefault) event.preventDefault();
|
1140
1288
|
else event.returnValue = false;
|
1141
1289
|
}
|
1142
1290
|
|
@@ -1147,21 +1295,16 @@ var Swiper = function (selector, params) {
|
|
1147
1295
|
_this.touches.startX = _this.touches.currentX = pageX;
|
1148
1296
|
_this.touches.startY = _this.touches.currentY = pageY;
|
1149
1297
|
|
1150
|
-
_this.touches.start = _this.touches.current = isH ? pageX : pageY
|
1298
|
+
_this.touches.start = _this.touches.current = isH ? pageX : pageY;
|
1151
1299
|
|
1152
1300
|
//Set Transition Time to 0
|
1153
1301
|
_this.setWrapperTransition(0);
|
1154
1302
|
|
1155
1303
|
//Get Start Translate Position
|
1156
|
-
_this.positions.start = _this.positions.current =
|
1304
|
+
_this.positions.start = _this.positions.current = _this.getWrapperTranslate();
|
1157
1305
|
|
1158
1306
|
//Set Transform
|
1159
|
-
|
1160
|
-
_this.setWrapperTranslate( _this.positions.start, 0, 0);
|
1161
|
-
}
|
1162
|
-
else {
|
1163
|
-
_this.setWrapperTranslate( 0, _this.positions.start, 0);
|
1164
|
-
}
|
1307
|
+
_this.setWrapperTranslate(_this.positions.start);
|
1165
1308
|
|
1166
1309
|
//TouchStartTime
|
1167
1310
|
_this.times.start = (new Date()).getTime();
|
@@ -1170,10 +1313,12 @@ var Swiper = function (selector, params) {
|
|
1170
1313
|
isScrolling = undefined;
|
1171
1314
|
|
1172
1315
|
//Set Treshold
|
1173
|
-
if (params.moveStartThreshold>0)
|
1316
|
+
if (params.moveStartThreshold > 0) {
|
1317
|
+
allowThresholdMove = false;
|
1318
|
+
}
|
1174
1319
|
|
1175
1320
|
//CallBack
|
1176
|
-
if (params.onTouchStart) params.onTouchStart
|
1321
|
+
if (params.onTouchStart) _this.fireCallback(params.onTouchStart, _this);
|
1177
1322
|
_this.callPlugins('onTouchStartEnd');
|
1178
1323
|
|
1179
1324
|
}
|
@@ -1182,33 +1327,30 @@ var Swiper = function (selector, params) {
|
|
1182
1327
|
function onTouchMove(event) {
|
1183
1328
|
// If slider is not touched - exit
|
1184
1329
|
if (!_this.isTouched || params.onlyExternal) return;
|
1185
|
-
if (isTouchEvent && event.type
|
1330
|
+
if (isTouchEvent && event.type === 'mousemove') return;
|
1186
1331
|
|
1187
1332
|
var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX);
|
1188
1333
|
var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY);
|
1189
1334
|
|
1190
1335
|
//check for scrolling
|
1191
|
-
if (
|
1192
|
-
|
1336
|
+
if (typeof isScrolling === 'undefined' && isH) {
|
1337
|
+
isScrolling = !!(isScrolling || Math.abs(pageY - _this.touches.startY) > Math.abs(pageX - _this.touches.startX));
|
1193
1338
|
}
|
1194
|
-
if (
|
1195
|
-
|
1339
|
+
if (typeof isScrolling === 'undefined' && !isH) {
|
1340
|
+
isScrolling = !!(isScrolling || Math.abs(pageY - _this.touches.startY) < Math.abs(pageX - _this.touches.startX));
|
1196
1341
|
}
|
1197
|
-
if (isScrolling
|
1342
|
+
if (isScrolling) {
|
1198
1343
|
_this.isTouched = false;
|
1199
|
-
return
|
1344
|
+
return;
|
1200
1345
|
}
|
1201
1346
|
|
1202
1347
|
//Check For Nested Swipers
|
1203
1348
|
if (event.assignedToSwiper) {
|
1204
1349
|
_this.isTouched = false;
|
1205
|
-
return
|
1350
|
+
return;
|
1206
1351
|
}
|
1207
1352
|
event.assignedToSwiper = true;
|
1208
1353
|
|
1209
|
-
//Moved Flag
|
1210
|
-
_this.isMoved = true;
|
1211
|
-
|
1212
1354
|
//Block inner links
|
1213
1355
|
if (params.preventLinks) {
|
1214
1356
|
_this.allowLinks = false;
|
@@ -1219,71 +1361,86 @@ var Swiper = function (selector, params) {
|
|
1219
1361
|
|
1220
1362
|
//Stop AutoPlay if exist
|
1221
1363
|
if (params.autoplay) {
|
1222
|
-
_this.stopAutoplay();
|
1364
|
+
_this.stopAutoplay(true);
|
1223
1365
|
}
|
1224
|
-
if (!isTouchEvent || event.touches.length
|
1366
|
+
if (!isTouchEvent || event.touches.length === 1) {
|
1225
1367
|
|
1226
|
-
|
1227
|
-
if(
|
1368
|
+
//Moved Flag
|
1369
|
+
if (!_this.isMoved) {
|
1370
|
+
_this.callPlugins('onTouchMoveStart');
|
1371
|
+
|
1372
|
+
if (params.loop) {
|
1373
|
+
_this.fixLoop();
|
1374
|
+
_this.positions.start = _this.getWrapperTranslate();
|
1375
|
+
}
|
1376
|
+
if (params.onTouchMoveStart) _this.fireCallback(params.onTouchMoveStart, _this);
|
1377
|
+
}
|
1378
|
+
_this.isMoved = true;
|
1379
|
+
|
1380
|
+
// cancel event
|
1381
|
+
if (event.preventDefault) event.preventDefault();
|
1228
1382
|
else event.returnValue = false;
|
1229
1383
|
|
1230
|
-
_this.touches.current = isH ? pageX : pageY
|
1384
|
+
_this.touches.current = isH ? pageX : pageY;
|
1231
1385
|
|
1232
1386
|
_this.positions.current = (_this.touches.current - _this.touches.start) * params.touchRatio + _this.positions.start;
|
1233
1387
|
|
1234
1388
|
//Resistance Callbacks
|
1235
|
-
if(_this.positions.current > 0 && params.onResistanceBefore) {
|
1236
|
-
params.onResistanceBefore
|
1389
|
+
if (_this.positions.current > 0 && params.onResistanceBefore) {
|
1390
|
+
_this.fireCallback(params.onResistanceBefore, _this, _this.positions.current);
|
1237
1391
|
}
|
1238
|
-
if(_this.positions.current < -maxWrapperPosition() && params.onResistanceAfter) {
|
1239
|
-
params.onResistanceAfter
|
1392
|
+
if (_this.positions.current < -maxWrapperPosition() && params.onResistanceAfter) {
|
1393
|
+
_this.fireCallback(params.onResistanceAfter, _this, Math.abs(_this.positions.current + maxWrapperPosition()));
|
1240
1394
|
}
|
1241
1395
|
//Resistance
|
1242
|
-
if (params.resistance && params.resistance
|
1396
|
+
if (params.resistance && params.resistance !== '100%') {
|
1397
|
+
var resistance;
|
1243
1398
|
//Resistance for Negative-Back sliding
|
1244
|
-
if(_this.positions.current > 0) {
|
1245
|
-
|
1399
|
+
if (_this.positions.current > 0) {
|
1400
|
+
resistance = 1 - _this.positions.current / containerSize / 2;
|
1246
1401
|
if (resistance < 0.5)
|
1247
|
-
_this.positions.current = (containerSize/2);
|
1402
|
+
_this.positions.current = (containerSize / 2);
|
1248
1403
|
else
|
1249
1404
|
_this.positions.current = _this.positions.current * resistance;
|
1250
1405
|
}
|
1251
1406
|
//Resistance for After-End Sliding
|
1252
|
-
if (
|
1407
|
+
if (_this.positions.current < -maxWrapperPosition()) {
|
1253
1408
|
|
1254
|
-
var diff = (_this.touches.current - _this.touches.start)*params.touchRatio + (maxWrapperPosition()+_this.positions.start);
|
1255
|
-
|
1256
|
-
var newPos = _this.positions.current-diff*(1-resistance)/2;
|
1257
|
-
var stopPos = -maxWrapperPosition() - containerSize/2;
|
1409
|
+
var diff = (_this.touches.current - _this.touches.start) * params.touchRatio + (maxWrapperPosition() + _this.positions.start);
|
1410
|
+
resistance = (containerSize + diff) / (containerSize);
|
1411
|
+
var newPos = _this.positions.current - diff * (1 - resistance) / 2;
|
1412
|
+
var stopPos = -maxWrapperPosition() - containerSize / 2;
|
1258
1413
|
|
1259
|
-
if (newPos < stopPos || resistance<=0)
|
1414
|
+
if (newPos < stopPos || resistance <= 0)
|
1260
1415
|
_this.positions.current = stopPos;
|
1261
1416
|
else
|
1262
1417
|
_this.positions.current = newPos;
|
1263
1418
|
}
|
1264
1419
|
}
|
1265
|
-
if (params.resistance && params.resistance
|
1420
|
+
if (params.resistance && params.resistance === '100%') {
|
1266
1421
|
//Resistance for Negative-Back sliding
|
1267
|
-
if(_this.positions.current > 0 && !(params.freeMode
|
1422
|
+
if (_this.positions.current > 0 && !(params.freeMode && !params.freeModeFluid)) {
|
1268
1423
|
_this.positions.current = 0;
|
1269
1424
|
}
|
1270
1425
|
//Resistance for After-End Sliding
|
1271
|
-
if (
|
1426
|
+
if (_this.positions.current < -maxWrapperPosition() && !(params.freeMode && !params.freeModeFluid)) {
|
1272
1427
|
_this.positions.current = -maxWrapperPosition();
|
1273
1428
|
}
|
1274
1429
|
}
|
1275
1430
|
//Move Slides
|
1276
|
-
if (!params.followFinger) return
|
1431
|
+
if (!params.followFinger) return;
|
1277
1432
|
|
1278
1433
|
if (!params.moveStartThreshold) {
|
1279
|
-
|
1280
|
-
else _this.setWrapperTranslate( 0, _this.positions.current, 0);
|
1434
|
+
_this.setWrapperTranslate(_this.positions.current);
|
1281
1435
|
}
|
1282
1436
|
else {
|
1283
|
-
if (
|
1284
|
-
allowThresholdMove
|
1285
|
-
|
1286
|
-
|
1437
|
+
if (Math.abs(_this.touches.current - _this.touches.start) > params.moveStartThreshold || allowThresholdMove) {
|
1438
|
+
if (!allowThresholdMove) {
|
1439
|
+
allowThresholdMove = true;
|
1440
|
+
_this.touches.start = _this.touches.current;
|
1441
|
+
return;
|
1442
|
+
}
|
1443
|
+
_this.setWrapperTranslate(_this.positions.current);
|
1287
1444
|
}
|
1288
1445
|
else {
|
1289
1446
|
_this.positions.current = _this.positions.start;
|
@@ -1303,14 +1460,14 @@ var Swiper = function (selector, params) {
|
|
1303
1460
|
}
|
1304
1461
|
//Velocity
|
1305
1462
|
if (!velocityPrevPosition) velocityPrevPosition = _this.touches.current;
|
1306
|
-
if (!velocityPrevTime) velocityPrevTime = (new Date).getTime();
|
1307
|
-
_this.velocity = (_this.touches.current - velocityPrevPosition)/((new Date).getTime() - velocityPrevTime)/2;
|
1308
|
-
if (Math.abs(_this.touches.current - velocityPrevPosition)<2) _this.velocity=0;
|
1463
|
+
if (!velocityPrevTime) velocityPrevTime = (new Date()).getTime();
|
1464
|
+
_this.velocity = (_this.touches.current - velocityPrevPosition) / ((new Date()).getTime() - velocityPrevTime) / 2;
|
1465
|
+
if (Math.abs(_this.touches.current - velocityPrevPosition) < 2) _this.velocity = 0;
|
1309
1466
|
velocityPrevPosition = _this.touches.current;
|
1310
|
-
velocityPrevTime = (new Date).getTime();
|
1467
|
+
velocityPrevTime = (new Date()).getTime();
|
1311
1468
|
//Callbacks
|
1312
1469
|
_this.callPlugins('onTouchMoveEnd');
|
1313
|
-
if (params.onTouchMove) params.onTouchMove
|
1470
|
+
if (params.onTouchMove) _this.fireCallback(params.onTouchMove, _this);
|
1314
1471
|
|
1315
1472
|
return false;
|
1316
1473
|
}
|
@@ -1321,8 +1478,8 @@ var Swiper = function (selector, params) {
|
|
1321
1478
|
_this.swipeReset();
|
1322
1479
|
}
|
1323
1480
|
// If slider is not touched exit
|
1324
|
-
if (
|
1325
|
-
_this.isTouched = false
|
1481
|
+
if (params.onlyExternal || !_this.isTouched) return;
|
1482
|
+
_this.isTouched = false;
|
1326
1483
|
|
1327
1484
|
//Return Grab Cursor
|
1328
1485
|
if (params.grabCursor) {
|
@@ -1333,33 +1490,31 @@ var Swiper = function (selector, params) {
|
|
1333
1490
|
}
|
1334
1491
|
|
1335
1492
|
//Check for Current Position
|
1336
|
-
if (!_this.positions.current && _this.positions.current!==0) {
|
1337
|
-
_this.positions.current = _this.positions.start
|
1493
|
+
if (!_this.positions.current && _this.positions.current !== 0) {
|
1494
|
+
_this.positions.current = _this.positions.start;
|
1338
1495
|
}
|
1339
1496
|
|
1340
1497
|
//For case if slider touched but not moved
|
1341
1498
|
if (params.followFinger) {
|
1342
|
-
|
1343
|
-
else _this.setWrapperTranslate( 0, _this.positions.current, 0)
|
1499
|
+
_this.setWrapperTranslate(_this.positions.current);
|
1344
1500
|
}
|
1345
|
-
//--
|
1346
1501
|
|
1347
1502
|
// TouchEndTime
|
1348
1503
|
_this.times.end = (new Date()).getTime();
|
1349
1504
|
|
1350
1505
|
//Difference
|
1351
|
-
_this.touches.diff = _this.touches.current - _this.touches.start
|
1352
|
-
_this.touches.abs = Math.abs(_this.touches.diff)
|
1506
|
+
_this.touches.diff = _this.touches.current - _this.touches.start;
|
1507
|
+
_this.touches.abs = Math.abs(_this.touches.diff);
|
1353
1508
|
|
1354
|
-
_this.positions.diff = _this.positions.current - _this.positions.start
|
1355
|
-
_this.positions.abs = Math.abs(_this.positions.diff)
|
1509
|
+
_this.positions.diff = _this.positions.current - _this.positions.start;
|
1510
|
+
_this.positions.abs = Math.abs(_this.positions.diff);
|
1356
1511
|
|
1357
|
-
var diff = _this.positions.diff
|
1358
|
-
var diffAbs =_this.positions.abs
|
1359
|
-
var timeDiff = _this.times.end - _this.times.start
|
1512
|
+
var diff = _this.positions.diff;
|
1513
|
+
var diffAbs = _this.positions.abs;
|
1514
|
+
var timeDiff = _this.times.end - _this.times.start;
|
1360
1515
|
|
1361
|
-
if(diffAbs < 5 && (timeDiff) < 300 && _this.allowLinks
|
1362
|
-
if (!params.freeMode && diffAbs
|
1516
|
+
if (diffAbs < 5 && (timeDiff) < 300 && _this.allowLinks === false) {
|
1517
|
+
if (!params.freeMode && diffAbs !== 0) _this.swipeReset();
|
1363
1518
|
//Release inner links
|
1364
1519
|
if (params.preventLinks) {
|
1365
1520
|
_this.allowLinks = true;
|
@@ -1368,7 +1523,8 @@ var Swiper = function (selector, params) {
|
|
1368
1523
|
_this.allowSlideClick = true;
|
1369
1524
|
}
|
1370
1525
|
}
|
1371
|
-
|
1526
|
+
|
1527
|
+
setTimeout(function () {
|
1372
1528
|
//Release inner links
|
1373
1529
|
if (params.preventLinks) {
|
1374
1530
|
_this.allowLinks = true;
|
@@ -1376,140 +1532,131 @@ var Swiper = function (selector, params) {
|
|
1376
1532
|
if (params.onSlideClick) {
|
1377
1533
|
_this.allowSlideClick = true;
|
1378
1534
|
}
|
1379
|
-
},100)
|
1380
|
-
|
1381
|
-
//Exit if not moved
|
1382
|
-
if (!_this.isMoved) {
|
1383
|
-
_this.isMoved = false;
|
1384
|
-
if (params.onTouchEnd) params.onTouchEnd(_this)
|
1385
|
-
_this.callPlugins('onTouchEnd');
|
1386
|
-
_this.swipeReset();
|
1387
|
-
return;
|
1388
|
-
}
|
1389
|
-
_this.isMoved = false;
|
1535
|
+
}, 100);
|
1390
1536
|
|
1391
1537
|
var maxPosition = maxWrapperPosition();
|
1392
1538
|
|
1393
|
-
//Prevent Negative Back Sliding
|
1394
|
-
if (_this.
|
1395
|
-
_this.
|
1396
|
-
if (params.onTouchEnd) params.onTouchEnd
|
1539
|
+
//Not moved or Prevent Negative Back Sliding/After-End Sliding
|
1540
|
+
if (!_this.isMoved && params.freeMode) {
|
1541
|
+
_this.isMoved = false;
|
1542
|
+
if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);
|
1397
1543
|
_this.callPlugins('onTouchEnd');
|
1398
1544
|
return;
|
1399
1545
|
}
|
1400
|
-
|
1401
|
-
|
1402
|
-
_this.
|
1403
|
-
if (params.onTouchEnd) params.onTouchEnd(_this)
|
1546
|
+
if (!_this.isMoved || _this.positions.current > 0 || _this.positions.current < -maxPosition) {
|
1547
|
+
_this.swipeReset();
|
1548
|
+
if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);
|
1404
1549
|
_this.callPlugins('onTouchEnd');
|
1405
1550
|
return;
|
1406
1551
|
}
|
1407
1552
|
|
1553
|
+
_this.isMoved = false;
|
1554
|
+
|
1408
1555
|
//Free Mode
|
1409
1556
|
if (params.freeMode) {
|
1410
|
-
if (
|
1411
|
-
var momentumDuration = 1000*params.momentumRatio;
|
1412
|
-
var momentumDistance = _this.velocity*momentumDuration;
|
1413
|
-
var newPosition = _this.positions.current + momentumDistance
|
1557
|
+
if (params.freeModeFluid) {
|
1558
|
+
var momentumDuration = 1000 * params.momentumRatio;
|
1559
|
+
var momentumDistance = _this.velocity * momentumDuration;
|
1560
|
+
var newPosition = _this.positions.current + momentumDistance;
|
1414
1561
|
var doBounce = false;
|
1415
1562
|
var afterBouncePosition;
|
1416
|
-
var bounceAmount = Math.abs(
|
1563
|
+
var bounceAmount = Math.abs(_this.velocity) * 20 * params.momentumBounceRatio;
|
1417
1564
|
if (newPosition < -maxPosition) {
|
1418
1565
|
if (params.momentumBounce && _this.support.transitions) {
|
1419
|
-
if (newPosition + maxPosition < -bounceAmount) newPosition = -maxPosition-bounceAmount;
|
1566
|
+
if (newPosition + maxPosition < -bounceAmount) newPosition = -maxPosition - bounceAmount;
|
1420
1567
|
afterBouncePosition = -maxPosition;
|
1421
|
-
doBounce=true;
|
1568
|
+
doBounce = true;
|
1422
1569
|
allowMomentumBounce = true;
|
1423
1570
|
}
|
1424
1571
|
else newPosition = -maxPosition;
|
1425
1572
|
}
|
1426
1573
|
if (newPosition > 0) {
|
1427
1574
|
if (params.momentumBounce && _this.support.transitions) {
|
1428
|
-
if (newPosition>bounceAmount) newPosition = bounceAmount;
|
1429
|
-
afterBouncePosition = 0
|
1575
|
+
if (newPosition > bounceAmount) newPosition = bounceAmount;
|
1576
|
+
afterBouncePosition = 0;
|
1430
1577
|
doBounce = true;
|
1431
1578
|
allowMomentumBounce = true;
|
1432
1579
|
}
|
1433
1580
|
else newPosition = 0;
|
1434
1581
|
}
|
1435
1582
|
//Fix duration
|
1436
|
-
if (_this.velocity
|
1583
|
+
if (_this.velocity !== 0) momentumDuration = Math.abs((newPosition - _this.positions.current) / _this.velocity);
|
1437
1584
|
|
1438
|
-
|
1439
|
-
else _this.setWrapperTranslate( 0, newPosition, 0);
|
1585
|
+
_this.setWrapperTranslate(newPosition);
|
1440
1586
|
|
1441
|
-
_this.setWrapperTransition(
|
1587
|
+
_this.setWrapperTransition(momentumDuration);
|
1442
1588
|
|
1443
1589
|
if (params.momentumBounce && doBounce) {
|
1444
|
-
_this.wrapperTransitionEnd(function(){
|
1590
|
+
_this.wrapperTransitionEnd(function () {
|
1445
1591
|
if (!allowMomentumBounce) return;
|
1446
|
-
if (params.onMomentumBounce) params.onMomentumBounce
|
1447
|
-
|
1448
|
-
|
1592
|
+
if (params.onMomentumBounce) _this.fireCallback(params.onMomentumBounce, _this);
|
1593
|
+
_this.callPlugins('onMomentumBounce');
|
1594
|
+
|
1595
|
+
_this.setWrapperTranslate(afterBouncePosition);
|
1449
1596
|
_this.setWrapperTransition(300);
|
1450
|
-
})
|
1597
|
+
});
|
1451
1598
|
}
|
1452
1599
|
|
1453
|
-
_this.updateActiveSlide(newPosition)
|
1600
|
+
_this.updateActiveSlide(newPosition);
|
1454
1601
|
}
|
1455
|
-
if (!params.freeModeFluid || timeDiff >= 300) _this.updateActiveSlide(_this.positions.current)
|
1602
|
+
if (!params.freeModeFluid || timeDiff >= 300) _this.updateActiveSlide(_this.positions.current);
|
1456
1603
|
|
1457
|
-
if (params.onTouchEnd) params.onTouchEnd
|
1604
|
+
if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);
|
1458
1605
|
_this.callPlugins('onTouchEnd');
|
1459
1606
|
return;
|
1460
1607
|
}
|
1461
1608
|
|
1462
1609
|
//Direction
|
1463
|
-
direction = diff < 0 ?
|
1610
|
+
direction = diff < 0 ? 'toNext' : 'toPrev';
|
1464
1611
|
|
1465
1612
|
//Short Touches
|
1466
|
-
if (direction
|
1467
|
-
if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset()
|
1613
|
+
if (direction === 'toNext' && (timeDiff <= 300)) {
|
1614
|
+
if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset();
|
1468
1615
|
else _this.swipeNext(true);
|
1469
1616
|
}
|
1470
1617
|
|
1471
|
-
if (direction
|
1472
|
-
if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset()
|
1618
|
+
if (direction === 'toPrev' && (timeDiff <= 300)) {
|
1619
|
+
if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset();
|
1473
1620
|
else _this.swipePrev(true);
|
1474
1621
|
}
|
1475
1622
|
|
1476
1623
|
//Long Touches
|
1477
1624
|
var targetSlideSize = 0;
|
1478
|
-
if(params.slidesPerView
|
1625
|
+
if (params.slidesPerView === 'auto') {
|
1479
1626
|
//Define current slide's width
|
1480
|
-
var currentPosition = Math.abs(
|
1627
|
+
var currentPosition = Math.abs(_this.getWrapperTranslate());
|
1481
1628
|
var slidesOffset = 0;
|
1482
1629
|
var _slideSize;
|
1483
|
-
for (var i=0; i<_this.slides.length; i++) {
|
1630
|
+
for (var i = 0; i < _this.slides.length; i++) {
|
1484
1631
|
_slideSize = isH ? _this.slides[i].getWidth(true) : _this.slides[i].getHeight(true);
|
1485
|
-
slidesOffset+= _slideSize;
|
1486
|
-
if (slidesOffset>currentPosition) {
|
1632
|
+
slidesOffset += _slideSize;
|
1633
|
+
if (slidesOffset > currentPosition) {
|
1487
1634
|
targetSlideSize = _slideSize;
|
1488
1635
|
break;
|
1489
1636
|
}
|
1490
1637
|
}
|
1491
|
-
if (targetSlideSize>containerSize) targetSlideSize = containerSize;
|
1638
|
+
if (targetSlideSize > containerSize) targetSlideSize = containerSize;
|
1492
1639
|
}
|
1493
1640
|
else {
|
1494
1641
|
targetSlideSize = slideSize * params.slidesPerView;
|
1495
1642
|
}
|
1496
|
-
if (direction
|
1497
|
-
if (diffAbs >= targetSlideSize*
|
1498
|
-
_this.swipeNext(true)
|
1643
|
+
if (direction === 'toNext' && (timeDiff > 300)) {
|
1644
|
+
if (diffAbs >= targetSlideSize * params.longSwipesRatio) {
|
1645
|
+
_this.swipeNext(true);
|
1499
1646
|
}
|
1500
1647
|
else {
|
1501
|
-
_this.swipeReset()
|
1648
|
+
_this.swipeReset();
|
1502
1649
|
}
|
1503
1650
|
}
|
1504
|
-
if (direction
|
1505
|
-
if (diffAbs >= targetSlideSize*
|
1651
|
+
if (direction === 'toPrev' && (timeDiff > 300)) {
|
1652
|
+
if (diffAbs >= targetSlideSize * params.longSwipesRatio) {
|
1506
1653
|
_this.swipePrev(true);
|
1507
1654
|
}
|
1508
1655
|
else {
|
1509
|
-
_this.swipeReset()
|
1656
|
+
_this.swipeReset();
|
1510
1657
|
}
|
1511
1658
|
}
|
1512
|
-
if (params.onTouchEnd) params.onTouchEnd
|
1659
|
+
if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);
|
1513
1660
|
_this.callPlugins('onTouchEnd');
|
1514
1661
|
}
|
1515
1662
|
|
@@ -1517,7 +1664,7 @@ var Swiper = function (selector, params) {
|
|
1517
1664
|
/*==================================================
|
1518
1665
|
noSwiping Bubble Check by Isaac Strack
|
1519
1666
|
====================================================*/
|
1520
|
-
function noSwipingSlide(el){
|
1667
|
+
function noSwipingSlide(el) {
|
1521
1668
|
/*This function is specifically designed to check the parent elements for the noSwiping class, up to the wrapper.
|
1522
1669
|
We need to check parents because while onTouchStart bubbles, _this.isTouched is checked in onTouchStart, which stops the bubbling.
|
1523
1670
|
So, if a text box, for example, is the initial target, and the parent slide container has the noSwiping class, the _this.isTouched
|
@@ -1526,204 +1673,225 @@ var Swiper = function (selector, params) {
|
|
1526
1673
|
|
1527
1674
|
// First we create a truthy variable, which is that swiping is allowd (noSwiping = false)
|
1528
1675
|
var noSwiping = false;
|
1529
|
-
|
1676
|
+
|
1530
1677
|
// Now we iterate up (parentElements) until we reach the node with the wrapperClass.
|
1531
|
-
do{
|
1678
|
+
do {
|
1532
1679
|
|
1533
1680
|
// Each time, we check to see if there's a 'swiper-no-swiping' class (noSwipingClass).
|
1534
|
-
if (el.className.indexOf(params.noSwipingClass)
|
1681
|
+
if (el.className.indexOf(params.noSwipingClass) > -1)
|
1535
1682
|
{
|
1536
1683
|
noSwiping = true; // If there is, we set noSwiping = true;
|
1537
1684
|
}
|
1538
1685
|
|
1539
1686
|
el = el.parentElement; // now we iterate up (parent node)
|
1540
1687
|
|
1541
|
-
} while(!noSwiping && el.parentElement && el.className.indexOf(params.wrapperClass)
|
1688
|
+
} while (!noSwiping && el.parentElement && el.className.indexOf(params.wrapperClass) === -1); // also include el.parentElement truthy, just in case.
|
1542
1689
|
|
1543
1690
|
// because we didn't check the wrapper itself, we do so now, if noSwiping is false:
|
1544
|
-
if (!noSwiping && el.className.indexOf(params.wrapperClass)
|
1691
|
+
if (!noSwiping && el.className.indexOf(params.wrapperClass) > -1 && el.className.indexOf(params.noSwipingClass) > -1)
|
1545
1692
|
noSwiping = true; // if the wrapper has the noSwipingClass, we set noSwiping = true;
|
1546
1693
|
|
1547
1694
|
return noSwiping;
|
1548
1695
|
}
|
1549
1696
|
|
1697
|
+
function addClassToHtmlString(klass, outerHtml) {
|
1698
|
+
var par = document.createElement('div');
|
1699
|
+
var child;
|
1700
|
+
|
1701
|
+
par.innerHTML = outerHtml;
|
1702
|
+
child = par.firstChild;
|
1703
|
+
child.className += ' ' + klass;
|
1704
|
+
|
1705
|
+
return child.outerHTML;
|
1706
|
+
}
|
1707
|
+
|
1708
|
+
|
1550
1709
|
/*==================================================
|
1551
1710
|
Swipe Functions
|
1552
1711
|
====================================================*/
|
1553
|
-
_this.swipeNext = function(internal){
|
1712
|
+
_this.swipeNext = function (internal) {
|
1554
1713
|
if (!internal && params.loop) _this.fixLoop();
|
1714
|
+
if (!internal && params.autoplay) _this.stopAutoplay(true);
|
1555
1715
|
_this.callPlugins('onSwipeNext');
|
1556
|
-
var currentPosition =
|
1716
|
+
var currentPosition = _this.getWrapperTranslate();
|
1557
1717
|
var newPosition = currentPosition;
|
1558
|
-
if (params.slidesPerView
|
1559
|
-
for (var i=0; i<_this.snapGrid.length; i++) {
|
1560
|
-
if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {
|
1561
|
-
newPosition = -_this.snapGrid[i+1]
|
1718
|
+
if (params.slidesPerView === 'auto') {
|
1719
|
+
for (var i = 0; i < _this.snapGrid.length; i++) {
|
1720
|
+
if (-currentPosition >= _this.snapGrid[i] && -currentPosition < _this.snapGrid[i + 1]) {
|
1721
|
+
newPosition = -_this.snapGrid[i + 1];
|
1562
1722
|
break;
|
1563
1723
|
}
|
1564
1724
|
}
|
1565
1725
|
}
|
1566
1726
|
else {
|
1567
1727
|
var groupSize = slideSize * params.slidesPerGroup;
|
1568
|
-
newPosition = -(Math.floor(Math.abs(currentPosition)/Math.floor(groupSize))*groupSize + groupSize);
|
1728
|
+
newPosition = -(Math.floor(Math.abs(currentPosition) / Math.floor(groupSize)) * groupSize + groupSize);
|
1569
1729
|
}
|
1570
|
-
if (newPosition < -
|
1571
|
-
newPosition = -
|
1572
|
-
}
|
1573
|
-
|
1574
|
-
if (newPosition == currentPosition) return false;
|
1575
|
-
|
1730
|
+
if (newPosition < -maxWrapperPosition()) {
|
1731
|
+
newPosition = -maxWrapperPosition();
|
1732
|
+
}
|
1733
|
+
if (newPosition === currentPosition) return false;
|
1576
1734
|
swipeToPosition(newPosition, 'next');
|
1577
|
-
return true
|
1578
|
-
}
|
1579
|
-
_this.swipePrev = function(internal){
|
1735
|
+
return true;
|
1736
|
+
};
|
1737
|
+
_this.swipePrev = function (internal) {
|
1580
1738
|
if (!internal && params.loop) _this.fixLoop();
|
1581
|
-
if (!internal && params.autoplay) _this.stopAutoplay();
|
1739
|
+
if (!internal && params.autoplay) _this.stopAutoplay(true);
|
1582
1740
|
_this.callPlugins('onSwipePrev');
|
1583
1741
|
|
1584
|
-
var currentPosition = Math.ceil(
|
1742
|
+
var currentPosition = Math.ceil(_this.getWrapperTranslate());
|
1585
1743
|
var newPosition;
|
1586
|
-
if (params.slidesPerView
|
1744
|
+
if (params.slidesPerView === 'auto') {
|
1587
1745
|
newPosition = 0;
|
1588
|
-
for (var i=1; i<_this.snapGrid.length; i++) {
|
1589
|
-
if (-currentPosition
|
1590
|
-
newPosition = -_this.snapGrid[i-1]
|
1746
|
+
for (var i = 1; i < _this.snapGrid.length; i++) {
|
1747
|
+
if (-currentPosition === _this.snapGrid[i]) {
|
1748
|
+
newPosition = -_this.snapGrid[i - 1];
|
1591
1749
|
break;
|
1592
1750
|
}
|
1593
|
-
if (-currentPosition > _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {
|
1594
|
-
newPosition = -_this.snapGrid[i]
|
1751
|
+
if (-currentPosition > _this.snapGrid[i] && -currentPosition < _this.snapGrid[i + 1]) {
|
1752
|
+
newPosition = -_this.snapGrid[i];
|
1595
1753
|
break;
|
1596
1754
|
}
|
1597
1755
|
}
|
1598
1756
|
}
|
1599
1757
|
else {
|
1600
1758
|
var groupSize = slideSize * params.slidesPerGroup;
|
1601
|
-
newPosition = -(Math.ceil(-currentPosition/groupSize)-1)*groupSize;
|
1759
|
+
newPosition = -(Math.ceil(-currentPosition / groupSize) - 1) * groupSize;
|
1602
1760
|
}
|
1603
1761
|
|
1604
1762
|
if (newPosition > 0) newPosition = 0;
|
1605
1763
|
|
1606
|
-
if (newPosition
|
1764
|
+
if (newPosition === currentPosition) return false;
|
1607
1765
|
swipeToPosition(newPosition, 'prev');
|
1608
1766
|
return true;
|
1609
1767
|
|
1610
|
-
}
|
1611
|
-
_this.swipeReset = function(){
|
1768
|
+
};
|
1769
|
+
_this.swipeReset = function () {
|
1612
1770
|
_this.callPlugins('onSwipeReset');
|
1613
|
-
var currentPosition =
|
1771
|
+
var currentPosition = _this.getWrapperTranslate();
|
1614
1772
|
var groupSize = slideSize * params.slidesPerGroup;
|
1615
1773
|
var newPosition;
|
1616
1774
|
var maxPosition = -maxWrapperPosition();
|
1617
|
-
if (params.slidesPerView
|
1775
|
+
if (params.slidesPerView === 'auto') {
|
1618
1776
|
newPosition = 0;
|
1619
|
-
for (var i=0; i<_this.snapGrid.length; i++) {
|
1620
|
-
if (-currentPosition===_this.snapGrid[i]) return;
|
1621
|
-
if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {
|
1622
|
-
if(_this.positions.diff>0) newPosition = -_this.snapGrid[i+1]
|
1623
|
-
else newPosition = -_this.snapGrid[i]
|
1777
|
+
for (var i = 0; i < _this.snapGrid.length; i++) {
|
1778
|
+
if (-currentPosition === _this.snapGrid[i]) return;
|
1779
|
+
if (-currentPosition >= _this.snapGrid[i] && -currentPosition < _this.snapGrid[i + 1]) {
|
1780
|
+
if (_this.positions.diff > 0) newPosition = -_this.snapGrid[i + 1];
|
1781
|
+
else newPosition = -_this.snapGrid[i];
|
1624
1782
|
break;
|
1625
1783
|
}
|
1626
1784
|
}
|
1627
|
-
if (-currentPosition >= _this.snapGrid[_this.snapGrid.length-1]) newPosition = -_this.snapGrid[_this.snapGrid.length-1];
|
1628
|
-
if (currentPosition <= -maxWrapperPosition()) newPosition = -maxWrapperPosition()
|
1785
|
+
if (-currentPosition >= _this.snapGrid[_this.snapGrid.length - 1]) newPosition = -_this.snapGrid[_this.snapGrid.length - 1];
|
1786
|
+
if (currentPosition <= -maxWrapperPosition()) newPosition = -maxWrapperPosition();
|
1629
1787
|
}
|
1630
1788
|
else {
|
1631
|
-
newPosition = currentPosition<0 ? Math.round(currentPosition/groupSize)*groupSize : 0
|
1789
|
+
newPosition = currentPosition < 0 ? Math.round(currentPosition / groupSize) * groupSize : 0;
|
1632
1790
|
}
|
1633
1791
|
if (params.scrollContainer) {
|
1634
|
-
newPosition = currentPosition<0 ? currentPosition : 0;
|
1792
|
+
newPosition = currentPosition < 0 ? currentPosition : 0;
|
1635
1793
|
}
|
1636
1794
|
if (newPosition < -maxWrapperPosition()) {
|
1637
|
-
newPosition = -maxWrapperPosition()
|
1795
|
+
newPosition = -maxWrapperPosition();
|
1638
1796
|
}
|
1639
|
-
if (params.scrollContainer && (containerSize>slideSize)) {
|
1797
|
+
if (params.scrollContainer && (containerSize > slideSize)) {
|
1640
1798
|
newPosition = 0;
|
1641
1799
|
}
|
1642
1800
|
|
1643
|
-
if (newPosition
|
1801
|
+
if (newPosition === currentPosition) return false;
|
1644
1802
|
|
1645
1803
|
swipeToPosition(newPosition, 'reset');
|
1646
1804
|
return true;
|
1647
|
-
}
|
1648
|
-
|
1805
|
+
};
|
1806
|
+
|
1807
|
+
_this.swipeTo = function (index, speed, runCallbacks) {
|
1649
1808
|
index = parseInt(index, 10);
|
1650
|
-
_this.callPlugins('onSwipeTo', {index:index, speed:speed});
|
1809
|
+
_this.callPlugins('onSwipeTo', {index: index, speed: speed});
|
1651
1810
|
if (params.loop) index = index + _this.loopedSlides;
|
1652
|
-
var currentPosition =
|
1653
|
-
if (index > (_this.slides.length-1)) return;
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
newPosition = -_this.slidesGrid[ index ];
|
1811
|
+
var currentPosition = _this.getWrapperTranslate();
|
1812
|
+
if (index > (_this.slides.length - 1) || index < 0) return;
|
1813
|
+
var newPosition;
|
1814
|
+
if (params.slidesPerView === 'auto') {
|
1815
|
+
newPosition = -_this.slidesGrid[index];
|
1658
1816
|
}
|
1659
1817
|
else {
|
1660
|
-
newPosition =
|
1818
|
+
newPosition = -index * slideSize;
|
1661
1819
|
}
|
1662
1820
|
if (newPosition < - maxWrapperPosition()) {
|
1663
1821
|
newPosition = - maxWrapperPosition();
|
1664
|
-
}
|
1822
|
+
}
|
1665
1823
|
|
1666
|
-
if (newPosition
|
1824
|
+
if (newPosition === currentPosition) return false;
|
1667
1825
|
|
1668
|
-
runCallbacks = runCallbacks===false ? false : true;
|
1669
|
-
swipeToPosition(newPosition, 'to', {index:index, speed:speed, runCallbacks:runCallbacks});
|
1826
|
+
runCallbacks = runCallbacks === false ? false : true;
|
1827
|
+
swipeToPosition(newPosition, 'to', {index: index, speed: speed, runCallbacks: runCallbacks});
|
1670
1828
|
return true;
|
1671
|
-
}
|
1829
|
+
};
|
1830
|
+
|
1672
1831
|
function swipeToPosition(newPosition, action, toOptions) {
|
1832
|
+
var speed = (action === 'to' && toOptions.speed >= 0) ? toOptions.speed : params.speed;
|
1833
|
+
var timeOld = + new Date();
|
1834
|
+
|
1835
|
+
function anim() {
|
1836
|
+
var timeNew = + new Date();
|
1837
|
+
var time = timeNew - timeOld;
|
1838
|
+
currentPosition += animationStep * time / (1000 / 60);
|
1839
|
+
condition = direction === 'toNext' ? currentPosition > newPosition : currentPosition < newPosition;
|
1840
|
+
if (condition) {
|
1841
|
+
_this.setWrapperTranslate(Math.round(currentPosition));
|
1842
|
+
_this._DOMAnimating = true;
|
1843
|
+
window.setTimeout(function () {
|
1844
|
+
anim();
|
1845
|
+
}, 1000 / 60);
|
1846
|
+
}
|
1847
|
+
else {
|
1848
|
+
if (params.onSlideChangeEnd) {
|
1849
|
+
if (action === 'to') {
|
1850
|
+
if (toOptions.runCallbacks === true) _this.fireCallback(params.onSlideChangeEnd, _this);
|
1851
|
+
}
|
1852
|
+
else {
|
1853
|
+
_this.fireCallback(params.onSlideChangeEnd, _this);
|
1854
|
+
}
|
1855
|
+
|
1856
|
+
}
|
1857
|
+
_this.setWrapperTranslate(newPosition);
|
1858
|
+
_this._DOMAnimating = false;
|
1859
|
+
}
|
1860
|
+
}
|
1861
|
+
|
1673
1862
|
if (_this.support.transitions || !params.DOMAnimation) {
|
1674
|
-
|
1675
|
-
else _this.setWrapperTranslate(0,newPosition,0);
|
1676
|
-
var speed = (action=='to' && toOptions.speed>=0) ? toOptions.speed : params.speed;
|
1863
|
+
_this.setWrapperTranslate(newPosition);
|
1677
1864
|
_this.setWrapperTransition(speed);
|
1678
1865
|
}
|
1679
1866
|
else {
|
1680
1867
|
//Try the DOM animation
|
1681
|
-
var currentPosition =
|
1682
|
-
var
|
1683
|
-
var animationStep = Math.ceil( (newPosition - currentPosition)/speed*(1000/60) );
|
1868
|
+
var currentPosition = _this.getWrapperTranslate();
|
1869
|
+
var animationStep = Math.ceil((newPosition - currentPosition) / speed * (1000 / 60));
|
1684
1870
|
var direction = currentPosition > newPosition ? 'toNext' : 'toPrev';
|
1685
|
-
var condition = direction
|
1871
|
+
var condition = direction === 'toNext' ? currentPosition > newPosition : currentPosition < newPosition;
|
1686
1872
|
if (_this._DOMAnimating) return;
|
1687
1873
|
|
1688
|
-
anim()
|
1689
|
-
}
|
1690
|
-
function anim(){
|
1691
|
-
currentPosition += animationStep;
|
1692
|
-
condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition;
|
1693
|
-
if (condition) {
|
1694
|
-
if (isH) _this.setWrapperTranslate(Math.round(currentPosition),0)
|
1695
|
-
else _this.setWrapperTranslate(0,Math.round(currentPosition))
|
1696
|
-
_this._DOMAnimating = true
|
1697
|
-
window.setTimeout(function(){
|
1698
|
-
anim()
|
1699
|
-
}, 1000 / 60)
|
1700
|
-
}
|
1701
|
-
else {
|
1702
|
-
if (params.onSlideChangeEnd) params.onSlideChangeEnd(_this)
|
1703
|
-
if (isH) _this.setWrapperTranslate(newPosition,0);
|
1704
|
-
else _this.setWrapperTranslate(0, newPosition);
|
1705
|
-
_this._DOMAnimating = false;
|
1706
|
-
}
|
1874
|
+
anim();
|
1707
1875
|
}
|
1708
1876
|
|
1709
1877
|
//Update Active Slide Index
|
1710
1878
|
_this.updateActiveSlide(newPosition);
|
1711
1879
|
|
1712
1880
|
//Callbacks
|
1713
|
-
if (params.onSlideNext && action
|
1714
|
-
params.onSlideNext
|
1881
|
+
if (params.onSlideNext && action === 'next') {
|
1882
|
+
_this.fireCallback(params.onSlideNext, _this, newPosition);
|
1715
1883
|
}
|
1716
|
-
if (params.onSlidePrev && action
|
1717
|
-
params.onSlidePrev
|
1884
|
+
if (params.onSlidePrev && action === 'prev') {
|
1885
|
+
_this.fireCallback(params.onSlidePrev, _this, newPosition);
|
1718
1886
|
}
|
1719
|
-
//
|
1720
|
-
if (params.onSlideReset && action
|
1721
|
-
params.onSlideReset
|
1887
|
+
//'Reset' Callback
|
1888
|
+
if (params.onSlideReset && action === 'reset') {
|
1889
|
+
_this.fireCallback(params.onSlideReset, _this, newPosition);
|
1722
1890
|
}
|
1723
1891
|
|
1724
|
-
//
|
1725
|
-
if (action
|
1726
|
-
slideChangeCallbacks()
|
1892
|
+
//'Next', 'Prev' and 'To' Callbacks
|
1893
|
+
if (action === 'next' || action === 'prev' || (action === 'to' && toOptions.runCallbacks === true))
|
1894
|
+
slideChangeCallbacks(action);
|
1727
1895
|
}
|
1728
1896
|
/*==================================================
|
1729
1897
|
Transition Callbacks
|
@@ -1731,19 +1899,19 @@ var Swiper = function (selector, params) {
|
|
1731
1899
|
//Prevent Multiple Callbacks
|
1732
1900
|
_this._queueStartCallbacks = false;
|
1733
1901
|
_this._queueEndCallbacks = false;
|
1734
|
-
function slideChangeCallbacks() {
|
1902
|
+
function slideChangeCallbacks(direction) {
|
1735
1903
|
//Transition Start Callback
|
1736
1904
|
_this.callPlugins('onSlideChangeStart');
|
1737
1905
|
if (params.onSlideChangeStart) {
|
1738
1906
|
if (params.queueStartCallbacks && _this.support.transitions) {
|
1739
1907
|
if (_this._queueStartCallbacks) return;
|
1740
1908
|
_this._queueStartCallbacks = true;
|
1741
|
-
params.onSlideChangeStart
|
1742
|
-
_this.wrapperTransitionEnd(function(){
|
1909
|
+
_this.fireCallback(params.onSlideChangeStart, _this, direction);
|
1910
|
+
_this.wrapperTransitionEnd(function () {
|
1743
1911
|
_this._queueStartCallbacks = false;
|
1744
|
-
})
|
1912
|
+
});
|
1745
1913
|
}
|
1746
|
-
else params.onSlideChangeStart
|
1914
|
+
else _this.fireCallback(params.onSlideChangeStart, _this, direction);
|
1747
1915
|
}
|
1748
1916
|
//Transition End Callback
|
1749
1917
|
if (params.onSlideChangeEnd) {
|
@@ -1751,78 +1919,101 @@ var Swiper = function (selector, params) {
|
|
1751
1919
|
if (params.queueEndCallbacks) {
|
1752
1920
|
if (_this._queueEndCallbacks) return;
|
1753
1921
|
_this._queueEndCallbacks = true;
|
1754
|
-
_this.wrapperTransitionEnd(
|
1922
|
+
_this.wrapperTransitionEnd(function (swiper) {
|
1923
|
+
_this.fireCallback(params.onSlideChangeEnd, swiper, direction);
|
1924
|
+
});
|
1925
|
+
}
|
1926
|
+
else {
|
1927
|
+
_this.wrapperTransitionEnd(function (swiper) {
|
1928
|
+
_this.fireCallback(params.onSlideChangeEnd, swiper, direction);
|
1929
|
+
});
|
1755
1930
|
}
|
1756
|
-
else _this.wrapperTransitionEnd(params.onSlideChangeEnd)
|
1757
1931
|
}
|
1758
1932
|
else {
|
1759
1933
|
if (!params.DOMAnimation) {
|
1760
|
-
setTimeout(function(){
|
1761
|
-
params.onSlideChangeEnd
|
1762
|
-
},10)
|
1934
|
+
setTimeout(function () {
|
1935
|
+
_this.fireCallback(params.onSlideChangeEnd, _this, direction);
|
1936
|
+
}, 10);
|
1763
1937
|
}
|
1764
1938
|
}
|
1765
1939
|
}
|
1766
1940
|
}
|
1941
|
+
|
1767
1942
|
/*==================================================
|
1768
1943
|
Update Active Slide Index
|
1769
1944
|
====================================================*/
|
1770
|
-
_this.updateActiveSlide = function(position) {
|
1945
|
+
_this.updateActiveSlide = function (position) {
|
1771
1946
|
if (!_this.initialized) return;
|
1772
|
-
if (_this.slides.length
|
1947
|
+
if (_this.slides.length === 0) return;
|
1773
1948
|
_this.previousIndex = _this.activeIndex;
|
1774
|
-
if (position
|
1775
|
-
if (
|
1776
|
-
|
1777
|
-
if (params.slidesPerView
|
1949
|
+
if (typeof position === 'undefined') position = _this.getWrapperTranslate();
|
1950
|
+
if (position > 0) position = 0;
|
1951
|
+
var i;
|
1952
|
+
if (params.slidesPerView === 'auto') {
|
1778
1953
|
var slidesOffset = 0;
|
1779
1954
|
_this.activeIndex = _this.slidesGrid.indexOf(-position);
|
1780
|
-
if (_this.activeIndex<0) {
|
1781
|
-
for (
|
1782
|
-
if (-position>_this.slidesGrid[i] && -position<_this.slidesGrid[i+1]) {
|
1955
|
+
if (_this.activeIndex < 0) {
|
1956
|
+
for (i = 0; i < _this.slidesGrid.length - 1; i++) {
|
1957
|
+
if (-position > _this.slidesGrid[i] && -position < _this.slidesGrid[i + 1]) {
|
1783
1958
|
break;
|
1784
1959
|
}
|
1785
1960
|
}
|
1786
|
-
var leftDistance = Math.abs(
|
1787
|
-
var rightDistance = Math.abs(
|
1788
|
-
if (leftDistance<=rightDistance) _this.activeIndex = i;
|
1789
|
-
else _this.activeIndex = i+1;
|
1961
|
+
var leftDistance = Math.abs(_this.slidesGrid[i] + position);
|
1962
|
+
var rightDistance = Math.abs(_this.slidesGrid[i + 1] + position);
|
1963
|
+
if (leftDistance <= rightDistance) _this.activeIndex = i;
|
1964
|
+
else _this.activeIndex = i + 1;
|
1790
1965
|
}
|
1791
1966
|
}
|
1792
1967
|
else {
|
1793
|
-
|
1794
|
-
else _this.activeIndex = Math.round( -position/slideSize );
|
1968
|
+
_this.activeIndex = Math[params.visibilityFullFit ? 'ceil' : 'round'](-position / slideSize);
|
1795
1969
|
}
|
1796
|
-
|
1797
|
-
if (_this.activeIndex
|
1970
|
+
|
1971
|
+
if (_this.activeIndex === _this.slides.length) _this.activeIndex = _this.slides.length - 1;
|
1972
|
+
if (_this.activeIndex < 0) _this.activeIndex = 0;
|
1973
|
+
|
1798
1974
|
// Check for slide
|
1799
1975
|
if (!_this.slides[_this.activeIndex]) return;
|
1976
|
+
|
1800
1977
|
// Calc Visible slides
|
1801
1978
|
_this.calcVisibleSlides(position);
|
1802
1979
|
|
1803
1980
|
// Mark visible and active slides with additonal classes
|
1804
|
-
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1981
|
+
if (_this.support.classList) {
|
1982
|
+
var slide;
|
1983
|
+
for (i = 0; i < _this.slides.length; i++) {
|
1984
|
+
slide = _this.slides[i];
|
1985
|
+
slide.classList.remove(params.slideActiveClass);
|
1986
|
+
if (_this.visibleSlides.indexOf(slide) >= 0) {
|
1987
|
+
slide.classList.add(params.slideVisibleClass);
|
1988
|
+
} else {
|
1989
|
+
slide.classList.remove(params.slideVisibleClass);
|
1990
|
+
}
|
1811
1991
|
}
|
1992
|
+
_this.slides[_this.activeIndex].classList.add(params.slideActiveClass);
|
1993
|
+
} else {
|
1994
|
+
var activeClassRegexp = new RegExp('\\s*' + params.slideActiveClass);
|
1995
|
+
var inViewClassRegexp = new RegExp('\\s*' + params.slideVisibleClass);
|
1812
1996
|
|
1997
|
+
for (i = 0; i < _this.slides.length; i++) {
|
1998
|
+
_this.slides[i].className = _this.slides[i].className.replace(activeClassRegexp, '').replace(inViewClassRegexp, '');
|
1999
|
+
if (_this.visibleSlides.indexOf(_this.slides[i]) >= 0) {
|
2000
|
+
_this.slides[i].className += ' ' + params.slideVisibleClass;
|
2001
|
+
}
|
2002
|
+
}
|
2003
|
+
_this.slides[_this.activeIndex].className += ' ' + params.slideActiveClass;
|
1813
2004
|
}
|
1814
|
-
_this.slides[ _this.activeIndex ].className += ' ' + params.slideActiveClass;
|
1815
2005
|
|
1816
2006
|
//Update loop index
|
1817
2007
|
if (params.loop) {
|
1818
2008
|
var ls = _this.loopedSlides;
|
1819
2009
|
_this.activeLoopIndex = _this.activeIndex - ls;
|
1820
|
-
if (_this.activeLoopIndex >= _this.slides.length - ls*2
|
1821
|
-
_this.activeLoopIndex = _this.slides.length - ls*2 - _this.activeLoopIndex;
|
2010
|
+
if (_this.activeLoopIndex >= _this.slides.length - ls * 2) {
|
2011
|
+
_this.activeLoopIndex = _this.slides.length - ls * 2 - _this.activeLoopIndex;
|
1822
2012
|
}
|
1823
|
-
if (_this.activeLoopIndex<0) {
|
1824
|
-
_this.activeLoopIndex = _this.slides.length - ls*2 + _this.activeLoopIndex;
|
2013
|
+
if (_this.activeLoopIndex < 0) {
|
2014
|
+
_this.activeLoopIndex = _this.slides.length - ls * 2 + _this.activeLoopIndex;
|
1825
2015
|
}
|
2016
|
+
if (_this.activeLoopIndex < 0) _this.activeLoopIndex = 0;
|
1826
2017
|
}
|
1827
2018
|
else {
|
1828
2019
|
_this.activeLoopIndex = _this.activeIndex;
|
@@ -1831,7 +2022,7 @@ var Swiper = function (selector, params) {
|
|
1831
2022
|
if (params.pagination) {
|
1832
2023
|
_this.updatePagination(position);
|
1833
2024
|
}
|
1834
|
-
}
|
2025
|
+
};
|
1835
2026
|
/*==================================================
|
1836
2027
|
Pagination
|
1837
2028
|
====================================================*/
|
@@ -1839,223 +2030,303 @@ var Swiper = function (selector, params) {
|
|
1839
2030
|
if (params.paginationClickable && _this.paginationButtons) {
|
1840
2031
|
removePaginationEvents();
|
1841
2032
|
}
|
1842
|
-
var paginationHTML = "";
|
1843
|
-
var numOfSlides = _this.slides.length;
|
1844
|
-
var numOfButtons = numOfSlides;
|
1845
|
-
if (params.loop) numOfButtons -= _this.loopedSlides*2
|
1846
|
-
for (var i = 0; i < numOfButtons; i++) {
|
1847
|
-
paginationHTML += '<'+params.paginationElement+' class="'+params.paginationElementClass+'"></'+params.paginationElement+'>'
|
1848
|
-
}
|
1849
2033
|
_this.paginationContainer = params.pagination.nodeType ? params.pagination : $$(params.pagination)[0];
|
1850
|
-
|
1851
|
-
|
1852
|
-
|
1853
|
-
|
1854
|
-
|
1855
|
-
|
1856
|
-
|
2034
|
+
if (params.createPagination) {
|
2035
|
+
var paginationHTML = '';
|
2036
|
+
var numOfSlides = _this.slides.length;
|
2037
|
+
var numOfButtons = numOfSlides;
|
2038
|
+
if (params.loop) numOfButtons -= _this.loopedSlides * 2;
|
2039
|
+
for (var i = 0; i < numOfButtons; i++) {
|
2040
|
+
paginationHTML += '<' + params.paginationElement + ' class="' + params.paginationElementClass + '"></' + params.paginationElement + '>';
|
2041
|
+
}
|
2042
|
+
_this.paginationContainer.innerHTML = paginationHTML;
|
2043
|
+
}
|
2044
|
+
_this.paginationButtons = $$('.' + params.paginationElementClass, _this.paginationContainer);
|
2045
|
+
if (!firstInit) _this.updatePagination();
|
1857
2046
|
_this.callPlugins('onCreatePagination');
|
1858
2047
|
if (params.paginationClickable) {
|
1859
2048
|
addPaginationEvents();
|
1860
2049
|
}
|
1861
|
-
}
|
2050
|
+
};
|
1862
2051
|
function removePaginationEvents() {
|
1863
2052
|
var pagers = _this.paginationButtons;
|
1864
|
-
|
1865
|
-
|
2053
|
+
if (pagers) {
|
2054
|
+
for (var i = 0; i < pagers.length; i++) {
|
2055
|
+
_this.h.removeEventListener(pagers[i], 'click', paginationClick);
|
2056
|
+
}
|
1866
2057
|
}
|
1867
2058
|
}
|
1868
2059
|
function addPaginationEvents() {
|
1869
2060
|
var pagers = _this.paginationButtons;
|
1870
|
-
|
1871
|
-
|
2061
|
+
if (pagers) {
|
2062
|
+
for (var i = 0; i < pagers.length; i++) {
|
2063
|
+
_this.h.addEventListener(pagers[i], 'click', paginationClick);
|
2064
|
+
}
|
1872
2065
|
}
|
1873
2066
|
}
|
1874
|
-
function paginationClick(e){
|
2067
|
+
function paginationClick(e) {
|
1875
2068
|
var index;
|
1876
2069
|
var target = e.target || e.srcElement;
|
1877
2070
|
var pagers = _this.paginationButtons;
|
1878
|
-
for (var i=0; i<pagers.length; i++) {
|
1879
|
-
if (target===pagers[i]) index = i;
|
2071
|
+
for (var i = 0; i < pagers.length; i++) {
|
2072
|
+
if (target === pagers[i]) index = i;
|
1880
2073
|
}
|
1881
|
-
_this.swipeTo(index)
|
2074
|
+
_this.swipeTo(index);
|
1882
2075
|
}
|
1883
|
-
_this.updatePagination = function(position) {
|
2076
|
+
_this.updatePagination = function (position) {
|
1884
2077
|
if (!params.pagination) return;
|
1885
|
-
if (_this.slides.length<1) return;
|
1886
|
-
|
1887
|
-
if (
|
1888
|
-
var activePagers = _this.paginationContainer.querySelectorAll('.'+params.paginationActiveClass)
|
1889
|
-
else if (window.jQuery)
|
1890
|
-
var activePagers = $$(_this.paginationContainer).find('.'+params.paginationActiveClass);
|
1891
|
-
if(!activePagers) return;
|
2078
|
+
if (_this.slides.length < 1) return;
|
2079
|
+
var activePagers = $$('.' + params.paginationActiveClass, _this.paginationContainer);
|
2080
|
+
if (!activePagers) return;
|
1892
2081
|
|
1893
2082
|
//Reset all Buttons' class to not active
|
1894
2083
|
var pagers = _this.paginationButtons;
|
1895
|
-
if (pagers.length
|
1896
|
-
for (var i=0; i < pagers.length; i++) {
|
1897
|
-
pagers[i].className = params.paginationElementClass
|
2084
|
+
if (pagers.length === 0) return;
|
2085
|
+
for (var i = 0; i < pagers.length; i++) {
|
2086
|
+
pagers[i].className = params.paginationElementClass;
|
1898
2087
|
}
|
1899
2088
|
|
1900
2089
|
var indexOffset = params.loop ? _this.loopedSlides : 0;
|
1901
2090
|
if (params.paginationAsRange) {
|
1902
|
-
if (!_this.visibleSlides) _this.calcVisibleSlides(position)
|
2091
|
+
if (!_this.visibleSlides) _this.calcVisibleSlides(position);
|
1903
2092
|
//Get Visible Indexes
|
1904
2093
|
var visibleIndexes = [];
|
1905
|
-
|
1906
|
-
|
2094
|
+
var j; // lopp index - avoid JSHint W004 / W038
|
2095
|
+
for (j = 0; j < _this.visibleSlides.length; j++) {
|
2096
|
+
var visIndex = _this.slides.indexOf(_this.visibleSlides[j]) - indexOffset;
|
1907
2097
|
|
1908
|
-
if (params.loop && visIndex<0) {
|
1909
|
-
visIndex = _this.slides.length - _this.loopedSlides*2 + visIndex;
|
2098
|
+
if (params.loop && visIndex < 0) {
|
2099
|
+
visIndex = _this.slides.length - _this.loopedSlides * 2 + visIndex;
|
1910
2100
|
}
|
1911
|
-
if (params.loop && visIndex>=_this.slides.length-_this.loopedSlides*2) {
|
1912
|
-
visIndex = _this.slides.length - _this.loopedSlides*2 - visIndex;
|
1913
|
-
visIndex = Math.abs(visIndex)
|
2101
|
+
if (params.loop && visIndex >= _this.slides.length - _this.loopedSlides * 2) {
|
2102
|
+
visIndex = _this.slides.length - _this.loopedSlides * 2 - visIndex;
|
2103
|
+
visIndex = Math.abs(visIndex);
|
1914
2104
|
}
|
1915
|
-
visibleIndexes.push(
|
2105
|
+
visibleIndexes.push(visIndex);
|
1916
2106
|
}
|
1917
|
-
|
1918
|
-
for (
|
1919
|
-
if (pagers[
|
2107
|
+
|
2108
|
+
for (j = 0; j < visibleIndexes.length; j++) {
|
2109
|
+
if (pagers[visibleIndexes[j]]) pagers[visibleIndexes[j]].className += ' ' + params.paginationVisibleClass;
|
1920
2110
|
}
|
1921
|
-
|
2111
|
+
|
1922
2112
|
if (params.loop) {
|
1923
|
-
pagers[
|
2113
|
+
if (pagers[_this.activeLoopIndex] !== undefined) {
|
2114
|
+
pagers[_this.activeLoopIndex].className += ' ' + params.paginationActiveClass;
|
2115
|
+
}
|
1924
2116
|
}
|
1925
2117
|
else {
|
1926
|
-
pagers[
|
2118
|
+
pagers[_this.activeIndex].className += ' ' + params.paginationActiveClass;
|
1927
2119
|
}
|
1928
|
-
|
1929
2120
|
}
|
1930
2121
|
else {
|
1931
2122
|
if (params.loop) {
|
1932
|
-
pagers[ _this.activeLoopIndex
|
2123
|
+
if (pagers[_this.activeLoopIndex]) pagers[_this.activeLoopIndex].className += ' ' + params.paginationActiveClass + ' ' + params.paginationVisibleClass;
|
1933
2124
|
}
|
1934
2125
|
else {
|
1935
|
-
pagers[
|
2126
|
+
pagers[_this.activeIndex].className += ' ' + params.paginationActiveClass + ' ' + params.paginationVisibleClass;
|
1936
2127
|
}
|
1937
|
-
|
1938
2128
|
}
|
1939
|
-
|
1940
|
-
|
1941
|
-
_this.calcVisibleSlides = function(position){
|
2129
|
+
};
|
2130
|
+
_this.calcVisibleSlides = function (position) {
|
1942
2131
|
var visibleSlides = [];
|
1943
2132
|
var _slideLeft = 0, _slideSize = 0, _slideRight = 0;
|
1944
|
-
if (isH && _this.wrapperLeft>0) position = position+_this.wrapperLeft;
|
1945
|
-
if (!isH && _this.wrapperTop>0) position = position+_this.wrapperTop;
|
2133
|
+
if (isH && _this.wrapperLeft > 0) position = position + _this.wrapperLeft;
|
2134
|
+
if (!isH && _this.wrapperTop > 0) position = position + _this.wrapperTop;
|
1946
2135
|
|
1947
|
-
for (var i=0; i<_this.slides.length; i++) {
|
2136
|
+
for (var i = 0; i < _this.slides.length; i++) {
|
1948
2137
|
_slideLeft += _slideSize;
|
1949
|
-
if (params.slidesPerView
|
1950
|
-
_slideSize = isH ? _this.h.getWidth(_this.slides[i],true) : _this.h.getHeight(_this.slides[i],true);
|
2138
|
+
if (params.slidesPerView === 'auto')
|
2139
|
+
_slideSize = isH ? _this.h.getWidth(_this.slides[i], true) : _this.h.getHeight(_this.slides[i], true);
|
1951
2140
|
else _slideSize = slideSize;
|
1952
2141
|
|
1953
2142
|
_slideRight = _slideLeft + _slideSize;
|
1954
2143
|
var isVisibile = false;
|
1955
2144
|
if (params.visibilityFullFit) {
|
1956
|
-
if (_slideLeft >= -position && _slideRight <= -position+containerSize) isVisibile = true;
|
1957
|
-
if (_slideLeft <= -position && _slideRight >= -position+containerSize) isVisibile = true;
|
2145
|
+
if (_slideLeft >= -position && _slideRight <= -position + containerSize) isVisibile = true;
|
2146
|
+
if (_slideLeft <= -position && _slideRight >= -position + containerSize) isVisibile = true;
|
1958
2147
|
}
|
1959
2148
|
else {
|
1960
|
-
|
1961
|
-
if (
|
1962
|
-
if (_slideLeft
|
1963
|
-
if (_slideLeft < -position && _slideRight > ((-position+containerSize))) isVisibile = true;
|
2149
|
+
if (_slideRight > -position && _slideRight <= ((-position + containerSize))) isVisibile = true;
|
2150
|
+
if (_slideLeft >= -position && _slideLeft < ((-position + containerSize))) isVisibile = true;
|
2151
|
+
if (_slideLeft < -position && _slideRight > ((-position + containerSize))) isVisibile = true;
|
1964
2152
|
}
|
1965
2153
|
|
1966
|
-
if (isVisibile) visibleSlides.push(_this.slides[i])
|
2154
|
+
if (isVisibile) visibleSlides.push(_this.slides[i]);
|
1967
2155
|
|
1968
2156
|
}
|
1969
|
-
if (visibleSlides.length
|
2157
|
+
if (visibleSlides.length === 0) visibleSlides = [_this.slides[_this.activeIndex]];
|
1970
2158
|
|
1971
2159
|
_this.visibleSlides = visibleSlides;
|
1972
|
-
}
|
2160
|
+
};
|
1973
2161
|
|
1974
2162
|
/*==========================================
|
1975
2163
|
Autoplay
|
1976
2164
|
============================================*/
|
1977
|
-
|
2165
|
+
var autoplayTimeoutId, autoplayIntervalId;
|
1978
2166
|
_this.startAutoplay = function () {
|
1979
|
-
if (
|
1980
|
-
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
1990
|
-
|
1991
|
-
|
1992
|
-
|
1993
|
-
|
1994
|
-
|
1995
|
-
|
2167
|
+
if (_this.support.transitions) {
|
2168
|
+
if (typeof autoplayTimeoutId !== 'undefined') return false;
|
2169
|
+
if (!params.autoplay) return;
|
2170
|
+
_this.callPlugins('onAutoplayStart');
|
2171
|
+
if (params.onAutoplayStart) _this.fireCallback(params.onAutoplayStart, _this);
|
2172
|
+
autoplay();
|
2173
|
+
}
|
2174
|
+
else {
|
2175
|
+
if (typeof autoplayIntervalId !== 'undefined') return false;
|
2176
|
+
if (!params.autoplay) return;
|
2177
|
+
_this.callPlugins('onAutoplayStart');
|
2178
|
+
if (params.onAutoplayStart) _this.fireCallback(params.onAutoplayStart, _this);
|
2179
|
+
autoplayIntervalId = setInterval(function () {
|
2180
|
+
if (params.loop) {
|
2181
|
+
_this.fixLoop();
|
2182
|
+
_this.swipeNext(true);
|
2183
|
+
}
|
2184
|
+
else if (!_this.swipeNext(true)) {
|
2185
|
+
if (!params.autoplayStopOnLast) _this.swipeTo(0);
|
2186
|
+
else {
|
2187
|
+
clearInterval(autoplayIntervalId);
|
2188
|
+
autoplayIntervalId = undefined;
|
2189
|
+
}
|
2190
|
+
}
|
2191
|
+
}, params.autoplay);
|
2192
|
+
}
|
2193
|
+
};
|
2194
|
+
_this.stopAutoplay = function (internal) {
|
2195
|
+
if (_this.support.transitions) {
|
2196
|
+
if (!autoplayTimeoutId) return;
|
2197
|
+
if (autoplayTimeoutId) clearTimeout(autoplayTimeoutId);
|
2198
|
+
autoplayTimeoutId = undefined;
|
2199
|
+
if (internal && !params.autoplayDisableOnInteraction) {
|
2200
|
+
_this.wrapperTransitionEnd(function () {
|
2201
|
+
autoplay();
|
2202
|
+
});
|
2203
|
+
}
|
2204
|
+
_this.callPlugins('onAutoplayStop');
|
2205
|
+
if (params.onAutoplayStop) _this.fireCallback(params.onAutoplayStop, _this);
|
2206
|
+
}
|
2207
|
+
else {
|
2208
|
+
if (autoplayIntervalId) clearInterval(autoplayIntervalId);
|
2209
|
+
autoplayIntervalId = undefined;
|
2210
|
+
_this.callPlugins('onAutoplayStop');
|
2211
|
+
if (params.onAutoplayStop) _this.fireCallback(params.onAutoplayStop, _this);
|
2212
|
+
}
|
2213
|
+
};
|
2214
|
+
function autoplay() {
|
2215
|
+
autoplayTimeoutId = setTimeout(function () {
|
2216
|
+
if (params.loop) {
|
2217
|
+
_this.fixLoop();
|
2218
|
+
_this.swipeNext(true);
|
2219
|
+
}
|
2220
|
+
else if (!_this.swipeNext(true)) {
|
2221
|
+
if (!params.autoplayStopOnLast) _this.swipeTo(0);
|
2222
|
+
else {
|
2223
|
+
clearTimeout(autoplayTimeoutId);
|
2224
|
+
autoplayTimeoutId = undefined;
|
2225
|
+
}
|
2226
|
+
}
|
2227
|
+
_this.wrapperTransitionEnd(function () {
|
2228
|
+
if (typeof autoplayTimeoutId !== 'undefined') autoplay();
|
2229
|
+
});
|
2230
|
+
}, params.autoplay);
|
1996
2231
|
}
|
1997
2232
|
/*==================================================
|
1998
2233
|
Loop
|
1999
2234
|
====================================================*/
|
2000
2235
|
_this.loopCreated = false;
|
2001
|
-
_this.removeLoopedSlides = function(){
|
2236
|
+
_this.removeLoopedSlides = function () {
|
2002
2237
|
if (_this.loopCreated) {
|
2003
|
-
for (var i=0; i<_this.slides.length; i++) {
|
2004
|
-
if (_this.slides[i].getData('looped')===true) _this.wrapper.removeChild(_this.slides[i]);
|
2238
|
+
for (var i = 0; i < _this.slides.length; i++) {
|
2239
|
+
if (_this.slides[i].getData('looped') === true) _this.wrapper.removeChild(_this.slides[i]);
|
2005
2240
|
}
|
2006
2241
|
}
|
2007
|
-
}
|
2008
|
-
_this.createLoop = function(){
|
2009
|
-
if (_this.slides.length==0) return;
|
2010
|
-
_this.loopedSlides = params.slidesPerView+params.loopAdditionalSlides;
|
2242
|
+
};
|
2011
2243
|
|
2012
|
-
|
2013
|
-
|
2244
|
+
_this.createLoop = function () {
|
2245
|
+
if (_this.slides.length === 0) return;
|
2246
|
+
if (params.slidesPerView === 'auto') {
|
2247
|
+
_this.loopedSlides = params.loopedSlides || 1;
|
2248
|
+
}
|
2249
|
+
else {
|
2250
|
+
_this.loopedSlides = params.slidesPerView + params.loopAdditionalSlides;
|
2251
|
+
}
|
2252
|
+
|
2253
|
+
if (_this.loopedSlides > _this.slides.length) {
|
2254
|
+
_this.loopedSlides = _this.slides.length;
|
2255
|
+
}
|
2256
|
+
|
2257
|
+
var slideFirstHTML = '',
|
2258
|
+
slideLastHTML = '',
|
2259
|
+
i;
|
2260
|
+
var slidesSetFullHTML = '';
|
2261
|
+
/**
|
2262
|
+
loopedSlides is too large if loopAdditionalSlides are set.
|
2263
|
+
Need to divide the slides by maximum number of slides existing.
|
2014
2264
|
|
2015
|
-
|
2016
|
-
|
2017
|
-
|
2265
|
+
@author Tomaz Lovrec <tomaz.lovrec@blanc-noir.at>
|
2266
|
+
*/
|
2267
|
+
var numSlides = _this.slides.length;
|
2268
|
+
var fullSlideSets = Math.floor(_this.loopedSlides / numSlides);
|
2269
|
+
var remainderSlides = _this.loopedSlides % numSlides;
|
2270
|
+
// assemble full sets of slides
|
2271
|
+
for (i = 0; i < (fullSlideSets * numSlides); i++) {
|
2272
|
+
var j = i;
|
2273
|
+
if (i >= numSlides) {
|
2274
|
+
var over = Math.floor(i / numSlides);
|
2275
|
+
j = i - (numSlides * over);
|
2276
|
+
}
|
2277
|
+
slidesSetFullHTML += _this.slides[j].outerHTML;
|
2278
|
+
}
|
2279
|
+
// assemble remainder slides
|
2280
|
+
// assemble remainder appended to existing slides
|
2281
|
+
for (i = 0; i < remainderSlides;i++) {
|
2282
|
+
slideLastHTML += addClassToHtmlString(params.slideDuplicateClass, _this.slides[i].outerHTML);
|
2018
2283
|
}
|
2019
|
-
//
|
2020
|
-
for (i=
|
2021
|
-
|
2284
|
+
// assemble slides that get preppended to existing slides
|
2285
|
+
for (i = numSlides - remainderSlides; i < numSlides;i++) {
|
2286
|
+
slideFirstHTML += addClassToHtmlString(params.slideDuplicateClass, _this.slides[i].outerHTML);
|
2022
2287
|
}
|
2023
|
-
|
2288
|
+
// assemble all slides
|
2289
|
+
var slides = slideFirstHTML + slidesSetFullHTML + wrapper.innerHTML + slidesSetFullHTML + slideLastHTML;
|
2290
|
+
// set the slides
|
2291
|
+
wrapper.innerHTML = slides;
|
2024
2292
|
|
2025
2293
|
_this.loopCreated = true;
|
2026
2294
|
_this.calcSlides();
|
2027
2295
|
|
2028
2296
|
//Update Looped Slides with special class
|
2029
|
-
for (i=0; i<_this.slides.length; i++) {
|
2030
|
-
if (i<_this.loopedSlides || i>=_this.slides.length-_this.loopedSlides) _this.slides[i].setData('looped', true);
|
2297
|
+
for (i = 0; i < _this.slides.length; i++) {
|
2298
|
+
if (i < _this.loopedSlides || i >= _this.slides.length - _this.loopedSlides) _this.slides[i].setData('looped', true);
|
2031
2299
|
}
|
2032
2300
|
_this.callPlugins('onCreateLoop');
|
2033
2301
|
|
2034
|
-
}
|
2035
|
-
|
2302
|
+
};
|
2303
|
+
|
2304
|
+
_this.fixLoop = function () {
|
2305
|
+
var newIndex;
|
2036
2306
|
//Fix For Negative Oversliding
|
2037
2307
|
if (_this.activeIndex < _this.loopedSlides) {
|
2038
|
-
|
2039
|
-
_this.swipeTo(newIndex, 0, false)
|
2308
|
+
newIndex = _this.slides.length - _this.loopedSlides * 3 + _this.activeIndex;
|
2309
|
+
_this.swipeTo(newIndex, 0, false);
|
2040
2310
|
}
|
2041
2311
|
//Fix For Positive Oversliding
|
2042
|
-
else if (_this.activeIndex > _this.slides.length - params.slidesPerView*2) {
|
2043
|
-
|
2044
|
-
_this.swipeTo(newIndex,0, false)
|
2312
|
+
else if ((params.slidesPerView === 'auto' && _this.activeIndex >= _this.loopedSlides * 2) || (_this.activeIndex > _this.slides.length - params.slidesPerView * 2)) {
|
2313
|
+
newIndex = -_this.slides.length + _this.activeIndex + _this.loopedSlides;
|
2314
|
+
_this.swipeTo(newIndex, 0, false);
|
2045
2315
|
}
|
2046
|
-
}
|
2316
|
+
};
|
2317
|
+
|
2047
2318
|
/*==================================================
|
2048
2319
|
Slides Loader
|
2049
2320
|
====================================================*/
|
2050
|
-
_this.loadSlides = function(){
|
2321
|
+
_this.loadSlides = function () {
|
2051
2322
|
var slidesHTML = '';
|
2052
2323
|
_this.activeLoaderIndex = 0;
|
2053
2324
|
var slides = params.loader.slides;
|
2054
|
-
var slidesToLoad = params.loader.loadAllSlides ? slides.length : params.slidesPerView*(1+params.loader.surroundGroups);
|
2055
|
-
for (var i=0; i< slidesToLoad; i++) {
|
2056
|
-
if (params.loader.slidesHTMLType
|
2325
|
+
var slidesToLoad = params.loader.loadAllSlides ? slides.length : params.slidesPerView * (1 + params.loader.surroundGroups);
|
2326
|
+
for (var i = 0; i < slidesToLoad; i++) {
|
2327
|
+
if (params.loader.slidesHTMLType === 'outer') slidesHTML += slides[i];
|
2057
2328
|
else {
|
2058
|
-
slidesHTML+='<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+'</'+params.slideElement+'>';
|
2329
|
+
slidesHTML += '<' + params.slideElement + ' class="' + params.slideClass + '" data-swiperindex="' + i + '">' + slides[i] + '</' + params.slideElement + '>';
|
2059
2330
|
}
|
2060
2331
|
}
|
2061
2332
|
_this.wrapper.innerHTML = slidesHTML;
|
@@ -2064,55 +2335,58 @@ var Swiper = function (selector, params) {
|
|
2064
2335
|
if (!params.loader.loadAllSlides) {
|
2065
2336
|
_this.wrapperTransitionEnd(_this.reloadSlides, true);
|
2066
2337
|
}
|
2067
|
-
}
|
2068
|
-
|
2338
|
+
};
|
2339
|
+
|
2340
|
+
_this.reloadSlides = function () {
|
2069
2341
|
var slides = params.loader.slides;
|
2070
|
-
var newActiveIndex = parseInt(_this.activeSlide().data('swiperindex'),10)
|
2071
|
-
if (newActiveIndex<0 || newActiveIndex>slides.length-1) return //<-- Exit
|
2342
|
+
var newActiveIndex = parseInt(_this.activeSlide().data('swiperindex'), 10);
|
2343
|
+
if (newActiveIndex < 0 || newActiveIndex > slides.length - 1) return; //<-- Exit
|
2072
2344
|
_this.activeLoaderIndex = newActiveIndex;
|
2073
|
-
var firstIndex = Math.max(0, newActiveIndex - params.slidesPerView*params.loader.surroundGroups)
|
2074
|
-
var lastIndex = Math.min(newActiveIndex+params.slidesPerView*(1+params.loader.surroundGroups)-1, slides.length-1)
|
2345
|
+
var firstIndex = Math.max(0, newActiveIndex - params.slidesPerView * params.loader.surroundGroups);
|
2346
|
+
var lastIndex = Math.min(newActiveIndex + params.slidesPerView * (1 + params.loader.surroundGroups) - 1, slides.length - 1);
|
2075
2347
|
//Update Transforms
|
2076
|
-
if (newActiveIndex>0) {
|
2077
|
-
var newTransform = -slideSize*(newActiveIndex-firstIndex)
|
2078
|
-
|
2079
|
-
|
2080
|
-
_this.setWrapperTransition(0)
|
2348
|
+
if (newActiveIndex > 0) {
|
2349
|
+
var newTransform = -slideSize * (newActiveIndex - firstIndex);
|
2350
|
+
_this.setWrapperTranslate(newTransform);
|
2351
|
+
_this.setWrapperTransition(0);
|
2081
2352
|
}
|
2353
|
+
var i; // loop index
|
2082
2354
|
//New Slides
|
2083
|
-
if (params.loader.logic==='reload') {
|
2355
|
+
if (params.loader.logic === 'reload') {
|
2084
2356
|
_this.wrapper.innerHTML = '';
|
2085
2357
|
var slidesHTML = '';
|
2086
|
-
for (
|
2087
|
-
slidesHTML += params.loader.slidesHTMLType
|
2358
|
+
for (i = firstIndex; i <= lastIndex; i++) {
|
2359
|
+
slidesHTML += params.loader.slidesHTMLType === 'outer' ? slides[i] : '<' + params.slideElement + ' class="' + params.slideClass + '" data-swiperindex="' + i + '">' + slides[i] + '</' + params.slideElement + '>';
|
2088
2360
|
}
|
2089
2361
|
_this.wrapper.innerHTML = slidesHTML;
|
2090
2362
|
}
|
2091
2363
|
else {
|
2092
|
-
var minExistIndex=1000;
|
2093
|
-
var maxExistIndex=0;
|
2094
|
-
|
2364
|
+
var minExistIndex = 1000;
|
2365
|
+
var maxExistIndex = 0;
|
2366
|
+
|
2367
|
+
for (i = 0; i < _this.slides.length; i++) {
|
2095
2368
|
var index = _this.slides[i].data('swiperindex');
|
2096
|
-
if (index<firstIndex || index>lastIndex) {
|
2369
|
+
if (index < firstIndex || index > lastIndex) {
|
2097
2370
|
_this.wrapper.removeChild(_this.slides[i]);
|
2098
2371
|
}
|
2099
2372
|
else {
|
2100
|
-
minExistIndex = Math.min(index, minExistIndex)
|
2101
|
-
maxExistIndex = Math.max(index, maxExistIndex)
|
2373
|
+
minExistIndex = Math.min(index, minExistIndex);
|
2374
|
+
maxExistIndex = Math.max(index, maxExistIndex);
|
2102
2375
|
}
|
2103
2376
|
}
|
2104
|
-
for (
|
2105
|
-
|
2106
|
-
|
2377
|
+
for (i = firstIndex; i <= lastIndex; i++) {
|
2378
|
+
var newSlide;
|
2379
|
+
if (i < minExistIndex) {
|
2380
|
+
newSlide = document.createElement(params.slideElement);
|
2107
2381
|
newSlide.className = params.slideClass;
|
2108
|
-
newSlide.setAttribute('data-swiperindex',i);
|
2382
|
+
newSlide.setAttribute('data-swiperindex', i);
|
2109
2383
|
newSlide.innerHTML = slides[i];
|
2110
2384
|
_this.wrapper.insertBefore(newSlide, _this.wrapper.firstChild);
|
2111
2385
|
}
|
2112
|
-
if (i>maxExistIndex) {
|
2113
|
-
|
2386
|
+
if (i > maxExistIndex) {
|
2387
|
+
newSlide = document.createElement(params.slideElement);
|
2114
2388
|
newSlide.className = params.slideClass;
|
2115
|
-
newSlide.setAttribute('data-swiperindex',i);
|
2389
|
+
newSlide.setAttribute('data-swiperindex', i);
|
2116
2390
|
newSlide.innerHTML = slides[i];
|
2117
2391
|
_this.wrapper.appendChild(newSlide);
|
2118
2392
|
}
|
@@ -2120,13 +2394,14 @@ var Swiper = function (selector, params) {
|
|
2120
2394
|
}
|
2121
2395
|
//reInit
|
2122
2396
|
_this.reInit(true);
|
2123
|
-
}
|
2397
|
+
};
|
2398
|
+
|
2124
2399
|
/*==================================================
|
2125
2400
|
Make Swiper
|
2126
2401
|
====================================================*/
|
2127
|
-
function makeSwiper(){
|
2402
|
+
function makeSwiper() {
|
2128
2403
|
_this.calcSlides();
|
2129
|
-
if (params.loader.slides.length>0 && _this.slides.length
|
2404
|
+
if (params.loader.slides.length > 0 && _this.slides.length === 0) {
|
2130
2405
|
_this.loadSlides();
|
2131
2406
|
}
|
2132
2407
|
if (params.loop) {
|
@@ -2134,11 +2409,12 @@ var Swiper = function (selector, params) {
|
|
2134
2409
|
}
|
2135
2410
|
_this.init();
|
2136
2411
|
initEvents();
|
2137
|
-
if (params.pagination
|
2412
|
+
if (params.pagination) {
|
2138
2413
|
_this.createPagination(true);
|
2139
2414
|
}
|
2140
|
-
|
2141
|
-
|
2415
|
+
|
2416
|
+
if (params.loop || params.initialSlide > 0) {
|
2417
|
+
_this.swipeTo(params.initialSlide, 0, false);
|
2142
2418
|
}
|
2143
2419
|
else {
|
2144
2420
|
_this.updateActiveSlide(0);
|
@@ -2146,109 +2422,141 @@ var Swiper = function (selector, params) {
|
|
2146
2422
|
if (params.autoplay) {
|
2147
2423
|
_this.startAutoplay();
|
2148
2424
|
}
|
2425
|
+
/**
|
2426
|
+
* Set center slide index.
|
2427
|
+
*
|
2428
|
+
* @author Tomaz Lovrec <tomaz.lovrec@gmail.com>
|
2429
|
+
*/
|
2430
|
+
_this.centerIndex = _this.activeIndex;
|
2149
2431
|
|
2432
|
+
// Callbacks
|
2433
|
+
if (params.onSwiperCreated) _this.fireCallback(params.onSwiperCreated, _this);
|
2434
|
+
_this.callPlugins('onSwiperCreated');
|
2150
2435
|
}
|
2436
|
+
|
2151
2437
|
makeSwiper();
|
2152
|
-
}
|
2438
|
+
};
|
2153
2439
|
|
2154
2440
|
Swiper.prototype = {
|
2155
2441
|
plugins : {},
|
2442
|
+
|
2156
2443
|
/*==================================================
|
2157
2444
|
Wrapper Operations
|
2158
2445
|
====================================================*/
|
2159
|
-
wrapperTransitionEnd : function(callback, permanent) {
|
2160
|
-
|
2161
|
-
var
|
2162
|
-
|
2446
|
+
wrapperTransitionEnd : function (callback, permanent) {
|
2447
|
+
'use strict';
|
2448
|
+
var a = this,
|
2449
|
+
el = a.wrapper,
|
2450
|
+
events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],
|
2451
|
+
i;
|
2452
|
+
|
2163
2453
|
function fireCallBack() {
|
2164
|
-
callback(a)
|
2165
|
-
if (a.params.queueEndCallbacks) a._queueEndCallbacks = false
|
2454
|
+
callback(a);
|
2455
|
+
if (a.params.queueEndCallbacks) a._queueEndCallbacks = false;
|
2166
2456
|
if (!permanent) {
|
2167
|
-
for (
|
2168
|
-
a.h.removeEventListener(el,events[i], fireCallBack
|
2457
|
+
for (i = 0; i < events.length; i++) {
|
2458
|
+
a.h.removeEventListener(el, events[i], fireCallBack);
|
2169
2459
|
}
|
2170
2460
|
}
|
2171
2461
|
}
|
2462
|
+
|
2172
2463
|
if (callback) {
|
2173
|
-
for (
|
2174
|
-
a.h.addEventListener(el,events[i], fireCallBack
|
2464
|
+
for (i = 0; i < events.length; i++) {
|
2465
|
+
a.h.addEventListener(el, events[i], fireCallBack);
|
2175
2466
|
}
|
2176
2467
|
}
|
2177
2468
|
},
|
2178
2469
|
|
2179
|
-
getWrapperTranslate : function(axis){
|
2180
|
-
|
2181
|
-
var
|
2182
|
-
|
2183
|
-
if (window.WebKitCSSMatrix) {
|
2184
|
-
var transformMatrix = new WebKitCSSMatrix(window.getComputedStyle(el, null).webkitTransform)
|
2185
|
-
matrix = transformMatrix.toString().split(',');
|
2186
|
-
}
|
2187
|
-
else {
|
2188
|
-
var transformMatrix = window.getComputedStyle(el, null).MozTransform || window.getComputedStyle(el, null).OTransform || window.getComputedStyle(el, null).MsTransform || window.getComputedStyle(el, null).msTransform || window.getComputedStyle(el, null).transform|| window.getComputedStyle(el, null).getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
|
2189
|
-
matrix = transformMatrix.toString().split(',');
|
2470
|
+
getWrapperTranslate : function (axis) {
|
2471
|
+
'use strict';
|
2472
|
+
var el = this.wrapper,
|
2473
|
+
matrix, curTransform, curStyle, transformMatrix;
|
2190
2474
|
|
2475
|
+
// automatic axis detection
|
2476
|
+
if (typeof axis === 'undefined') {
|
2477
|
+
axis = this.params.mode === 'horizontal' ? 'x' : 'y';
|
2191
2478
|
}
|
2192
|
-
|
2193
|
-
|
2194
|
-
|
2195
|
-
|
2196
|
-
|
2479
|
+
|
2480
|
+
if (this.support.transforms && this.params.useCSS3Transforms) {
|
2481
|
+
curStyle = window.getComputedStyle(el, null);
|
2482
|
+
if (window.WebKitCSSMatrix) {
|
2483
|
+
transformMatrix = new WebKitCSSMatrix(curStyle.webkitTransform);
|
2484
|
+
}
|
2485
|
+
else {
|
2486
|
+
transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
|
2487
|
+
matrix = transformMatrix.toString().split(',');
|
2488
|
+
}
|
2489
|
+
|
2490
|
+
if (axis === 'x') {
|
2197
2491
|
//Latest Chrome and webkits Fix
|
2198
|
-
|
2199
|
-
curTransform = transformMatrix.m41
|
2492
|
+
if (window.WebKitCSSMatrix)
|
2493
|
+
curTransform = transformMatrix.m41;
|
2494
|
+
//Crazy IE10 Matrix
|
2495
|
+
else if (matrix.length === 16)
|
2496
|
+
curTransform = parseFloat(matrix[12]);
|
2200
2497
|
//Normal Browsers
|
2201
2498
|
else
|
2202
|
-
curTransform = parseFloat(
|
2499
|
+
curTransform = parseFloat(matrix[4]);
|
2203
2500
|
}
|
2204
|
-
if (axis
|
2205
|
-
//Crazy IE10 Matrix
|
2206
|
-
if (matrix.length==16)
|
2207
|
-
curTransform = parseFloat( matrix[13] )
|
2501
|
+
if (axis === 'y') {
|
2208
2502
|
//Latest Chrome and webkits Fix
|
2209
|
-
|
2210
|
-
curTransform = transformMatrix.m42
|
2503
|
+
if (window.WebKitCSSMatrix)
|
2504
|
+
curTransform = transformMatrix.m42;
|
2505
|
+
//Crazy IE10 Matrix
|
2506
|
+
else if (matrix.length === 16)
|
2507
|
+
curTransform = parseFloat(matrix[13]);
|
2211
2508
|
//Normal Browsers
|
2212
2509
|
else
|
2213
|
-
curTransform = parseFloat(
|
2510
|
+
curTransform = parseFloat(matrix[5]);
|
2214
2511
|
}
|
2215
2512
|
}
|
2216
2513
|
else {
|
2217
|
-
if (axis
|
2218
|
-
if (axis
|
2514
|
+
if (axis === 'x') curTransform = parseFloat(el.style.left, 10) || 0;
|
2515
|
+
if (axis === 'y') curTransform = parseFloat(el.style.top, 10) || 0;
|
2219
2516
|
}
|
2220
2517
|
return curTransform || 0;
|
2221
2518
|
},
|
2222
2519
|
|
2223
|
-
setWrapperTranslate : function(x,y,z) {
|
2224
|
-
|
2225
|
-
|
2226
|
-
|
2227
|
-
|
2228
|
-
if (this.params.useCSS3Transforms) {
|
2229
|
-
if (this.support.transforms3d) {
|
2230
|
-
es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = 'translate3d('+x+'px, '+y+'px, '+z+'px)'
|
2231
|
-
}
|
2232
|
-
else {
|
2520
|
+
setWrapperTranslate : function (x, y, z) {
|
2521
|
+
'use strict';
|
2522
|
+
var es = this.wrapper.style,
|
2523
|
+
coords = {x: 0, y: 0, z: 0},
|
2524
|
+
translate;
|
2233
2525
|
|
2234
|
-
|
2235
|
-
|
2236
|
-
|
2237
|
-
|
2238
|
-
|
2526
|
+
// passed all coordinates
|
2527
|
+
if (arguments.length === 3) {
|
2528
|
+
coords.x = x;
|
2529
|
+
coords.y = y;
|
2530
|
+
coords.z = z;
|
2531
|
+
}
|
2532
|
+
|
2533
|
+
// passed one coordinate and optional axis
|
2534
|
+
else {
|
2535
|
+
if (typeof y === 'undefined') {
|
2536
|
+
y = this.params.mode === 'horizontal' ? 'x' : 'y';
|
2239
2537
|
}
|
2538
|
+
coords[y] = x;
|
2539
|
+
}
|
2540
|
+
|
2541
|
+
if (this.support.transforms && this.params.useCSS3Transforms) {
|
2542
|
+
translate = this.support.transforms3d ? 'translate3d(' + coords.x + 'px, ' + coords.y + 'px, ' + coords.z + 'px)' : 'translate(' + coords.x + 'px, ' + coords.y + 'px)';
|
2543
|
+
es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = translate;
|
2240
2544
|
}
|
2241
2545
|
else {
|
2242
|
-
es.left = x+'px';
|
2243
|
-
es.top
|
2546
|
+
es.left = coords.x + 'px';
|
2547
|
+
es.top = coords.y + 'px';
|
2244
2548
|
}
|
2245
|
-
this.callPlugins('onSetWrapperTransform',
|
2549
|
+
this.callPlugins('onSetWrapperTransform', coords);
|
2550
|
+
if (this.params.onSetWrapperTransform) this.fireCallback(this.params.onSetWrapperTransform, this, coords);
|
2246
2551
|
},
|
2247
2552
|
|
2248
|
-
setWrapperTransition : function(duration) {
|
2249
|
-
|
2250
|
-
|
2251
|
-
|
2553
|
+
setWrapperTransition : function (duration) {
|
2554
|
+
'use strict';
|
2555
|
+
var es = this.wrapper.style;
|
2556
|
+
es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = (duration / 1000) + 's';
|
2557
|
+
this.callPlugins('onSetWrapperTransition', {duration: duration});
|
2558
|
+
if (this.params.onSetWrapperTransition) this.fireCallback(this.params.onSetWrapperTransition, this, duration);
|
2559
|
+
|
2252
2560
|
},
|
2253
2561
|
|
2254
2562
|
/*==================================================
|
@@ -2256,29 +2564,32 @@ Swiper.prototype = {
|
|
2256
2564
|
====================================================*/
|
2257
2565
|
h : {
|
2258
2566
|
getWidth: function (el, outer) {
|
2259
|
-
|
2567
|
+
'use strict';
|
2568
|
+
var width = window.getComputedStyle(el, null).getPropertyValue('width');
|
2260
2569
|
var returnWidth = parseFloat(width);
|
2261
2570
|
//IE Fixes
|
2262
|
-
if(isNaN(returnWidth) || width.indexOf('%')>0) {
|
2571
|
+
if (isNaN(returnWidth) || width.indexOf('%') > 0) {
|
2263
2572
|
returnWidth = el.offsetWidth - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'));
|
2264
2573
|
}
|
2265
|
-
if (outer) returnWidth += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'))
|
2574
|
+
if (outer) returnWidth += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'));
|
2266
2575
|
|
2267
2576
|
return returnWidth;
|
2268
2577
|
},
|
2269
|
-
getHeight: function(el, outer) {
|
2578
|
+
getHeight: function (el, outer) {
|
2579
|
+
'use strict';
|
2270
2580
|
if (outer) return el.offsetHeight;
|
2271
2581
|
|
2272
|
-
var height = window.getComputedStyle(el, null).getPropertyValue('height')
|
2582
|
+
var height = window.getComputedStyle(el, null).getPropertyValue('height');
|
2273
2583
|
var returnHeight = parseFloat(height);
|
2274
2584
|
//IE Fixes
|
2275
|
-
if(isNaN(returnHeight) || height.indexOf('%')>0) {
|
2585
|
+
if (isNaN(returnHeight) || height.indexOf('%') > 0) {
|
2276
2586
|
returnHeight = el.offsetHeight - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'));
|
2277
2587
|
}
|
2278
|
-
if (outer) returnHeight += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'))
|
2588
|
+
if (outer) returnHeight += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'));
|
2279
2589
|
return returnHeight;
|
2280
2590
|
},
|
2281
|
-
getOffset: function(el) {
|
2591
|
+
getOffset: function (el) {
|
2592
|
+
'use strict';
|
2282
2593
|
var box = el.getBoundingClientRect();
|
2283
2594
|
var body = document.body;
|
2284
2595
|
var clientTop = el.clientTop || body.clientTop || 0;
|
@@ -2295,126 +2606,163 @@ Swiper.prototype = {
|
|
2295
2606
|
left: box.left + scrollLeft - clientLeft
|
2296
2607
|
};
|
2297
2608
|
},
|
2298
|
-
windowWidth : function() {
|
2299
|
-
|
2609
|
+
windowWidth : function () {
|
2610
|
+
'use strict';
|
2611
|
+
if (window.innerWidth) return window.innerWidth;
|
2300
2612
|
else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;
|
2301
2613
|
},
|
2302
|
-
windowHeight : function() {
|
2303
|
-
|
2614
|
+
windowHeight : function () {
|
2615
|
+
'use strict';
|
2616
|
+
if (window.innerHeight) return window.innerHeight;
|
2304
2617
|
else if (document.documentElement && document.documentElement.clientHeight) return document.documentElement.clientHeight;
|
2305
2618
|
},
|
2306
|
-
windowScroll : function() {
|
2307
|
-
|
2308
|
-
if (typeof pageYOffset
|
2619
|
+
windowScroll : function () {
|
2620
|
+
'use strict';
|
2621
|
+
if (typeof pageYOffset !== 'undefined') {
|
2309
2622
|
return {
|
2310
2623
|
left: window.pageXOffset,
|
2311
2624
|
top: window.pageYOffset
|
2312
|
-
}
|
2625
|
+
};
|
2313
2626
|
}
|
2314
2627
|
else if (document.documentElement) {
|
2315
2628
|
return {
|
2316
2629
|
left: document.documentElement.scrollLeft,
|
2317
2630
|
top: document.documentElement.scrollTop
|
2318
|
-
}
|
2631
|
+
};
|
2319
2632
|
}
|
2320
2633
|
},
|
2321
2634
|
|
2322
2635
|
addEventListener : function (el, event, listener, useCapture) {
|
2636
|
+
'use strict';
|
2637
|
+
if (typeof useCapture === 'undefined') {
|
2638
|
+
useCapture = false;
|
2639
|
+
}
|
2640
|
+
|
2323
2641
|
if (el.addEventListener) {
|
2324
|
-
el.addEventListener(event, listener, useCapture)
|
2642
|
+
el.addEventListener(event, listener, useCapture);
|
2325
2643
|
}
|
2326
2644
|
else if (el.attachEvent) {
|
2327
|
-
el.attachEvent('on'+event, listener)
|
2645
|
+
el.attachEvent('on' + event, listener);
|
2328
2646
|
}
|
2329
2647
|
},
|
2648
|
+
|
2330
2649
|
removeEventListener : function (el, event, listener, useCapture) {
|
2650
|
+
'use strict';
|
2651
|
+
if (typeof useCapture === 'undefined') {
|
2652
|
+
useCapture = false;
|
2653
|
+
}
|
2654
|
+
|
2331
2655
|
if (el.removeEventListener) {
|
2332
|
-
el.removeEventListener(event, listener, useCapture)
|
2656
|
+
el.removeEventListener(event, listener, useCapture);
|
2333
2657
|
}
|
2334
2658
|
else if (el.detachEvent) {
|
2335
|
-
el.detachEvent('on'+event, listener)
|
2659
|
+
el.detachEvent('on' + event, listener);
|
2336
2660
|
}
|
2337
2661
|
}
|
2338
2662
|
},
|
2339
2663
|
setTransform : function (el, transform) {
|
2340
|
-
|
2341
|
-
|
2664
|
+
'use strict';
|
2665
|
+
var es = el.style;
|
2666
|
+
es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transform;
|
2342
2667
|
},
|
2343
2668
|
setTranslate : function (el, translate) {
|
2344
|
-
|
2669
|
+
'use strict';
|
2670
|
+
var es = el.style;
|
2345
2671
|
var pos = {
|
2346
2672
|
x : translate.x || 0,
|
2347
2673
|
y : translate.y || 0,
|
2348
2674
|
z : translate.z || 0
|
2349
2675
|
};
|
2350
|
-
var transformString = this.support.transforms3d ? 'translate3d('+(pos.x)+'px,'+(pos.y)+'px,'+(pos.z)+'px)' : 'translate('+(pos.x)+'px,'+(pos.y)+'px)';
|
2676
|
+
var transformString = this.support.transforms3d ? 'translate3d(' + (pos.x) + 'px,' + (pos.y) + 'px,' + (pos.z) + 'px)' : 'translate(' + (pos.x) + 'px,' + (pos.y) + 'px)';
|
2351
2677
|
es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transformString;
|
2352
2678
|
if (!this.support.transforms) {
|
2353
|
-
es.left = pos.x+'px'
|
2354
|
-
es.top = pos.y+'px'
|
2679
|
+
es.left = pos.x + 'px';
|
2680
|
+
es.top = pos.y + 'px';
|
2355
2681
|
}
|
2356
2682
|
},
|
2357
2683
|
setTransition : function (el, duration) {
|
2358
|
-
|
2359
|
-
|
2684
|
+
'use strict';
|
2685
|
+
var es = el.style;
|
2686
|
+
es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = duration + 'ms';
|
2360
2687
|
},
|
2361
2688
|
/*==================================================
|
2362
2689
|
Feature Detection
|
2363
2690
|
====================================================*/
|
2364
2691
|
support: {
|
2365
2692
|
|
2366
|
-
touch : (window.Modernizr && Modernizr.touch===true) || (function() {
|
2367
|
-
|
2693
|
+
touch : (window.Modernizr && Modernizr.touch === true) || (function () {
|
2694
|
+
'use strict';
|
2695
|
+
return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
|
2368
2696
|
})(),
|
2369
2697
|
|
2370
|
-
transforms3d : (window.Modernizr && Modernizr.csstransforms3d===true) || (function() {
|
2371
|
-
|
2372
|
-
|
2698
|
+
transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {
|
2699
|
+
'use strict';
|
2700
|
+
var div = document.createElement('div').style;
|
2701
|
+
return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);
|
2373
2702
|
})(),
|
2374
2703
|
|
2375
|
-
transforms : (window.Modernizr && Modernizr.csstransforms===true) || (function(){
|
2376
|
-
|
2377
|
-
|
2704
|
+
transforms : (window.Modernizr && Modernizr.csstransforms === true) || (function () {
|
2705
|
+
'use strict';
|
2706
|
+
var div = document.createElement('div').style;
|
2707
|
+
return ('transform' in div || 'WebkitTransform' in div || 'MozTransform' in div || 'msTransform' in div || 'MsTransform' in div || 'OTransform' in div);
|
2378
2708
|
})(),
|
2379
2709
|
|
2380
|
-
transitions : (window.Modernizr && Modernizr.csstransitions===true) || (function(){
|
2381
|
-
|
2382
|
-
|
2710
|
+
transitions : (window.Modernizr && Modernizr.csstransitions === true) || (function () {
|
2711
|
+
'use strict';
|
2712
|
+
var div = document.createElement('div').style;
|
2713
|
+
return ('transition' in div || 'WebkitTransition' in div || 'MozTransition' in div || 'msTransition' in div || 'MsTransition' in div || 'OTransition' in div);
|
2714
|
+
})(),
|
2715
|
+
|
2716
|
+
classList : (function () {
|
2717
|
+
'use strict';
|
2718
|
+
var div = document.createElement('div').style;
|
2719
|
+
return 'classList' in div;
|
2383
2720
|
})()
|
2384
2721
|
},
|
2385
2722
|
|
2386
2723
|
browser : {
|
2387
2724
|
|
2388
|
-
ie8 : (function(){
|
2725
|
+
ie8 : (function () {
|
2726
|
+
'use strict';
|
2389
2727
|
var rv = -1; // Return value assumes failure.
|
2390
|
-
if (navigator.appName
|
2728
|
+
if (navigator.appName === 'Microsoft Internet Explorer') {
|
2391
2729
|
var ua = navigator.userAgent;
|
2392
|
-
var re = new RegExp(
|
2393
|
-
if (re.exec(ua)
|
2730
|
+
var re = new RegExp(/MSIE ([0-9]{1,}[\.0-9]{0,})/);
|
2731
|
+
if (re.exec(ua) !== null)
|
2394
2732
|
rv = parseFloat(RegExp.$1);
|
2395
2733
|
}
|
2396
|
-
return rv
|
2734
|
+
return rv !== -1 && rv < 9;
|
2397
2735
|
})(),
|
2398
2736
|
|
2399
|
-
ie10 : window.navigator.msPointerEnabled
|
2737
|
+
ie10 : window.navigator.msPointerEnabled,
|
2738
|
+
ie11 : window.navigator.pointerEnabled
|
2400
2739
|
}
|
2401
|
-
}
|
2740
|
+
};
|
2402
2741
|
|
2403
2742
|
/*=========================
|
2404
2743
|
jQuery & Zepto Plugins
|
2405
2744
|
===========================*/
|
2406
|
-
if (window.jQuery||window.Zepto) {
|
2407
|
-
(function($){
|
2408
|
-
|
2409
|
-
|
2410
|
-
$(this)
|
2411
|
-
|
2412
|
-
|
2413
|
-
|
2745
|
+
if (window.jQuery || window.Zepto) {
|
2746
|
+
(function ($) {
|
2747
|
+
'use strict';
|
2748
|
+
$.fn.swiper = function (params) {
|
2749
|
+
var s = new Swiper($(this)[0], params);
|
2750
|
+
$(this).data('swiper', s);
|
2751
|
+
return s;
|
2752
|
+
};
|
2753
|
+
})(window.jQuery || window.Zepto);
|
2414
2754
|
}
|
2415
2755
|
|
2416
2756
|
// component
|
2417
|
-
if (
|
2757
|
+
if (typeof(module) !== 'undefined')
|
2418
2758
|
{
|
2419
2759
|
module.exports = Swiper;
|
2420
2760
|
}
|
2761
|
+
|
2762
|
+
// requirejs support
|
2763
|
+
if (typeof define === 'function' && define.amd) {
|
2764
|
+
define([], function () {
|
2765
|
+
'use strict';
|
2766
|
+
return Swiper;
|
2767
|
+
});
|
2768
|
+
}
|