Something went wrong. Try again.
theme website blog showcase
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344function init_toc_heading() { const headings = document.querySelectorAll("main > article:first-of-type h2"); const toc_names = document.querySelectorAll("main > nav#toc li");
const toc_mapped_links = new Map( Array.from(toc_names).map((name) => [ name.children[0].hash.substring(1), name, ]), );
const position_list = Array.from(headings).map((heading, idx, headings) => [ heading.offsetTop + heading.offsetHeight, headings[idx + 1]?.offsetTop ?? Infinity, toc_mapped_links.get(heading.id), ]);
const updateToc = (scrollingElement) => { const scrollTop = scrollingElement.scrollTop; const vptHeight = scrollingElement.clientHeight;
const vptBgnOffset = scrollTop; const vptEndOffset = scrollTop + vptHeight;
position_list.forEach(([eltBgnOffset, eltEndOffset, element]) => { if (eltBgnOffset < vptEndOffset && eltEndOffset > vptBgnOffset) element.classList.add("visible"); else element.classList.remove("visible"); }); };
document.addEventListener("scroll", () => { updateToc(document.scrollingElement); });
window.addEventListener("resize", () => { updateToc(document.scrollingElement); });
updateToc(document.scrollingElement);}
init_toc_heading();