diff options
| author | Volpeon <git@volpeon.ink> | 2026-07-22 19:40:59 +0200 |
|---|---|---|
| committer | Volpeon <git@volpeon.ink> | 2026-07-22 19:40:59 +0200 |
| commit | c1e28224aa2e1450031669d9a7e359b63e04687d (patch) | |
| tree | 68f3d8905c763a91f68001d868197effa92adafa /src/scripts/lib/toc.ts | |
| download | corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.gz corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.bz2 corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.zip | |
Init
Diffstat (limited to 'src/scripts/lib/toc.ts')
| -rw-r--r-- | src/scripts/lib/toc.ts | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/scripts/lib/toc.ts b/src/scripts/lib/toc.ts new file mode 100644 index 0000000..958f209 --- /dev/null +++ b/src/scripts/lib/toc.ts | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | export function mountToc() { | ||
| 2 | const observer = new IntersectionObserver((entries) => { | ||
| 3 | for (const entry of entries) { | ||
| 4 | const id = entry.target.getAttribute("id"); | ||
| 5 | document | ||
| 6 | .querySelector(`.o-toc__item[href="#${id}"]`) | ||
| 7 | ?.classList.toggle("is-selected", entry.intersectionRatio > 0); | ||
| 8 | } | ||
| 9 | }); | ||
| 10 | |||
| 11 | document.querySelectorAll("section[id]").forEach((section) => { | ||
| 12 | observer.observe(section); | ||
| 13 | }); | ||
| 14 | } | ||
