vevet 5.0.9 → 5.0.11

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 (49) hide show
  1. package/README.md +2 -0
  2. package/lib/cdn/vevet.iife.min.js +5 -5
  3. package/lib/cjs/components/Snap/Swipe/index.js +47 -6
  4. package/lib/cjs/components/Snap/Swipe/index.js.map +1 -1
  5. package/lib/cjs/components/Snap/Wheel/index.js +32 -13
  6. package/lib/cjs/components/Snap/Wheel/index.js.map +1 -1
  7. package/lib/cjs/components/Snap/index.js +31 -9
  8. package/lib/cjs/components/Snap/index.js.map +1 -1
  9. package/lib/cjs/components/Swipe/index.js +89 -46
  10. package/lib/cjs/components/Swipe/index.js.map +1 -1
  11. package/lib/cjs/manifest.json +1 -1
  12. package/lib/cjs/utils/math/clamp.js +3 -1
  13. package/lib/cjs/utils/math/clamp.js.map +1 -1
  14. package/lib/esm/components/Snap/Swipe/index.js +31 -6
  15. package/lib/esm/components/Snap/Swipe/index.js.map +1 -1
  16. package/lib/esm/components/Snap/Wheel/index.js +32 -13
  17. package/lib/esm/components/Snap/Wheel/index.js.map +1 -1
  18. package/lib/esm/components/Snap/index.js +29 -7
  19. package/lib/esm/components/Snap/index.js.map +1 -1
  20. package/lib/esm/components/Swipe/index.js +85 -42
  21. package/lib/esm/components/Swipe/index.js.map +1 -1
  22. package/lib/esm/manifest.json +1 -1
  23. package/lib/esm/utils/math/clamp.js +3 -1
  24. package/lib/esm/utils/math/clamp.js.map +1 -1
  25. package/lib/types/components/Snap/Swipe/index.d.ts +2 -0
  26. package/lib/types/components/Snap/Swipe/index.d.ts.map +1 -1
  27. package/lib/types/components/Snap/Swipe/types.d.ts +10 -0
  28. package/lib/types/components/Snap/Swipe/types.d.ts.map +1 -1
  29. package/lib/types/components/Snap/Wheel/index.d.ts +1 -1
  30. package/lib/types/components/Snap/Wheel/index.d.ts.map +1 -1
  31. package/lib/types/components/Snap/Wheel/types.d.ts +12 -1
  32. package/lib/types/components/Snap/Wheel/types.d.ts.map +1 -1
  33. package/lib/types/components/Snap/index.d.ts +1 -1
  34. package/lib/types/components/Snap/index.d.ts.map +1 -1
  35. package/lib/types/components/Swipe/index.d.ts +2 -6
  36. package/lib/types/components/Swipe/index.d.ts.map +1 -1
  37. package/lib/types/components/Swipe/types.d.ts +7 -2
  38. package/lib/types/components/Swipe/types.d.ts.map +1 -1
  39. package/lib/types/utils/math/clamp.d.ts.map +1 -1
  40. package/package.json +1 -1
  41. package/src/components/Snap/Swipe/index.ts +49 -8
  42. package/src/components/Snap/Swipe/types.ts +12 -0
  43. package/src/components/Snap/Wheel/index.ts +36 -15
  44. package/src/components/Snap/Wheel/types.ts +14 -1
  45. package/src/components/Snap/index.ts +32 -5
  46. package/src/components/Swipe/index.ts +106 -56
  47. package/src/components/Swipe/types.ts +8 -2
  48. package/src/manifest.json +1 -1
  49. package/src/utils/math/clamp.ts +4 -1
@@ -16,6 +16,8 @@
16
16
  * clamp(0.5, 0, 1); // 0.5
17
17
  */
18
18
  export function clamp(value, min = 0, max = 1) {
19
- return Math.max(min, Math.min(value, max));
19
+ const realMin = Math.min(min, max);
20
+ const realMax = Math.max(min, max);
21
+ return Math.max(realMin, Math.min(value, realMax));
20
22
  }
