@@ -34,10 +34,10 @@ const now = () => {
3434}
3535
3636type SmoothScrollAction = {
37- el : Element ;
37+ el : Element
3838 // [start, end] tuples of the distance animated
39- left : [ number , number ] ;
40- top : [ number , number ] ;
39+ left : [ number , number ]
40+ top : [ number , number ]
4141}
4242
4343type Context = {
@@ -77,15 +77,15 @@ function smoothScroll(
7777 x : number ,
7878 y : number ,
7979 duration = 600 ,
80- ease : CustomEasing = t => 1 + -- t * t * t * t * t ,
80+ ease : CustomEasing = ( t ) => 1 + -- t * t * t * t * t ,
8181 cb : Function ,
8282 onScrollChange ?: OnScrollChangeCallback
8383) {
8484 // define scroll context
8585 const scrollable = el
8686 const startX = el . scrollLeft
8787 const startY = el . scrollTop
88- const method = ( x : number , y : number , elapsed : number , value : number , ) => {
88+ const method = ( x : number , y : number , elapsed : number , value : number ) => {
8989 // @TODO use Element.scroll if it exists, as it is potentially better performing
9090 // use ceil to include the the fractional part of the number for the scrolling
9191 const left = Math . ceil ( x )
@@ -133,35 +133,38 @@ function scroll<T>(target: Element, options?: any) {
133133 inline : overrides . inline ,
134134 scrollMode : overrides . scrollMode ,
135135 boundary : overrides . boundary ,
136- behavior : actions =>
136+ behavior : ( actions ) =>
137137 Promise . all (
138- actions . reduce ( ( results : Promise < SmoothScrollAction > [ ] , { el, left, top } ) => {
139- const startLeft = el . scrollLeft
140- const startTop = el . scrollTop
141- if ( startLeft === left && startTop === top ) {
142- return results
143- }
144-
145- return [
146- ...results ,
147- new Promise ( resolve => {
148- return smoothScroll (
149- el ,
150- left ,
151- top ,
152- overrides . duration ,
153- overrides . ease ,
154- ( ) =>
155- resolve ( {
156- el,
157- left : [ startLeft , left ] ,
158- top : [ startTop , top ] ,
159- } ) ,
160- overrides . onScrollChange
161- )
162- } ) ,
163- ]
164- } , [ ] )
138+ actions . reduce (
139+ ( results : Promise < SmoothScrollAction > [ ] , { el, left, top } ) => {
140+ const startLeft = el . scrollLeft
141+ const startTop = el . scrollTop
142+ if ( startLeft === left && startTop === top ) {
143+ return results
144+ }
145+
146+ return [
147+ ...results ,
148+ new Promise ( ( resolve ) => {
149+ return smoothScroll (
150+ el ,
151+ left ,
152+ top ,
153+ overrides . duration ,
154+ overrides . ease ,
155+ ( ) =>
156+ resolve ( {
157+ el,
158+ left : [ startLeft , left ] ,
159+ top : [ startTop , top ] ,
160+ } ) ,
161+ overrides . onScrollChange
162+ )
163+ } ) ,
164+ ]
165+ } ,
166+ [ ]
167+ )
165168 ) ,
166169 } )
167170 }
0 commit comments