File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { BreakpointObserver } from '@angular/cdk/layout' ;
2+ import { inject , Injectable } from '@angular/core' ;
3+ import { map , Observable } from 'rxjs' ;
4+
5+ import { ColorScheme } from './color-scheme' ;
6+
7+ /**
8+ * Service for observing the preferred color scheme
9+ * specified by the user's operating system.
10+ */
11+ @Injectable ( { providedIn : 'root' } )
12+ export class SystemColorSchemeObserver {
13+ #mediaQueryObserver = inject ( BreakpointObserver ) ;
14+
15+ observe ( ) : Observable < ColorScheme > {
16+ return this . #mediaQueryObserver
17+ . observe ( '(prefers-color-scheme: dark)' )
18+ . pipe ( map ( ( e ) => ( e . matches ? ColorScheme . Dark : ColorScheme . Light ) ) ) ;
19+ }
20+
21+ snapshot ( ) : ColorScheme {
22+ return this . #mediaQueryObserver. isMatched ( '(prefers-color-scheme: dark)' )
23+ ? ColorScheme . Dark
24+ : ColorScheme . Light ;
25+ }
26+ }
Original file line number Diff line number Diff line change 1+ export enum ColorScheme {
2+ Light = 'Light' ,
3+ Dark = 'Dark' ,
4+ }
Original file line number Diff line number Diff line change 1+ export * from './color-scheme' ;
2+ export * from './color-scheme-observer' ;
13export * from './named-breakpoint-observer' ;
You can’t perform that action at this time.
0 commit comments