@@ -322,12 +322,20 @@ function playground_text(playground, hidden = true) {
322
322
var theme ;
323
323
try { theme = localStorage . getItem ( 'mdbook-theme' ) ; } catch ( e ) { }
324
324
if ( theme === null || theme === undefined || ! themeIds . includes ( theme ) ) {
325
- return default_theme ;
325
+ if ( typeof default_dark_theme === 'undefined' ) {
326
+ // A customized index.hbs might not define this, so fall back to
327
+ // old behavior of determining the default on page load.
328
+ return default_theme ;
329
+ }
330
+ return window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches
331
+ ? default_dark_theme
332
+ : default_light_theme ;
326
333
} else {
327
334
return theme ;
328
335
}
329
336
}
330
337
338
+ var previousTheme = default_theme ;
331
339
function set_theme ( theme , store = true ) {
332
340
let ace_theme ;
333
341
@@ -359,21 +367,23 @@ function playground_text(playground, hidden = true) {
359
367
} ) ;
360
368
}
361
369
362
- var previousTheme = get_theme ( ) ;
363
-
364
370
if ( store ) {
365
371
try { localStorage . setItem ( 'mdbook-theme' , theme ) ; } catch ( e ) { }
366
372
}
367
373
368
374
html . classList . remove ( previousTheme ) ;
369
375
html . classList . add ( theme ) ;
376
+ previousTheme = theme ;
370
377
updateThemeSelected ( ) ;
371
378
}
372
379
373
- // Set theme
374
- var theme = get_theme ( ) ;
380
+ const query = window . matchMedia ( "(prefers-color-scheme: dark)" ) ;
381
+ query . onchange = function ( event ) {
382
+ set_theme ( get_theme ( ) , false ) ;
383
+ } ;
375
384
376
- set_theme ( theme , false ) ;
385
+ // Set theme.
386
+ set_theme ( get_theme ( ) , false ) ;
377
387
378
388
themeToggleButton . addEventListener ( 'click' , function ( ) {
379
389
if ( themePopup . style . display === 'block' ) {
0 commit comments