21
23
  //# sourceMappingURL=clamp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clamp.js","sourceRoot":"","sources":["../../../../src/utils/math/clamp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"clamp.js","sourceRoot":"","sources":["../../../../src/utils/math/clamp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -13,6 +13,8 @@ export declare class SnapSwipe {
13
13
  get axis(): "x" | "y";
14
14
  /** Check if swiping in action */
15
15
  get isSwiping(): boolean;
16
+ /** Check if inertia is active */
17
+ get hasInertia(): boolean;
16
18
  /** Detect if swipe is short */
17
19
  get isShort(): boolean;
18
20
  /** Checks if resistance is allowed */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Swipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEzD,qBAAa,SAAS;IAUR,SAAS,CAAC,IAAI,EAAE,IAAI;IAThC,mBAAmB;IACnB,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;IAExB,kCAAkC;IAClC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAE9B,uBAAuB;IACvB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEP,IAAI,EAAE,IAAI;IAqChC,6CAA6C;IAC7C,IAAI,IAAI,cAIP;IAED,iCAAiC;IACjC,IAAI,SAAS,YAEZ;IAED,+BAA+B;IAC/B,IAAI,OAAO,YAUV;IAED,sCAAsC;IACtC,IAAI,aAAa,YAEhB;IAED,6DAA6D;IAC7D,SAAS,KAAK,IAAI,WAEjB;IAED;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY;IAkBhD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAwB/C,gCAAgC;IAChC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY;IAU9C,uBAAuB;IACvB,SAAS,CAAC,IAAI;IAiCd,sBAAsB;IACtB,SAAS,CAAC,SAAS;IA+BnB,gDAAgD;IAChD,SAAS,CAAC,YAAY;IAgBtB,oBAAoB;IACpB,SAAS,CAAC,QAAQ;CAGnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Swipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGzD,qBAAa,SAAS;IAUR,SAAS,CAAC,IAAI,EAAE,IAAI;IAThC,mBAAmB;IACnB,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;IAExB,kCAAkC;IAClC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAE9B,uBAAuB;IACvB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEP,IAAI,EAAE,IAAI;IA2DhC,6CAA6C;IAC7C,IAAI,IAAI,cAIP;IAED,iCAAiC;IACjC,IAAI,SAAS,YAEZ;IAED,iCAAiC;IACjC,IAAI,UAAU,YAEb;IAED,+BAA+B;IAC/B,IAAI,OAAO,YAUV;IAED,sCAAsC;IACtC,IAAI,aAAa,YAEhB;IAED,6DAA6D;IAC7D,SAAS,KAAK,IAAI,WAEjB;IAED;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY;IAkBhD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY;IA4B/C,gCAAgC;IAChC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY;IAU9C,uBAAuB;IACvB,SAAS,CAAC,IAAI;IA0Cd,sBAAsB;IACtB,SAAS,CAAC,SAAS;IA+BnB,gDAAgD;IAChD,SAAS,CAAC,YAAY;IAgBtB,oBAAoB;IACpB,SAAS,CAAC,QAAQ;CAGnB"}
@@ -60,5 +60,15 @@ export interface ISnapSwipeProps {
60
60
  * @default 0
61
61
  */
62
62
  swipeMinTime?: number;
63
+ /**
64
+ * Inertia duration.
65
+ * @default `(distance) => clamp(distance, 500, 2000)`
66
+ */
67
+ swipeInertiaDuration?: (distance: number) => number;
68
+ /**
69
+ * Inertia strength.
70
+ * @default 0.3
71
+ */
72
+ swipeInertiaRatio?: number;
63
73
  }
