GameNumber: "number",
BoardLabel: "string",
Lang: "string",
+ Theme: "string",
PlayerName: "string",
CheckFirstWord: "number",
FreezePlayedTiles: "number",
}
);
}
-
+
+ function onChangeTheme() {
+ console.log(document.getElementById("theme").value);
+ setSetting("Theme", document.getElementById("theme").value);
+ handleTheme();
+ }
+
function onChangeBoardLabel() {
const label = document.getElementById("board-label").value;
document.getElementById("next-help-msg").onclick = nextHelpMessage;
document.getElementById("disable-spell-checker").onclick = toggleSpellChecker;
document.getElementById("score-words").onclick = scoreWords;
+ document.getElementById("theme").onchange = onChangeTheme;
window.addEventListener("keydown", function (e) {
if (e.key === "Escape") {
document.querySelector(".modal").classList.remove("show-modal");
document.getElementById("board-label").value = getSetting("BoardLabel");
}
+ document.getElementById("theme").value = getSetting("Theme", "");
+
startGame(getSetting("GameNumber"));
}
content.style.zoom = candidateScale;
}
+ // thanks https://mybyways.com/blog/forcing-dark-mode-with-prefs-color-scheme-media-query
+ function setPreferredColorScheme(mode) {
+ console.log("SETPREFERREDCOLORSCHEME", mode);
+ const rules = document.styleSheets[0].rules;
+ const len = rules.length;
+ for (var i = len - 1; i >= 0; i--) {
+ const rule = rules[i].media;
+ if (rule.mediaText.includes("prefers-color-scheme")) {
+ switch (mode) {
+ case "light":
+ rule.appendMedium("original-prefers-color-scheme");
+ if (rule.mediaText.includes("light")) {
+ rule.deleteMedium("(prefers-color-scheme: light)");
+ }
+ if (rule.mediaText.includes("dark")) {
+ rule.deleteMedium("(prefers-color-scheme: dark)");
+ }
+ break;
+ case "dark":
+ rule.appendMedium("(prefers-color-scheme: light)");
+ rule.appendMedium("(prefers-color-scheme: dark)");
+ if (rule.mediaText.includes("original")) {
+ rule.deleteMedium("original-prefers-color-scheme");
+ }
+ break;
+ default:
+ rule.appendMedium("(prefers-color-scheme: dark)");
+ if (rule.mediaText.includes("light")) {
+ rule.deleteMedium("(prefers-color-scheme: light)");
+ }
+ if (rule.mediaText.includes("original")) {
+ rule.deleteMedium("original-prefers-color-scheme");
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ function handleTheme() {
+ setPreferredColorScheme(getSetting("Theme", ""));
+ }
+
+ function initTheme() {
+ window.matchMedia('(prefers-color-scheme: dark)').addListener(handleTheme);
+ handleTheme();
+ }
+
function load() {
+ initTheme();
initLang();
loadBagSVG();
}