11'use strict' ;
22
3- exports . addon = function ( renderer ) {
3+ exports . addon = function ( renderer , config ) {
44 if ( process . env . NODE_ENV !== 'production' ) {
55 require ( './__dev__/warnOnMissingDependencies' ) ( 'keyframes' , renderer , [ 'putRaw' , 'put' ] ) ;
66 }
77
8+ config = renderer . assign ( {
9+ prefixes : [ '-webkit-' , '-moz-' , '-o-' , '' ] ,
10+ } , config || { } ) ;
11+
12+ var prefixes = config . prefixes ;
13+
814 if ( renderer . client ) {
915 // Craete @keyframe Stylesheet `ksh`.
10- document . head . appendChild ( renderer . ksh = document . createElement ( 'style' ) )
16+ document . head . appendChild ( renderer . ksh = document . createElement ( 'style' ) ) ;
1117 }
1218
1319 var putAt = renderer . putAt ;
@@ -27,12 +33,15 @@ exports.addon = function (renderer) {
2733 str += keyframe + '{' + strDecls + '}' ;
2834 }
2935
30- str = prelude + '{' + str + '}' ;
36+ for ( var i = 0 ; i < prefixes . length ; i ++ ) {
37+ var prefix = prefixes [ i ] ;
38+ var rawKeyframes = prelude . replace ( '@keyframes' , '@' + prefix + 'keyframes' ) + '{' + str + '}' ;
3139
32- if ( renderer . client ) {
33- renderer . ksh . appendChild ( document . createTextNode ( str ) ) ;
34- } else {
35- renderer . putRaw ( str ) ;
40+ if ( renderer . client ) {
41+ renderer . ksh . appendChild ( document . createTextNode ( rawKeyframes ) ) ;
42+ } else {
43+ renderer . putRaw ( rawKeyframes ) ;
44+ }
3645 }
3746
3847 return ;
@@ -45,7 +54,11 @@ exports.addon = function (renderer) {
4554 if ( ! block ) block = renderer . hash ( keyframes ) ;
4655 block = renderer . pfx + block ;
4756
48- renderer . putAt ( '' , keyframes , '@keyframes ' + block ) ;
57+ for ( var i = 0 ; i < prefixes . length ; i ++ ) {
58+ var prefix = prefixes [ i ] ;
59+
60+ renderer . putAt ( '' , keyframes , '@' + prefix + 'keyframes ' + block ) ;
61+ }
4962
5063 return block ;
5164 } ;
0 commit comments