11import * as createHash from "murmurhash-js/murmurhash3_gc" ;
22import IS_NODE_ENV from "../common/nodeJS/IS_NODE_ENV" ;
33import isUnitlessNumber from "../common/react/isUnitlessNumber" ;
4- import isElectronEnv from "../common/electron/IS_ELECTRON_ENV " ;
4+ import { Theme } from "./getTheme " ;
55
66export const replace2Dashes = ( key : string ) => key . replace ( / [ A - Z ] / g, $1 => `-${ $1 . toLowerCase ( ) } ` ) ;
7- export const getStyleValue = ( key : string , value : string ) => ( ( typeof value === "number" && ! ( isUnitlessNumber as any ) [ key ] ) ? `${ value } px` : value ) ;
7+ export const getStyleValue = ( key : string , value : string ) => ( ( typeof value === "number" && ! isUnitlessNumber [ key ] ) ? `${ value } px` : value ) ;
88
99export interface CustomCSSProperties extends React . CSSProperties {
1010 "&:hover" ?: React . CSSProperties ;
@@ -34,15 +34,14 @@ export const extendsStyleKeys: any = {
3434 "&:disabled" : true
3535} ;
3636export interface StyleManagerConfig {
37- theme ?: ReactUWP . ThemeType ;
38- globalClassName ?: string ;
37+ theme ?: Theme ;
38+ prefixClassName ?: string ;
3939 styleDidUpdate ?: ( ) => void ;
4040}
4141
42- let StyleManager : new ( config : StyleManagerConfig ) => ReactUWP . StyleManager ;
43- StyleManager = class {
44- globalClassName : string ;
45- theme : ReactUWP . ThemeType ;
42+ export class StyleManager {
43+ prefixClassName : string ;
44+ theme : Theme ;
4645 themeId : number = 0 ;
4746 styleElement : HTMLStyleElement = null ;
4847 sheets : {
@@ -55,14 +54,14 @@ StyleManager = class {
5554 } = { } ;
5655
5756 constructor ( config : StyleManagerConfig ) {
58- const { globalClassName , theme, styleDidUpdate } = config ;
57+ const { prefixClassName , theme, styleDidUpdate } = config ;
5958 this . styleDidUpdate = styleDidUpdate || ( ( ) => { } ) ;
60- this . globalClassName = globalClassName ? `${ globalClassName } -` : "" ;
59+ this . prefixClassName = prefixClassName ? `${ prefixClassName } -` : "" ;
6160 this . setupTheme ( theme ) ;
6261 this . setupStyleElement ( ) ;
6362 }
6463
65- setupTheme = ( theme ?: ReactUWP . ThemeType ) : void => {
64+ setupTheme = ( theme ?: Theme ) : void => {
6665 this . theme = theme ;
6766 this . themeId = createHash ( [ theme . accent , theme . themeName , theme . useFluentDesign ] . join ( ", " ) ) ;
6867 }
@@ -95,7 +94,7 @@ StyleManager = class {
9594 const id = createHash ( `${ this . themeId } : ${ JSON . stringify ( style ) } ` ) ;
9695 if ( this . sheets [ id ] ) return this . sheets [ id ] ;
9796
98- const classNameWithHash = `${ this . globalClassName } ${ className } -${ id } ` ;
97+ const classNameWithHash = `${ this . prefixClassName } ${ className } -${ id } ` ;
9998 const styleKeys = Object . keys ( style ) ;
10099 let CSSText = "" ;
101100 let contentCSSText = "" ;
@@ -147,7 +146,7 @@ StyleManager = class {
147146 setStyleToManager ( config ?: {
148147 style ?: CustomCSSProperties ;
149148 className ?: string ;
150- } , callback ?: ( theme ?: ReactUWP . ThemeType ) => StyleClasses ) : StyleClasses {
149+ } , callback ?: ( theme ?: Theme ) => StyleClasses ) : StyleClasses {
151150 let newStyles : StyleClasses = { } ;
152151 let { style, className } = config || { } as StyleClasses ;
153152 if ( callback ) style = callback ( this . theme ) as CustomCSSProperties ;
@@ -166,7 +165,7 @@ StyleManager = class {
166165 setStylesToManager ( config ?: {
167166 styles : { [ key : string ] : StyleClasses | CustomCSSProperties } ;
168167 className ?: string ;
169- } , callback ?: ( theme ?: ReactUWP . ThemeType ) => { [ key : string ] : StyleClasses } ) : { [ key : string ] : StyleClasses } {
168+ } , callback ?: ( theme ?: Theme ) => { [ key : string ] : StyleClasses } ) : { [ key : string ] : StyleClasses } {
170169 const newStyles : {
171170 [ key : string ] : {
172171 className ?: string ;
@@ -220,6 +219,6 @@ StyleManager = class {
220219 this . styleDidUpdate ( ) ;
221220 }
222221 }
223- } as any ;
222+ } ;
224223
225224export default StyleManager ;
0 commit comments