@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
37 lines • 1.38 kB
JSX
import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration, } from '@tanstack/router-core';
import { useRouter } from './useRouter';
function useScrollRestoration() {
const router = useRouter();
setupScrollRestoration(router, true);
}
/**
* @deprecated use createRouter's `scrollRestoration` option instead
*/
export function ScrollRestoration(_props) {
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) {
useScrollRestoration();
const router = useRouter();
const getKey = options.getKey || defaultGetScrollRestorationKey;
let elementSelector = '';
if (options.id) {
elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
}
else {
const element = options.getElement?.();
if (!element) {
return;
}
elementSelector =
element instanceof Window ? 'window' : getCssSelector(element);
}
const restoreKey = getKey(router.latestLocation);
const byKey = scrollRestorationCache?.state[restoreKey];
return byKey?.[elementSelector];
}
//# sourceMappingURL=ScrollRestoration.jsx.map