Browse code

Refactor and rewrite as contao bundle

Benjamin Roth authored on04/11/2022 22:32:32
Showing1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,469 +0,0 @@
1
-"use strict";
2
-
3
-exports.__esModule = true;
4
-exports.default = void 0;
5
-
6
-var _ssrWindow = require("ssr-window");
7
-
8
-var _dom = _interopRequireDefault(require("../../utils/dom"));
9
-
10
-var _utils = require("../../utils/utils");
11
-
12
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
-function isEventSupported() {
15
-  var document = (0, _ssrWindow.getDocument)();
16
-  var eventName = 'onwheel';
17
-  var isSupported = (eventName in document);
18
-
19
-  if (!isSupported) {
20
-    var element = document.createElement('div');
21
-    element.setAttribute(eventName, 'return;');
22
-    isSupported = typeof element[eventName] === 'function';
23
-  }
24
-
25
-  if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
26
-  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
27
-  document.implementation.hasFeature('', '') !== true) {
28
-    // This is the only way to test support for the `wheel` event in IE9+.
29
-    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
30
-  }
31
-
32
-  return isSupported;
33
-}
34
-
35
-var Mousewheel = {
36
-  lastScrollTime: (0, _utils.now)(),
37
-  lastEventBeforeSnap: undefined,
38
-  recentWheelEvents: [],
39
-  event: function event() {
40
-    var window = (0, _ssrWindow.getWindow)();
41
-    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
42
-    return isEventSupported() ? 'wheel' : 'mousewheel';
43
-  },
44
-  normalize: function normalize(e) {
45
-    // Reasonable defaults
46
-    var PIXEL_STEP = 10;
47
-    var LINE_HEIGHT = 40;
48
-    var PAGE_HEIGHT = 800;
49
-    var sX = 0;
50
-    var sY = 0; // spinX, spinY
51
-
52
-    var pX = 0;
53
-    var pY = 0; // pixelX, pixelY
54
-    // Legacy
55
-
56
-    if ('detail' in e) {
57
-      sY = e.detail;
58
-    }
59
-
60
-    if ('wheelDelta' in e) {
61
-      sY = -e.wheelDelta / 120;
62
-    }
63
-
64
-    if ('wheelDeltaY' in e) {
65
-      sY = -e.wheelDeltaY / 120;
66
-    }
67
-
68
-    if ('wheelDeltaX' in e) {
69
-      sX = -e.wheelDeltaX / 120;
70
-    } // side scrolling on FF with DOMMouseScroll
71
-
72
-
73
-    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
74
-      sX = sY;
75
-      sY = 0;
76
-    }
77
-
78
-    pX = sX * PIXEL_STEP;
79
-    pY = sY * PIXEL_STEP;
80
-
81
-    if ('deltaY' in e) {
82
-      pY = e.deltaY;
83
-    }
84
-
85
-    if ('deltaX' in e) {
86
-      pX = e.deltaX;
87
-    }
88
-
89
-    if (e.shiftKey && !pX) {
90
-      // if user scrolls with shift he wants horizontal scroll
91
-      pX = pY;
92
-      pY = 0;
93
-    }
94
-
95
-    if ((pX || pY) && e.deltaMode) {
96
-      if (e.deltaMode === 1) {
97
-        // delta in LINE units
98
-        pX *= LINE_HEIGHT;
99
-        pY *= LINE_HEIGHT;
100
-      } else {
101
-        // delta in PAGE units
102
-        pX *= PAGE_HEIGHT;
103
-        pY *= PAGE_HEIGHT;
104
-      }
105
-    } // Fall-back if spin cannot be determined
106
-
107
-
108
-    if (pX && !sX) {
109
-      sX = pX < 1 ? -1 : 1;
110
-    }
111
-
112
-    if (pY && !sY) {
113
-      sY = pY < 1 ? -1 : 1;
114
-    }
115
-
116
-    return {
117
-      spinX: sX,
118
-      spinY: sY,
119
-      pixelX: pX,
120
-      pixelY: pY
121
-    };
122
-  },
123
-  handleMouseEnter: function handleMouseEnter() {
124
-    var swiper = this;
125
-    swiper.mouseEntered = true;
126
-  },
127
-  handleMouseLeave: function handleMouseLeave() {
128
-    var swiper = this;
129
-    swiper.mouseEntered = false;
130
-  },
131
-  handle: function handle(event) {
132
-    var e = event;
133
-    var swiper = this;
134
-    var params = swiper.params.mousewheel;
135
-
136
-    if (swiper.params.cssMode) {
137
-      e.preventDefault();
138
-    }
139
-
140
-    var target = swiper.$el;
141
-
142
-    if (swiper.params.mousewheel.eventsTarget !== 'container') {
143
-      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
144
-    }
145
-
146
-    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
147
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
148
-
149
-    var delta = 0;
150
-    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
151
-    var data = Mousewheel.normalize(e);
152
-
153
-    if (params.forceToAxis) {
154
-      if (swiper.isHorizontal()) {
155
-        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
156
-      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
157
-    } else {
158
-      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
159
-    }
160
-
161
-    if (delta === 0) return true;
162
-    if (params.invert) delta = -delta;
163
-
164
-    if (!swiper.params.freeMode) {
165
-      // Register the new event in a variable which stores the relevant data
166
-      var newEvent = {
167
-        time: (0, _utils.now)(),
168
-        delta: Math.abs(delta),
169
-        direction: Math.sign(delta),
170
-        raw: event
171
-      }; // Keep the most recent events
172
-
173
-      var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
174
-
175
-      if (recentWheelEvents.length >= 2) {
176
-        recentWheelEvents.shift(); // only store the last N events
177
-      }
178
-
179
-      var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
180
-      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
181
-      //   If direction has changed or
182
-      //   if the scroll is quicker than the previous one:
183
-      //     Animate the slider.
184
-      // Else (this is the first time the wheel is moved):
185
-      //     Animate the slider.
186
-
187
-      if (prevEvent) {
188
-        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
189
-          swiper.mousewheel.animateSlider(newEvent);
190
-        }
191
-      } else {
192
-        swiper.mousewheel.animateSlider(newEvent);
193
-      } // If it's time to release the scroll:
194
-      //   Return now so you don't hit the preventDefault.
195
-
196
-
197
-      if (swiper.mousewheel.releaseScroll(newEvent)) {
198
-        return true;
199
-      }
200
-    } else {
201
-      // Freemode or scrollContainer:
202
-      // If we recently snapped after a momentum scroll, then ignore wheel events
203
-      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
204
-      // or if it's a new scroll (larger delta or inverse sign as last event before
205
-      // an end-of-momentum snap).
206
-      var _newEvent = {
207
-        time: (0, _utils.now)(),
208
-        delta: Math.abs(delta),
209
-        direction: Math.sign(delta)
210
-      };
211
-      var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
212
-      var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
213
-
214
-      if (!ignoreWheelEvents) {
215
-        swiper.mousewheel.lastEventBeforeSnap = undefined;
216
-
217
-        if (swiper.params.loop) {
218
-          swiper.loopFix();
219
-        }
220
-
221
-        var position = swiper.getTranslate() + delta * params.sensitivity;
222
-        var wasBeginning = swiper.isBeginning;
223
-        var wasEnd = swiper.isEnd;
224
-        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
225
-        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
226
-        swiper.setTransition(0);
227
-        swiper.setTranslate(position);
228
-        swiper.updateProgress();
229
-        swiper.updateActiveIndex();
230
-        swiper.updateSlidesClasses();
231
-
232
-        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
233
-          swiper.updateSlidesClasses();
234
-        }
235
-
236
-        if (swiper.params.freeModeSticky) {
237
-          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
238
-          // the end of a momentum scroll by storing recent (N=15?) wheel events.
239
-          // 1. do all N events have decreasing or same (absolute value) delta?
240
-          // 2. did all N events arrive in the last M (M=500?) msecs?
241
-          // 3. does the earliest event have an (absolute value) delta that's
242
-          //    at least P (P=1?) larger than the most recent event's delta?
243
-          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
244
-          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
245
-          // Snap immediately and ignore remaining wheel events in this scroll.
246
-          // See comment above for "remaining wheel events in this scroll" determination.
247
-          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
248
-          clearTimeout(swiper.mousewheel.timeout);
249
-          swiper.mousewheel.timeout = undefined;
250
-          var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
251
-
252
-          if (_recentWheelEvents.length >= 15) {
253
-            _recentWheelEvents.shift(); // only store the last N events
254
-
255
-          }
256
-
257
-          var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
258
-
259
-          var firstEvent = _recentWheelEvents[0];
260
-
261
-          _recentWheelEvents.push(_newEvent);
262
-
263
-          if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
264
-            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
265
-            _recentWheelEvents.splice(0);
266
-          } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
267
-            // We're at the end of the deceleration of a momentum scroll, so there's no need
268
-            // to wait for more events. Snap ASAP on the next tick.
269
-            // Also, because there's some remaining momentum we'll bias the snap in the
270
-            // direction of the ongoing scroll because it's better UX for the scroll to snap
271
-            // in the same direction as the scroll instead of reversing to snap.  Therefore,
272
-            // if it's already scrolled more than 20% in the current direction, keep going.
273
-            var snapToThreshold = delta > 0 ? 0.8 : 0.2;
274
-            swiper.mousewheel.lastEventBeforeSnap = _newEvent;
275
-
276
-            _recentWheelEvents.splice(0);
277
-
278
-            swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {
279
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
280
-            }, 0); // no delay; move on next tick
281
-          }
282
-
283
-          if (!swiper.mousewheel.timeout) {
284
-            // if we get here, then we haven't detected the end of a momentum scroll, so
285
-            // we'll consider a scroll "complete" when there haven't been any wheel events
286
-            // for 500ms.
287
-            swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {
288
-              var snapToThreshold = 0.5;
289
-              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
290
-
291
-              _recentWheelEvents.splice(0);
292
-
293
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
294
-            }, 500);
295
-          }
296
-        } // Emit event
297
-
298
-
299
-        if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
300
-
301
-        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
302
-
303
-        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
304
-      }
305
-    }
306
-
307
-    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
308
-    return false;
309
-  },
310
-  animateSlider: function animateSlider(newEvent) {
311
-    var swiper = this;
312
-    var window = (0, _ssrWindow.getWindow)();
313
-
314
-    if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
315
-      // Prevent if delta of wheel scroll delta is below configured threshold
316
-      return false;
317
-    }
318
-
319
-    if (this.params.mousewheel.thresholdTime && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
320
-      // Prevent if time between scrolls is below configured threshold
321
-      return false;
322
-    } // If the movement is NOT big enough and
323
-    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
324
-    //   Don't go any further (avoid insignificant scroll movement).
325
-
326
-
327
-    if (newEvent.delta >= 6 && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < 60) {
328
-      // Return false as a default
329
-      return true;
330
-    } // If user is scrolling towards the end:
331
-    //   If the slider hasn't hit the latest slide or
332
-    //   if the slider is a loop and
333
-    //   if the slider isn't moving right now:
334
-    //     Go to next slide and
335
-    //     emit a scroll event.
336
-    // Else (the user is scrolling towards the beginning) and
337
-    // if the slider hasn't hit the first slide or
338
-    // if the slider is a loop and
339
-    // if the slider isn't moving right now:
340
-    //   Go to prev slide and
341
-    //   emit a scroll event.
342
-
343
-
344
-    if (newEvent.direction < 0) {
345
-      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
346
-        swiper.slideNext();
347
-        swiper.emit('scroll', newEvent.raw);
348
-      }
349
-    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
350
-      swiper.slidePrev();
351
-      swiper.emit('scroll', newEvent.raw);
352
-    } // If you got here is because an animation has been triggered so store the current time
353
-
354
-
355
-    swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
356
-
357
-    return false;
358
-  },
359
-  releaseScroll: function releaseScroll(newEvent) {
360
-    var swiper = this;
361
-    var params = swiper.params.mousewheel;
362
-
363
-    if (newEvent.direction < 0) {
364
-      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
365
-        // Return true to animate scroll on edges
366
-        return true;
367
-      }
368
-    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
369
-      // Return true to animate scroll on edges
370
-      return true;
371
-    }
372
-
373
-    return false;
374
-  },
375
-  enable: function enable() {
376
-    var swiper = this;
377
-    var event = Mousewheel.event();
378
-
379
-    if (swiper.params.cssMode) {
380
-      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
381
-      return true;
382
-    }
383
-
384
-    if (!event) return false;
385
-    if (swiper.mousewheel.enabled) return false;
386
-    var target = swiper.$el;
387
-
388
-    if (swiper.params.mousewheel.eventsTarget !== 'container') {
389
-      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
390
-    }
391
-
392
-    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
393
-    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
394
-    target.on(event, swiper.mousewheel.handle);
395
-    swiper.mousewheel.enabled = true;
396
-    return true;
397
-  },
398
-  disable: function disable() {
399
-    var swiper = this;
400
-    var event = Mousewheel.event();
401
-
402
-    if (swiper.params.cssMode) {
403
-      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
404
-      return true;
405
-    }
406
-
407
-    if (!event) return false;
408
-    if (!swiper.mousewheel.enabled) return false;
409
-    var target = swiper.$el;
410
-
411
-    if (swiper.params.mousewheel.eventsTarget !== 'container') {
412
-      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
413
-    }
414
-
415
-    target.off(event, swiper.mousewheel.handle);
416
-    swiper.mousewheel.enabled = false;
417
-    return true;
418
-  }
419
-};
420
-var _default = {
421
-  name: 'mousewheel',
422
-  params: {
423
-    mousewheel: {
424
-      enabled: false,
425
-      releaseOnEdges: false,
426
-      invert: false,
427
-      forceToAxis: false,
428
-      sensitivity: 1,
429
-      eventsTarget: 'container',
430
-      thresholdDelta: null,
431
-      thresholdTime: null
432
-    }
433
-  },
434
-  create: function create() {
435
-    var swiper = this;
436
-    (0, _utils.bindModuleMethods)(swiper, {
437
-      mousewheel: {
438
-        enabled: false,
439
-        lastScrollTime: (0, _utils.now)(),
440
-        lastEventBeforeSnap: undefined,
441
-        recentWheelEvents: [],
442
-        enable: Mousewheel.enable,
443
-        disable: Mousewheel.disable,
444
-        handle: Mousewheel.handle,
445
-        handleMouseEnter: Mousewheel.handleMouseEnter,
446
-        handleMouseLeave: Mousewheel.handleMouseLeave,
447
-        animateSlider: Mousewheel.animateSlider,
448
-        releaseScroll: Mousewheel.releaseScroll
449
-      }
450
-    });
451
-  },
452
-  on: {
453
-    init: function init(swiper) {
454
-      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
455
-        swiper.mousewheel.disable();
456
-      }
457
-
458
-      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
459
-    },
460
-    destroy: function destroy(swiper) {
461
-      if (swiper.params.cssMode) {
462
-        swiper.mousewheel.enable();
463
-      }
464
-
465
-      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
466
-    }
467
-  }
468
-};
469
-exports.default = _default;
470 0
\ No newline at end of file
Browse code

