1- $ ( document ) . ready ( function ( ) {
2- const lightStyles = document . querySelectorAll ( 'link[rel=stylesheet][media*=prefers-color-scheme][media*=light]' ) ;
3- const darkStyles = document . querySelectorAll ( 'link[rel=stylesheet][media*=prefers-color-scheme][media*=dark]' ) ;
4- const darkSdhemeMedia = matchMedia ( '(prefers-color-scheme: dark)' ) ;
5- const switcherRadios = document . getElementsByClassName ( 'switcher__radio' ) ;
6-
7- function initializeSwitcher ( ) {
8- const savedScheme = getSavedScheme ( ) ;
9-
10- if ( savedScheme !== null ) {
11- const currentRadio = document . querySelector ( `.switcher__radio[value=${ savedScheme } ]` ) ;
1+ var lightStyles ;
2+ var darkStyles ;
3+ var darkSdhemeMedia ;
4+ var switcherRadios ;
5+
6+ var initializeSwitcher = function initializeSwitcher ( ) {
7+ lightStyles = document . querySelectorAll ( 'link[rel=stylesheet][media*=prefers-color-scheme][media*=light]' ) ;
8+ darkStyles = document . querySelectorAll ( 'link[rel=stylesheet][media*=prefers-color-scheme][media*=dark]' ) ;
9+ darkSdhemeMedia = matchMedia ( '(prefers-color-scheme: dark)' ) ;
10+ switcherRadios = document . getElementsByClassName ( 'switcher__radio' ) ;
11+
12+ let savedScheme = getSavedScheme ( ) ;
13+
14+ if ( savedScheme !== null ) {
15+ let currentRadio = document . querySelector ( `.switcher__radio[value=${ savedScheme } ]` ) ;
16+ if ( currentRadio !== null ) {
1217 currentRadio . checked = true ;
1318 }
19+ }
1420
15- [ ...switcherRadios ] . forEach ( ( radio ) => {
16- radio . addEventListener ( 'change' , ( event ) => {
17- setScheme ( event . target . value ) ;
18- } ) ;
21+ [ ...switcherRadios ] . forEach ( ( radio ) => {
22+ radio . addEventListener ( 'change' , ( event ) => {
23+ setScheme ( event . target . value ) ;
1924 } ) ;
20- }
25+ } ) ;
26+ }
2127
22- function initializeScheme ( ) {
23- const savedScheme = getSavedScheme ( ) ;
24- const systemScheme = getSystemScheme ( ) ;
28+ var initializeScheme = function initializeScheme ( ) {
29+ let savedScheme = getSavedScheme ( ) ;
30+ let systemScheme = getSystemScheme ( ) ;
2531
26- if ( savedScheme == null ) return ;
32+ if ( savedScheme == null ) return ;
2733
28- if ( savedScheme !== systemScheme ) {
29- setScheme ( savedScheme ) ;
30- }
34+ if ( savedScheme !== systemScheme ) {
35+ setScheme ( savedScheme ) ;
3136 }
37+ }
3238
33- function setScheme ( scheme ) {
34- switchMediaScheme ( scheme ) ;
39+ function setScheme ( scheme ) {
40+ switchMediaScheme ( scheme ) ;
3541
36- if ( scheme === 'auto' ) {
37- clearScheme ( ) ;
38- } else {
39- saveScheme ( scheme ) ;
40- }
42+ if ( scheme === 'auto' ) {
43+ clearScheme ( ) ;
44+ } else {
45+ saveScheme ( scheme ) ;
46+ }
47+ }
48+
49+ function switchMediaScheme ( scheme ) {
50+ let lightMedia ;
51+ let darkMedia ;
52+
53+ if ( scheme === 'auto' ) {
54+ lightMedia = '(prefers-color-scheme: light)' ;
55+ darkMedia = '(prefers-color-scheme: dark)' ;
56+ } else {
57+ lightMedia = ( scheme === 'light' ) ? 'all' : 'bot all' ;
58+ darkMedia = ( scheme === 'dark' ) ? 'all' : 'bot all' ;
4159 }
4260
43- function switchMediaScheme ( scheme ) {
44- let lightMedia ;
45- let darkMedia ;
46-
47- if ( scheme === 'auto' ) {
48- lightMedia = '(prefers-color-scheme: light)' ;
49- darkMedia = '(prefers-color-scheme: dark)' ;
50- } else {
51- lightMedia = ( scheme === 'light' ) ? 'all' : 'bot all' ;
52- darkMedia = ( scheme === 'dark' ) ? 'all' : 'bot all' ;
53- }
61+ [ ...lightStyles ] . forEach ( ( link ) => {
62+ link . media = lightMedia ;
63+ } ) ;
5464
55- [ ...lightStyles ] . forEach ( ( link ) => {
56- link . media = lightMedia ;
57- } ) ;
65+ [ ...darkStyles ] . forEach ( ( link ) => {
66+ link . media = darkMedia ;
67+ } ) ;
68+ }
5869
59- [ ...darkStyles ] . forEach ( ( link ) => {
60- link . media = darkMedia ;
61- } ) ;
62- }
70+ function getSystemScheme ( ) {
71+ let darkScheme = darkSdhemeMedia . matches ;
6372
64- function getSystemScheme ( ) {
65- const darkScheme = darkSdhemeMedia . matches ;
73+ return darkScheme ? 'dark' : 'light' ;
74+ }
6675
67- return darkScheme ? 'dark' : 'light' ;
68- }
76+ function getSavedScheme ( ) {
77+ return localStorage . getItem ( 'color-scheme' ) ;
78+ }
6979
70- function getSavedScheme ( ) {
71- return localStorage . getItem ( 'color-scheme' ) ;
72- }
80+ function saveScheme ( scheme ) {
81+ localStorage . setItem ( 'color-scheme' , scheme ) ;
82+ }
7383
74- function saveScheme ( scheme ) {
75- localStorage . setItem ( 'color-scheme' , scheme ) ;
76- }
84+ function clearScheme ( ) {
85+ localStorage . removeItem ( 'color-scheme' ) ;
86+ }
7787
78- function clearScheme ( ) {
79- localStorage . removeItem ( 'color-scheme' ) ;
80- }
88+ $ ( window ) . on ( 'popstate' , function ( ) {
89+ initializeSwitcher ( ) ;
90+ initializeScheme ( ) ;
91+ } ) ;
8192
93+ $ ( document ) . ready ( function ( ) {
8294 initializeSwitcher ( ) ;
8395 initializeScheme ( ) ;
8496} ) ;
0 commit comments