PLUS-WAVE commited on
Commit
b16cce5
·
verified ·
1 Parent(s): 631fd17

Fix dark theme detection

Browse files

Honor the Hugging Face __theme parameter and follow the browser color scheme for system mode.

src/demo/server_frontend/app.js CHANGED
@@ -24,35 +24,22 @@ let running = false;
24
  let toastTimer = null;
25
 
26
  const colorScheme = window.matchMedia("(prefers-color-scheme: dark)");
 
 
27
 
28
- function storedTheme() {
29
- try {
30
- return localStorage.getItem("infinisplat-theme");
31
- } catch {
32
- return null;
33
- }
34
- }
35
-
36
- function applyTheme(theme, persist = false) {
37
  document.documentElement.dataset.theme = theme;
38
  themeToggle.checked = theme === "dark";
39
- if (persist) {
40
- try {
41
- localStorage.setItem("infinisplat-theme", theme);
42
- } catch {
43
- // The selected theme still applies when storage is unavailable.
44
- }
45
- }
46
  }
47
 
48
  applyTheme(document.documentElement.dataset.theme || (colorScheme.matches ? "dark" : "light"));
49
 
50
  themeToggle.addEventListener("change", () => {
51
- applyTheme(themeToggle.checked ? "dark" : "light", true);
52
  });
53
 
54
  colorScheme.addEventListener("change", (event) => {
55
- if (!storedTheme()) applyTheme(event.matches ? "dark" : "light");
56
  });
57
 
58
  function resultValue(result) {
 
24
  let toastTimer = null;
25
 
26
  const colorScheme = window.matchMedia("(prefers-color-scheme: dark)");
27
+ const requestedTheme = new URLSearchParams(window.location.search).get("__theme");
28
+ const followsSystemTheme = requestedTheme !== "dark" && requestedTheme !== "light";
29
 
30
+ function applyTheme(theme) {
 
 
 
 
 
 
 
 
31
  document.documentElement.dataset.theme = theme;
32
  themeToggle.checked = theme === "dark";
 
 
 
 
 
 
 
33
  }
34
 
35
  applyTheme(document.documentElement.dataset.theme || (colorScheme.matches ? "dark" : "light"));
36
 
37
  themeToggle.addEventListener("change", () => {
38
+ applyTheme(themeToggle.checked ? "dark" : "light");
39
  });
40
 
41
  colorScheme.addEventListener("change", (event) => {
42
+ if (followsSystemTheme) applyTheme(event.matches ? "dark" : "light");
43
  });
44
 
45
  function resultValue(result) {
src/demo/server_frontend/index.html CHANGED
@@ -6,14 +6,12 @@
6
  <meta name="color-scheme" content="light dark">
7
  <title>InfiniSplat</title>
8
  <script>
9
- let savedTheme = null;
10
- try {
11
- savedTheme = localStorage.getItem("infinisplat-theme");
12
- } catch {
13
- savedTheme = null;
14
- }
15
  const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
16
- document.documentElement.dataset.theme = savedTheme || (prefersDark ? "dark" : "light");
 
 
 
17
  </script>
18
  <link rel="stylesheet" href="/infinisplat/assets/styles.css?v=4">
19
  </head>
@@ -87,6 +85,6 @@
87
  </main>
88
 
89
  <div class="toast" id="toast" role="status" aria-live="polite"></div>
90
- <script type="module" src="/infinisplat/assets/app.js?v=4"></script>
91
  </body>
92
  </html>
 
6
  <meta name="color-scheme" content="light dark">
7
  <title>InfiniSplat</title>
8
  <script>
9
+ const requestedTheme = new URLSearchParams(window.location.search).get("__theme");
 
 
 
 
 
10
  const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
11
+ document.documentElement.dataset.theme =
12
+ requestedTheme === "dark" || requestedTheme === "light"
13
+ ? requestedTheme
14
+ : (prefersDark ? "dark" : "light");
15
  </script>
16
  <link rel="stylesheet" href="/infinisplat/assets/styles.css?v=4">
17
  </head>
 
85
  </main>
86
 
87
  <div class="toast" id="toast" role="status" aria-live="polite"></div>
88
+ <script type="module" src="/infinisplat/assets/app.js?v=5"></script>
89
  </body>
90
  </html>