@@ -7,9 +7,10 @@ export type SchemeType = 'default' | 'light' | 'dark';
7
7
export type SchemeChangeListener = ( schemeType ?: 'light' | 'dark' ) => void ;
8
8
9
9
class Scheme {
10
- currentScheme : SchemeType = 'default' ;
11
- schemes : Schemes = { light : { } , dark : { } } ;
12
- changeListeners : SchemeChangeListener [ ] = [ ] ;
10
+ private currentScheme : SchemeType = 'default' ;
11
+ private schemes : Schemes = { light : { } , dark : { } } ;
12
+ private schemesJS : Schemes = { light : { } , dark : { } } ;
13
+ private changeListeners : SchemeChangeListener [ ] = [ ] ;
13
14
private usePlatformColors = false ;
14
15
15
16
constructor ( ) {
@@ -63,8 +64,9 @@ class Scheme {
63
64
throw new Error ( `There is a mismatch in scheme keys: ${ missingKeys . join ( ', ' ) } ` ) ;
64
65
}
65
66
66
- const platformColorsSchemes : Schemes = cloneDeep ( schemes ) ;
67
+ merge ( this . schemesJS , schemes ) ;
67
68
69
+ const platformColorsSchemes : Schemes = cloneDeep ( schemes ) ;
68
70
forEach ( schemes , ( scheme , schemeKey ) => {
69
71
forEach ( scheme , ( colorValue , colorKey ) => {
70
72
// @ts -expect-error
@@ -84,15 +86,18 @@ class Scheme {
84
86
} ) ;
85
87
} ) ;
86
88
} ) ;
87
-
88
89
merge ( this . schemes , platformColorsSchemes ) ;
89
90
}
90
91
91
92
/**
92
93
* Retrieve scheme by current scheme type
93
94
*/
94
- getScheme ( ) {
95
- return this . schemes [ this . getSchemeType ( ) ] ;
95
+ getScheme ( useJS = false ) {
96
+ if ( useJS ) {
97
+ return this . schemesJS [ this . getSchemeType ( ) ] ;
98
+ } else {
99
+ return this . schemes [ this . getSchemeType ( ) ] ;
100
+ }
96
101
}
97
102
98
103
/**
0 commit comments