mediawiki-skins-Citizen/resources/skins.citizen.scripts.theme-switcher/theme-switcher.js

57 lines
1.3 KiB
JavaScript
Raw Normal View History

/*
* Citizen - Theme Switcher JS
* https://starcitizen.tools
*/
2021-01-09 22:12:17 +00:00
( function () {
var isGlobalAutoSet,
isUserPreferenceAuto,
2021-01-09 22:14:48 +00:00
enableAutoSwitcher,
2021-01-09 22:12:17 +00:00
switchColorScheme,
useDarkTheme,
prefersColorSchemeDarkQuery;
if ( typeof window.mw === 'undefined' ) {
return;
}
isGlobalAutoSet = window.mw.config.get( 'wgCitizenThemeDefault' ) === 'auto' ||
window.mw.config.get( 'wgCitizenThemeDefault' ) === null;
2021-01-09 22:12:17 +00:00
isUserPreferenceAuto = window.mw.user.options.get( 'CitizenThemeUser' ) === 'auto';
2021-01-09 22:12:17 +00:00
2021-01-09 22:14:48 +00:00
enableAutoSwitcher = isGlobalAutoSet || isUserPreferenceAuto;
2021-01-09 22:12:17 +00:00
2021-01-09 22:14:48 +00:00
if ( !enableAutoSwitcher ) {
2021-01-09 22:12:17 +00:00
return;
}
switchColorScheme = function ( useDark ) {
var dark;
if ( useDark ) {
document.documentElement.classList.add( 'skin-citizen-dark' );
document.documentElement.classList.remove( 'skin-citizen-light' );
dark = true;
} else {
document.documentElement.classList.add( 'skin-citizen-light' );
document.documentElement.classList.remove( 'skin-citizen-dark' );
dark = false;
}
try {
localStorage.setItem( 'skin-citizen-dark', dark );
} catch ( e ) {}
};
try {
useDarkTheme = localStorage.getItem( 'skin-citizen-dark' );
} catch ( e ) {}
prefersColorSchemeDarkQuery = window.matchMedia( '(prefers-color-scheme: dark)' );
if ( useDarkTheme || prefersColorSchemeDarkQuery.matches ) {
switchColorScheme( true );
}
}() );