jss-vendor-prefixer
Version:
JSS plugin that handles vendor prefixes in the browser
57 lines (43 loc) • 1.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = jssVendorPrefixer;
var _cssVendor = require('css-vendor');
var vendor = _interopRequireWildcard(_cssVendor);
var _jss = require('jss');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
/**
* Add vendor prefix to a property name when needed.
*
* @param {Rule} rule
* @api public
*/
function jssVendorPrefixer() {
function onProcessRule(rule) {
if (rule.type === 'keyframes') {
rule.key = vendor.supportedKeyframes(rule.key);
}
}
function onProcessStyle(style, rule) {
if (rule.type !== 'style') return style;
for (var prop in style) {
var value = style[prop];
var changeProp = false;
var supportedProp = vendor.supportedProperty(prop);
if (supportedProp && supportedProp !== prop) changeProp = true;
var changeValue = false;
var supportedValue = vendor.supportedValue(supportedProp, (0, _jss.toCssValue)(value));
if (supportedValue && supportedValue !== value) changeValue = true;
if (changeProp || changeValue) {
if (changeProp) delete style[prop];
style[supportedProp || prop] = supportedValue || value;
}
}
return style;
}
function onChangeValue(value, prop) {
return vendor.supportedValue(prop, (0, _jss.toCssValue)(value)) || value;
}
return { onProcessRule: onProcessRule, onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };
}
;