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.
@@ -7,14 +7,14 @@ type Ms = number;
7
7
  */
8
8
  type Pct = number;
9
9
  type Options = {
10
- top: Px;
11
- left: Px;
12
- duration: Ms;
13
- signal: AbortSignal;
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: (t: Pct) => Pct;
17
+ easing?: (t: Pct) => Pct;
18
18
  };
19
- export declare const easingScroll: <E extends Element>(target: E, { top, left, signal, duration, easing }: Partial<Options>) => Promise<Pct>;
19
+ export declare const easingScroll: <E extends HTMLElement>(target: E, { top, left, signal, duration, easing }: Options) => Promise<Pct>;
20
20
  export {};
@@ -1 +1 @@
1
- "use strict";const b=o=>o,g=(o,{top:l,left:t,signal:e,duration:s=0,easing:i=b})=>e!=null&&e.aborted?Promise.resolve(0):s?new Promise(c=>{const a=o.scrollTop,m=o.scrollLeft,u=performance.now();let n;const v=()=>(performance.now()-u)/s,f=()=>{cancelAnimationFrame(n);const r=v();c(r)};e==null||e.addEventListener("abort",f);const p=()=>{const r=v(),d=l===void 0?void 0:a+(l-a)*i(r),T=t===void 0?void 0:m+(t-m)*i(r);r<1?(o.scrollTo({top:d,left:T}),n=requestAnimationFrame(p)):(o.scrollTo({top:l,left:t}),e==null||e.removeEventListener("abort",f),c(1))};n=requestAnimationFrame(p)}):(o.scrollTo({top:l,left:t}),Promise.resolve(1));exports.easingScroll=g;
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;
@@ -1 +1 @@
1
- const u=o=>o,L=(o,{top:t,left:r,signal:n,duration:s=0,easing:i=u})=>n?.aborted?Promise.resolve(0):s?new Promise(a=>{const c=o.scrollTop,m=o.scrollLeft,f=performance.now();let l;const d=()=>(performance.now()-f)/s,p=()=>{cancelAnimationFrame(l);const e=d();a(e)};n?.addEventListener("abort",p);const v=()=>{const e=d(),T=t===void 0?void 0:c+(t-c)*i(e),b=r===void 0?void 0:m+(r-m)*i(e);e<1?(o.scrollTo({top:T,left:b}),l=requestAnimationFrame(v)):(o.scrollTo({top:t,left:r}),n?.removeEventListener("abort",p),a(1))};l=requestAnimationFrame(v)}):(o.scrollTo({top:t,left:r}),Promise.resolve(1));export{L as easingScroll};
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:t,signal:e,duration:s=0,easing:i=b})=>e!=null&&e.aborted?Promise.resolve(0):s?new Promise(c=>{const a=o.scrollTop,m=o.scrollLeft,u=performance.now();let n;const v=()=>(performance.now()-u)/s,f=()=>{cancelAnimationFrame(n);const r=v();c(r)};e==null||e.addEventListener("abort",f);const p=()=>{const r=v(),d=l===void 0?void 0:a+(l-a)*i(r),T=t===void 0?void 0:m+(t-m)*i(r);r<1?(o.scrollTo({top:d,left:T}),n=requestAnimationFrame(p)):(o.scrollTo({top:l,left:t}),e==null||e.removeEventListener("abort",f),c(1))};n=requestAnimationFrame(p)}):(o.scrollTo({top:l,left:t}),Promise.resolve(1));exports.easingScroll=g;
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,L=(o,{top:t,left:r,signal:n,duration:s=0,easing:i=u})=>n?.aborted?Promise.resolve(0):s?new Promise(a=>{const c=o.scrollTop,m=o.scrollLeft,f=performance.now();let l;const d=()=>(performance.now()-f)/s,p=()=>{cancelAnimationFrame(l);const e=d();a(e)};n?.addEventListener("abort",p);const v=()=>{const e=d(),T=t===void 0?void 0:c+(t-c)*i(e),b=r===void 0?void 0:m+(r-m)*i(e);e<1?(o.scrollTo({top:T,left:b}),l=requestAnimationFrame(v)):(o.scrollTo({top:t,left:r}),n?.removeEventListener("abort",p),a(1))};l=requestAnimationFrame(v)}):(o.scrollTo({top:t,left:r}),Promise.resolve(1));export{L as easingScroll};
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.1",
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 run check-types && npm publish"
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",
@@ -8,34 +8,48 @@ type Ms = number;
8
8
  type Pct = number;
9
9
 
10
10
  type Options = {
11
- top: Px;
12
- left: Px;
13
- duration: Ms;
14
- signal: AbortSignal;
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: (t: Pct) => Pct;
18
+ easing?: (t: Pct) => Pct;
19
19
  };
20
20
 
21
21
  const linear = (t: number): number => t;
22
22
 
23
- export const easingScroll = <E extends Element>(
23
+ const scrollTo = <E extends HTMLElement>(
24
24
  target: E,
25
- { top, left, signal, duration = 0, easing = linear }: Partial<Options>
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
- target.scrollTo({ top, left });
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
- target.scrollTo({ top: tickTop, left: tickLeft });
81
+ scrollTo(target, tickTop, tickLeft);
68
82
  ramID = requestAnimationFrame(tick);
69
83
  } else {
70
- target.scrollTo({ top, left });
84
+ scrollTo(target, top, left);
71
85
  signal?.removeEventListener("abort", abortHandler);
72
86
  resolve(1);
73
87
  }