swiper.js version 6.3.3

Benjamin Roth authored on13/10/2020 19:31:56
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,469 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.default = void 0;
5
+
6
+var _ssrWindow = require("ssr-window");
7
+
8
+var _dom = _interopRequireDefault(require("../../utils/dom"));
9
+
10
+var _utils = require("../../utils/utils");
11
+
12
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+function isEventSupported() {
15
+  var document = (0, _ssrWindow.getDocument)();
16
+  var eventName = 'onwheel';
17
+  var isSupported = (eventName in document);
18
+
19
+  if (!isSupported) {
20
+    var element = document.createElement('div');
21
+    element.setAttribute(eventName, 'return;');
22
+    isSupported = typeof element[eventName] === 'function';
23
+  }
24
+
25
+  if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
26
+  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
27
+  document.implementation.hasFeature('', '') !== true) {
28
+    // This is the only way to test support for the `wheel` event in IE9+.
29
+    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
30
+  }
31
+
32
+  return isSupported;
33
+}
34
+
35
+var Mousewheel = {
36
+  lastScrollTime: (0, _utils.now)(),
37
+  lastEventBeforeSnap: undefined,
38
+  recentWheelEvents: [],
39
+  event: function event() {
40
+    var window = (0, _ssrWindow.getWindow)();
41
+    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
42
+    return isEventSupported() ? 'wheel' : 'mousewheel';
43
+  },
44
+  normalize: function normalize(e) {
45
+    // Reasonable defaults
46
+    var PIXEL_STEP = 10;
47
+    var LINE_HEIGHT = 40;
48
+    var PAGE_HEIGHT = 800;
49
+    var sX = 0;
50
+    var sY = 0; // spinX, spinY
51
+
52
+    var pX = 0;
53
+    var pY = 0; // pixelX, pixelY
54
+    // Legacy
55
+
56
+    if ('detail' in e) {
57
+      sY = e.detail;
58
+    }
59
+
60
+    if ('wheelDelta' in e) {
61
+      sY = -e.wheelDelta / 120;
62
+    }
63
+
64
+    if ('wheelDeltaY' in e) {
65
+      sY = -e.wheelDeltaY / 120;
66
+    }
67
+
68
+    if ('wheelDeltaX' in e) {
69
+      sX = -e.wheelDeltaX / 120;
70
+    } // side scrolling on FF with DOMMouseScroll
71
+
72
+
73
+    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
74
+      sX = sY;
75
+      sY = 0;
76
+    }
77
+
78
+    pX = sX * PIXEL_STEP;
79
+    pY = sY * PIXEL_STEP;
80
+
81
+    if ('deltaY' in e) {
82
+      pY = e.deltaY;
83
+    }
84
+
85
+    if ('deltaX' in e) {
86
+      pX = e.deltaX;
87
+    }
88
+
89
+    if (e.shiftKey && !pX) {
90
+      // if user scrolls with shift he wants horizontal scroll
91
+      pX = pY;
92
+      pY = 0;
93
+    }
94
+
95
+    if ((pX || pY) && e.deltaMode) {
96
+      if (e.deltaMode === 1) {
97
+        // delta in LINE units
98
+        pX *= LINE_HEIGHT;
99
+        pY *= LINE_HEIGHT;
100
+      } else {
101
+        // delta in PAGE units
102
+        pX *= PAGE_HEIGHT;
103
+        pY *= PAGE_HEIGHT;
104
+      }
105
+    } // Fall-back if spin cannot be determined
106
+
107
+
108
+    if (pX && !sX) {
109
+      sX = pX < 1 ? -1 : 1;
110
+    }
111
+
112
+    if (pY && !sY) {
113
+      sY = pY < 1 ? -1 : 1;
114
+    }
115
+
116
+    return {
117
+      spinX: sX,
118
+      spinY: sY,
119
+      pixelX: pX,
120
+      pixelY: pY
121
+    };
122
+  },
123
+  handleMouseEnter: function handleMouseEnter() {
124
+    var swiper = this;
125
+    swiper.mouseEntered = true;
126
+  },
127
+  handleMouseLeave: function handleMouseLeave() {
128
+    var swiper = this;
129
+    swiper.mouseEntered = false;
130
+  },
131
+  handle: function handle(event) {
132
+    var e = event;
133
+    var swiper = this;
134
+    var params = swiper.params.mousewheel;
135
+
136
+    if (swiper.params.cssMode) {
137
+      e.preventDefault();
138
+    }
139
+
140
+    var target = swiper.$el;
141
+
142
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
143
+      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
144
+    }
145
+
146
+    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
147
+    if (e.originalEvent) e = e.originalEvent; // jquery fix
148
+
149
+    var delta = 0;
150
+    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
151
+    var data = Mousewheel.normalize(e);
152
+
153
+    if (params.forceToAxis) {
154
+      if (swiper.isHorizontal()) {
155
+        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
156
+      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
157
+    } else {
158
+      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
159
+    }
160
+
161
+    if (delta === 0) return true;
162
+    if (params.invert) delta = -delta;
163
+
164
+    if (!swiper.params.freeMode) {
165
+      // Register the new event in a variable which stores the relevant data
166
+      var newEvent = {
167
+        time: (0, _utils.now)(),
168
+        delta: Math.abs(delta),
169
+        direction: Math.sign(delta),
170
+        raw: event
171
+      }; // Keep the most recent events
172
+
173
+      var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
174
+
175
+      if (recentWheelEvents.length >= 2) {
176
+        recentWheelEvents.shift(); // only store the last N events
177
+      }
178
+
179
+      var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
180
+      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
181
+      //   If direction has changed or
182
+      //   if the scroll is quicker than the previous one:
183
+      //     Animate the slider.
184
+      // Else (this is the first time the wheel is moved):
185
+      //     Animate the slider.
186
+
187
+      if (prevEvent) {
188
+        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
189
+          swiper.mousewheel.animateSlider(newEvent);
190
+        }
191
+      } else {
192
+        swiper.mousewheel.animateSlider(newEvent);
193
+      } // If it's time to release the scroll:
194
+      //   Return now so you don't hit the preventDefault.
195
+
196
+
197
+      if (swiper.mousewheel.releaseScroll(newEvent)) {
198
+        return true;
199
+      }
200
+    } else {
201
+      // Freemode or scrollContainer:
202
+      // If we recently snapped after a momentum scroll, then ignore wheel events
203
+      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
204
+      // or if it's a new scroll (larger delta or inverse sign as last event before
205
+      // an end-of-momentum snap).
206
+      var _newEvent = {
207
+        time: (0, _utils.now)(),
208
+        delta: Math.abs(delta),
209
+        direction: Math.sign(delta)
210
+      };
211
+      var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
212
+      var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
213
+
214
+      if (!ignoreWheelEvents) {
215
+        swiper.mousewheel.lastEventBeforeSnap = undefined;
216
+
217
+        if (swiper.params.loop) {
218
+          swiper.loopFix();
219
+        }
220
+
221
+        var position = swiper.getTranslate() + delta * params.sensitivity;
222
+        var wasBeginning = swiper.isBeginning;
223
+        var wasEnd = swiper.isEnd;
224
+        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
225
+        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
226
+        swiper.setTransition(0);
227
+        swiper.setTranslate(position);
228
+        swiper.updateProgress();
229
+        swiper.updateActiveIndex();
230
+        swiper.updateSlidesClasses();
231
+
232
+        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
233
+          swiper.updateSlidesClasses();
234
+        }
235
+
236
+        if (swiper.params.freeModeSticky) {
237
+          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
238
+          // the end of a momentum scroll by storing recent (N=15?) wheel events.
239
+          // 1. do all N events have decreasing or same (absolute value) delta?
240
+          // 2. did all N events arrive in the last M (M=500?) msecs?
241
+          // 3. does the earliest event have an (absolute value) delta that's
242
+          //    at least P (P=1?) larger than the most recent event's delta?
243
+          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
244
+          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
245
+          // Snap immediately and ignore remaining wheel events in this scroll.
246
+          // See comment above for "remaining wheel events in this scroll" determination.
247
+          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
248
+          clearTimeout(swiper.mousewheel.timeout);
249
+          swiper.mousewheel.timeout = undefined;
250
+          var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
251
+
252
+          if (_recentWheelEvents.length >= 15) {
253
+            _recentWheelEvents.shift(); // only store the last N events
254
+
255
+          }
256
+
257
+          var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
258
+
259
+          var firstEvent = _recentWheelEvents[0];
260
+
261
+          _recentWheelEvents.push(_newEvent);
262
+
263
+          if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
264
+            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
265
+            _recentWheelEvents.splice(0);
266
+          } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
267
+            // We're at the end of the deceleration of a momentum scroll, so there's no need
268
+            // to wait for more events. Snap ASAP on the next tick.
269
+            // Also, because there's some remaining momentum we'll bias the snap in the
270
+            // direction of the ongoing scroll because it's better UX for the scroll to snap
271
+            // in the same direction as the scroll instead of reversing to snap.  Therefore,
272
+            // if it's already scrolled more than 20% in the current direction, keep going.
273
+            var snapToThreshold = delta > 0 ? 0.8 : 0.2;
274
+            swiper.mousewheel.lastEventBeforeSnap = _newEvent;
275
+
276
+            _recentWheelEvents.splice(0);
277
+
278
+            swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {
279
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
280
+            }, 0); // no delay; move on next tick
281
+          }
282
+
283
+          if (!swiper.mousewheel.timeout) {
284
+            // if we get here, then we haven't detected the end of a momentum scroll, so
285
+            // we'll consider a scroll "complete" when there haven't been any wheel events
286
+            // for 500ms.
287
+            swiper.mousewheel.timeout = (0, _utils.nextTick)(function () {
288
+              var snapToThreshold = 0.5;
289
+              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
290
+
291
+              _recentWheelEvents.splice(0);
292
+
293
+              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
294
+            }, 500);
295
+          }
296
+        } // Emit event
297
+
298
+
299
+        if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
300
+
301
+        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
302
+
303
+        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
304
+      }
305
+    }
306
+
307
+    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
308
+    return false;
309
+  },
310
+  animateSlider: function animateSlider(newEvent) {
311
+    var swiper = this;
312
+    var window = (0, _ssrWindow.getWindow)();
313
+
314
+    if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
315
+      // Prevent if delta of wheel scroll delta is below configured threshold
316
+      return false;
317
+    }
318
+
319
+    if (this.params.mousewheel.thresholdTime && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
320
+      // Prevent if time between scrolls is below configured threshold
321
+      return false;
322
+    } // If the movement is NOT big enough and
323
+    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
324
+    //   Don't go any further (avoid insignificant scroll movement).
325
+
326
+
327
+    if (newEvent.delta >= 6 && (0, _utils.now)() - swiper.mousewheel.lastScrollTime < 60) {
328
+      // Return false as a default
329
+      return true;
330
+    } // If user is scrolling towards the end:
331
+    //   If the slider hasn't hit the latest slide or
332
+    //   if the slider is a loop and
333
+    //   if the slider isn't moving right now:
334
+    //     Go to next slide and
335
+    //     emit a scroll event.
336
+    // Else (the user is scrolling towards the beginning) and
337
+    // if the slider hasn't hit the first slide or
338
+    // if the slider is a loop and
339
+    // if the slider isn't moving right now:
340
+    //   Go to prev slide and
341
+    //   emit a scroll event.
342
+
343
+
344
+    if (newEvent.direction < 0) {
345
+      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
346
+        swiper.slideNext();
347
+        swiper.emit('scroll', newEvent.raw);
348
+      }
349
+    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
350
+      swiper.slidePrev();
351
+      swiper.emit('scroll', newEvent.raw);
352
+    } // If you got here is because an animation has been triggered so store the current time
353
+
354
+
355
+    swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
356
+
357
+    return false;
358
+  },
359
+  releaseScroll: function releaseScroll(newEvent) {
360
+    var swiper = this;
361
+    var params = swiper.params.mousewheel;
362
+
363
+    if (newEvent.direction < 0) {
364
+      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
365
+        // Return true to animate scroll on edges
366
+        return true;
367
+      }
368
+    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
369
+      // Return true to animate scroll on edges
370
+      return true;
371
+    }
372
+
373
+    return false;
374
+  },
375
+  enable: function enable() {
376
+    var swiper = this;
377
+    var event = Mousewheel.event();
378
+
379
+    if (swiper.params.cssMode) {
380
+      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
381
+      return true;
382
+    }
383
+
384
+    if (!event) return false;
385
+    if (swiper.mousewheel.enabled) return false;
386
+    var target = swiper.$el;
387
+
388
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
389
+      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
390
+    }
391
+
392
+    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
393
+    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
394
+    target.on(event, swiper.mousewheel.handle);
395
+    swiper.mousewheel.enabled = true;
396
+    return true;
397
+  },
398
+  disable: function disable() {
399
+    var swiper = this;
400
+    var event = Mousewheel.event();
401
+
402
+    if (swiper.params.cssMode) {
403
+      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
404
+      return true;
405
+    }
406
+
407
+    if (!event) return false;
408
+    if (!swiper.mousewheel.enabled) return false;
409
+    var target = swiper.$el;
410
+
411
+    if (swiper.params.mousewheel.eventsTarget !== 'container') {
412
+      target = (0, _dom.default)(swiper.params.mousewheel.eventsTarget);
413
+    }
414
+
415
+    target.off(event, swiper.mousewheel.handle);
416
+    swiper.mousewheel.enabled = false;
417
+    return true;
418
+  }
419
+};
420
+var _default = {
421
+  name: 'mousewheel',
422
+  params: {
423
+    mousewheel: {
424
+      enabled: false,
425
+      releaseOnEdges: false,
426
+      invert: false,
427
+      forceToAxis: false,
428
+      sensitivity: 1,
429
+      eventsTarget: 'container',
430
+      thresholdDelta: null,
431
+      thresholdTime: null
432
+    }
433
+  },
434
+  create: function create() {
435
+    var swiper = this;
436
+    (0, _utils.bindModuleMethods)(swiper, {
437
+      mousewheel: {
438
+        enabled: false,
439
+        lastScrollTime: (0, _utils.now)(),
440
+        lastEventBeforeSnap: undefined,
441
+        recentWheelEvents: [],
442
+        enable: Mousewheel.enable,
443
+        disable: Mousewheel.disable,
444
+        handle: Mousewheel.handle,
445
+        handleMouseEnter: Mousewheel.handleMouseEnter,
446
+        handleMouseLeave: Mousewheel.handleMouseLeave,
447
+        animateSlider: Mousewheel.animateSlider,
448
+        releaseScroll: Mousewheel.releaseScroll
449
+      }
450
+    });
451
+  },
452
+  on: {
453
+    init: function init(swiper) {
454
+      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
455
+        swiper.mousewheel.disable();
456
+      }
457
+
458
+      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
459
+    },
460
+    destroy: function destroy(swiper) {
461
+      if (swiper.params.cssMode) {
462
+        swiper.mousewheel.enable();
463
+      }
464
+
465
+      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
466
+    }
467
+  }
468
+};
469
+exports.default = _default;
0 470
\ No newline at end of file