| | |
| | | const observer = new IntersectionObserver((entries) => { |
| | | for (const entry of entries) { |
| | | const slug = entry.target.id |
| | | const tocEntryElement = document.querySelector(`a[data-for="${slug}"]`) |
| | | const tocEntryElements = document.querySelectorAll(`a[data-for="${slug}"]`) |
| | | const windowHeight = entry.rootBounds?.height |
| | | if (windowHeight && tocEntryElement) { |
| | | if (windowHeight && tocEntryElements.length > 0) { |
| | | if (entry.boundingClientRect.y < windowHeight) { |
| | | tocEntryElement.classList.add("in-view") |
| | | tocEntryElements.forEach((tocEntryElement) => tocEntryElement.classList.add("in-view")) |
| | | } else { |
| | | tocEntryElement.classList.remove("in-view") |
| | | tocEntryElements.forEach((tocEntryElement) => tocEntryElement.classList.remove("in-view")) |
| | | } |
| | | } |
| | | } |