From 546286286d1790bad01541c2309bd26cb7424797 Mon Sep 17 00:00:00 2001 From: Amazingca Date: Sun, 3 May 2026 18:34:58 -0600 Subject: [PATCH] Add custom CSS --- settings.js | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/settings.js b/settings.js index 43e958d..f250084 100644 --- a/settings.js +++ b/settings.js @@ -35,7 +35,7 @@ document.getElementById("exportData").addEventListener("click", async (event) => const exportURL = window.location.href.replace("settings.html", "") + "index.html#" + btoa(JSON.stringify(dataExport)); - if (!window.navigator.userAgent.includes("Mozilla")) { + if (!window.navigator.userAgent.includes("Firefox")) { try { @@ -63,8 +63,47 @@ document.getElementById("exportData").addEventListener("click", async (event) => } }); +const backupData = () => { + + localStorage.setItem("theme", JSON.stringify(theme)); +} + const override_css = document.getElementById("override_css"); -const update = () => { +override_css.onkeydown = (event) => { + if (event.keyCode == 9) { + + // Hacky workaround here that doesn't work right, will just prevent default for now. + // event.target.setRangeText("\t", this.selectionStart, this.selectionEnd, "end"); + return false; + } +} + +override_css.addEventListener("input", (event) => { + + theme.css = event.target.value; + backupData(); + update(true); +}); + +const update = (force = false) => { + + if (theme.colorScheme != "default") { + + document.getElementByTagName("body")[0].classList.add(theme.colorScheme); + } + + if (theme.css != "" || force) { + + const cssOverride = document.createElement("style"); + cssOverride.setAttribute("id", "styleOverride"); + cssOverride.innerHTML = theme.css.replaceAll("<", "<").replaceAll(">", ">"); + if (document.getElementById("styleOverride")) document.getElementById("styleOverride").remove(); + document.getElementsByTagName("head")[0].appendChild(cssOverride); + + if (!force) override_css.value = theme.css; + } } + +update(); -- 2.54.0