| "use strict"; |
| |
| function storeValue(settingName, value) { |
| try { |
| localStorage.setItem(`clippy-lint-list-${settingName}`, value); |
| } catch (e) { } |
| } |
| |
| function loadValue(settingName) { |
| return localStorage.getItem(`clippy-lint-list-${settingName}`); |
| } |
| |
| function setTheme(theme, store) { |
| let enableHighlight = false; |
| let enableNight = false; |
| let enableAyu = false; |
| |
| switch(theme) { |
| case "ayu": |
| enableAyu = true; |
| break; |
| case "coal": |
| case "navy": |
| enableNight = true; |
| break; |
| case "rust": |
| enableHighlight = true; |
| break; |
| default: |
| enableHighlight = true; |
| theme = "light"; |
| break; |
| } |
| |
| document.body.className = theme; |
| |
| document.getElementById("githubLightHighlight").disabled = enableNight || !enableHighlight; |
| document.getElementById("githubDarkHighlight").disabled = !enableNight && !enableAyu; |
| |
| document.getElementById("styleHighlight").disabled = !enableHighlight; |
| document.getElementById("styleNight").disabled = !enableNight; |
| document.getElementById("styleAyu").disabled = !enableAyu; |
| |
| if (store) { |
| storeValue("theme", theme); |
| } |
| } |
| |
| (function() { |
| // This file is loaded first. If so, we add the `js` class on the `<html>` |
| // element. |
| document.documentElement.classList.add("js"); |
| |
| // loading the theme after the initial load |
| const prefersDark = window.matchMedia("(prefers-color-scheme: dark)"); |
| const theme = loadValue("theme"); |
| if (prefersDark.matches && !theme) { |
| setTheme("coal", false); |
| } else { |
| setTheme(theme, false); |
| } |
| |
| const themeChoice = document.getElementById("theme-choice"); |
| |
| themeChoice.value = loadValue("theme"); |
| document.getElementById("theme-choice").addEventListener("change", (e) => { |
| setTheme(themeChoice.value, true); |
| }); |
| })(); |