| |
| |
| |
| |
| |
| |
|
|
| (function () { |
| |
| let autoListener = null; |
| const mediaQuery = typeof window.matchMedia === 'function' |
| ? window.matchMedia('(prefers-color-scheme: dark)') |
| : null |
| let currentPreferredThemeMode = document.documentElement.getAttribute('data-theme-mode') || 'light'; |
|
|
| |
| |
| |
| |
| |
| |
| function resolveThemeMode(preferredThemeMode) { |
| if (preferredThemeMode === 'dark') { |
| return 'dark'; |
| } |
|
|
| if (preferredThemeMode === 'auto') { |
| return mediaQuery && mediaQuery.matches ? 'dark' : 'light'; |
| } |
|
|
| return 'light'; |
| } |
|
|
| |
| |
| |
| |
| |
| function removeAutoListener() { |
| if (!mediaQuery || !autoListener) { |
| return; |
| } |
|
|
| if (typeof mediaQuery.removeEventListener === 'function') { |
| mediaQuery.removeEventListener('change', autoListener); |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| function addAutoListener() { |
| removeAutoListener(); |
|
|
| if (!mediaQuery || currentPreferredThemeMode !== 'auto') { |
| return; |
| } |
|
|
| autoListener = function () { |
| emitThemeModeChange(); |
| }; |
|
|
| if (typeof mediaQuery.addEventListener === 'function') { |
| mediaQuery.addEventListener('change', autoListener); |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| function emitThemeModeChange() { |
| if (typeof piwik.postEvent === 'function') { |
| piwik.postEvent('themeModeChange'); |
| return; |
| } |
|
|
| window.dispatchEvent(new CustomEvent('themeModeChange')); |
| } |
|
|
| |
| |
| |
| |
| |
| piwik.getThemeMode = function () { |
| return resolveThemeMode(currentPreferredThemeMode); |
| }; |
|
|
| |
| |
| |
| |
| |
| |
| piwik.setThemeMode = function (preferredThemeMode) { |
| document.documentElement.setAttribute('data-theme-mode', preferredThemeMode); |
| currentPreferredThemeMode = preferredThemeMode; |
| addAutoListener() |
| emitThemeModeChange(); |
| }; |
| addAutoListener(); |
| }()); |
|
|