@@ -21,7 +21,7 @@ export function useScroll({ isHTML, root, _setActive, matchMedia }: UseListeners
2121 return isHTML . value ? window . scrollY : root . value ! . scrollTop ;
2222 }
2323
24- function setReady ( ) {
24+ function setReady ( maxFrames : number ) {
2525 let rafPrevY : number ;
2626 let rafId : DOMHighResTimeStamp ;
2727 let frameCount = 0 ;
@@ -34,9 +34,9 @@ export function useScroll({ isHTML, root, _setActive, matchMedia }: UseListeners
3434 // console.log('Scrolling...');
3535 return requestAnimationFrame ( scrollEnd ) ;
3636 }
37- // When equal, wait for 20 frames to be sure is idle
37+ // When equal, wait for 20 frames after scroll and 10 after mount to be sure is idle
3838 frameCount ++ ;
39- if ( frameCount === 20 ) {
39+ if ( frameCount === maxFrames ) {
4040 isReady . value = true ;
4141 isClick . value = false ;
4242 console . log ( 'Scroll end.' ) ;
@@ -85,7 +85,7 @@ export function useScroll({ isHTML, root, _setActive, matchMedia }: UseListeners
8585 onMounted ( ( ) => {
8686 if ( matchMedia . value && location . hash ) {
8787 // Wait for any eventual scroll to hash triggered by browser to end
88- setReady ( ) ;
88+ setReady ( 10 ) ;
8989 } else {
9090 isReady . value = true ;
9191 }
@@ -118,14 +118,18 @@ export function useScroll({ isHTML, root, _setActive, matchMedia }: UseListeners
118118 { immediate : true , flush : 'sync' }
119119 ) ;
120120
121+ function resetReady ( ) {
122+ setReady ( 20 ) ;
123+ }
124+
121125 watch (
122126 isClick ,
123127 ( _isClick , _ , onCleanup ) => {
124128 const rootEl = isHTML . value ? document : root . value ! ;
125129
126130 if ( _isClick ) {
127131 console . log ( 'Adding additional listeners...' ) ;
128- rootEl . addEventListener ( 'scroll' , setReady , ONCE ) ;
132+ rootEl . addEventListener ( 'scroll' , resetReady , ONCE ) ;
129133 rootEl . addEventListener ( 'wheel' , reScroll , ONCE ) ;
130134 rootEl . addEventListener ( 'keydown' , onSpaceBar as EventListener , ONCE ) ;
131135 rootEl . addEventListener ( 'pointerdown' , onPointerDown as EventListener , ONCE ) ;
@@ -134,7 +138,7 @@ export function useScroll({ isHTML, root, _setActive, matchMedia }: UseListeners
134138 onCleanup ( ( ) => {
135139 if ( _isClick ) {
136140 console . log ( 'Removing additional listeners...' ) ;
137- rootEl . removeEventListener ( 'scroll' , setReady ) ;
141+ rootEl . removeEventListener ( 'scroll' , resetReady ) ;
138142 rootEl . removeEventListener ( 'wheel' , reScroll ) ;
139143 rootEl . removeEventListener ( 'keydown' , onSpaceBar as EventListener ) ;
140144 rootEl . removeEventListener ( 'pointerdown' , onPointerDown as EventListener ) ;
0 commit comments