@@ -19,10 +19,12 @@ var URL = global.URL || require("url").URL
1919 , vars = opts && opts . var ? { } : null
2020 , varFn = vars && function ( _ , n ) { return vars [ n ] || _ }
2121 return Array . prototype . map . call ( rules , rule => {
22- if ( vars && rule . selectorText === ":root" ) {
23- if ( rule . style ) for ( var i = 0 ; i < rule . style . length ; i ++ ) {
24- var n = rule . style [ i ]
25- if ( n . slice ( 0 , 2 ) === "--" ) vars [ n ] = rule . style [ n ] . replace ( varRe , varFn )
22+ var sel = rule . selectorText
23+ , style = rule . style
24+ if ( vars && sel === ":root" ) {
25+ if ( style ) for ( var i = 0 ; i < style . length ; i ++ ) {
26+ var n = style [ i ]
27+ if ( n . slice ( 0 , 2 ) === "--" ) vars [ n ] = style [ n ] . replace ( varRe , varFn )
2628 }
2729 return ""
2830 }
@@ -40,16 +42,16 @@ var URL = global.URL || require("url").URL
4042 }
4143
4244 // Handle plugins on style rules
43- if ( rule . style && rule . style . _plugins ) {
44- for ( var style = rule . style , j = 0 ; j < style . _plugins . length ; j ++ ) {
45+ if ( style && style . _plugins ) {
46+ for ( var j = 0 ; j < style . _plugins . length ; j ++ ) {
4547 var idx = style . _plugins [ j ] [ 0 ]
4648 , pn = style . _plugins [ j ] [ 1 ]
4749 , k = style [ idx ]
4850 style [ k ] = clear ( plugins [ pn ] ( root , sheet . baseURI , style [ k ] ) )
4951 }
5052 }
5153
52- var text = clear ( rule . cssText )
54+ var text = clear ( opts && style && style . __ ? sel + "{" + cssText ( style , opts . prefix ) + "}" : rule . cssText )
5355 if ( ! text || / \{ \s * \} $ / . test ( text ) ) return ""
5456 if ( vars ) text = text . replace ( varRe , ( _ , v , fb ) => vars [ v ] || fb || _ )
5557 if ( opts && opts . color ) text = text . replace ( colorRe , colorFn )
@@ -114,17 +116,18 @@ var URL = global.URL || require("url").URL
114116, toRgba = ( rgbHex , alpha ) => ( "rgba(" + rgbHex . replace ( / ../ g, x => parseInt ( x , 16 ) + "," ) + alpha + ")" ) . replace ( "0." , "." )
115117, colorRe = / \b ( r g b | h s l ) a ? \s * \( \s * ( \d + ) (?: d e g ) ? [ \s , ] + ( \d + ) [ \s , % ] + ( \d + ) % ? (?: [ \s , \/ ] + ( 0 ? \. ? \d + ) ( % ? ) ) ? \s * \) / g
116118, colorFn = ( _ , name , a , b , c , d , p ) => ( _ = toRgb [ name ] ( a , b , c ) , ( p ? d /= 100 : d ) < 1 ? toRgba ( _ , d ) : "#" + _ . replace ( / ( \w ) \1( \w ) \2( \w ) \3/ , "$1$2$3" ) )
119+ , cssText = ( style , prefix ) => {
120+ for ( var out = [ ] , name , value , i = style . length ; i -- ; ) {
121+ name = style [ i ]
122+ value = style . __ [ i ] || style [ name ]
123+ out [ i ] = name + ":" + value
124+ if ( prefix && prefix [ name ] ) out [ i ] = prefix [ name ] . join ( out [ i ] + ";" ) + out [ i ] + ";" + out [ i ]
125+ }
126+ return out . join ( ";" )
127+ }
117128, styleHandler = {
118129 get ( style , prop ) {
119- if ( prop === "cssText" ) {
120- for ( var out = [ ] , name , value , i = style . length ; i -- ; ) {
121- name = style [ i ]
122- value = style . __ [ i ] || style [ name ]
123- out [ i ] = name + ":" + value
124- }
125- return out . join ( ";" )
126- }
127- return style [ prop ] || ""
130+ return prop === "cssText" ? cssText ( style ) : style [ prop ] || ""
128131 } ,
129132 set ( style , prop , val ) {
130133 if ( prop === "cssText" ) {
0 commit comments