easing-scroll 1.0.1 → 1.0.3
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/dist/easing-scroll.d.ts +6 -6
- package/dist/easing-scroll.js +1 -1
- package/dist/easing-scroll.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -2
- package/src/easing-scroll.ts +24 -10
package/dist/easing-scroll.d.ts
CHANGED
|
@@ -7,14 +7,14 @@ type Ms = number;
|
|
|
7
7
|
*/
|
|
8
8
|
type Pct = number;
|
|
9
9
|
type Options = {
|
|
10
|
-
top
|
|
11
|
-
left
|
|
12
|
-
duration
|
|
13
|
-
signal
|
|
10
|
+
top?: Px;
|
|
11
|
+
left?: Px;
|
|
12
|
+
duration?: Ms;
|
|
13
|
+
signal?: AbortSignal;
|
|
14
14
|
/**
|
|
15
15
|
* @see Easing functions https://easings.net
|
|
16
16
|
*/
|
|
17
|
-
easing
|
|
17
|
+
easing?: (t: Pct) => Pct;
|
|
18
18
|
};
|
|
19
|
-
export declare const easingScroll: <E extends
|
|
19
|
+
export declare const easingScroll: <E extends HTMLElement>(target: E, { top, left, signal, duration, easing }: Options) => Promise<Pct>;
|
|
20
20
|
export {};
|
package/dist/easing-scroll.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const b=o=>o,g=(o,{top:l,left:
|
|
1
|
+
"use strict";const b=o=>o,t=(o,l,n)=>{o.scrollTop=l!=null?l:o.scrollTop,o.scrollLeft=n!=null?n:o.scrollLeft},g=(o,{top:l,left:n,signal:s,duration:i=0,easing:a=b})=>s!=null&&s.aborted?Promise.resolve(0):i?new Promise(c=>{const m=o.scrollTop,v=o.scrollLeft;t(o,l,n),l=o.scrollTop,n=o.scrollLeft;const d=performance.now();let r;const f=()=>(performance.now()-d)/i,p=()=>{cancelAnimationFrame(r);const e=f();c(e)};s==null||s.addEventListener("abort",p);const u=()=>{const e=f(),L=l===void 0?void 0:m+(l-m)*a(e),T=n===void 0?void 0:v+(n-v)*a(e);e<1?(t(o,L,T),r=requestAnimationFrame(u)):(t(o,l,n),s==null||s.removeEventListener("abort",p),c(1))};r=requestAnimationFrame(u)}):(t(o,l,n),Promise.resolve(1));exports.easingScroll=g;
|
package/dist/easing-scroll.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const u=o=>o,
|
|
1
|
+
const u=o=>o,t=(o,r,n)=>{o.scrollTop=r??o.scrollTop,o.scrollLeft=n??o.scrollLeft},g=(o,{top:r,left:n,signal:l,duration:c=0,easing:a=u})=>l?.aborted?Promise.resolve(0):c?new Promise(i=>{const m=o.scrollTop,v=o.scrollLeft;t(o,r,n),r=o.scrollTop,n=o.scrollLeft;const L=performance.now();let s;const d=()=>(performance.now()-L)/c,p=()=>{cancelAnimationFrame(s);const e=d();i(e)};l?.addEventListener("abort",p);const f=()=>{const e=d(),T=r===void 0?void 0:m+(r-m)*a(e),b=n===void 0?void 0:v+(n-v)*a(e);e<1?(t(o,T,b),s=requestAnimationFrame(f)):(t(o,r,n),l?.removeEventListener("abort",p),i(1))};s=requestAnimationFrame(f)}):(t(o,r,n),Promise.resolve(1));export{g as easingScroll};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const b=o=>o,g=(o,{top:l,left:
|
|
1
|
+
"use strict";const b=o=>o,t=(o,l,n)=>{o.scrollTop=l!=null?l:o.scrollTop,o.scrollLeft=n!=null?n:o.scrollLeft},g=(o,{top:l,left:n,signal:s,duration:i=0,easing:a=b})=>s!=null&&s.aborted?Promise.resolve(0):i?new Promise(c=>{const m=o.scrollTop,v=o.scrollLeft;t(o,l,n),l=o.scrollTop,n=o.scrollLeft;const d=performance.now();let r;const f=()=>(performance.now()-d)/i,p=()=>{cancelAnimationFrame(r);const e=f();c(e)};s==null||s.addEventListener("abort",p);const u=()=>{const e=f(),L=l===void 0?void 0:m+(l-m)*a(e),T=n===void 0?void 0:v+(n-v)*a(e);e<1?(t(o,L,T),r=requestAnimationFrame(u)):(t(o,l,n),s==null||s.removeEventListener("abort",p),c(1))};r=requestAnimationFrame(u)}):(t(o,l,n),Promise.resolve(1));exports.easingScroll=g;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const u=o=>o,
|
|
1
|
+
const u=o=>o,t=(o,r,n)=>{o.scrollTop=r??o.scrollTop,o.scrollLeft=n??o.scrollLeft},g=(o,{top:r,left:n,signal:l,duration:c=0,easing:a=u})=>l?.aborted?Promise.resolve(0):c?new Promise(i=>{const m=o.scrollTop,v=o.scrollLeft;t(o,r,n),r=o.scrollTop,n=o.scrollLeft;const L=performance.now();let s;const d=()=>(performance.now()-L)/c,p=()=>{cancelAnimationFrame(s);const e=d();i(e)};l?.addEventListener("abort",p);const f=()=>{const e=d(),T=r===void 0?void 0:m+(r-m)*a(e),b=n===void 0?void 0:v+(n-v)*a(e);e<1?(t(o,T,b),s=requestAnimationFrame(f)):(t(o,r,n),l?.removeEventListener("abort",p),i(1))};s=requestAnimationFrame(f)}):(t(o,r,n),Promise.resolve(1));export{g as easingScroll};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easing-scroll",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "♿️ Smooth scrolling",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -23,7 +23,9 @@
|
|
|
23
23
|
"check-types": "tsc",
|
|
24
24
|
"clean": "rm -r dist/*",
|
|
25
25
|
"build": "npm run clean && rollup -c",
|
|
26
|
-
"release": "npm
|
|
26
|
+
"release:patch": "npm version patch",
|
|
27
|
+
"preversion": "npm run check-types && npm run build",
|
|
28
|
+
"postversion": "git add . && git push && git push --tags && npm publish"
|
|
27
29
|
},
|
|
28
30
|
"repository": {
|
|
29
31
|
"type": "git",
|
package/src/easing-scroll.ts
CHANGED
|
@@ -8,34 +8,48 @@ type Ms = number;
|
|
|
8
8
|
type Pct = number;
|
|
9
9
|
|
|
10
10
|
type Options = {
|
|
11
|
-
top
|
|
12
|
-
left
|
|
13
|
-
duration
|
|
14
|
-
signal
|
|
11
|
+
top?: Px;
|
|
12
|
+
left?: Px;
|
|
13
|
+
duration?: Ms;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
15
|
/**
|
|
16
16
|
* @see Easing functions https://easings.net
|
|
17
17
|
*/
|
|
18
|
-
easing
|
|
18
|
+
easing?: (t: Pct) => Pct;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
const linear = (t: number): number => t;
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
const scrollTo = <E extends HTMLElement>(
|
|
24
24
|
target: E,
|
|
25
|
-
|
|
25
|
+
top: Options["top"],
|
|
26
|
+
left: Options["left"]
|
|
27
|
+
) => {
|
|
28
|
+
target.scrollTop = top ?? target.scrollTop;
|
|
29
|
+
target.scrollLeft = left ?? target.scrollLeft;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const easingScroll = <E extends HTMLElement>(
|
|
33
|
+
target: E,
|
|
34
|
+
{ top, left, signal, duration = 0, easing = linear }: Options
|
|
26
35
|
): Promise<Pct> => {
|
|
27
36
|
if (signal?.aborted) {
|
|
28
37
|
return Promise.resolve(0);
|
|
29
38
|
}
|
|
30
39
|
|
|
31
40
|
if (!duration) {
|
|
32
|
-
|
|
41
|
+
scrollTo(target, top, left);
|
|
33
42
|
return Promise.resolve(1);
|
|
34
43
|
}
|
|
35
44
|
|
|
36
45
|
return new Promise<Pct>((resolve) => {
|
|
37
46
|
const startTop = target.scrollTop;
|
|
38
47
|
const startLeft = target.scrollLeft;
|
|
48
|
+
|
|
49
|
+
scrollTo(target, top, left);
|
|
50
|
+
top = target.scrollTop;
|
|
51
|
+
left = target.scrollLeft;
|
|
52
|
+
|
|
39
53
|
const startTimestamp = performance.now();
|
|
40
54
|
let ramID: number;
|
|
41
55
|
|
|
@@ -64,10 +78,10 @@ export const easingScroll = <E extends Element>(
|
|
|
64
78
|
: startLeft + (left - startLeft) * easing(progress);
|
|
65
79
|
|
|
66
80
|
if (progress < 1) {
|
|
67
|
-
|
|
81
|
+
scrollTo(target, tickTop, tickLeft);
|
|
68
82
|
ramID = requestAnimationFrame(tick);
|
|
69
83
|
} else {
|
|
70
|
-
|
|
84
|
+
scrollTo(target, top, left);
|
|
71
85
|
signal?.removeEventListener("abort", abortHandler);
|
|
72
86
|
resolve(1);
|
|
73
87
|
}
|