Branch

top.ts

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
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
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
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e 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: string) => {
    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 (mode === 'light') {
      element.innerHTML = `<i class="bi bi-brightness-high"></i>`
    }
    if (mode === 'dark') {
      element.innerHTML = `<i class="bi bi-moon"></i>`
    }
    if (mode === 'auto') {
      element.innerHTML = `<i class="bi bi-yin-yang"></i>`
    }
    const link: any = document.getElementById("prism-theme")
    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"
    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'))
  }
}())