// @ts-check /// /// /// /// // Scrollbar width { const updateScrollWidth = () => { document.documentElement.style.setProperty("--body-scroll-width", `${window.innerWidth - document.documentElement.clientWidth}px`); }; window.addEventListener("resize", updateScrollWidth); updateScrollWidth(); } // Dark mode toggle { const handleDarkModeChange = () => { setDarkMode(!isDarkMode()); const isDark = isDarkMode(); localStorage.setItem("darkMode", isDark ? "1" : "0"); }; const setInitialDarkMode = darkToggle => { darkToggle.checked = isDarkMode(); }; const darkModeElements = document.querySelectorAll("[data-darkmode-toggle] input, [data-darkmode-switch] input"); darkModeElements.forEach(darkToggle => { darkToggle.addEventListener("change", handleDarkModeChange); // @ts-ignore setInitialDarkMode(darkToggle); }); } // Horizontal Scroll document.querySelectorAll(".uc-horizontal-scroll").forEach(element => { element.addEventListener("wheel", e => { e.preventDefault(); // @ts-ignore element.scrollBy({ left: e.deltaY, behavior: "smooth" }); }); }); // To Top document.addEventListener("DOMContentLoaded", () => { const $elem = document.querySelector("[data-uc-backtotop]"); if (!$elem) return; $elem.addEventListener("click", e => { e.preventDefault(); window.scrollTo({ top: 0, behavior: "smooth" }); }); let scrollPos = 0; window.addEventListener("scroll", () => { const top = document.body.getBoundingClientRect().top; // @ts-ignore $elem.parentNode.classList.toggle("uc-active", top <= scrollPos); scrollPos = top; }); }); // Schema toggle via URL const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const getSchema = urlParams.get("schema"); if (getSchema === "dark") { setDarkMode(Boolean(1)); // converts 1 to true } else if (getSchema === "light") { setDarkMode(Boolean(0)); // converts 0 to false } // Pretty Print // @ts-ignore window.prettyPrint && prettyPrint();