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/processor.js
CHANGED
|
@@ -1,322 +1,438 @@
|
|
|
1
|
-
|
|
2
|
-
var OLD_DIRECTION, Processor, SIZES, Value, utils, vendor;
|
|
1
|
+
'use strict';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
var Value = require('./value');
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
var OLD_DIRECTION = /(^|[^-])(linear|radial)-gradient\(\s*(top|left|right|bottom)/i;
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
var SIZES = ['width', 'height', 'min-width', 'max-width', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size'];
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Processor = (function() {
|
|
11
|
+
var Processor = function () {
|
|
15
12
|
function Processor(prefixes) {
|
|
16
|
-
|
|
13
|
+
_classCallCheck(this, Processor);
|
|
14
|
+
|
|
15
|
+
this.prefixes = prefixes;
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Add necessary prefixes
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
Processor.prototype.add = function add(css, result) {
|
|
24
|
+
var _this = this;
|
|
25
|
+
|
|
26
|
+
// At-rules
|
|
27
|
+
var resolution = this.prefixes.add['@resolution'];
|
|
28
|
+
var keyframes = this.prefixes.add['@keyframes'];
|
|
29
|
+
var viewport = this.prefixes.add['@viewport'];
|
|
30
|
+
var supports = this.prefixes.add['@supports'];
|
|
31
|
+
|
|
32
|
+
css.walkAtRules(function (rule) {
|
|
33
|
+
if (rule.name === 'keyframes') {
|
|
34
|
+
if (!_this.disabled(rule)) {
|
|
35
|
+
return keyframes && keyframes.process(rule);
|
|
36
|
+
}
|
|
37
|
+
} else if (rule.name === 'viewport') {
|
|
38
|
+
if (!_this.disabled(rule)) {
|
|
39
|
+
return viewport && viewport.process(rule);
|
|
40
|
+
}
|
|
41
|
+
} else if (rule.name === 'supports') {
|
|
42
|
+
if (_this.prefixes.options.supports !== false && !_this.disabled(rule)) {
|
|
43
|
+
return supports.process(rule);
|
|
44
|
+
}
|
|
45
|
+
} else if (rule.name === 'media' && rule.params.indexOf('-resolution') !== -1) {
|
|
46
|
+
if (!_this.disabled(rule)) {
|
|
47
|
+
return resolution && resolution.process(rule);
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
results = [];
|
|
54
|
-
for (j = 0, len = ref.length; j < len; j++) {
|
|
55
|
-
selector = ref[j];
|
|
56
|
-
results.push(selector.process(rule, result));
|
|
57
|
-
}
|
|
58
|
-
return results;
|
|
59
|
-
};
|
|
60
|
-
})(this));
|
|
61
|
-
css.walkDecls((function(_this) {
|
|
62
|
-
return function(decl) {
|
|
63
|
-
var display, prefixer;
|
|
64
|
-
if (_this.disabled(decl)) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
if (decl.prop === 'display' && decl.value === 'box') {
|
|
68
|
-
result.warn('You should write display: flex by final spec ' + 'instead of display: box', {
|
|
69
|
-
node: decl
|
|
50
|
+
|
|
51
|
+
return undefined;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Selectors
|
|
55
|
+
css.walkRules(function (rule) {
|
|
56
|
+
if (_this.disabled(rule)) return undefined;
|
|
57
|
+
|
|
58
|
+
return _this.prefixes.add.selectors.map(function (selector) {
|
|
59
|
+
return selector.process(rule, result);
|
|
70
60
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
if (decl.prop === 'text-emphasis-position') {
|
|
81
|
-
if (decl.value === 'under' || decl.value === 'over') {
|
|
82
|
-
result.warn('You should use 2 values for text-emphasis-position ' + 'For example, `under left` instead of just `under`.', {
|
|
83
|
-
node: decl
|
|
84
|
-
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
css.walkDecls(function (decl) {
|
|
64
|
+
if (_this.disabledDecl(decl)) return undefined;
|
|
65
|
+
|
|
66
|
+
if (decl.prop === 'display' && decl.value === 'box') {
|
|
67
|
+
result.warn('You should write display: flex by final spec ' + 'instead of display: box', { node: decl });
|
|
68
|
+
return undefined;
|
|
85
69
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
node: decl
|
|
91
|
-
});
|
|
92
|
-
} else if (decl.value.indexOf('fill') !== -1) {
|
|
93
|
-
result.warn('Replace fill to stretch, because spec had been changed', {
|
|
94
|
-
node: decl
|
|
95
|
-
});
|
|
70
|
+
if (decl.value.indexOf('linear-gradient') !== -1) {
|
|
71
|
+
if (OLD_DIRECTION.test(decl.value)) {
|
|
72
|
+
result.warn('Gradient has outdated direction syntax. ' + 'New syntax is like `to left` instead of `right`.', { node: decl });
|
|
73
|
+
}
|
|
96
74
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
node: decl
|
|
102
|
-
});
|
|
75
|
+
if (decl.prop === 'text-emphasis-position') {
|
|
76
|
+
if (decl.value === 'under' || decl.value === 'over') {
|
|
77
|
+
result.warn('You should use 2 values for text-emphasis-position ' + 'For example, `under left` instead of just `under`.', { node: decl });
|
|
78
|
+
}
|
|
103
79
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
})
|
|
109
|
-
|
|
80
|
+
|
|
81
|
+
if (SIZES.indexOf(decl.prop) !== -1) {
|
|
82
|
+
if (decl.value.indexOf('fill-available') !== -1) {
|
|
83
|
+
result.warn('Replace fill-available to stretch, ' + 'because spec had been changed', { node: decl });
|
|
84
|
+
} else if (decl.value.indexOf('fill') !== -1) {
|
|
85
|
+
result.warn('Replace fill to stretch, because spec had been changed', { node: decl });
|
|
86
|
+
}
|
|
110
87
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
88
|
+
|
|
89
|
+
if (_this.prefixes.options.flexbox !== false) {
|
|
90
|
+
if (decl.prop === 'grid-row-end' && decl.value.indexOf('span') === -1) {
|
|
91
|
+
result.warn('IE supports only grid-row-end with span. ' + 'You should add grid: false option to Autoprefixer ' + 'and use some JS grid polyfill for full spec support', { node: decl });
|
|
92
|
+
}
|
|
93
|
+
if (decl.prop === 'grid-row') {
|
|
94
|
+
if (decl.value.indexOf('/') !== -1 && decl.value.indexOf('span') === -1) {
|
|
95
|
+
result.warn('IE supports only grid-row with / and span. ' + 'You should add grid: false option to Autoprefixer ' + 'and use some JS grid polyfill for full spec support', { node: decl });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
121
98
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
99
|
+
|
|
100
|
+
var prefixer = void 0;
|
|
101
|
+
|
|
102
|
+
if (decl.prop === 'transition' || decl.prop === 'transition-property') {
|
|
103
|
+
// Transition
|
|
104
|
+
return _this.prefixes.transition.add(decl, result);
|
|
105
|
+
} else if (decl.prop === 'align-self') {
|
|
106
|
+
// align-self flexbox or grid
|
|
107
|
+
var display = _this.displayType(decl);
|
|
108
|
+
if (display !== 'grid' && _this.prefixes.options.flexbox !== false) {
|
|
109
|
+
prefixer = _this.prefixes.add['align-self'];
|
|
110
|
+
if (prefixer && prefixer.prefixes) {
|
|
111
|
+
prefixer.process(decl);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (display !== 'flex' && _this.prefixes.options.grid !== false) {
|
|
115
|
+
prefixer = _this.prefixes.add['grid-row-align'];
|
|
116
|
+
if (prefixer && prefixer.prefixes) {
|
|
117
|
+
return prefixer.process(decl);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} else if (decl.prop === 'justify-self') {
|
|
121
|
+
// justify-self flexbox or grid
|
|
122
|
+
var _display = _this.displayType(decl);
|
|
123
|
+
if (_display !== 'flex' && _this.prefixes.options.grid !== false) {
|
|
124
|
+
prefixer = _this.prefixes.add['grid-column-align'];
|
|
125
|
+
if (prefixer && prefixer.prefixes) {
|
|
126
|
+
return prefixer.process(decl);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
} else {
|
|
130
|
+
// Properties
|
|
131
|
+
prefixer = _this.prefixes.add[decl.prop];
|
|
132
|
+
if (prefixer && prefixer.prefixes) {
|
|
133
|
+
return prefixer.process(decl);
|
|
134
|
+
}
|
|
127
135
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
136
|
+
|
|
137
|
+
return undefined;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Values
|
|
141
|
+
return css.walkDecls(function (decl) {
|
|
142
|
+
if (_this.disabledValue(decl)) return;
|
|
143
|
+
|
|
144
|
+
var unprefixed = _this.prefixes.unprefixed(decl.prop);
|
|
145
|
+
for (var _iterator = _this.prefixes.values('add', unprefixed), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
146
|
+
var _ref;
|
|
147
|
+
|
|
148
|
+
if (_isArray) {
|
|
149
|
+
if (_i >= _iterator.length) break;
|
|
150
|
+
_ref = _iterator[_i++];
|
|
151
|
+
} else {
|
|
152
|
+
_i = _iterator.next();
|
|
153
|
+
if (_i.done) break;
|
|
154
|
+
_ref = _i.value;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
var value = _ref;
|
|
158
|
+
|
|
159
|
+
value.process(decl, result);
|
|
132
160
|
}
|
|
133
|
-
|
|
134
|
-
};
|
|
135
|
-
})(this));
|
|
136
|
-
return css.walkDecls((function(_this) {
|
|
137
|
-
return function(decl) {
|
|
138
|
-
var j, len, ref, unprefixed, value;
|
|
139
|
-
if (_this.disabled(decl)) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
unprefixed = _this.prefixes.unprefixed(decl.prop);
|
|
143
|
-
ref = _this.prefixes.values('add', unprefixed);
|
|
144
|
-
for (j = 0, len = ref.length; j < len; j++) {
|
|
145
|
-
value = ref[j];
|
|
146
|
-
value.process(decl, result);
|
|
147
|
-
}
|
|
148
|
-
return Value.save(_this.prefixes, decl);
|
|
149
|
-
};
|
|
150
|
-
})(this));
|
|
161
|
+
Value.save(_this.prefixes, decl);
|
|
162
|
+
});
|
|
151
163
|
};
|
|
152
164
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
165
|
+
/**
|
|
166
|
+
* Remove unnecessary pefixes
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
Processor.prototype.remove = function remove(css) {
|
|
171
|
+
var _this2 = this;
|
|
172
|
+
|
|
173
|
+
// At-rules
|
|
174
|
+
var resolution = this.prefixes.remove['@resolution'];
|
|
175
|
+
|
|
176
|
+
css.walkAtRules(function (rule, i) {
|
|
177
|
+
if (_this2.prefixes.remove['@' + rule.name]) {
|
|
178
|
+
if (!_this2.disabled(rule)) {
|
|
179
|
+
rule.parent.removeChild(i);
|
|
180
|
+
}
|
|
181
|
+
} else if (rule.name === 'media' && rule.params.indexOf('-resolution') !== -1 && resolution) {
|
|
182
|
+
resolution.clean(rule);
|
|
161
183
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Selectors
|
|
187
|
+
|
|
188
|
+
var _loop = function _loop(checker) {
|
|
189
|
+
css.walkRules(function (rule, i) {
|
|
190
|
+
if (checker.check(rule)) {
|
|
191
|
+
if (!_this2.disabled(rule)) {
|
|
192
|
+
rule.parent.removeChild(i);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
});
|
|
165
196
|
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
197
|
+
|
|
198
|
+
for (var _iterator2 = this.prefixes.remove.selectors, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
|
199
|
+
var _ref2;
|
|
200
|
+
|
|
201
|
+
if (_isArray2) {
|
|
202
|
+
if (_i2 >= _iterator2.length) break;
|
|
203
|
+
_ref2 = _iterator2[_i2++];
|
|
204
|
+
} else {
|
|
205
|
+
_i2 = _iterator2.next();
|
|
206
|
+
if (_i2.done) break;
|
|
207
|
+
_ref2 = _i2.value;
|
|
176
208
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
return;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
notHack = _this.prefixes.group(decl).down(function(other) {
|
|
193
|
-
return _this.prefixes.normalize(other.prop) === unprefixed;
|
|
194
|
-
});
|
|
195
|
-
if (unprefixed === 'flex-flow') {
|
|
196
|
-
notHack = true;
|
|
209
|
+
|
|
210
|
+
var checker = _ref2;
|
|
211
|
+
|
|
212
|
+
_loop(checker);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return css.walkDecls(function (decl, i) {
|
|
216
|
+
if (_this2.disabled(decl)) return;
|
|
217
|
+
|
|
218
|
+
var rule = decl.parent;
|
|
219
|
+
var unprefixed = _this2.prefixes.unprefixed(decl.prop);
|
|
220
|
+
|
|
221
|
+
// Transition
|
|
222
|
+
if (decl.prop === 'transition' || decl.prop === 'transition-property') {
|
|
223
|
+
_this2.prefixes.transition.remove(decl);
|
|
197
224
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
225
|
+
|
|
226
|
+
// Properties
|
|
227
|
+
if (_this2.prefixes.remove[decl.prop] && _this2.prefixes.remove[decl.prop].remove) {
|
|
228
|
+
var notHack = _this2.prefixes.group(decl).down(function (other) {
|
|
229
|
+
return _this2.prefixes.normalize(other.prop) === unprefixed;
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
if (unprefixed === 'flex-flow') {
|
|
233
|
+
notHack = true;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (notHack && !_this2.withHackValue(decl)) {
|
|
237
|
+
if (decl.raw('before').indexOf('\n') > -1) {
|
|
238
|
+
_this2.reduceSpaces(decl);
|
|
239
|
+
}
|
|
240
|
+
rule.removeChild(i);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
204
243
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
244
|
+
|
|
245
|
+
// Values
|
|
246
|
+
for (var _iterator3 = _this2.prefixes.values('remove', unprefixed), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
|
247
|
+
var _ref3;
|
|
248
|
+
|
|
249
|
+
if (_isArray3) {
|
|
250
|
+
if (_i3 >= _iterator3.length) break;
|
|
251
|
+
_ref3 = _iterator3[_i3++];
|
|
252
|
+
} else {
|
|
253
|
+
_i3 = _iterator3.next();
|
|
254
|
+
if (_i3.done) break;
|
|
255
|
+
_ref3 = _i3.value;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
var checker = _ref3;
|
|
259
|
+
|
|
260
|
+
if (checker.check(decl.value)) {
|
|
261
|
+
unprefixed = checker.unprefixed;
|
|
262
|
+
var _notHack = _this2.prefixes.group(decl).down(function (other) {
|
|
263
|
+
return other.value.indexOf(unprefixed) !== -1;
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
if (_notHack) {
|
|
267
|
+
rule.removeChild(i);
|
|
268
|
+
return;
|
|
269
|
+
} else if (checker.clean) {
|
|
270
|
+
checker.clean(decl);
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
221
274
|
}
|
|
222
|
-
|
|
223
|
-
};
|
|
224
|
-
})(this));
|
|
275
|
+
});
|
|
225
276
|
};
|
|
226
277
|
|
|
227
|
-
|
|
228
|
-
|
|
278
|
+
/**
|
|
279
|
+
* Some rare old values, which is not in standard
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
Processor.prototype.withHackValue = function withHackValue(decl) {
|
|
284
|
+
return decl.prop === '-webkit-background-clip' && decl.value === 'text';
|
|
229
285
|
};
|
|
230
286
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
287
|
+
/**
|
|
288
|
+
* Check for grid/flexbox options.
|
|
289
|
+
*/
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
Processor.prototype.disabledValue = function disabledValue(node) {
|
|
293
|
+
if (this.prefixes.options.grid === false && node.type === 'decl') {
|
|
294
|
+
if (node.prop === 'display' && node.value.indexOf('grid') !== -1) {
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
236
297
|
}
|
|
237
|
-
if (
|
|
238
|
-
|
|
298
|
+
if (this.prefixes.options.flexbox === false && node.type === 'decl') {
|
|
299
|
+
if (node.prop === 'display' && node.value.indexOf('flex') !== -1) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
239
302
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
303
|
+
|
|
304
|
+
return this.disabled(node);
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Check for grid/flexbox options.
|
|
309
|
+
*/
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
Processor.prototype.disabledDecl = function disabledDecl(node) {
|
|
313
|
+
if (this.prefixes.options.grid === false && node.type === 'decl') {
|
|
314
|
+
if (node.prop.indexOf('grid') !== -1 || node.prop === 'justify-items') {
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
244
317
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
318
|
+
if (this.prefixes.options.flexbox === false && node.type === 'decl') {
|
|
319
|
+
var other = ['order', 'justify-content', 'align-items', 'align-content'];
|
|
320
|
+
if (node.prop.indexOf('flex') !== -1 || other.indexOf(node.prop) !== -1) {
|
|
321
|
+
return true;
|
|
322
|
+
}
|
|
248
323
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
return node._autoprefixerDisabled;
|
|
252
|
-
} else if (node.nodes) {
|
|
253
|
-
status = void 0;
|
|
254
|
-
node.each(function(i) {
|
|
255
|
-
if (i.type !== 'comment') {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
if (/(!\s*)?autoprefixer:\s*off/i.test(i.text)) {
|
|
259
|
-
status = false;
|
|
260
|
-
return false;
|
|
261
|
-
} else if (/(!\s*)?autoprefixer:\s*on/i.test(i.text)) {
|
|
262
|
-
status = true;
|
|
263
|
-
return false;
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
return node._autoprefixerDisabled = status != null ? !status : node.parent ? this.disabled(node.parent) : false;
|
|
267
|
-
} else if (node.parent) {
|
|
268
|
-
return node._autoprefixerDisabled = this.disabled(node.parent);
|
|
269
|
-
} else {
|
|
270
|
-
return false;
|
|
271
|
-
}
|
|
324
|
+
|
|
325
|
+
return this.disabled(node);
|
|
272
326
|
};
|
|
273
327
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
328
|
+
/**
|
|
329
|
+
* Check for control comment and global options
|
|
330
|
+
*/
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
Processor.prototype.disabled = function disabled(node) {
|
|
334
|
+
if (node._autoprefixerDisabled !== undefined) {
|
|
335
|
+
return node._autoprefixerDisabled;
|
|
336
|
+
} else if (node.nodes) {
|
|
337
|
+
var status = undefined;
|
|
338
|
+
node.each(function (i) {
|
|
339
|
+
if (i.type !== 'comment') {
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
if (/(!\s*)?autoprefixer:\s*off/i.test(i.text)) {
|
|
343
|
+
status = false;
|
|
344
|
+
return false;
|
|
345
|
+
} else if (/(!\s*)?autoprefixer:\s*on/i.test(i.text)) {
|
|
346
|
+
status = true;
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
return undefined;
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
var result = false;
|
|
353
|
+
if (status !== undefined) {
|
|
354
|
+
result = !status;
|
|
355
|
+
} else if (node.parent) {
|
|
356
|
+
result = this.disabled(node.parent);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
node._autoprefixerDisabled = result;
|
|
360
|
+
return node._autoprefixerDisabled;
|
|
361
|
+
} else if (node.parent) {
|
|
362
|
+
node._autoprefixerDisabled = this.disabled(node.parent);
|
|
363
|
+
return node._autoprefixerDisabled;
|
|
364
|
+
} else {
|
|
365
|
+
// unknown state
|
|
366
|
+
return false;
|
|
296
367
|
}
|
|
297
|
-
});
|
|
298
368
|
};
|
|
299
369
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
return
|
|
310
|
-
|
|
370
|
+
/**
|
|
371
|
+
* Normalize spaces in cascade declaration group
|
|
372
|
+
*/
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
Processor.prototype.reduceSpaces = function reduceSpaces(decl) {
|
|
376
|
+
var stop = false;
|
|
377
|
+
this.prefixes.group(decl).up(function () {
|
|
378
|
+
stop = true;
|
|
379
|
+
return true;
|
|
380
|
+
});
|
|
381
|
+
if (stop) {
|
|
382
|
+
return;
|
|
311
383
|
}
|
|
312
|
-
|
|
313
|
-
|
|
384
|
+
|
|
385
|
+
var parts = decl.raw('before').split('\n');
|
|
386
|
+
var prevMin = parts[parts.length - 1].length;
|
|
387
|
+
var diff = false;
|
|
388
|
+
|
|
389
|
+
this.prefixes.group(decl).down(function (other) {
|
|
390
|
+
parts = other.raw('before').split('\n');
|
|
391
|
+
var last = parts.length - 1;
|
|
392
|
+
|
|
393
|
+
if (parts[last].length > prevMin) {
|
|
394
|
+
if (diff === false) {
|
|
395
|
+
diff = parts[last].length - prevMin;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
parts[last] = parts[last].slice(0, -diff);
|
|
399
|
+
other.raws.before = parts.join('\n');
|
|
400
|
+
}
|
|
401
|
+
});
|
|
314
402
|
};
|
|
315
403
|
|
|
316
|
-
|
|
404
|
+
/**
|
|
405
|
+
* Is it flebox or grid rule
|
|
406
|
+
*/
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
Processor.prototype.displayType = function displayType(decl) {
|
|
410
|
+
for (var _iterator4 = decl.parent.nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
|
|
411
|
+
var _ref4;
|
|
412
|
+
|
|
413
|
+
if (_isArray4) {
|
|
414
|
+
if (_i4 >= _iterator4.length) break;
|
|
415
|
+
_ref4 = _iterator4[_i4++];
|
|
416
|
+
} else {
|
|
417
|
+
_i4 = _iterator4.next();
|
|
418
|
+
if (_i4.done) break;
|
|
419
|
+
_ref4 = _i4.value;
|
|
420
|
+
}
|
|
317
421
|
|
|
318
|
-
|
|
422
|
+
var i = _ref4;
|
|
319
423
|
|
|
320
|
-
|
|
424
|
+
if (i.prop === 'display') {
|
|
425
|
+
if (i.value.indexOf('flex') !== -1) {
|
|
426
|
+
return 'flex';
|
|
427
|
+
} else if (i.value.indexOf('grid') !== -1) {
|
|
428
|
+
return 'grid';
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return false;
|
|
433
|
+
};
|
|
434
|
+
|
|
435
|
+
return Processor;
|
|
436
|
+
}();
|
|
321
437
|
|
|
322
|
-
|
|
438
|
+
module.exports = Processor;
|