const body = document.body; const data = body.getAttribute("data-theme"); const initTheme = (state) => { if (state === "dark") { body.setAttribute("data-theme", "dark"); } else if (state === "light") { body.removeAttribute("data-theme"); } else { localStorage.setItem("theme", data); } }; initTheme(localStorage.getItem("theme")); setTimeout(() => body.classList.remove("notransition"), 75); let directoryHeading = document.getElementById("directory"); let directory = directoryHeading.innerHTML; document.title = "Directory Listing for " + directory; let table = document.getElementById("list"); if (table.tBodies[0].rows[0].cells[0].children[0].innerHTML == "Parent directory/") { directoryHeading.innerHTML = directory.replaceAll(/[^/]+/g, (match, offset) => `${match}` ); } let searchContainer = document.getElementById("search-container"); searchContainer.remove(); table.before(searchContainer); searchContainer.hidden = false; let searchInput = document.getElementById("search-input"); searchInput.addEventListener("input", filterTable); filterTable(); function filterTable() { let value = searchInput.value.toLowerCase(); let rows = table.tBodies[0].rows; if (value) { for (let row of rows) { row.hidden = row.cells[0].children[0].innerHTML.toLowerCase() .indexOf(value) < 0; } } else { for (let row of rows) { row.hidden = false; } } } fetch("README.md").then(response => { if (response.ok) { response.text().then(text => { let description = document.createElement("details"); description.innerHTML = marked.parse(text); let summary = document.createElement("summary"); summary.innerHTML = "Description"; description.prepend(summary); directoryHeading.after(description); }); } }); [...document.querySelectorAll(".link a")].forEach(link => { if (link.href.endsWith(".ics")) { link.href = link.href.replace(/https?/, "webcal"); } })