UNPKG

1.64 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports['default'] = jssVendorPrefixer;
7
8var _cssVendor = require('css-vendor');
9
10var vendor = _interopRequireWildcard(_cssVendor);
11
12function _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; } }
13
14/**
15 * Add vendor prefix to a property name when needed.
16 *
17 * @param {Rule} rule
18 * @api public
19 */
20function jssVendorPrefixer() {
21 function onProcessRule(rule) {
22 if (rule.type === 'keyframe') {
23 rule.selector = '@' + vendor.prefix.css + rule.selector.substr(1);
24 }
25 }
26
27 function onProcessStyle(style, rule) {
28 if (rule.type !== 'regular') return style;
29
30 for (var prop in style) {
31 var value = style[prop];
32
33 var changeProp = false;
34 var supportedProp = vendor.supportedProperty(prop);
35 if (supportedProp && supportedProp !== prop) changeProp = true;
36
37 var changeValue = false;
38 var supportedValue = vendor.supportedValue(supportedProp, value);
39 if (supportedValue && supportedValue !== value) changeValue = true;
40
41 if (changeProp || changeValue) {
42 if (changeProp) delete style[prop];
43 style[supportedProp || prop] = supportedValue || value;
44 }
45 }
46
47 return style;
48 }
49
50 function onChangeValue(value, prop) {
51 return vendor.supportedValue(prop, value);
52 }
53
54 return { onProcessRule: onProcessRule, onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };
55}
\No newline at end of file