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.
- package/README.md +2 -0
- package/lib/cdn/vevet.iife.min.js +5 -5
- package/lib/cjs/components/Snap/Swipe/index.js +47 -6
- package/lib/cjs/components/Snap/Swipe/index.js.map +1 -1
- package/lib/cjs/components/Snap/Wheel/index.js +32 -13
- package/lib/cjs/components/Snap/Wheel/index.js.map +1 -1
- package/lib/cjs/components/Snap/index.js +31 -9
- package/lib/cjs/components/Snap/index.js.map +1 -1
- package/lib/cjs/components/Swipe/index.js +89 -46
- package/lib/cjs/components/Swipe/index.js.map +1 -1
- package/lib/cjs/manifest.json +1 -1
- package/lib/cjs/utils/math/clamp.js +3 -1
- package/lib/cjs/utils/math/clamp.js.map +1 -1
- package/lib/esm/components/Snap/Swipe/index.js +31 -6
- package/lib/esm/components/Snap/Swipe/index.js.map +1 -1
- package/lib/esm/components/Snap/Wheel/index.js +32 -13
- package/lib/esm/components/Snap/Wheel/index.js.map +1 -1
- package/lib/esm/components/Snap/index.js +29 -7
- package/lib/esm/components/Snap/index.js.map +1 -1
- package/lib/esm/components/Swipe/index.js +85 -42
- package/lib/esm/components/Swipe/index.js.map +1 -1
- package/lib/esm/manifest.json +1 -1
- package/lib/esm/utils/math/clamp.js +3 -1
- package/lib/esm/utils/math/clamp.js.map +1 -1
- package/lib/types/components/Snap/Swipe/index.d.ts +2 -0
- package/lib/types/components/Snap/Swipe/index.d.ts.map +1 -1
- package/lib/types/components/Snap/Swipe/types.d.ts +10 -0
- package/lib/types/components/Snap/Swipe/types.d.ts.map +1 -1
- package/lib/types/components/Snap/Wheel/index.d.ts +1 -1
- package/lib/types/components/Snap/Wheel/index.d.ts.map +1 -1
- package/lib/types/components/Snap/Wheel/types.d.ts +12 -1
- package/lib/types/components/Snap/Wheel/types.d.ts.map +1 -1
- package/lib/types/components/Snap/index.d.ts +1 -1
- package/lib/types/components/Snap/index.d.ts.map +1 -1
- package/lib/types/components/Swipe/index.d.ts +2 -6
- package/lib/types/components/Swipe/index.d.ts.map +1 -1
- package/lib/types/components/Swipe/types.d.ts +7 -2
- package/lib/types/components/Swipe/types.d.ts.map +1 -1
- package/lib/types/utils/math/clamp.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Snap/Swipe/index.ts +49 -8
- package/src/components/Snap/Swipe/types.ts +12 -0
- package/src/components/Snap/Wheel/index.ts +36 -15
- package/src/components/Snap/Wheel/types.ts +14 -1
- package/src/components/Snap/index.ts +32 -5
- package/src/components/Swipe/index.ts +106 -56
- package/src/components/Swipe/types.ts +8 -2
- package/src/manifest.json +1 -1
- 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
|
-
|
|
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,
|
|
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;
|
|
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;
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EACL,SAAS,
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,cAAc,SAAS,CAAC;
|
|
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,
|
|
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
|
|
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,
|
|
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.
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
95
|
+
// check wheel throttling by active transition
|
|
96
|
+
if (props.wheelThrottle === 'auto' && snap.isTransitioning) {
|
|
95
97
|
return;
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 {
|
|
150
|
+
const { props } = this.snap;
|
|
134
151
|
|
|
135
152
|
this._hasStarted = false;
|
|
136
|
-
this.
|
|
153
|
+
this._noFollowAccum = 0;
|
|
137
154
|
|
|
138
|
-
if (!
|
|
139
|
-
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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(
|
|
606
|
+
return this.toCoord(targetStaticMagnet, duration);
|
|
580
607
|
}
|
|
581
608
|
|
|
582
609
|
// Or calculate closest magnet
|
|
583
610
|
|
|
584
|
-
const targetMagnet =
|
|
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];
|