autoprefixer 6.7.6 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AUTHORS +1 -0
- package/CHANGELOG.md +23 -0
- package/README.md +10 -16
- package/data/prefixes.js +551 -517
- package/lib/at-rule.js +55 -38
- package/lib/autoprefixer.js +89 -63
- package/lib/brackets.js +59 -39
- package/lib/browsers.js +102 -65
- package/lib/declaration.js +212 -121
- package/lib/hacks/align-content.js +65 -38
- package/lib/hacks/align-items.js +62 -38
- package/lib/hacks/align-self.js +63 -36
- package/lib/hacks/appearance.js +42 -0
- package/lib/hacks/background-size.js +29 -20
- package/lib/hacks/block-logical.js +36 -21
- package/lib/hacks/border-image.js +26 -16
- package/lib/hacks/border-radius.js +60 -39
- package/lib/hacks/break-props.js +69 -44
- package/lib/hacks/cross-fade.js +40 -37
- package/lib/hacks/display-flex.js +81 -31
- package/lib/hacks/display-grid.js +29 -19
- package/lib/hacks/filter-value.js +66 -45
- package/lib/hacks/filter.js +26 -17
- package/lib/hacks/flex-basis.js +60 -30
- package/lib/hacks/flex-direction.js +85 -53
- package/lib/hacks/flex-flow.js +67 -49
- package/lib/hacks/flex-grow.js +45 -26
- package/lib/hacks/flex-shrink.js +60 -30
- package/lib/hacks/flex-spec.js +18 -8
- package/lib/hacks/flex-values.js +39 -20
- package/lib/hacks/flex-wrap.js +29 -20
- package/lib/hacks/flex.js +68 -43
- package/lib/hacks/fullscreen.js +31 -21
- package/lib/hacks/gradient.js +462 -302
- package/lib/hacks/grid-column-align.js +55 -0
- package/lib/hacks/grid-end.js +53 -28
- package/lib/hacks/grid-row-align.js +39 -19
- package/lib/hacks/grid-start.js +80 -48
- package/lib/hacks/grid-template.js +91 -55
- package/lib/hacks/image-rendering.js +63 -33
- package/lib/hacks/image-set.js +28 -20
- package/lib/hacks/inline-logical.js +32 -17
- package/lib/hacks/intrinsic.js +66 -0
- package/lib/hacks/justify-content.js +69 -42
- package/lib/hacks/mask-border.js +36 -21
- package/lib/hacks/order.js +58 -35
- package/lib/hacks/pixelated.js +44 -30
- package/lib/hacks/placeholder.js +40 -25
- package/lib/hacks/text-emphasis-position.js +27 -20
- package/lib/hacks/transform-decl.js +94 -52
- package/lib/hacks/writing-mode.js +37 -27
- package/lib/info.js +117 -78
- package/lib/old-selector.js +84 -58
- package/lib/old-value.js +22 -20
- package/lib/prefixer.js +164 -95
- package/lib/prefixes.js +446 -351
- package/lib/processor.js +394 -278
- package/lib/resolution.js +135 -75
- package/lib/selector.js +145 -84
- package/lib/supports.js +330 -210
- package/lib/transition.js +396 -243
- package/lib/utils.js +84 -48
- package/lib/value.js +118 -80
- package/package.json +54 -14
- package/lib/hacks/justify-items.js +0 -31
- package/lib/hacks/stretch.js +0 -45
package/lib/prefixer.js
CHANGED
|
@@ -1,121 +1,190 @@
|
|
|
1
|
-
|
|
2
|
-
var Browsers, Prefixer, clone, utils, vendor,
|
|
3
|
-
hasProp = {}.hasOwnProperty;
|
|
1
|
+
'use strict';
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
var Browsers = require('./browsers');
|
|
8
|
+
var utils = require('./utils');
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
var vendor = require('postcss/lib/vendor');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Recursivly clone objects
|
|
14
|
+
*/
|
|
15
|
+
function _clone(obj, parent) {
|
|
16
|
+
var cloned = new obj.constructor();
|
|
17
|
+
|
|
18
|
+
for (var _iterator = Object.keys(obj || {}), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
19
|
+
var _ref;
|
|
20
|
+
|
|
21
|
+
if (_isArray) {
|
|
22
|
+
if (_i >= _iterator.length) break;
|
|
23
|
+
_ref = _iterator[_i++];
|
|
24
|
+
} else {
|
|
25
|
+
_i = _iterator.next();
|
|
26
|
+
if (_i.done) break;
|
|
27
|
+
_ref = _i.value;
|
|
20
28
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
|
|
30
|
+
var i = _ref;
|
|
31
|
+
|
|
32
|
+
var value = obj[i];
|
|
33
|
+
if (i === 'parent' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {
|
|
34
|
+
if (parent) {
|
|
35
|
+
cloned[i] = parent;
|
|
36
|
+
}
|
|
37
|
+
} else if (i === 'source') {
|
|
38
|
+
cloned[i] = value;
|
|
39
|
+
} else if (i === null) {
|
|
40
|
+
cloned[i] = value;
|
|
41
|
+
} else if (value instanceof Array) {
|
|
42
|
+
cloned[i] = value.map(function (x) {
|
|
43
|
+
return _clone(x, cloned);
|
|
44
|
+
});
|
|
45
|
+
} else if (i !== '_autoprefixerPrefix' && i !== '_autoprefixerValues') {
|
|
46
|
+
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null) {
|
|
47
|
+
value = _clone(value, cloned);
|
|
48
|
+
}
|
|
49
|
+
cloned[i] = value;
|
|
32
50
|
}
|
|
33
|
-
cloned[i] = value;
|
|
34
|
-
}
|
|
35
51
|
}
|
|
52
|
+
|
|
36
53
|
return cloned;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
var Prefixer = function () {
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Add hack to selected names
|
|
60
|
+
*/
|
|
61
|
+
Prefixer.hack = function hack(klass) {
|
|
62
|
+
var _this = this;
|
|
63
|
+
|
|
64
|
+
if (!this.hacks) {
|
|
65
|
+
this.hacks = {};
|
|
66
|
+
}
|
|
67
|
+
return klass.names.map(function (name) {
|
|
68
|
+
_this.hacks[name] = klass;
|
|
69
|
+
return _this.hacks[name];
|
|
70
|
+
});
|
|
50
71
|
};
|
|
51
72
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Load hacks for some names
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
Prefixer.load = function load(name, prefixes, all) {
|
|
79
|
+
var Klass = this.hacks && this.hacks[name];
|
|
80
|
+
if (Klass) {
|
|
81
|
+
return new Klass(name, prefixes, all);
|
|
82
|
+
} else {
|
|
83
|
+
return new this(name, prefixes, all);
|
|
84
|
+
}
|
|
60
85
|
};
|
|
61
86
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Clone node and clean autprefixer custom caches
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
Prefixer.clone = function clone(node, overrides) {
|
|
93
|
+
var cloned = _clone(node);
|
|
94
|
+
for (var name in overrides) {
|
|
95
|
+
cloned[name] = overrides[name];
|
|
96
|
+
}
|
|
97
|
+
return cloned;
|
|
69
98
|
};
|
|
70
99
|
|
|
71
|
-
function Prefixer(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
100
|
+
function Prefixer(name, prefixes, all) {
|
|
101
|
+
_classCallCheck(this, Prefixer);
|
|
102
|
+
|
|
103
|
+
this.name = name;
|
|
104
|
+
this.prefixes = prefixes;
|
|
105
|
+
this.all = all;
|
|
75
106
|
}
|
|
76
107
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
prefix = false;
|
|
82
|
-
}
|
|
83
|
-
return node._autoprefixerPrefix = prefix;
|
|
84
|
-
};
|
|
108
|
+
/**
|
|
109
|
+
* Find prefix in node parents
|
|
110
|
+
*/
|
|
111
|
+
|
|
85
112
|
|
|
86
|
-
Prefixer.prototype.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
113
|
+
Prefixer.prototype.parentPrefix = function parentPrefix(node) {
|
|
114
|
+
var prefix = void 0;
|
|
115
|
+
|
|
116
|
+
if (typeof node._autoprefixerPrefix !== 'undefined') {
|
|
117
|
+
prefix = node._autoprefixerPrefix;
|
|
118
|
+
} else if (node.type === 'decl' && node.prop[0] === '-') {
|
|
119
|
+
prefix = vendor.prefix(node.prop);
|
|
120
|
+
} else if (node.type === 'root') {
|
|
121
|
+
prefix = false;
|
|
122
|
+
} else if (node.type === 'rule' && node.selector.indexOf(':-') !== -1 && /:(-\w+-)/.test(node.selector)) {
|
|
123
|
+
prefix = node.selector.match(/:(-\w+-)/)[1];
|
|
124
|
+
} else if (node.type === 'atrule' && node.name[0] === '-') {
|
|
125
|
+
prefix = vendor.prefix(node.name);
|
|
126
|
+
} else {
|
|
127
|
+
prefix = this.parentPrefix(node.parent);
|
|
98
128
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
for (k = 0, len1 = prefixes.length; k < len1; k++) {
|
|
103
|
-
prefix = prefixes[k];
|
|
104
|
-
if (this.add(node, prefix, added.concat([prefix]))) {
|
|
105
|
-
added.push(prefix);
|
|
129
|
+
|
|
130
|
+
if (Browsers.prefixes().indexOf(prefix) === -1) {
|
|
131
|
+
prefix = false;
|
|
106
132
|
}
|
|
107
|
-
|
|
108
|
-
|
|
133
|
+
|
|
134
|
+
node._autoprefixerPrefix = prefix;
|
|
135
|
+
|
|
136
|
+
return node._autoprefixerPrefix;
|
|
109
137
|
};
|
|
110
138
|
|
|
111
|
-
|
|
112
|
-
|
|
139
|
+
/**
|
|
140
|
+
* Clone node with prefixes
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
Prefixer.prototype.process = function process(node) {
|
|
145
|
+
if (!this.check(node)) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
var parent = this.parentPrefix(node);
|
|
150
|
+
|
|
151
|
+
var prefixes = this.prefixes.filter(function (prefix) {
|
|
152
|
+
return !parent || parent === utils.removeNote(prefix);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
var added = [];
|
|
156
|
+
for (var _iterator2 = prefixes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
|
157
|
+
var _ref2;
|
|
158
|
+
|
|
159
|
+
if (_isArray2) {
|
|
160
|
+
if (_i2 >= _iterator2.length) break;
|
|
161
|
+
_ref2 = _iterator2[_i2++];
|
|
162
|
+
} else {
|
|
163
|
+
_i2 = _iterator2.next();
|
|
164
|
+
if (_i2.done) break;
|
|
165
|
+
_ref2 = _i2.value;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
var prefix = _ref2;
|
|
169
|
+
|
|
170
|
+
if (this.add(node, prefix, added.concat([prefix]))) {
|
|
171
|
+
added.push(prefix);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return added;
|
|
113
176
|
};
|
|
114
177
|
|
|
115
|
-
|
|
178
|
+
/**
|
|
179
|
+
* Shortcut for Prefixer.clone
|
|
180
|
+
*/
|
|
116
181
|
|
|
117
|
-
})();
|
|
118
182
|
|
|
119
|
-
|
|
183
|
+
Prefixer.prototype.clone = function clone(node, overrides) {
|
|
184
|
+
return Prefixer.clone(node, overrides);
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
return Prefixer;
|
|
188
|
+
}();
|
|
120
189
|
|
|
121
|
-
|
|
190
|
+
module.exports = Prefixer;
|