diff --git a/_layouts/default.html b/_layouts/default.html index a88ccb3..b002eff 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,16 +1,16 @@ - + {%- include head.html -%} + integrity="sha384-cRxb1HsKSl8bTfU9fBcGsjktUfQa6w+fwvkYnU8XjFH4Qg8To1+/9OXv5iRzrKX4" crossorigin="anonymous"> + integrity="sha384-ov99pRO2tAc0JuxTVzf63RHHeQTJ0CIawbDZFiFTzB07aqFZwEu2pz4uzqL+5OPG" crossorigin="anonymous"> + integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous"> + integrity="sha384-Z35v0Cbs2xT8EPaBKl4dZ1mP5f8Ed4hlE+HdKJZMC7v+6Z8B7mK3AevxRhmhF2FM" crossorigin="anonymous"> + + const tocList = document.getElementById("toc"); + const headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6"); + const excludeClass = 'no-toc'; + + let currentLevel = 1; + let currentList = tocList; + + headers.forEach(header => { + if (header.classList.contains(excludeClass)) { + return; + } + + const level = parseInt(header.tagName.charAt(1)); + + if (header.id === "") { + header.id = header.textContent.toLowerCase().replace(/\s+/g, '-'); + } + + const link = document.createElement("a"); + link.href = "#" + header.id; + link.textContent = header.textContent; + + const listItem = document.createElement("li"); + listItem.appendChild(link); + + if (level > currentLevel) { + const newList = document.createElement("ul"); + currentList.appendChild(newList); + currentList = newList; + } else if (level < currentLevel) { + for (let i = currentLevel; i > level; i--) { + currentList = currentList.parentElement; + } + } + + currentList.appendChild(listItem); + currentLevel = level; + }); + }); +