UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

32 lines 1.31 kB
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