vevet 5.0.11 → 5.1.1

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.
Files changed (156) hide show
  1. package/README.md +17 -17
  2. package/lib/cdn/vevet.iife.min.js +9 -9
  3. package/lib/cjs/base/Module/index.js +2 -1
  4. package/lib/cjs/base/Module/index.js.map +1 -1
  5. package/lib/cjs/components/Canvas/index.js +1 -1
  6. package/lib/cjs/components/CanvasMedia/index.js +1 -1
  7. package/lib/cjs/components/Cursor/index.js +28 -13
  8. package/lib/cjs/components/Cursor/index.js.map +1 -1
  9. package/lib/cjs/components/InView/index.js +1 -1
  10. package/lib/cjs/components/Marquee/index.js +1 -1
  11. package/lib/cjs/components/Pointers/index.js +4 -1
  12. package/lib/cjs/components/Pointers/index.js.map +1 -1
  13. package/lib/cjs/components/Preloader/index.js +1 -1
  14. package/lib/cjs/components/ProgressPreloader/index.js +1 -1
  15. package/lib/cjs/components/Raf/index.js +1 -1
  16. package/lib/cjs/components/ScrollProgress/index.js +1 -1
  17. package/lib/cjs/components/Scrollbar/index.js +2 -1
  18. package/lib/cjs/components/Scrollbar/index.js.map +1 -1
  19. package/lib/cjs/components/Snap/Slide/index.js +1 -0
  20. package/lib/cjs/components/Snap/Slide/index.js.map +1 -1
  21. package/lib/cjs/components/Snap/Swipe/index.js +93 -37
  22. package/lib/cjs/components/Snap/Swipe/index.js.map +1 -1
  23. package/lib/cjs/components/Snap/Track/index.js +12 -1
  24. package/lib/cjs/components/Snap/Track/index.js.map +1 -1
  25. package/lib/cjs/components/Snap/Wheel/index.js +241 -65
  26. package/lib/cjs/components/Snap/Wheel/index.js.map +1 -1
  27. package/lib/cjs/components/Snap/index.js +75 -39
  28. package/lib/cjs/components/Snap/index.js.map +1 -1
  29. package/lib/cjs/components/SplitText/index.js +1 -1
  30. package/lib/cjs/components/Swipe/index.js +14 -7
  31. package/lib/cjs/components/Swipe/index.js.map +1 -1
  32. package/lib/cjs/components/Timeline/index.js +6 -2
  33. package/lib/cjs/components/Timeline/index.js.map +1 -1
  34. package/lib/cjs/internal/mergeWithNoUndefined.js +24 -0
  35. package/lib/cjs/internal/mergeWithNoUndefined.js.map +1 -0
  36. package/lib/cjs/manifest.json +1 -1
  37. package/lib/cjs/utils/common/closest.js +3 -0
  38. package/lib/cjs/utils/common/closest.js.map +1 -1
  39. package/lib/cjs/utils/common/toPixels.js +3 -0
  40. package/lib/cjs/utils/common/toPixels.js.map +1 -1
  41. package/lib/cjs/utils/listeners/onResize.js +1 -1
  42. package/lib/cjs/utils/listeners/onResize.js.map +1 -1
  43. package/lib/cjs/utils/math/inRange.js +4 -4
  44. package/lib/esm/base/Module/index.js +2 -1
  45. package/lib/esm/base/Module/index.js.map +1 -1
  46. package/lib/esm/components/Canvas/index.js +1 -1
  47. package/lib/esm/components/CanvasMedia/index.js +1 -1
  48. package/lib/esm/components/Cursor/index.js +28 -13
  49. package/lib/esm/components/Cursor/index.js.map +1 -1
  50. package/lib/esm/components/InView/index.js +1 -1
  51. package/lib/esm/components/Marquee/index.js +1 -1
  52. package/lib/esm/components/Pointers/index.js +4 -1
  53. package/lib/esm/components/Pointers/index.js.map +1 -1
  54. package/lib/esm/components/Preloader/index.js +1 -1
  55. package/lib/esm/components/ProgressPreloader/index.js +1 -1
  56. package/lib/esm/components/Raf/index.js +1 -1
  57. package/lib/esm/components/ScrollProgress/index.js +1 -1
  58. package/lib/esm/components/Scrollbar/index.js +2 -1
  59. package/lib/esm/components/Scrollbar/index.js.map +1 -1
  60. package/lib/esm/components/Snap/Slide/index.js +1 -0
  61. package/lib/esm/components/Snap/Slide/index.js.map +1 -1
  62. package/lib/esm/components/Snap/Swipe/index.js +92 -36
  63. package/lib/esm/components/Snap/Swipe/index.js.map +1 -1
  64. package/lib/esm/components/Snap/Track/index.js +12 -1
  65. package/lib/esm/components/Snap/Track/index.js.map +1 -1
  66. package/lib/esm/components/Snap/Wheel/index.js +218 -66
  67. package/lib/esm/components/Snap/Wheel/index.js.map +1 -1
  68. package/lib/esm/components/Snap/index.js +62 -29
  69. package/lib/esm/components/Snap/index.js.map +1 -1
  70. package/lib/esm/components/SplitText/index.js +1 -1
  71. package/lib/esm/components/Swipe/index.js +14 -7
  72. package/lib/esm/components/Swipe/index.js.map +1 -1
  73. package/lib/esm/components/Timeline/index.js +6 -2
  74. package/lib/esm/components/Timeline/index.js.map +1 -1
  75. package/lib/esm/internal/mergeWithNoUndefined.js +10 -0
  76. package/lib/esm/internal/mergeWithNoUndefined.js.map +1 -0
  77. package/lib/esm/manifest.json +1 -1
  78. package/lib/esm/utils/common/closest.js +3 -0
  79. package/lib/esm/utils/common/closest.js.map +1 -1
  80. package/lib/esm/utils/common/toPixels.js +3 -0
  81. package/lib/esm/utils/common/toPixels.js.map +1 -1
  82. package/lib/esm/utils/listeners/onResize.js +1 -1
  83. package/lib/esm/utils/listeners/onResize.js.map +1 -1
  84. package/lib/esm/utils/math/inRange.js +4 -4
  85. package/lib/types/base/Module/index.d.ts.map +1 -1
  86. package/lib/types/components/Canvas/index.d.ts +1 -1
  87. package/lib/types/components/CanvasMedia/index.d.ts +1 -1
  88. package/lib/types/components/Cursor/index.d.ts +5 -1
  89. package/lib/types/components/Cursor/index.d.ts.map +1 -1
  90. package/lib/types/components/InView/index.d.ts +1 -1
  91. package/lib/types/components/Marquee/index.d.ts +1 -1
  92. package/lib/types/components/Pointers/index.d.ts +1 -1
  93. package/lib/types/components/Pointers/index.d.ts.map +1 -1
  94. package/lib/types/components/Preloader/index.d.ts +1 -1
  95. package/lib/types/components/ProgressPreloader/index.d.ts +1 -1
  96. package/lib/types/components/Raf/index.d.ts +1 -1
  97. package/lib/types/components/ScrollProgress/index.d.ts +1 -1
  98. package/lib/types/components/Scrollbar/index.d.ts +1 -1
  99. package/lib/types/components/Scrollbar/index.d.ts.map +1 -1
  100. package/lib/types/components/Snap/Slide/index.d.ts.map +1 -1
  101. package/lib/types/components/Snap/Swipe/index.d.ts +10 -1
  102. package/lib/types/components/Snap/Swipe/index.d.ts.map +1 -1
  103. package/lib/types/components/Snap/Track/index.d.ts +2 -0
  104. package/lib/types/components/Snap/Track/index.d.ts.map +1 -1
  105. package/lib/types/components/Snap/Wheel/index.d.ts +28 -6
  106. package/lib/types/components/Snap/Wheel/index.d.ts.map +1 -1
  107. package/lib/types/components/Snap/Wheel/types.d.ts +6 -6
  108. package/lib/types/components/Snap/Wheel/types.d.ts.map +1 -1
  109. package/lib/types/components/Snap/index.d.ts +12 -8
  110. package/lib/types/components/Snap/index.d.ts.map +1 -1
  111. package/lib/types/components/Snap/types.d.ts +19 -5
  112. package/lib/types/components/Snap/types.d.ts.map +1 -1
  113. package/lib/types/components/SplitText/index.d.ts +1 -1
  114. package/lib/types/components/Swipe/index.d.ts +1 -1
  115. package/lib/types/components/Swipe/index.d.ts.map +1 -1
  116. package/lib/types/components/Swipe/types.d.ts +9 -0
  117. package/lib/types/components/Swipe/types.d.ts.map +1 -1
  118. package/lib/types/components/Timeline/index.d.ts +1 -1
  119. package/lib/types/components/Timeline/index.d.ts.map +1 -1
  120. package/lib/types/internal/mergeWithNoUndefined.d.ts +2 -0
  121. package/lib/types/internal/mergeWithNoUndefined.d.ts.map +1 -0
  122. package/lib/types/utils/common/closest.d.ts.map +1 -1
  123. package/lib/types/utils/common/toPixels.d.ts.map +1 -1
  124. package/lib/types/utils/listeners/onResize.d.ts +1 -0
  125. package/lib/types/utils/listeners/onResize.d.ts.map +1 -1
  126. package/lib/types/utils/math/inRange.d.ts +4 -4
  127. package/package.json +1 -1
  128. package/src/base/Module/index.ts +8 -5
  129. package/src/components/Canvas/index.ts +1 -1
  130. package/src/components/CanvasMedia/index.ts +1 -1
  131. package/src/components/Cursor/index.ts +35 -15
  132. package/src/components/InView/index.ts +1 -1
  133. package/src/components/Marquee/index.ts +1 -1
  134. package/src/components/Pointers/index.ts +5 -1
  135. package/src/components/Preloader/index.ts +1 -1
  136. package/src/components/ProgressPreloader/index.ts +1 -1
  137. package/src/components/Raf/index.ts +1 -1
  138. package/src/components/ScrollProgress/index.ts +1 -1
  139. package/src/components/Scrollbar/index.ts +2 -1
  140. package/src/components/Snap/Slide/index.ts +1 -0
  141. package/src/components/Snap/Swipe/index.ts +121 -49
  142. package/src/components/Snap/Track/index.ts +15 -1
  143. package/src/components/Snap/Wheel/index.ts +285 -73
  144. package/src/components/Snap/Wheel/types.ts +7 -7
  145. package/src/components/Snap/index.ts +54 -38
  146. package/src/components/Snap/types.ts +24 -5
  147. package/src/components/SplitText/index.ts +1 -1
  148. package/src/components/Swipe/index.ts +25 -7
  149. package/src/components/Swipe/types.ts +12 -0
  150. package/src/components/Timeline/index.ts +8 -2
  151. package/src/internal/mergeWithNoUndefined.ts +20 -0
  152. package/src/manifest.json +1 -1
  153. package/src/utils/common/closest.ts +4 -0
  154. package/src/utils/common/toPixels.ts +2 -0
  155. package/src/utils/listeners/onResize.ts +2 -1
  156. package/src/utils/math/inRange.ts +4 -4
