Skip to content

Commit de5dbc7

Browse files
committed
Theme: Toggle theme without passing boolean value
Adds new toggleTheme function, along with aliases for existing mf and useNewTheme functions Add konami code to toggle
1 parent 49e6ed5 commit de5dbc7

File tree

1 file changed

+46
-27
lines changed

1 file changed

+46
-27
lines changed

layouts/_default/baseof.html

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,9 @@
2424

2525

2626
<script>
27-
28-
function useNewTheme(isNewTheme) {
29-
localStorage.setItem("useNewTheme", `${isNewTheme}`);
3027

28+
const setTheme = (isNewTheme) => {
29+
localStorage.setItem("useNewTheme", `${isNewTheme}`);
3130
// swap out v1 and v2 css style
3231
const v1cssIds = [
3332
"cssFA1",
@@ -39,35 +38,35 @@
3938
"css3",
4039
"css4",
4140
"css5",
42-
"css6"
41+
"css6",
4342
];
4443

4544
v1cssIds.forEach((cssId) => {
46-
const element = document.getElementById(cssId);
45+
const element = document.getElementById(cssId);
4746
if (element !== null) {
4847
element.disabled = isNewTheme;
4948
}
5049
});
5150

5251
const v2cssIds = ["css7"];
5352
v2cssIds.forEach((cssId) => {
54-
const element = document.getElementById(cssId);
53+
const element = document.getElementById(cssId);
5554
if (element !== null) {
5655
element.disabled = !isNewTheme;
5756
}
5857
});
5958

6059
// swap out v1 and v2 elements
61-
const v1ElementIds = ["sidebar", "footer", "toc"]
60+
const v1ElementIds = ["sidebar", "footer", "toc"];
6261

6362
v1ElementIds.forEach((elementId) => {
64-
const element = document.getElementById(elementId);
63+
const element = document.getElementById(elementId);
6564
if (element !== null) {
6665
element.style.display = isNewTheme ? "none" : "";
6766
}
6867

6968
const trustarc = document.getElementById("teconsent-v1");
70-
if(trustarc) {
69+
if (trustarc) {
7170
trustarc.id = isNewTheme ? "teconsent-v1" : "teconsent";
7271
}
7372
});
@@ -78,31 +77,51 @@
7877

7978
document.querySelectorAll(".highlight").forEach((codeblock) => {
8079
codeblock.style.display = isNewTheme ? "none" : "";
81-
})
80+
});
8281

8382
const mfElements = ['[data-mf="true"]'];
8483
mfElements.forEach((elementId) => {
85-
document.querySelectorAll(elementId).forEach(
86-
(element) => {
87-
element.style.display = isNewTheme ? "" : "none";
88-
89-
const trustarc = document.getElementById("teconsent-v2");
90-
if(trustarc) {
91-
trustarc.id = isNewTheme ? "teconsent" : "teconsent-v2";
92-
}
93-
}
94-
);
84+
document.querySelectorAll(elementId).forEach((element) => {
85+
element.style.display = isNewTheme ? "" : "none";
86+
87+
const trustarc = document.getElementById("teconsent-v2");
88+
if (trustarc) {
89+
trustarc.id = isNewTheme ? "teconsent" : "teconsent-v2";
90+
}
91+
});
9592
});
9693

9794
document.getElementById("body").style.visibility = "visible";
95+
};
96+
97+
const toggleTheme = () => {
98+
setTheme(!(localStorage.getItem("useNewTheme") === "true"));
99+
};
100+
101+
// toggle theme aliases
102+
const mf = toggleTheme;
103+
const useNewTheme = toggleTheme;
104+
105+
document.addEventListener("DOMContentLoaded", () => {
106+
setTheme(localStorage.getItem("useNewTheme") === "true");
107+
});
108+
109+
function konami(callback) {
110+
let kkeys = [];
111+
// up,up,down,down,left,right,left,right,B,A
112+
const konami = "38,38,40,40,37,39,37,39,66,65";
113+
return (event) => {
114+
kkeys.push(event.keyCode);
115+
if (kkeys.toString().indexOf(konami) >= 0) {
116+
callback(event);
117+
kkeys = [];
118+
}
119+
};
98120
}
99-
100-
const mf = useNewTheme;
101-
102-
document.addEventListener("DOMContentLoaded", function () {
103-
useNewTheme(localStorage.getItem("useNewTheme") === "true");
104-
})
105-
121+
const handler = konami(() => {
122+
mf();
123+
});
124+
window.addEventListener("keydown", handler);
106125

107126
</script>
108127

0 commit comments

Comments
 (0)