64
74
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Swipe/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Swipe/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAEpD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -8,7 +8,7 @@ export declare class SnapWheel {
8
8
  /** Debounce wheel end event */
9
9
  protected _debounceEnd?: NodeJS.Timeout;
10
10
  /** Accummulated wheel value for `followWheel=false` */
11
- protected _accum: number;
11
+ protected _noFollowAccum: number;
12
12
  /** Last time wheel event was fired */
13
13
  protected _lastNoFollowTime: number;
14
14
  constructor(_snap: Snap);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Wheel/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE1B,qBAAa,SAAS;IAgBR,SAAS,CAAC,KAAK,EAAE,IAAI;IAfjC,4BAA4B;IAC5B,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IAElC,wCAAwC;IACxC,SAAS,CAAC,WAAW,UAAS;IAE9B,+BAA+B;IAC/B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAExC,uDAAuD;IACvD,SAAS,CAAC,MAAM,SAAK;IAErB,sCAAsC;IACtC,SAAS,CAAC,iBAAiB,SAAK;gBAEV,KAAK,EAAE,IAAI;IAQjC,qBAAqB;IACrB,SAAS,KAAK,IAAI,wGAEjB;IAED;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU;IA0CxC,gCAAgC;IAChC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM;IAWrC,iCAAiC;IACjC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAuCxC,uBAAuB;IACvB,SAAS,CAAC,UAAU;IAcpB,8BAA8B;IAC9B,SAAS,CAAC,QAAQ;CAOnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Wheel/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE1B,qBAAa,SAAS;IAgBR,SAAS,CAAC,KAAK,EAAE,IAAI;IAfjC,4BAA4B;IAC5B,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IAElC,wCAAwC;IACxC,SAAS,CAAC,WAAW,UAAS;IAE9B,+BAA+B;IAC/B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAExC,uDAAuD;IACvD,SAAS,CAAC,cAAc,SAAK;IAE7B,sCAAsC;IACtC,SAAS,CAAC,iBAAiB,SAAK;gBAEV,KAAK,EAAE,IAAI;IAQjC,qBAAqB;IACrB,SAAS,KAAK,IAAI,wGAEjB;IAED;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU;IA0CxC,gCAAgC;IAChC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM;IAWrC,iCAAiC;IACjC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAwDxC,uBAAuB;IACvB,SAAS,CAAC,UAAU;IAkBpB,8BAA8B;IAC9B,SAAS,CAAC,QAAQ;CAOnB"}
@@ -15,7 +15,8 @@ export interface ISnapWheelProps {
15
15
  */
16
16
  wheelAxis?: 'x' | 'y' | 'auto';
17
17
  /**
18
- * If disabled, then slider will be animated only when you stop scrolling the wheel.
18
+ * If `false`, disables smooth, continuous scrolling behavior from the mouse wheel
19
+ * and instead updates the snap position in discrete steps (like pagination).
19
20
  * @default true
20
21
  */
21
22
  followWheel?: boolean;
@@ -29,5 +30,15 @@ export interface ISnapWheelProps {
29
30
  * @default `auto`
30
31
  */
31
32
  wheelThrottle?: number | 'auto';
33
+ /**
34
+ * Minimum distance in pixels to trigger snap update. Works only if `followWheel` is disabled.
35
+ * @default 100
36
+ */
37
+ wheelNoFollowThreshold?: number;
38
+ /**
39
+ * Enable snapping on wheel stop. Works with `followWheel` enabled.
40
+ * @default true
41
+ */
42
+ stickOnWheelEnd?: boolean;
32
43
  }
33
44
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Wheel/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Snap/Wheel/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAE/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -99,7 +99,7 @@ export declare class Snap<CallbacksMap extends ISnapCallbacksMap = ISnapCallback
99
99
  /** Stick to the nearest magnet */
100
100
  stick(): void;
101
101
  /** Go to a definite coordinate */
102
- toCoord(coordinate: number, duration?: import("./types").TSnapDuration): boolean;
102
+ toCoord(coordinate: number, durationProp?: import("./types").TSnapDuration): boolean;
103
103
  /** Go to a slide by index */
104
104
  toSlide(targetIndex: number, { direction, duration }?: ISnapToSlideArg): boolean;
105
105
  /** Go to next slide */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Snap/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Snap/index.ts"],"names":[],"mappings":"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"}
@@ -78,16 +78,12 @@ export declare class Swipe<CallbacksMap extends ISwipeCallbacksMap = ISwipeCallb
78
78
  protected _handleEnd(): void;
79
79
  /** Reset swipe states */
80
80
  protected _reset(): void;
81
+ /** Returns current velocity */
82
+ protected get velocity(): ISwipeMatrix;
81
83
  /** Apply inertia-based movement */
82
84
  protected _endWithInertia(): void;
83
85
  /** Destroy inertia animation */
84
86
  cancelInertia(): void;
85
- /** Returns current velocity */
86
- protected get velocity(): {
87
- x: number;
88
- y: number;
89
- angle: number;
90
- } | undefined;
91
87
  /** Start coordinate */
92
88
  get start(): ISwipeMatrix;
93
89
  /** Previous coordinate */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Swipe/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Swipe/index.ts"],"names":[],"mappings":"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"}
@@ -95,7 +95,7 @@ export interface ISwipeMutableProps extends IModuleMutableProps {
95
95
  inertia?: boolean;
96
96
  /**
97
97
  * Inertia duration.
98
- * @default `(distance) => clamp(distance, 350, 1000)`
98
+ * @default `(distance) => clamp(distance, 500, 2000)`
99
99
  */
100
100
  inertiaDuration?: (distance: number) => number;
101
101
  /**
@@ -103,9 +103,14 @@ export interface ISwipeMutableProps extends IModuleMutableProps {
103
103
  * @default EaseOutCubic
104
104
  */
105
105
  inertiaEasing?: TEasingType;
106
+ /**
107
+ * Final velocity modifier.
108
+ * @default false
109
+ */
110
+ velocityModifier?: false | ((velocity: ISwipeMatrix) => ISwipeMatrix);
106
111
  /**
107
112
  * Inertia strength.
108
- * @default 0.5
113
+ * @default 1
109
114
  */
110
115
  inertiaRatio?: number;
111
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/Swipe/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/Swipe/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"clamp.d.ts","sourceRoot":"","sources":["../../../../src/utils/math/clamp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,EAAE,GAAG,SAAI,UAEpD"}
1
+ {"version":3,"file":"clamp.d.ts","sourceRoot":"","sources":["../../../../src/utils/math/clamp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,EAAE,GAAG,SAAI,UAKpD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vevet",
3
- "version": "5.0.9",
3
+ "version": "5.0.11",
4
4
  "description": "Vevet is a JavaScript library for creative development that simplifies crafting rich interactions like split text animations, carousels, marquees, preloading, and more.",
5
5
  "scripts": {
6
6
  "storybook": "storybook dev -p 6006",
@@ -1,5 +1,6 @@
1
1
  import { Snap } from '..';
2
2
  import { ISwipeCoords, Swipe } from '@/components/Swipe';
3
+ import { clamp } from '@/utils';
3
4
 
4
5
  export class SnapSwipe {
5
6
  /** Swipe events */
@@ -25,6 +26,28 @@ export class SnapSwipe {
25
26
  threshold: snap.props.swipeThreshold,
26
27
  axis: this.axis,
27
28
  inertia: snap.props.freemode,
29
+ inertiaDuration: snap.props.swipeInertiaDuration,
30
+ inertiaRatio: snap.props.swipeInertiaRatio,
31
+ velocityModifier: (source) => {
32
+ if (snap.props.freemode) {
33
+ return source;
34
+ }
35
+
36
+ const { coord, size: slideSize } = snap.activeSlide;
37
+
38
+ snap.track.target = snap.track.current;
39
+
40
+ const output = {
41
+ ...source,
42
+ [this.axis]: clamp(
43
+ source[this.axis],
44
+ -coord,
45
+ snap.domSize - slideSize - coord,
46
+ ),
47
+ };
48
+
49
+ return output;
50
+ },
28
51
  });
29
52
 
30
53
  this._swipe.on('start', (data) => this._handleSwipeStart(data));
@@ -60,6 +83,11 @@ export class SnapSwipe {
60
83
  return this._swipe.isSwiping;
61
84
  }
62
85
 
86
+ /** Check if inertia is active */
87
+ get hasInertia() {
88
+ return this._swipe.hasInertia;
89
+ }
90
+
63
91
  /** Detect if swipe is short */
64
92
  get isShort() {
65
93
  const { props } = this.snap;
@@ -111,7 +139,11 @@ export class SnapSwipe {
111
139
  const { snap } = this;
112
140
  const { swipeSpeed, followSwipe: shouldFollow } = snap.props;
113
141
 
114
- if (!shouldFollow) {
142
+ if (
143
+ !shouldFollow &&
144
+ !snap.props.followSwipe &&
145
+ !snap.track.isSlideScrolling
146
+ ) {
115
147
  return;
116
148
  }
117
149
 
@@ -147,12 +179,7 @@ export class SnapSwipe {
147
179
  const { snap, _swipe: swipe } = this;
148
180
  const { props, track } = snap;
149
181
 
150
- if (!props.followSwipe) {
151
- this._endNoFollow();
152
-
153
- return;
154
- }
155
-
182
+ // handle freemode
156
183
  if (props.freemode) {
157
184
  if (
158
185
  !track.canLoop &&
@@ -165,10 +192,24 @@ export class SnapSwipe {
165
192
  return;
166
193
  }
167
194
 
168
- if (snap.track.isSlideScrolling) {
195
+ // enable inertia if active slide is being scrolled
196
+ if (track.isSlideScrolling) {
197
+ this._swipe.updateProps({ inertia: true });
198
+
199
+ return;
200
+ }
201
+
202
+ // disable inertia
203
+ this._swipe.updateProps({ inertia: false });
204
+
205
+ // return if followSwipe is disabled
206
+ if (!props.followSwipe) {
207
+ this._endNoFollow();
208
+
169
209
  return;
170
210
  }
171
211
 
212
+ // stick to target slide
172
213
  if (this.isShort) {
173
214
  this._endShort();
174
215
  } else {
@@ -71,4 +71,16 @@ export interface ISnapSwipeProps {
71
71
  * @default 0
72
72
  */
73
73
  swipeMinTime?: number;
74
+
75
+ /**
76
+ * Inertia duration.
77
+ * @default `(distance) => clamp(distance, 500, 2000)`
78
+ */
79
+ swipeInertiaDuration?: (distance: number) => number;
80
+
81
+ /**
82
+ * Inertia strength.
83
+ * @default 0.3
84
+ */
85
+ swipeInertiaRatio?: number;
74
86
  }
@@ -12,7 +12,7 @@ export class SnapWheel {
12
12
  protected _debounceEnd?: NodeJS.Timeout;
13
13
 
14
14
  /** Accummulated wheel value for `followWheel=false` */
15
- protected _accum = 0;
15
+ protected _noFollowAccum = 0;
16
16
 
17
17
  /** Last time wheel event was fired */
18
18
  protected _lastNoFollowTime = 0;
@@ -90,31 +90,47 @@ export class SnapWheel {
90
90
  /** Handle `followWheel=false` */
91
91
  protected _handleNotFollow(delta: number) {
92
92
  const { snap } = this;
93
+ const { props } = snap;
93
94
 
94
- if (Math.abs(delta) < 10) {
95
+ // check wheel throttling by active transition
96
+ if (props.wheelThrottle === 'auto' && snap.isTransitioning) {
95
97
  return;
96
98
  }
97
99
 
98
- if (snap.props.wheelThrottle === 'auto' && snap.isTransitioning) {
100
+ // check wheel throttling by time
101
+ const timeDiff = +new Date() - this._lastNoFollowTime;
102
+ if (
103
+ typeof props.wheelThrottle === 'number' &&
104
+ timeDiff < props.wheelThrottle
105
+ ) {
99
106
  return;
100
107
  }
101
108
 
102
- const timeDiff = +new Date() - this._lastNoFollowTime;
109
+ // scroll slide
110
+ if (snap.track.isSlideScrolling) {
111
+ this._handleFollow(delta);
112
+ this._noFollowAccum = 0;
103
113
 
104
- if (
105
- typeof snap.props.wheelThrottle === 'number' &&
106
- timeDiff < snap.props.wheelThrottle
107
- ) {
108
114
  return;
109
115
  }
110
116
 
111
- this._accum += Math.abs(delta) / 2;
117
+ // check minumum wheel threshold
118
+ if (Math.abs(delta) < 0.5) {
119
+ return;
120
+ }
121
+
122
+ // accumulate wheel value
123
+ this._noFollowAccum += Math.abs(delta);
112
124
  const direction = Math.sign(delta);
113
125
 
114
- if (Math.abs(this._accum) < 100) {
126
+ // continue if accumulated value is more than threshold
127
+ if (
128
+ Math.abs(this._noFollowAccum) < Math.abs(props.wheelNoFollowThreshold)
129
+ ) {
115
130
  return;
116
131
  }
117
132
 
133
+ // detect transition direction
118
134
  if (direction === 1) {
119
135
  if (!snap.next()) {
120
136
  return;
@@ -123,20 +139,25 @@ export class SnapWheel {
123
139
  return;
124
140
  }
125
141
 
126
- this._accum = 0;
142
+ // reset
143
+ this._noFollowAccum = 0;
127
144
  this._lastNoFollowTime = +new Date();
128
145
  }
129
146
 
130
147
  /** Handle wheel end */
131
148
  protected _handleEnd() {
132
149
  const { snap } = this;
133
- const { freemode: isFreemode, followWheel: isFollow } = snap.props;
150
+ const { props } = this.snap;
134
151
 
135
152
  this._hasStarted = false;
136
- this._accum = 0;
153
+ this._noFollowAccum = 0;
137
154
 
138
- if (!isFreemode && isFollow) {
139
- snap.stick();
155
+ if (!props.freemode) {
156
+ if (props.followWheel && props.stickOnWheelEnd) {
157
+ snap.stick();
158
+ } else if (!props.followWheel && !snap.isTransitioning) {
159
+ snap.stick();
160
+ }
140
161
  }
141
162
 
142
163
  snap.callbacks.emit('wheelEnd', undefined);
@@ -18,7 +18,8 @@ export interface ISnapWheelProps {
18
18
  wheelAxis?: 'x' | 'y' | 'auto';
19
19
 
20
20
  /**
21
- * If disabled, then slider will be animated only when you stop scrolling the wheel.
21
+ * If `false`, disables smooth, continuous scrolling behavior from the mouse wheel
22
+ * and instead updates the snap position in discrete steps (like pagination).
22
23
  * @default true
23
24
  */
24
25
  followWheel?: boolean;
@@ -33,4 +34,16 @@ export interface ISnapWheelProps {
33
34
  * @default `auto`
34
35
  */
35
36
  wheelThrottle?: number | 'auto';
37
+
38
+ /**
39
+ * Minimum distance in pixels to trigger snap update. Works only if `followWheel` is disabled.
40
+ * @default 100
41
+ */
42
+ wheelNoFollowThreshold?: number;
43
+
44
+ /**
45
+ * Enable snapping on wheel stop. Works with `followWheel` enabled.
46
+ * @default true
47
+ */
48
+ stickOnWheelEnd?: boolean;
36
49
  }
@@ -20,6 +20,7 @@ import {
20
20
  lerp,
21
21
  toPixels,
22
22
  closest,
23
+ clamp,
23
24
  } from '@/utils';
24
25
  import { SnapSlide } from './Slide';
25
26
  import { SnapWheel } from './Wheel';
@@ -85,11 +86,15 @@ export class Snap<
85
86
  swipeLerp: initVevet().mobile ? 1 : 0.6,
86
87
  swipeThreshold: 5,
87
88
  swipeMinTime: 0,
89
+ swipeInertiaDuration: (distance) => clamp(distance, 500, 2000),
90
+ swipeInertiaRatio: 0.3,
88
91
  wheel: false,
89
92
  wheelSpeed: 1,
90
93
  wheelAxis: 'auto',
91
94
  followWheel: true,
92
95
  wheelThrottle: 'auto',
96
+ wheelNoFollowThreshold: 100,
97
+ stickOnWheelEnd: true,
93
98
  slideSize: 'auto',
94
99
  } as TRequiredProps<MutableProps>;
95
100
  }
@@ -330,7 +335,9 @@ export class Snap<
330
335
 
331
336
  // Get lerp factor
332
337
  const lerpFactor =
333
- swipe.isSwiping && props.swipeLerp ? props.swipeLerp : props.lerp;
338
+ (swipe.isSwiping || swipe.hasInertia) && props.swipeLerp
339
+ ? props.swipeLerp
340
+ : props.lerp;
334
341
 
335
342
  // Interpolate track value
336
343
  track.lerp(this._raf.lerpFactor(lerpFactor));
@@ -499,7 +506,7 @@ export class Snap<
499
506
  }
500
507
 
501
508
  /** Go to a definite coordinate */
502
- public toCoord(coordinate: number, duration = this.props.duration) {
509
+ public toCoord(coordinate: number, durationProp = this.props.duration) {
503
510
  if (this.isEmpty) {
504
511
  return false;
505
512
  }
@@ -512,8 +519,14 @@ export class Snap<
512
519
  const end = coordinate;
513
520
  const diff = Math.abs(end - start);
514
521
 
522
+ let duration =
523
+ typeof durationProp === 'number' ? durationProp : durationProp(diff);
524
+ if (diff === 0) {
525
+ duration = 0;
526
+ }
527
+
515
528
  const tm = new Timeline({
516
- duration: typeof duration === 'number' ? duration : duration(diff),
529
+ duration,
517
530
  easing: props.easing,
518
531
  });
519
532
 
@@ -572,16 +585,30 @@ export class Snap<
572
585
 
573
586
  this._targetIndex = index;
574
587
  const slideMagnets = slides[index].magnets;
588
+ let targetStaticMagnet = slideMagnets[0];
589
+
590
+ if (props.centered) {
591
+ if (direction === 'prev') {
592
+ targetStaticMagnet = slideMagnets[2] ?? slideMagnets[0];
593
+ } else if (direction === 'next') {
594
+ targetStaticMagnet = slideMagnets[1] ?? slideMagnets[0];
595
+ }
596
+ } else {
597
+ targetStaticMagnet =
598
+ direction === 'prev'
599
+ ? slideMagnets[slideMagnets.length - 1]
600
+ : targetStaticMagnet;
601
+ }
575
602
 
576
603
  // Use static magnet when not looping
577
604
 
578
605
  if (!props.loop) {
579
- return this.toCoord(slideMagnets[0], duration);
606
+ return this.toCoord(targetStaticMagnet, duration);
580
607
  }
581
608
 
582
609
  // Or calculate closest magnet
583
610
 
584
- const targetMagnet = slideMagnets[0] + loopCount * max;
611
+ const targetMagnet = targetStaticMagnet + loopCount * max;
585
612
  const targetMagnetMin = targetMagnet - max;
586
613
  const targetMagnetMax = targetMagnet + max;
587
614
  const allMagnets = [targetMagnetMin, targetMagnet, targetMagnetMax];