// @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();