From f84915e486ffaa37a4461308071a7954b846c321 Mon Sep 17 00:00:00 2001 From: Leilukin Date: Sat, 13 Apr 2024 17:30:08 +0800 Subject: [PATCH] Remove table of contents JavaScript file --- src/assets/js/toc.js | 76 -------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 src/assets/js/toc.js diff --git a/src/assets/js/toc.js b/src/assets/js/toc.js deleted file mode 100644 index f09cd89d..00000000 --- a/src/assets/js/toc.js +++ /dev/null @@ -1,76 +0,0 @@ -// Auto generate table of contents -// Code based on https://techindetail.com/table-of-contents-javascript/ -window.addEventListener('DOMContentLoaded', (event) => { - const article = document.querySelector("article"); - const headings = article.querySelectorAll("h2, h3"); - const toc = document.querySelector(".toc"); - const tocSidebar = document.querySelector(".sidebar__toc"); - const leftSidebar = document.querySelector('.left-sidebar'); - const totalHeadings = headings.length; - let tocOl = document.createElement("ol"); - let tocFragment = new DocumentFragment(); - let mainLi = null; - let subUl = null; - let subLi = null; - let isSibling = false; - - if (totalHeadings > 1) { - for (let element of headings) { - let anchor = document.createElement("a"); - let anchorText = element.innerText; - anchor.innerText = anchorText; - let elementId = anchorText.replaceAll(" ", "-").toLowerCase(); - anchor.href = "#" + elementId; - element.id = elementId; - let level = element.nodeName; - - if ("H3" === level) { - if (mainLi) { - subLi = document.createElement("li"); - subLi.appendChild(anchor); - - if (isSibling === false) { - subUl = document.createElement("ul"); - } - subUl.appendChild(subLi); - mainLi.appendChild(subUl); - - isSibling = true; - } - } else { - mainLi = document.createElement("li"); - mainLi.appendChild(anchor); - tocFragment.appendChild(mainLi); - isSibling = false; - subUl = null; - } - } - tocOl.append(tocFragment); - toc.append(tocOl); - - const tocClone = tocOl.cloneNode(true); - if (tocSidebar) { - tocSidebar.appendChild(tocClone); - } - } else { - toc.classList.add('hidden'); - leftSidebar.classList.add('hidden'); - } - - // Close article ToC accordion and the left sidebar for small screen sizes - if (window.innerWidth < 480) { - toc.removeAttribute("open"); - leftSidebar.classList.add("hidden"); - } else { - toc.setAttribute("open", true); - } - - // Remove the stickiness of the sidebar ToC if it is larger than screen height - function preventSidebarOverflow() { - if (document.documentElement.clientHeight < tocSidebar.offsetHeight + 50) { - tocSidebar.style.marginTop = "0"; - tocSidebar.style.position = "static"; - } - } - preventSidebarOverflow(); -}); \ No newline at end of file