File size: 1,422 Bytes
df8f829
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f98b94e
 
df8f829
 
 
 
 
 
 
 
 
f98b94e
 
 
 
 
 
 
 
 
df8f829
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
(() => {
  "use strict";

  const storageKey = "gene-embeddings-theme";
  const root = document.documentElement;
  const button = document.getElementById("theme-toggle");

  if (!button) {
    return;
  }

  function readSavedTheme() {
    try {
      return window.localStorage.getItem(storageKey);
    } catch {
      return null;
    }
  }

  function saveTheme(theme) {
    try {
      window.localStorage.setItem(storageKey, theme);
    } catch {
      // The toggle still works when browser storage is unavailable.
    }
  }

  function applyTheme(theme) {
    const night = theme === "night";

    root.dataset.theme = night ? "night" : "day";

    button.textContent = night
      ? "🌙"
      : "☀️";

    button.setAttribute(
      "aria-pressed",
      String(night),
    );

    button.setAttribute(
      "aria-label",
      night
        ? "Current theme: dark. Switch to light theme"
        : "Current theme: light. Switch to dark theme",
    );

    button.setAttribute(
      "title",
      night
        ? "Switch to light theme"
        : "Switch to dark theme",
    );
  }

  const savedTheme = readSavedTheme();

  applyTheme(
    savedTheme === "night"
      ? "night"
      : "day",
  );

  button.addEventListener("click", () => {
    const nextTheme =
      root.dataset.theme === "night"
        ? "day"
        : "night";

    applyTheme(nextTheme);
    saveTheme(nextTheme);
  });
})();