import type { FunctionalComponent } from 'preact'; import { useState, useEffect, useRef } from 'preact/hooks'; import type { MarkdownHeading } from 'astro'; type ItemOffsets = { id: string; topOffset: number; }; const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ headings = [], }) => { const itemOffsets = useRef([]); // FIXME: Not sure what this state is doing. It was never set to anything truthy. const [activeId] = useState(''); useEffect(() => { const getItemOffsets = () => { const titles = document.querySelectorAll('article :is(h1, h2, h3, h4)'); itemOffsets.current = Array.from(titles).map((title) => ({ id: title.id, topOffset: title.getBoundingClientRect().top + window.scrollY, })); }; getItemOffsets(); window.addEventListener('resize', getItemOffsets); return () => { window.removeEventListener('resize', getItemOffsets); }; }, []); return ( <>

On this page

); }; export default TableOfContents; ue='cf-user-defined-entryfile'>cf-user-defined-entryfile Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-07-11Filter out astro from `peerDependencies` in `astro add` (#7620)Gravatar Chris Swithinbank 2-1/+7
2023-07-11[ci] formatGravatar bluwy 1-1/+1
2023-07-11Refactor simple CLI commands (#7619)Gravatar Bjorn Lu 12-115/+123
2023-07-10fix: `astro info` command fallback for package manager (#7618)Gravatar Emanuele Stoppa 2-1/+7
2023-07-10Add CLI startup speed benchmark (#7617)Gravatar Bjorn Lu 5-11/+95
2023-07-10[ci] formatGravatar bluwy 1-1/+1