@@ -88,7 +88,7 @@ function ThemeRoller( options ) {
88
88
vars = options . vars ;
89
89
if ( vars === false || vars === null ) {
90
90
this . isNull = true ;
91
- this . vars = { } ;
91
+ vars = { } ;
92
92
return ;
93
93
} else if ( vars ) {
94
94
vars = { ...vars } ;
@@ -115,13 +115,24 @@ function ThemeRoller( options ) {
115
115
}
116
116
oldImagesBackCompat ( vars || { } ) ;
117
117
this . serializedVars = querystring . stringify ( vars ) ;
118
- vars = this . vars = Object . assign ( { } , ThemeRoller . defaults , vars ) ;
118
+ vars = this . vars = {
119
+ ...ThemeRoller . defaults ,
120
+ ...vars
121
+ } ;
119
122
this . images = [ ] ;
120
123
121
- // Opacity fix
122
- // TODO: Remove `filter` style when dropping support for IE8 and earlier.
123
- vars . opacityOverlayPerc = vars . opacityOverlay ;
124
- vars . opacityShadowPerc = vars . opacityShadow ;
124
+ // Opacity fix.
125
+ // ThemeRoller sometimes gets post-processed `vars` in `options`,
126
+ // e.g. in `buildPackages` in `Gruntfile.js`. To avoid dividing
127
+ // `opacityOverlay` by 100 twice, resulting in invalid values,
128
+ // record original percentage values with the `Perc` suffix and
129
+ // use those for computation inputs.
130
+ if ( ! ( "opacityOverlayPerc" in vars ) ) {
131
+ vars . opacityOverlayPerc = vars . opacityOverlay ;
132
+ }
133
+ if ( ! ( "opacityShadowPerc" in vars ) ) {
134
+ vars . opacityShadowPerc = vars . opacityShadow ;
135
+ }
125
136
if ( semver . lt ( this . jqueryUi . pkg . version , "1.13.0-a" ) ) {
126
137
127
138
// For version <1.13.0, `filter` has its own separate line
@@ -134,8 +145,8 @@ function ThemeRoller( options ) {
134
145
} ;
135
146
vars . opacityFilterOverlay = opacityFilter ( vars . opacityOverlay ) ;
136
147
vars . opacityFilterShadow = opacityFilter ( vars . opacityShadow ) ;
137
- vars . opacityOverlay = opacityFix ( vars . opacityOverlay ) ;
138
- vars . opacityShadow = opacityFix ( vars . opacityShadow ) ;
148
+ vars . opacityOverlay = opacityFix ( vars . opacityOverlayPerc ) ;
149
+ vars . opacityShadow = opacityFix ( vars . opacityShadowPerc ) ;
139
150
} else if ( semver . lt ( this . jqueryUi . pkg . version , "1.14.0-a" ) ) {
140
151
141
152
// For version >=1.13.0 <1.14.0, `-ms-filter` has its own separate line
@@ -148,17 +159,17 @@ function ThemeRoller( options ) {
148
159
} ;
149
160
vars . opacityFilterOverlay = opacityFilter ( vars . opacityOverlay ) ;
150
161
vars . opacityFilterShadow = opacityFilter ( vars . opacityShadow ) ;
151
- vars . opacityOverlay = opacityFix ( vars . opacityOverlay ) ;
152
- vars . opacityShadow = opacityFix ( vars . opacityShadow ) ;
162
+ vars . opacityOverlay = opacityFix ( vars . opacityOverlayPerc ) ;
163
+ vars . opacityShadow = opacityFix ( vars . opacityShadowPerc ) ;
153
164
} else {
154
165
155
166
// For version >=1.14.0, IE is not supported so there's no `filter`
156
167
// or `-ms-filter`.
157
168
opacityFix = function ( opacity ) {
158
169
return ( opacity / 100 ) . toString ( ) . replace ( / ^ 0 \. / , "." ) ;
159
170
} ;
160
- vars . opacityOverlay = opacityFix ( vars . opacityOverlay ) ;
161
- vars . opacityShadow = opacityFix ( vars . opacityShadow ) ;
171
+ vars . opacityOverlay = opacityFix ( vars . opacityOverlayPerc ) ;
172
+ vars . opacityShadow = opacityFix ( vars . opacityShadowPerc ) ;
162
173
}
163
174
164
175
// Add '#' in the beginning of the colors if needed
0 commit comments