UNPKG

jss-vendor-prefixer

Version:

JSS plugin that handles vendor prefixes in the browser

57 lines (43 loc) 1.7 kB
'use strict'; 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 }; }