@@ -42,15 +42,15 @@ export interface UsePreserveRelativeScrollOptions {
42
42
* (for example, the selected tab value). Provide stable, memoized values; avoid passing
43
43
* freshly created objects or inline functions.
44
44
*/
45
- export function usePreserveRelativeScroll (
45
+ export function usePreserveRelativeScroll < T extends Element = Element > (
46
46
layoutDeps : ReadonlyArray < unknown > = [ ] ,
47
47
options ?: UsePreserveRelativeScrollOptions ,
48
- ) : [ React . RefObject < Element > , ( ) => void ] {
48
+ ) : [ React . RefObject < T | null > , ( ) => void ] {
49
49
const enabled = options ?. enabled ?? true ;
50
50
const beforeTopRef = useRef < number | null > ( null ) ;
51
51
const targetRef = useRef < ScrollTarget | null > ( null ) ;
52
52
const didUserScrollRef = useRef < boolean > ( false ) ;
53
- const elementRef = useRef < Element | null > ( null ) ;
53
+ const elementRef = useRef < T | null > ( null ) ;
54
54
const compensatedRef = useRef < boolean > ( false ) ;
55
55
56
56
const attachScrollListener = useCallback ( ( ) => {
@@ -114,7 +114,7 @@ export function usePreserveRelativeScroll(
114
114
} , [ ] ) ;
115
115
116
116
const performCompensation = useCallback (
117
- ( element : Element ) => {
117
+ ( element : T ) => {
118
118
if ( compensatedRef . current ) return ;
119
119
const beforeTop = beforeTopRef . current ;
120
120
const target = targetRef . current ;
0 commit comments