// Mark the current section in the table of contents with aria-current when scrolled into view. let tocLinks = document.querySelectorAll('.table-of-contents a'); let headers = new Map(); for (let link of tocLinks) { let headerId = link.hash.slice(1); let header = document.getElementById(headerId); headers.set(header, link); } let intersectingHeaders = new Set(); let observer = new IntersectionObserver(entries => { for (let entry of entries) { if (entry.isIntersecting) { intersectingHeaders.add(entry.target); } else { intersectingHeaders.delete(entry.target); } } if (intersectingHeaders.size > 0) { let current = document.querySelector('.table-of-contents a[aria-current]'); if (current) { current.removeAttribute('aria-current'); } let first; for (let [header, link] of headers) { if (intersectingHeaders.has(header)) { first = link; break; } } first.setAttribute('aria-current', 'location'); } }); for (let header of headers.keys()) { observer.observe(header); }