62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
exports.addon = function (renderer, config) {
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
require('./__dev__/warnOnMissingDependencies')('keyframes', renderer, ['putRaw', 'put']);
|
|
}
|
|
|
|
config = renderer.assign({
|
|
prefixes: ['-webkit-', '-moz-', '-o-', ''],
|
|
}, config || {});
|
|
|
|
var prefixes = config.prefixes;
|
|
|
|
if (renderer.client) {
|
|
// Craete @keyframe Stylesheet `ksh`.
|
|
document.head.appendChild(renderer.ksh = document.createElement('style'));
|
|
}
|
|
|
|
var putAt = renderer.putAt;
|
|
|
|
renderer.putAt = function (__, keyframes, prelude) {
|
|
// @keyframes
|
|
if (prelude[1] === 'k') {
|
|
var str = '';
|
|
|
|
for (var keyframe in keyframes) {
|
|
var decls = keyframes[keyframe];
|
|
var strDecls = '';
|
|
|
|
for (var prop in decls)
|
|
strDecls += renderer.decl(prop, decls[prop]);
|
|
|
|
str += keyframe + '{' + strDecls + '}';
|
|
}
|
|
|
|
for (var i = 0; i < prefixes.length; i++) {
|
|
var prefix = prefixes[i];
|
|
var rawKeyframes = prelude.replace('@keyframes', '@' + prefix + 'keyframes') + '{' + str + '}';
|
|
|
|
if (renderer.client) {
|
|
renderer.ksh.appendChild(document.createTextNode(rawKeyframes));
|
|
} else {
|
|
renderer.putRaw(rawKeyframes);
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
putAt(__, keyframes, prelude);
|
|
};
|
|
|
|
renderer.keyframes = function (keyframes, block) {
|
|
if (!block) block = renderer.hash(keyframes);
|
|
block = renderer.pfx + block;
|
|
|
|
renderer.putAt('', keyframes, '@keyframes ' + block);
|
|
|
|
return block;
|
|
};
|
|
};
|