import { JSX } from "preact" const OverflowList = ({ children, ...props }: JSX.HTMLAttributes & { id: string }) => { return ( ) } let numExplorers = 0 export default () => { const id = `list-${numExplorers++}` return { OverflowList: (props: JSX.HTMLAttributes) => ( ), overflowListAfterDOMLoaded: ` document.addEventListener("nav", (e) => { const observer = new IntersectionObserver((entries) => { for (const entry of entries) { const parentUl = entry.target.parentElement if (!parentUl) return if (entry.isIntersecting) { parentUl.classList.remove("gradient-active") } else { parentUl.classList.add("gradient-active") } } }) const ul = document.getElementById("${id}") if (!ul) return const end = ul.querySelector(".overflow-end") if (!end) return observer.observe(end) window.addCleanup(() => observer.disconnect()) }) `, } }