@@ -12,26 +12,31 @@ export function ScrollActiveLink({activeLinkSelector}: Props) {
1212 useEffect ( ( ) => {
1313 const sidebar = document . querySelector ( '[data-sidebar-link]' ) ?. closest ( 'aside' ) ;
1414 if ( ! sidebar ) {
15- return ;
15+ const noOp = ( ) => { } ;
16+ return noOp ;
1617 }
17- sidebar . addEventListener ( 'click' , e => {
18+ const onLinkClick = ( e : Event ) => {
1819 const target = e . target as HTMLElement ;
1920 if ( target . hasAttribute ( 'data-sidebar-link' ) ) {
2021 const top = target . getBoundingClientRect ( ) . top ;
2122 sessionStorage . setItem ( 'sidebar-link-poisition' , top . toString ( ) ) ;
2223 }
23- } ) ;
24+ } ;
25+ sidebar . addEventListener ( 'click' , onLinkClick ) ;
2426 // track active link position on scroll as well
25- sidebar . addEventListener (
26- 'scroll' ,
27- debounce ( ( ) => {
28- const activeLink = document . querySelector ( activeLinkSelector ) ;
29- if ( activeLink ) {
30- const top = activeLink . getBoundingClientRect ( ) . top . toString ( ) ;
31- sessionStorage . setItem ( 'sidebar-link-poisition' , top ) ;
32- }
33- } , 50 )
34- ) ;
27+ const onSidebarSroll = debounce ( ( ) => {
28+ const activeLink = document . querySelector ( activeLinkSelector ) ;
29+ if ( activeLink ) {
30+ const top = activeLink . getBoundingClientRect ( ) . top . toString ( ) ;
31+ sessionStorage . setItem ( 'sidebar-link-poisition' , top ) ;
32+ }
33+ } , 50 ) ;
34+
35+ sidebar . addEventListener ( 'scroll' , onSidebarSroll ) ;
36+ return ( ) => {
37+ sidebar . removeEventListener ( 'click' , onLinkClick ) ;
38+ sidebar . removeEventListener ( 'scroll' , onSidebarSroll ) ;
39+ } ;
3540 } , [ activeLinkSelector ] ) ;
3641
3742 useEffect ( ( ) => {
0 commit comments