Files snapshot from wiki-and-tasks

./frontend/top.js

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
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
5dd869 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
ec91a0 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
738e52 Tucker McKnight
79d4a6 Tucker McKnight
073785 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
ec91a0 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
ec91a0 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
4ccb6e Tucker McKnight
c768c6 Tucker McKnight
c768c6 Tucker McKnight
c768c6 Tucker McKnight
c768c6 Tucker McKnight
c768c6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
(function() {
  const htmlElem = document.querySelector('html')
  window['setMode'] = (mode) => {
    localStorage.setItem('theme', mode)
    if (mode === 'dark') {
      htmlElem.setAttribute('data-bs-theme', mode)
    }
    else if (mode === 'light') {
      htmlElem.setAttribute('data-bs-theme', mode)
    }
    else if (mode === 'auto') {

      const preferred = matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
      htmlElem.setAttribute('data-bs-theme', preferred)
    }
    window['currentTheme'] = mode
  };

  window['currentTheme'] = localStorage.getItem("theme") || "auto"

  window['setMode'](window['currentTheme'])

  window['setCheckbox'] = (mode, element) => {
    if (element === null) { return }
    if (mode === 'light') {
      element.innerHTML = `<span>&#x1F31E;</span>`
    }
    if (mode === 'dark') {
      element.innerHTML = `<span>&#x1F319;</span>`
    }
    if (mode === 'auto') {
      element.innerHTML = `<span>&#x1F5A5;&#xFE0F;</span>`
    }
    const preferred = matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
    const stylesheet = window['currentTheme'] === 'dark' || (window['currentTheme'] === 'auto' && preferred === 'dark') ? "prism_dark.css" : "prism.css"

    const link = document.getElementById("prism-theme")
    if (link) {
      link.href = link.href.split("/").slice(0, -1).concat(stylesheet).join("/")
    }
  }
  window['toggleDarkMode'] = (button) => {
    const clickedOption = button.dataset.themePref
    window['setMode'](clickedOption)
    window['setCheckbox'](clickedOption, document.getElementById('dark-mode-switch'))
  }
}())