@@ -7,6 +7,7 @@ var _ = require( "underscore" ),
7
7
path = require ( "path" ) ,
8
8
querystring = require ( "querystring" ) ,
9
9
Release = require ( "./release" ) ,
10
+ semver = require ( "semver" ) ,
10
11
textures = require ( "./themeroller.textures" ) ,
11
12
zParams = require ( "./zparams" ) ;
12
13
@@ -67,7 +68,7 @@ var iconDimension = [ "256", "240" ];
67
68
* ThemeRoller
68
69
*/
69
70
function ThemeRoller ( options ) {
70
- var found , opacityFix , themeGallery , vars , version ,
71
+ var found , opacityFilter , opacityFix , themeGallery , vars , version ,
71
72
self = this ;
72
73
options = options || { } ;
73
74
if ( typeof options !== "object" ) {
@@ -104,14 +105,32 @@ function ThemeRoller( options ) {
104
105
vars = this . vars = _ . extend ( { } , ThemeRoller . defaults , vars ) ;
105
106
this . images = { } ;
106
107
107
- // Opacity fix (w3c + IE)
108
- opacityFix = function ( opacity ) {
109
- return /* w3c */ ( opacity / 100 ) . toString ( ) . replace ( / ^ 0 \. / , "." ) + /* IE */ ";filter:Alpha(Opacity=" + opacity + ")" ;
110
- } ;
108
+ // Opacity fix
109
+ // TODO: Remove `filter` style when dropping support for IE8 and earlier.
111
110
vars . opacityOverlayPerc = vars . opacityOverlay ;
112
111
vars . opacityShadowPerc = vars . opacityShadow ;
113
- vars . opacityOverlay = opacityFix ( vars . opacityOverlay ) ;
114
- vars . opacityShadow = opacityFix ( vars . opacityShadow ) ;
112
+ if ( semver . gte ( this . version , "1.10.0" ) ) {
113
+
114
+ // For version >= 1.10.0, filter has its own separate line and variable name.
115
+ opacityFix = function ( opacity ) {
116
+ return ( opacity / 100 ) . toString ( ) . replace ( / ^ 0 \. / , "." ) ;
117
+ } ;
118
+ opacityFilter = function ( opacity ) {
119
+ return "Alpha(Opacity=" + opacity + ")" ;
120
+ } ;
121
+ vars . opacityFilterOverlay = opacityFilter ( vars . opacityOverlay ) ;
122
+ vars . opacityFilterShadow = opacityFilter ( vars . opacityShadow ) ;
123
+ vars . opacityOverlay = opacityFix ( vars . opacityOverlay ) ;
124
+ vars . opacityShadow = opacityFix ( vars . opacityShadow ) ;
125
+ } else {
126
+
127
+ // For version < 1.10.0, opacity (w3c) and filter (IE) are combined into the same line.
128
+ opacityFix = function ( opacity ) {
129
+ return /* w3c */ ( opacity / 100 ) . toString ( ) . replace ( / ^ 0 \. / , "." ) + /* IE */ ";filter:Alpha(Opacity=" + opacity + ")" ;
130
+ } ;
131
+ vars . opacityOverlay = opacityFix ( vars . opacityOverlay ) ;
132
+ vars . opacityShadow = opacityFix ( vars . opacityShadow ) ;
133
+ }
115
134
116
135
// Add '#' in the beginning of the colors if needed
117
136
colorVars . forEach ( function ( colorVar ) {
0 commit comments