@@ -110,6 +110,19 @@ class CSSSource {
110
110
this . parse ( ) ;
111
111
}
112
112
113
+ public static fromDetect ( cssOrAst : any , keyframes : KeyframesMap , fileName ?: string ) : CSSSource {
114
+ if ( typeof cssOrAst === "string" ) {
115
+ // raw-loader
116
+ return CSSSource . fromSource ( cssOrAst , keyframes , fileName ) ;
117
+ } else if ( typeof cssOrAst === "object" && cssOrAst . type === "stylesheet" && cssOrAst . stylesheet && cssOrAst . stylesheet . rules ) {
118
+ // css-loader
119
+ return CSSSource . fromAST ( cssOrAst , keyframes , fileName ) ;
120
+ } else {
121
+ // css2json-loader
122
+ return CSSSource . fromSource ( cssOrAst . toString ( ) , keyframes , fileName ) ;
123
+ }
124
+ }
125
+
113
126
public static fromURI ( uri : string , keyframes : KeyframesMap ) : CSSSource {
114
127
// webpack modules require all file paths to be relative to /app folder
115
128
const appRelativeUri = CSSSource . pathRelativeToApp ( uri ) ;
@@ -119,16 +132,7 @@ class CSSSource {
119
132
try {
120
133
const cssOrAst = global . loadModule ( resolvedModuleName , true ) ;
121
134
if ( cssOrAst ) {
122
- if ( typeof cssOrAst === "string" ) {
123
- // raw-loader
124
- return CSSSource . fromSource ( cssOrAst , keyframes , resolvedModuleName ) ;
125
- } else if ( typeof cssOrAst === "object" && cssOrAst . type === "stylesheet" && cssOrAst . stylesheet && cssOrAst . stylesheet . rules ) {
126
- // css-loader
127
- return CSSSource . fromAST ( cssOrAst , keyframes , resolvedModuleName ) ;
128
- } else {
129
- // css2json-loader
130
- return CSSSource . fromSource ( cssOrAst . toString ( ) , keyframes , resolvedModuleName ) ;
131
- }
135
+ return CSSSource . fromDetect ( cssOrAst , keyframes , resolvedModuleName ) ;
132
136
}
133
137
} catch ( e ) {
134
138
traceWrite ( `Could not load CSS from ${ uri } : ${ e } ` , traceCategories . Error , traceMessageType . error ) ;
@@ -325,7 +329,7 @@ export function removeTaggedAdditionalCSS(tag: String | Number): Boolean {
325
329
}
326
330
327
331
export function addTaggedAdditionalCSS ( cssText : string , tag ?: string | Number ) : Boolean {
328
- const parsed : RuleSet [ ] = CSSSource . fromSource ( cssText , applicationKeyframes , undefined ) . selectors ;
332
+ const parsed : RuleSet [ ] = CSSSource . fromDetect ( cssText , applicationKeyframes , undefined ) . selectors ;
329
333
let changed = false ;
330
334
if ( parsed && parsed . length ) {
331
335
changed = true ;
0 commit comments