import { useLayoutEffect, useState } from "react"; export function useActiveItem(itemIds: string[]) { const [activeId, setActiveId] = useState(null); useLayoutEffect(() => { const observer = new IntersectionObserver( ([entry]) => { if (entry?.isIntersecting) { setActiveId(entry.target.id); } }, { rootMargin: `0% 0% -82% 0%` } ); itemIds?.forEach((id) => { const element = document.getElementById(id); if (element) { observer.observe(element); } }); return () => { itemIds?.forEach((id) => { const element = document.getElementById(id); if (element) { observer.unobserve(element); } }); }; }, [itemIds]); return activeId; }