"use strict";
const darkThemes = ["dark", "ayu"];
window.currentTheme = document.getElementById("themeStyle");
const settingsDataset = (function () { const settingsElement = document.getElementById("default-settings"); return settingsElement && settingsElement.dataset ? settingsElement.dataset : null; })();
function getSettingValue(settingName) { const current = getCurrentValue(settingName); if (current === null && settingsDataset !== null) {
    const def = settingsDataset[settingName.replace(/-/g, "_")];
    if (def !== undefined) {
        return def;
    }
} return current; }
const localStoredTheme = getSettingValue("theme");
function hasClass(elem, className) { return elem && elem.classList && elem.classList.contains(className); }
function addClass(elem, className) { if (elem && elem.classList) {
    elem.classList.add(className);
} }
function removeClass(elem, className) { if (elem && elem.classList) {
    elem.classList.remove(className);
} }
function onEach(arr, func, reversed) { if (arr && arr.length > 0) {
    if (reversed) {
        for (let i = arr.length - 1; i >= 0; --i) {
            if (func(arr[i])) {
                return true;
            }
        }
    }
    else {
        for (const elem of arr) {
            if (func(elem)) {
                return true;
            }
        }
    }
} return false; }
function onEachLazy(lazyArray, func, reversed) { return onEach(Array.prototype.slice.call(lazyArray), func, reversed); }
function updateLocalStorage(name, value) { try {
    window.localStorage.setItem("rustdoc-" + name, value);
}
catch (e) { } }
function getCurrentValue(name) { try {
    return window.localStorage.getItem("rustdoc-" + name);
}
catch (e) {
    return null;
} }
const getVar = (function getVar(name) { const el = document.getElementById("rustdoc-vars"); return el ? el.attributes["data-" + name].value : null; });
function switchTheme(newThemeName, saveTheme) { if (saveTheme) {
    updateLocalStorage("theme", newThemeName);
} let newHref; if (newThemeName === "light" || newThemeName === "dark" || newThemeName === "ayu") {
    newHref = getVar("static-root-path") + getVar("theme-" + newThemeName + "-css");
}
else {
    newHref = getVar("root-path") + newThemeName + getVar("resource-suffix") + ".css";
} if (!window.currentTheme) {
    document.write(`<link rel="stylesheet" id="themeStyle" href="${newHref}">`);
    window.currentTheme = document.getElementById("themeStyle");
}
else if (newHref !== window.currentTheme.href) {
    window.currentTheme.href = newHref;
} }
const updateTheme = (function () { const mql = window.matchMedia("(prefers-color-scheme: dark)"); function updateTheme() { if (getSettingValue("use-system-theme") !== "false") {
    const lightTheme = getSettingValue("preferred-light-theme") || "light";
    const darkTheme = getSettingValue("preferred-dark-theme") || "dark";
    updateLocalStorage("use-system-theme", "true");
    switchTheme(mql.matches ? darkTheme : lightTheme, true);
}
else {
    switchTheme(getSettingValue("theme"), false);
} } mql.addEventListener("change", updateTheme); return updateTheme; })();
if (getSettingValue("use-system-theme") !== "false" && window.matchMedia) {
    if (getSettingValue("use-system-theme") === null && getSettingValue("preferred-dark-theme") === null && darkThemes.indexOf(localStoredTheme) >= 0) {
        updateLocalStorage("preferred-dark-theme", localStoredTheme);
    }
}
updateTheme();
if (getSettingValue("source-sidebar-show") === "true") {
    addClass(document.documentElement, "source-sidebar-expanded");
}
window.addEventListener("pageshow", ev => { if (ev.persisted) {
    setTimeout(updateTheme, 0);
} });