@@ -4,31 +4,29 @@ export class SnapSwipe {
4
4
  constructor(snap) {
5
5
  this.snap = snap;
6
6
  snap.on('destroy', () => this._destroy(), { protected: true });
7
- this._startIndex = snap.activeIndex;
7
+ const { props, activeIndex } = snap;
8
+ this._startIndex = activeIndex;
8
9
  this._startTime = 0;
9
10
  this._swipe = new Swipe({
10
11
  container: snap.eventsEmitter,
11
- enabled: snap.props.swipe,
12
- grabCursor: snap.props.grabCursor,
13
- minTime: snap.props.swipeMinTime,
14
- threshold: snap.props.swipeThreshold,
12
+ enabled: props.swipe,
13
+ grabCursor: props.grabCursor,
14
+ minTime: props.swipeMinTime,
15
+ threshold: props.swipeThreshold,
15
16
  axis: this.axis,
16
- inertia: snap.props.freemode,
17
- inertiaDuration: snap.props.swipeInertiaDuration,
18
- inertiaRatio: snap.props.swipeInertiaRatio,
19
- velocityModifier: (source) => {
20
- if (snap.props.freemode) {
21
- return source;
22
- }
23
- const { coord, size: slideSize } = snap.activeSlide;
24
- snap.track.target = snap.track.current;
25
- const output = Object.assign(Object.assign({}, source), { [this.axis]: clamp(source[this.axis], -coord, snap.domSize - slideSize - coord) });
26
- return output;
27
- },
17
+ inertia: false,
18
+ inertiaDuration: props.swipeInertiaDuration,
19
+ inertiaRatio: props.swipeInertiaRatio,
20
+ velocityModifier: this._handleVelocityModifier.bind(this),
21
+ inertiaDistanceThreshold: 5,
28
22
  });
29
23
  this._swipe.on('start', (data) => this._handleSwipeStart(data));
30
24
  this._swipe.on('move', (data) => this._handleSwipeMove(data));
31
25
  this._swipe.on('end', (data) => this._handleSwipeEnd(data));
26
+ this._swipe.on('inertiaStart', () => this._handleSwipeInertiaStart());
27
+ this._swipe.on('inertiaEnd', () => this._handleSwipeInertiaEnd());
28
+ this._swipe.on('inertiaFail', () => this._handleSwipeInertiaFail());
29
+ this._swipe.on('inertiaCancel', () => this._handleSwipeInertiaCancel());
32
30
  // on props change
33
31
  snap.on('props', () => {
34
32
  this._swipe.updateProps({
@@ -37,7 +35,8 @@ export class SnapSwipe {
37
35
  minTime: snap.props.swipeMinTime,
38
36
  threshold: snap.props.swipeThreshold,
39
37
  axis: this.axis,
40
- inertia: snap.props.freemode,
38
+ inertiaDuration: snap.props.swipeInertiaDuration,
39
+ inertiaRatio: snap.props.swipeInertiaRatio,
41
40
  });
42
41
  }, { protected: true });
43
42
  }
@@ -71,6 +70,30 @@ export class SnapSwipe {
71
70
  get diff() {
72
71
  return this.axis === 'x' ? this._swipe.diff.x : this._swipe.diff.y;
73
72
  }
73
+ _handleVelocityModifier(source) {
74
+ const { props, track, activeSlide, domSize } = this.snap;
75
+ const { coord, size: slideSize } = activeSlide;
76
+ // Simple freemode
77
+ if (props.freemode === true) {
78
+ return source;
79
+ }
80
+ // Update target coordinate
81
+ track.target = track.current;
82
+ // Sticky freemode
83
+ if (props.freemode === 'sticky' && !track.isSlideScrolling) {
84
+ const virtualCoord = track.loopedCurrent - source[this.axis];
85
+ const magnet = this.snap.getNearestMagnet(virtualCoord);
86
+ if (!magnet) {
87
+ return source;
88
+ }
89
+ const newVelocity = track.loopedCurrent - virtualCoord - magnet.diff;
90
+ return Object.assign(Object.assign({}, source), { [this.axis]: newVelocity });
91
+ }
92
+ // Freemode: false, when slides are scrolled
93
+ const value = clamp(source[this.axis], -coord, domSize - slideSize - coord);
94
+ const output = Object.assign(Object.assign({}, source), { [this.axis]: value });
95
+ return output;
96
+ }
74
97
  /**
75
98
  * Handles swipe `start` event.
76
99
  */
@@ -92,23 +115,23 @@ export class SnapSwipe {
92
115
  */
93
116
  _handleSwipeMove(coords) {
94
117
  const { snap } = this;
95
- const { swipeSpeed, followSwipe: shouldFollow } = snap.props;
96
- if (!shouldFollow &&
97
- !snap.props.followSwipe &&
98
- !snap.track.isSlideScrolling) {
118
+ const { props, track, callbacks } = snap;
119
+ const { followSwipe: shouldFollow } = props;
120
+ if (!shouldFollow && !track.isSlideScrolling) {
99
121
  return;
100
122
  }
101
- // Normalize wheel data
123
+ // Normalize swipe delta
102
124
  const swipeDelta = this.axis === 'x' ? coords.step.x : coords.step.y;
103
- const delta = swipeDelta * -swipeSpeed;
125
+ const speed = this.hasInertia ? 1 : props.swipeSpeed;
126
+ const delta = swipeDelta * -speed;
104
127
  // Update track target
105
- snap.track.iterateTarget(delta);
106
- // Clamp target if inertia active
128
+ track.iterateTarget(delta);
129
+ // Clamp target if inertia is animating
107
130
  if (this._swipe.hasInertia) {
108
- snap.track.clampTarget();
131
+ track.clampTarget();
109
132
  }
110
133
  // Emit move callbacks
111
- snap.callbacks.emit('swipe', coords);
134
+ callbacks.emit('swipe', coords);
112
135
  }
113
136
  /** Handles swipe `end` event */
114
137
  _handleSwipeEnd(coords) {
@@ -118,38 +141,71 @@ export class SnapSwipe {
118
141
  // Emit end callbacks
119
142
  this.snap.callbacks.emit('swipeEnd', coords);
120
143
  }
144
+ /** Handles swipe inertia start */
145
+ _handleSwipeInertiaStart() {
146
+ this.snap.callbacks.emit('swipeInertiaStart', undefined);
147
+ }
148
+ /** Handles swipe inertia end */
149
+ _handleSwipeInertiaEnd() {
150
+ this.snap.callbacks.emit('swipeInertiaEnd', undefined);
151
+ }
152
+ /** Handles swipe inertia fail */
153
+ _handleSwipeInertiaFail() {
154
+ const { snap } = this;
155
+ if (snap.props.freemode === 'sticky' && !snap.track.isSlideScrolling) {
156
+ if (this.isShort) {
157
+ this._endShort();
158
+ }
159
+ else {
160
+ snap.stick();
161
+ }
162
+ }
163
+ this.snap.callbacks.emit('swipeInertiaFail', undefined);
164
+ }
165
+ /** Handles swipe inertia cancel */
166
+ _handleSwipeInertiaCancel() {
167
+ this.snap.callbacks.emit('swipeInertiaCancel', undefined);
168
+ }
121
169
  /** End swipe action */
122
170
  _end() {
123
171
  const { snap, _swipe: swipe } = this;
124
172
  const { props, track } = snap;
125
- // handle freemode
173
+ // Handle freemode
126
174
  if (props.freemode) {
175
+ this._swipe.updateProps({ inertia: true });
176
+ // Clamp & stick if out of bounds
127
177
  if (!track.canLoop &&
128
178
  (track.target < track.min || track.target > track.max)) {
129
179
  swipe.cancelInertia();
130
180
  snap.stick();
131
181
  }
182
+ // End short swipe
183
+ if (this.isShort && props.freemode === 'sticky') {
184
+ this._swipe.updateProps({ inertia: false });
185
+ swipe.cancelInertia();
186
+ this._endShort();
187
+ }
132
188
  return;
133
189
  }
134
- // enable inertia if active slide is being scrolled
190
+ // Enable inertia if active slide is being scrolled
135
191
  if (track.isSlideScrolling) {
136
192
  this._swipe.updateProps({ inertia: true });
137
193
  return;
138
194
  }
139
- // disable inertia
195
+ // Disable inertia
140
196
  this._swipe.updateProps({ inertia: false });
141
- // return if followSwipe is disabled
197
+ // Return if followSwipe is disabled
142
198
  if (!props.followSwipe) {
143
199
  this._endNoFollow();
144
200
  return;
145
201
  }
146
- // stick to target slide
202
+ // Short swipe
147
203
  if (this.isShort) {
148
204
  this._endShort();
205
+ return;
149
206
  }
150
- else {
151
- snap.stick();
152
- }
207
+ // Or just stick to the nearest slide
208
+ snap.stick();
153
209
  }
154
210
  /** End short swipe */
155
211
  _endShort() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Snap/Swipe/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Snap/Swipe/index.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export class SnapTrack {
35
35
  }
36
36
  /** Get looped current value */
37
37
  get loopedCurrent() {
38
- return this.canLoop ? loop(this.current, this.min, this.max) : this.current;
38
+ return this.loopCoord(this.current);
39
39
  }
40
40
  /** Get track offset */
41
41
  get offset() {
@@ -46,6 +46,10 @@ export class SnapTrack {
46
46
  get loopCount() {
47
47
  return Math.floor(this.current / this.max);
48
48
  }
49
+ /** Loop a coordinate if can loop */
50
+ loopCoord(coord) {
51
+ return this.canLoop ? loop(coord, this.min, this.max) : coord;
52
+ }
49
53
  /** Interpolate the current track value */
50
54
  lerp(factor) {
51
55
  let { target } = this;
@@ -65,6 +69,13 @@ export class SnapTrack {
65
69
  target = clamp(target, min - edgeSpace, max + edgeSpace);
66
70
  }
67
71
  // Interpolate current value
72
+ const rest = Math.abs(this.current - target);
73
+ const fastThreshold = 5;
74
+ if (rest < fastThreshold) {
75
+ const fastProgress = 1 - rest / fastThreshold;
76
+ const additionalFactor = (1 - factor) / 3;
77
+ factor += additionalFactor * fastProgress;
78
+ }
68
79
  this.current = lerp(this.current, target, factor, 0.000001);
69
80
  }
70
81
  /** Whether the track is interpolated */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Snap/Track/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Snap/Track/index.ts"],"names":[],"mappings":"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"}
@@ -1,55 +1,88 @@
1
- import { addEventListener, normalizeWheel } from '../../../utils';
1
+ import { addEventListener, clamp, normalizeWheel } from '../../../utils';
2
+ import { initVevet } from '../../../global/initVevet';
3
+ const deltasCount = 6;
2
4
  export class SnapWheel {
3
5
  constructor(_snap) {
4
6
  this._snap = _snap;
5
7
  /** Detects if wheel event is started */
6
8
  this._hasStarted = false;
7
- /** Accummulated wheel value for `followWheel=false` */
8
- this._noFollowAccum = 0;
9
+ /** Deltas history */
10
+ this._deltas = [];
9
11
  /** Last time wheel event was fired */
10
- this._lastNoFollowTime = 0;
12
+ this._lastWheelTime = 0;
11
13
  _snap.on('destroy', () => this._destroy(), { protected: true });
12
14
  this._destructor = addEventListener(_snap.eventsEmitter, 'wheel', (event) => this._handleWheel(event));
13
15
  }
16
+ /** Destroy wheel listeners */
17
+ _destroy() {
18
+ this._destructor();
19
+ if (this._debounceEnd) {
20
+ clearTimeout(this._debounceEnd);
21
+ }
22
+ }
14
23
  /** Snap component */
15
24
  get snap() {
16
25
  return this._snap;
17
26
  }
27
+ /** Get absolute deltas */
28
+ get absDeltas() {
29
+ return this._deltas.map((d) => Math.abs(d));
30
+ }
31
+ /** Get last wheel time */
32
+ get lastWheelTime() {
33
+ return this._lastWheelTime;
34
+ }
18
35
  /**
19
36
  * Handles wheel events
20
37
  */
21
38
  _handleWheel(event) {
22
39
  const { snap } = this;
23
- if (!snap.props.wheel) {
40
+ const { props } = snap;
41
+ if (!props.wheel) {
24
42
  return;
25
43
  }
26
44
  event.preventDefault();
27
- const { wheelAxis } = snap.props;
28
- // Start callback
45
+ // Get delta
46
+ const wheelData = normalizeWheel(event);
47
+ const wheelAxis = props.wheelAxis === 'auto' ? snap.axis : props.wheelAxis;
48
+ const delta = wheelAxis === 'x' ? wheelData.pixelX : wheelData.pixelY;
49
+ // Start
50
+ this._handleStart(delta);
51
+ // Start
52
+ this._handleMove(delta, event);
53
+ // Debounce End
54
+ if (this._debounceEnd) {
55
+ clearTimeout(this._debounceEnd);
56
+ }
57
+ // End callback
58
+ this._debounceEnd = setTimeout(() => this._handleEnd(), 200);
59
+ }
60
+ /** Handle wheel start */
61
+ _handleStart(delta) {
62
+ if (this._hasStarted || Math.abs(delta) < 2) {
63
+ return;
64
+ }
65
+ this._hasStarted = true;
66
+ this.snap.callbacks.emit('wheelStart', undefined);
67
+ }
68
+ /** Handle wheel move */
69
+ _handleMove(delta, event) {
29
70
  if (!this._hasStarted) {
30
- this._hasStarted = true;
31
- snap.callbacks.emit('wheelStart', undefined);
71
+ return;
32
72
  }
73
+ const { snap } = this;
74
+ const { props } = snap;
75
+ // Save delta
76
+ this._addDelta(delta);
33
77
  // Move callback
34
78
  snap.callbacks.emit('wheel', event);
35
- // Normalize wheel data
36
- const axis = wheelAxis === 'auto' ? snap.axis : wheelAxis;
37
- const wheelData = normalizeWheel(event);
38
- const wheelDelta = axis === 'x' ? wheelData.pixelX : wheelData.pixelY;
39
- const delta = wheelDelta * snap.props.wheelSpeed;
40
- // Update wheel target
41
- if (snap.props.followWheel) {
79
+ // Handle wheel logic
80
+ if (props.followWheel) {
42
81
  this._handleFollow(delta);
43
82
  }
44
83
  else {
45
- this._handleNotFollow(delta);
84
+ this._handleNoFollow(delta);
46
85
  }
47
- // Debounce End
48
- if (this._debounceEnd) {
49
- clearTimeout(this._debounceEnd);
50
- }
51
- // End callback
52
- this._debounceEnd = setTimeout(() => this._handleEnd(), 100);
53
86
  }
54
87
  /** Handle `followWheel=true` */
55
88
  _handleFollow(delta) {
@@ -57,75 +90,194 @@ export class SnapWheel {
57
90
  // Cancel snap transition
58
91
  snap.cancelTransition();
59
92
  // Update track target
60
- snap.track.iterateTarget(delta);
93
+ snap.track.iterateTarget(delta * snap.props.wheelSpeed);
61
94
  snap.track.clampTarget();
62
95
  }
63
96
  /** Handle `followWheel=false` */
64
- _handleNotFollow(delta) {
65
- const { snap } = this;
66
- const { props } = snap;
67
- // check wheel throttling by active transition
68
- if (props.wheelThrottle === 'auto' && snap.isTransitioning) {
97
+ _handleNoFollow(delta) {
98
+ // vars
99
+ const { snap, isTouchPad, isGainingDelta } = this;
100
+ const { track, activeSlide, domSize } = snap;
101
+ // Detect wheel throttling
102
+ if (this._detectNoFollowThrottle()) {
69
103
  return;
70
104
  }
71
- // check wheel throttling by time
72
- const timeDiff = +new Date() - this._lastNoFollowTime;
73
- if (typeof props.wheelThrottle === 'number' &&
74
- timeDiff < props.wheelThrottle) {
75
- return;
105
+ // Detect if need to throttle or follow
106
+ let shouldFollow = false;
107
+ let isThrottled = true;
108
+ if (!shouldFollow) {
109
+ if (track.isSlideScrolling) {
110
+ if (activeSlide.coord === 0) {
111
+ if (delta > 0) {
112
+ shouldFollow = true;
113
+ }
114
+ }
115
+ else if (activeSlide.coord === domSize - activeSlide.size) {
116
+ if (delta < 0) {
117
+ shouldFollow = true;
118
+ }
119
+ }
120
+ else {
121
+ shouldFollow = true;
122
+ isThrottled = false;
123
+ }
124
+ }
76
125
  }
77
- // scroll slide
78
- if (snap.track.isSlideScrolling) {
79
- this._handleFollow(delta);
80
- this._noFollowAccum = 0;
126
+ // Throttle
127
+ if (isThrottled) {
128
+ if (!isTouchPad ||
129
+ (isTouchPad && (isGainingDelta || this.absDeltas.length === 1))) {
130
+ const direction = Math.sign(delta);
131
+ if (shouldFollow) {
132
+ snap.cancelTransition();
133
+ track.iterateTarget(direction);
134
+ track.clampTarget();
135
+ if (!isTouchPad) {
136
+ track.current = track.target;
137
+ }
138
+ }
139
+ else if (direction === 1) {
140
+ if (!snap.props.loop && snap.activeIndex === snap.slides.length - 1) {
141
+ return;
142
+ }
143
+ this._lastWheelTime = +new Date();
144
+ snap.next();
145
+ }
146
+ else {
147
+ if (!snap.props.loop && snap.activeIndex === 0) {
148
+ return;
149
+ }
150
+ this._lastWheelTime = +new Date();
151
+ snap.prev();
152
+ }
153
+ }
81
154
  return;
82
155
  }
83
- // check minumum wheel threshold
84
- if (Math.abs(delta) < 0.5) {
85
- return;
156
+ // Follow wheel
157
+ if (shouldFollow) {
158
+ snap.cancelTransition();
159
+ const deltaWithSpeed = delta * snap.props.wheelSpeed;
160
+ const start = Math.min(...activeSlide.magnets);
161
+ const end = Math.max(...activeSlide.magnets);
162
+ const loopedTarget = track.loopCoord(track.target);
163
+ const clampedLoopedTarget = clamp(loopedTarget + deltaWithSpeed, start, end);
164
+ track.target += clampedLoopedTarget - loopedTarget;
165
+ track.clampTarget();
86
166
  }
87
- // accumulate wheel value
88
- this._noFollowAccum += Math.abs(delta);
89
- const direction = Math.sign(delta);
90
- // continue if accumulated value is more than threshold
91
- if (Math.abs(this._noFollowAccum) < Math.abs(props.wheelNoFollowThreshold)) {
92
- return;
167
+ }
168
+ /** Detect if wheel should be throttled */
169
+ _detectNoFollowThrottle() {
170
+ const { isTouchPad, snap } = this;
171
+ const { wheelThrottle } = snap.props;
172
+ const timeDiff = +new Date() - this._lastWheelTime;
173
+ // NUMBER
174
+ if (typeof wheelThrottle === 'number') {
175
+ return timeDiff < wheelThrottle;
93
176
  }
94
- // detect transition direction
95
- if (direction === 1) {
96
- if (!snap.next()) {
97
- return;
98
- }
177
+ // AUTO
178
+ if (isTouchPad) {
179
+ return this.snap.isTransitioning;
99
180
  }
100
- else if (!snap.prev()) {
101
- return;
181
+ const visibleScrollableSlides = snap.scrollableSlides.filter((slide) => slide.isVisible);
182
+ if (visibleScrollableSlides.length && snap.isTransitioning) {
183
+ return true;
184
+ }
185
+ if (timeDiff < 500) {
186
+ return true;
102
187
  }
103
- // reset
104
- this._noFollowAccum = 0;
105
- this._lastNoFollowTime = +new Date();
188
+ return false;
106
189
  }
107
190
  /** Handle wheel end */
108
191
  _handleEnd() {
192
+ if (!this._hasStarted) {
193
+ return;
194
+ }
109
195
  const { snap } = this;
110
- const { props } = this.snap;
196
+ const { props, activeSlide, track } = snap;
197
+ const lastThreeDeltas = this._deltas.slice(-3).reduce((a, b) => a + b, 0);
198
+ // Reset states
199
+ this._deltas = [];
111
200
  this._hasStarted = false;
112
- this._noFollowAccum = 0;
113
- if (!props.freemode) {
201
+ // Stick to the nearest magnet
202
+ if (!props.freemode || props.freemode === 'sticky') {
114
203
  if (props.followWheel && props.stickOnWheelEnd) {
115
- snap.stick();
204
+ // Classic stick when scrolling stops
205
+ const slideThreshold = Math.abs(props.stickOnWheelEndThreshold) / activeSlide.size;
206
+ if (activeSlide.progress > slideThreshold &&
207
+ !track.isSlideScrolling &&
208
+ lastThreeDeltas > 0) {
209
+ snap.next();
210
+ }
211
+ else if (activeSlide.progress < -slideThreshold &&
212
+ !track.isSlideScrolling &&
213
+ lastThreeDeltas < 0) {
214
+ snap.prev();
215
+ }
216
+ else {
217
+ snap.stick();
218
+ }
116
219
  }
117
220
  else if (!props.followWheel && !snap.isTransitioning) {
221
+ // Stick if something goes wrong when followWheel is disabled
118
222
  snap.stick();
119
223
  }
120
224
  }
121
225
  snap.callbacks.emit('wheelEnd', undefined);
122
226
  }
123
- /** Destroy wheel listeners */
124
- _destroy() {
125
- this._destructor();
126
- if (this._debounceEnd) {
127
- clearTimeout(this._debounceEnd);
227
+ /** Save delta */
228
+ _addDelta(delta) {
229
+ if (this._deltas.length >= deltasCount) {
230
+ this._deltas.shift();
231
+ }
232
+ this._deltas.push(delta);
233
+ }
234
+ /** Detect if touchpad */
235
+ get isTouchPad() {
236
+ return !this.isStableDelta || this.isSmallDelta;
237
+ }
238
+ /** Detects if deltas are stable */
239
+ get isStableDelta() {
240
+ const deltas = this.absDeltas;
241
+ const precision = 0.8;
242
+ // get difference between deltas
243
+ const diffs = deltas.map((d, i) => {
244
+ const prev = deltas[i - 1];
245
+ if (!deltas[i - 1]) {
246
+ return 0;
247
+ }
248
+ return d - prev;
249
+ });
250
+ const zeroDiffs = diffs.filter((d) => d === 0);
251
+ return zeroDiffs.length > diffs.length * precision;
252
+ }
253
+ /** Detects if the latest delta is small */
254
+ get isSmallDelta() {
255
+ const deltas = this.absDeltas;
256
+ if (deltas.length === 0) {
257
+ return true;
128
258
  }
259
+ const last = deltas[deltas.length - 1];
260
+ return last < 50;
261
+ }
262
+ /** Detect if delta is gaining its value */
263
+ get isGainingDelta() {
264
+ const vevet = initVevet();
265
+ const deltas = this.absDeltas;
266
+ const precision = vevet.osName.includes('window') ? 1.5 : 1.2;
267
+ if (deltas.length < deltasCount) {
268
+ return false;
269
+ }
270
+ const lastDeltas = deltas.slice(-deltasCount);
271
+ const half1 = lastDeltas.slice(0, Math.floor(lastDeltas.length / 2));
272
+ const half2 = lastDeltas.slice(Math.floor(lastDeltas.length / 2));
273
+ const avg1 = this._getAverage(half1);
274
+ const avg2 = this._getAverage(half2);
275
+ const isGaining = avg2 > avg1 * precision;
276
+ return isGaining;
277
+ }
278
+ /** Get average value in an array */
279
+ _getAverage(array) {
280
+ return array.length ? array.reduce((a, b) => a + b, 0) / array.length : 0;
129
281
  }
130
282
  }
131
283
  //# sourceMappingURL=index.js.map