Something went wrong. Try again.
leaflet fork for copy edit / bug fixes forked from leaflet.pub/leaflet
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829import { useRef, useEffect } from "react";
let scrollPositions: { [key: string]: number } = {};
export function usePreserveScroll<T extends HTMLElement>(key: string | null) { let ref = useRef<T | null>(null); let lastKey = useRef<string | null>(null); useEffect(() => { if (!ref.current || !key) return;
let keyChanged = lastKey.current !== null && lastKey.current !== key; lastKey.current = key;
if (scrollPositions[key] !== undefined || keyChanged) window.requestAnimationFrame(() => { ref.current?.scrollTo({ top: scrollPositions[key] || 0 }); });
const listener = () => { if (!ref.current?.scrollTop) return; scrollPositions[key] = ref.current.scrollTop; };
ref.current.addEventListener("scroll", listener); return () => ref.current?.removeEventListener("scroll", listener); }, [key, ref.current]); return { ref };}