50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
import {
|
|
getElementScrollRestorationEntry,
|
|
setupScrollRestoration,
|
|
} from '@tanstack/router-core'
|
|
import { useRouter } from './useRouter'
|
|
import type {
|
|
ParsedLocation,
|
|
ScrollRestorationEntry,
|
|
ScrollRestorationOptions,
|
|
} from '@tanstack/router-core'
|
|
|
|
function useScrollRestoration() {
|
|
const router = useRouter()
|
|
setupScrollRestoration(router, true)
|
|
}
|
|
|
|
/**
|
|
* @deprecated Use the `scrollRestoration` router option instead.
|
|
*/
|
|
export function ScrollRestoration(_props: ScrollRestorationOptions) {
|
|
useScrollRestoration()
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
console.warn(
|
|
"The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.",
|
|
)
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
export function useElementScrollRestoration(
|
|
options: (
|
|
| {
|
|
id: string
|
|
getElement?: () => Window | Element | undefined | null
|
|
}
|
|
| {
|
|
id?: string
|
|
getElement: () => Window | Element | undefined | null
|
|
}
|
|
) & {
|
|
getKey?: (location: ParsedLocation) => string
|
|
},
|
|
): ScrollRestorationEntry | undefined {
|
|
useScrollRestoration()
|
|
|
|
return getElementScrollRestorationEntry(useRouter(), options)
|
|
}
|