@@ -53,9 +53,10 @@ export default function addStylesClient (parentId, list, _isProduction, _options
53
53
isProduction = _isProduction
54
54
55
55
options = _options || { }
56
+ options . attrs = typeof options . attrs === "object" ? options . attrs : { }
56
57
57
58
var styles = listToStyles ( parentId , list )
58
- addStylesToDom ( styles )
59
+ addStylesToDom ( styles , options )
59
60
60
61
return function update ( newList ) {
61
62
var mayRemove = [ ]
@@ -67,7 +68,7 @@ export default function addStylesClient (parentId, list, _isProduction, _options
67
68
}
68
69
if ( newList ) {
69
70
styles = listToStyles ( parentId , newList )
70
- addStylesToDom ( styles )
71
+ addStylesToDom ( styles , options )
71
72
} else {
72
73
styles = [ ]
73
74
}
@@ -83,7 +84,7 @@ export default function addStylesClient (parentId, list, _isProduction, _options
83
84
}
84
85
}
85
86
86
- function addStylesToDom ( styles /* Array<StyleObject> */ ) {
87
+ function addStylesToDom ( styles /* Array<StyleObject> */ , options ) {
87
88
for ( var i = 0 ; i < styles . length ; i ++ ) {
88
89
var item = styles [ i ]
89
90
var domStyle = stylesInDom [ item . id ]
@@ -93,29 +94,37 @@ function addStylesToDom (styles /* Array<StyleObject> */) {
93
94
domStyle . parts [ j ] ( item . parts [ j ] )
94
95
}
95
96
for ( ; j < item . parts . length ; j ++ ) {
96
- domStyle . parts . push ( addStyle ( item . parts [ j ] ) )
97
+ domStyle . parts . push ( addStyle ( item . parts [ j ] , options ) )
97
98
}
98
99
if ( domStyle . parts . length > item . parts . length ) {
99
100
domStyle . parts . length = item . parts . length
100
101
}
101
102
} else {
102
103
var parts = [ ]
103
104
for ( var j = 0 ; j < item . parts . length ; j ++ ) {
104
- parts . push ( addStyle ( item . parts [ j ] ) )
105
+ parts . push ( addStyle ( item . parts [ j ] , options ) )
105
106
}
106
107
stylesInDom [ item . id ] = { id : item . id , refs : 1 , parts : parts }
107
108
}
108
109
}
109
110
}
110
111
111
- function createStyleElement ( ) {
112
+ function createStyleElement ( options ) {
112
113
var styleElement = document . createElement ( 'style' )
113
114
styleElement . type = 'text/css'
115
+ addAttrs ( styleElement , options . attrs ) ;
114
116
head . appendChild ( styleElement )
115
117
return styleElement
116
118
}
117
119
118
- function addStyle ( obj /* StyleObjectPart */ ) {
120
+ function addAttrs ( el , attrs ) {
121
+ Object . keys ( attrs ) . forEach ( function ( key ) {
122
+ el . setAttribute ( key , attrs [ key ] ) ;
123
+ } ) ;
124
+ }
125
+
126
+ function addStyle ( obj /* StyleObjectPart */ , options ) {
127
+
119
128
var update , remove
120
129
var styleElement = document . querySelector ( 'style[' + ssrIdKey + '~="' + obj . id + '"]' )
121
130
@@ -137,12 +146,12 @@ function addStyle (obj /* StyleObjectPart */) {
137
146
if ( isOldIE ) {
138
147
// use singleton mode for IE9.
139
148
var styleIndex = singletonCounter ++
140
- styleElement = singletonElement || ( singletonElement = createStyleElement ( ) )
149
+ styleElement = singletonElement || ( singletonElement = createStyleElement ( options ) )
141
150
update = applyToSingletonTag . bind ( null , styleElement , styleIndex , false )
142
151
remove = applyToSingletonTag . bind ( null , styleElement , styleIndex , true )
143
152
} else {
144
153
// use multi-style-tag mode in all other cases
145
- styleElement = createStyleElement ( )
154
+ styleElement = createStyleElement ( options )
146
155
update = applyToTag . bind ( null , styleElement )
147
156
remove = function ( ) {
148
157
styleElement . parentNode . removeChild ( styleElement )
0 commit comments