@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
32 lines • 1.31 kB
JSX
import { defaultGetScrollRestorationKey, escapeHtml, restoreScroll, storageKey, } from '@tanstack/router-core';
import { isServer } from '@tanstack/router-core/isServer';
import { useRouter } from './useRouter';
import { ScriptOnce } from './ScriptOnce';
export function ScrollRestoration() {
const router = useRouter();
if (!router.isScrollRestoring || !(isServer ?? router.isServer)) {
return null;
}
if (typeof router.options.scrollRestoration === 'function') {
const shouldRestore = router.options.scrollRestoration({
location: router.latestLocation,
});
if (!shouldRestore) {
return null;
}
}
const getKey = router.options.getScrollRestorationKey || defaultGetScrollRestorationKey;
const userKey = getKey(router.latestLocation);
const resolvedKey = userKey !== defaultGetScrollRestorationKey(router.latestLocation)
? userKey
: undefined;
const restoreScrollOptions = {
storageKey,
shouldScrollRestoration: true,
};
if (resolvedKey) {
restoreScrollOptions.key = resolvedKey;
}
return (<ScriptOnce children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}/>);
}
//# sourceMappingURL=scroll-restoration.jsx.map