autoprefixer 9.4.8 → 9.5.1
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/CHANGELOG.md +13 -0
- package/README.md +38 -21
- package/data/prefixes.js +7 -2
- package/lib/hacks/backdrop-filter.js +37 -0
- package/lib/hacks/background-clip.js +1 -5
- package/lib/hacks/border-radius.js +2 -5
- package/lib/hacks/cross-fade.js +2 -2
- package/lib/hacks/flex.js +2 -2
- package/lib/hacks/gradient.js +6 -6
- package/lib/hacks/grid-utils.js +9 -4
- package/lib/hacks/mask-composite.js +106 -0
- package/lib/prefixer.js +4 -6
- package/lib/prefixes.js +4 -2
- package/lib/processor.js +5 -0
- package/lib/resolution.js +2 -2
- package/lib/supports.js +4 -4
- package/lib/value.js +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
3
3
|
|
|
4
|
+
## 9.5.1
|
|
5
|
+
* Fix `backdrop-filter` for Edge (by Oleh Aloshkin).
|
|
6
|
+
* Fix `min-resolution` media query support in Firefox < 16.
|
|
7
|
+
|
|
8
|
+
## 9.5 “Draco dormiens nunquam titillandus”
|
|
9
|
+
* Add `mask-composite` support (by Semen Levenson).
|
|
10
|
+
|
|
11
|
+
## 9.4.10
|
|
12
|
+
* Add warning for named Grid rows.
|
|
13
|
+
|
|
14
|
+
## 9.4.9
|
|
15
|
+
* Fix `grid-template` and `@media` case (by Bogdan Dolin).
|
|
16
|
+
|
|
4
17
|
## 9.4.8
|
|
5
18
|
* Fix `calc()` support in Grid gap.
|
|
6
19
|
|
package/README.md
CHANGED
|
@@ -103,18 +103,23 @@ See [Browserslist docs] for queries, browser names, config format, and defaults.
|
|
|
103
103
|
|
|
104
104
|
### Does Autoprefixer polyfill Grid Layout for IE?
|
|
105
105
|
|
|
106
|
-
Autoprefixer can be used to translate modern CSS Grid syntax into IE 10
|
|
107
|
-
but this polyfill will not work in 100% of cases.
|
|
106
|
+
Autoprefixer can be used to translate modern CSS Grid syntax into IE 10
|
|
107
|
+
and IE 11 syntax, but this polyfill will not work in 100% of cases.
|
|
108
|
+
This is why it is disabled by default.
|
|
108
109
|
|
|
109
|
-
First, you need to enable Grid prefixes by using either the `grid: "autoplace"`
|
|
110
|
+
First, you need to enable Grid prefixes by using either the `grid: "autoplace"`
|
|
111
|
+
option or the `/* autoprefixer grid: autoplace */` control comment.
|
|
110
112
|
|
|
111
113
|
Second, you need to test every fix with Grid in IE. It is not an enable and
|
|
112
114
|
forget feature, but it is still very useful.
|
|
113
115
|
Financial Times and Yandex use it in production.
|
|
114
116
|
|
|
115
|
-
Third, there is only very limited auto placement support. Read the
|
|
117
|
+
Third, there is only very limited auto placement support. Read the
|
|
118
|
+
[Grid Autoplacement support in IE](#grid-autoplacement-support-in-ie) section
|
|
119
|
+
for more details.
|
|
116
120
|
|
|
117
|
-
Fourth, if you are not using the autoplacement feature, the best way
|
|
121
|
+
Fourth, if you are not using the autoplacement feature, the best way
|
|
122
|
+
to use Autoprefixer is by using `grid-template` or `grid-template-areas`.
|
|
118
123
|
|
|
119
124
|
```css
|
|
120
125
|
.page {
|
|
@@ -314,7 +319,7 @@ module.exports = {
|
|
|
314
319
|
|
|
315
320
|
[other PostCSS plugins]: https://github.com/postcss/postcss#plugins
|
|
316
321
|
[postcss-loader]: https://github.com/postcss/postcss-loader
|
|
317
|
-
[webpack]:
|
|
322
|
+
[webpack]: https://webpack.js.org/
|
|
318
323
|
|
|
319
324
|
|
|
320
325
|
### CSS-in-JS
|
|
@@ -435,7 +440,7 @@ Autoprefixer should be used in assets build tools. Text editor plugins are not
|
|
|
435
440
|
a good solution, because prefixes decrease code readability and you will need
|
|
436
441
|
to change values in all prefixed properties.
|
|
437
442
|
|
|
438
|
-
I recommend you to learn how to use build tools like [
|
|
443
|
+
I recommend you to learn how to use build tools like [Parcel].
|
|
439
444
|
They work much better and will open you a whole new world of useful plugins
|
|
440
445
|
and automation.
|
|
441
446
|
|
|
@@ -445,8 +450,9 @@ If you can’t move to a build tool, you can use text editor plugins:
|
|
|
445
450
|
* [Brackets](https://github.com/mikaeljorhult/brackets-autoprefixer)
|
|
446
451
|
* [Atom Editor](https://github.com/sindresorhus/atom-autoprefixer)
|
|
447
452
|
* [Visual Studio](https://github.com/madskristensen/WebCompiler)
|
|
453
|
+
([how to](https://stackoverflow.com/a/54908636/2440))
|
|
448
454
|
|
|
449
|
-
[
|
|
455
|
+
[Parcel]: https://parceljs.org/
|
|
450
456
|
|
|
451
457
|
|
|
452
458
|
## Warnings
|
|
@@ -593,14 +599,17 @@ Available options are:
|
|
|
593
599
|
parameters. Default is `true`.
|
|
594
600
|
* `flexbox` (boolean|string): should Autoprefixer add prefixes for flexbox
|
|
595
601
|
properties. With `"no-2009"` value Autoprefixer will add prefixes only
|
|
596
|
-
for final and IE versions of specification. Default is `true`.
|
|
597
|
-
* `grid` (false|"autoplace"|"no-autoplace"): should Autoprefixer
|
|
598
|
-
properties?
|
|
599
|
-
* `false` (default): prevent Autoprefixer from outputting
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
602
|
+
for final and IE 10 versions of specification. Default is `true`.
|
|
603
|
+
* `grid` (false|"autoplace"|"no-autoplace"): should Autoprefixer
|
|
604
|
+
add IE 10-11 prefixes for Grid Layout properties?
|
|
605
|
+
* `false` (default): prevent Autoprefixer from outputting
|
|
606
|
+
CSS Grid translations.
|
|
607
|
+
* `"autoplace"`: enable Autoprefixer grid translations
|
|
608
|
+
and *include* autoplacement support. You can also use
|
|
609
|
+
`/* autoprefixer grid: autoplace */` in your CSS.
|
|
610
|
+
* `"no-autoplace"`: enable Autoprefixer grid translations
|
|
611
|
+
but *exclude* autoplacement support. You can also use
|
|
612
|
+
`/* autoprefixer grid: no-autoplace */` in your CSS.
|
|
604
613
|
(alias for the deprecated `true` value)
|
|
605
614
|
* `stats` (object): custom [usage statistics] for `> 10% in my stats`
|
|
606
615
|
browsers query.
|
|
@@ -813,11 +822,11 @@ so unfortunately this little snippet will _never_ be IE friendly.
|
|
|
813
822
|
|
|
814
823
|
#### No manual cell placement or column/row spans allowed inside an autoplacement grid
|
|
815
824
|
|
|
816
|
-
Elements must not be manually placed or given column/row spans inside
|
|
817
|
-
grid. Only the most basic of autoplacement grids are supported.
|
|
818
|
-
placed manually outside the the explicit grid though.
|
|
819
|
-
individual grid cells inside an explicit
|
|
820
|
-
future release.
|
|
825
|
+
Elements must not be manually placed or given column/row spans inside
|
|
826
|
+
an autoplacement grid. Only the most basic of autoplacement grids are supported.
|
|
827
|
+
Grid cells can still be placed manually outside the the explicit grid though.
|
|
828
|
+
Support for manually placing individual grid cells inside an explicit
|
|
829
|
+
autoplacement grid is planned for a future release.
|
|
821
830
|
|
|
822
831
|
```css
|
|
823
832
|
.autoplacement-grid {
|
|
@@ -1033,3 +1042,11 @@ JS API is also available:
|
|
|
1033
1042
|
var info = autoprefixer().info();
|
|
1034
1043
|
console.log(info);
|
|
1035
1044
|
```
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
## Security Contact
|
|
1048
|
+
|
|
1049
|
+
To report a security vulnerability, please use the [Tidelift security contact].
|
|
1050
|
+
Tidelift will coordinate the fix and disclosure.
|
|
1051
|
+
|
|
1052
|
+
[Tidelift security contact]: https://tidelift.com/security
|
package/data/prefixes.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/* eslint-disable import-helpers/order-imports */
|
|
3
4
|
var unpack = require('caniuse-lite').feature;
|
|
4
5
|
|
|
5
6
|
function browsersSort(a, b) {
|
|
@@ -196,7 +197,11 @@ f(require('caniuse-lite/data/features/css-filter-function'), function (browsers)
|
|
|
196
197
|
});
|
|
197
198
|
}); // Backdrop-filter
|
|
198
199
|
|
|
199
|
-
|
|
200
|
+
var backdrop = require('caniuse-lite/data/features/css-backdrop-filter');
|
|
201
|
+
|
|
202
|
+
f(backdrop, {
|
|
203
|
+
match: /y\sx|y\s#2/
|
|
204
|
+
}, function (browsers) {
|
|
200
205
|
return prefix(['backdrop-filter'], {
|
|
201
206
|
feature: 'css-backdrop-filter',
|
|
202
207
|
browsers: browsers
|
|
@@ -498,7 +503,7 @@ f(require('caniuse-lite/data/features/css-deviceadaptation'), function (browsers
|
|
|
498
503
|
var resolut = require('caniuse-lite/data/features/css-media-resolution');
|
|
499
504
|
|
|
500
505
|
f(resolut, {
|
|
501
|
-
match: /( x($| )|a #
|
|
506
|
+
match: /( x($| )|a #2)/
|
|
502
507
|
}, function (browsers) {
|
|
503
508
|
return prefix(['@resolution'], {
|
|
504
509
|
feature: 'css-media-resolution',
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
|
|
4
|
+
|
|
5
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
|
|
6
|
+
|
|
7
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
+
|
|
9
|
+
var Declaration = require('../declaration');
|
|
10
|
+
|
|
11
|
+
var utils = require('../utils');
|
|
12
|
+
|
|
13
|
+
var BackdropFilter =
|
|
14
|
+
/*#__PURE__*/
|
|
15
|
+
function (_Declaration) {
|
|
16
|
+
_inheritsLoose(BackdropFilter, _Declaration);
|
|
17
|
+
|
|
18
|
+
function BackdropFilter(name, prefixes, all) {
|
|
19
|
+
var _this;
|
|
20
|
+
|
|
21
|
+
_this = _Declaration.call(this, name, prefixes, all) || this;
|
|
22
|
+
|
|
23
|
+
if (_this.prefixes) {
|
|
24
|
+
_this.prefixes = utils.uniq(_this.prefixes.map(function (i) {
|
|
25
|
+
return i === '-ms-' ? '-webkit-' : i;
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return _this;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return BackdropFilter;
|
|
33
|
+
}(Declaration);
|
|
34
|
+
|
|
35
|
+
_defineProperty(BackdropFilter, "names", ['backdrop-filter']);
|
|
36
|
+
|
|
37
|
+
module.exports = BackdropFilter;
|
|
@@ -47,13 +47,10 @@ _defineProperty(BorderRadius, "toMozilla", {});
|
|
|
47
47
|
|
|
48
48
|
_defineProperty(BorderRadius, "toNormal", {});
|
|
49
49
|
|
|
50
|
-
var _arr = ['top', 'bottom'];
|
|
51
|
-
|
|
52
|
-
for (var _i = 0; _i < _arr.length; _i++) {
|
|
50
|
+
for (var _i = 0, _arr = ['top', 'bottom']; _i < _arr.length; _i++) {
|
|
53
51
|
var ver = _arr[_i];
|
|
54
|
-
var _arr2 = ['left', 'right'];
|
|
55
52
|
|
|
56
|
-
for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
|
|
53
|
+
for (var _i2 = 0, _arr2 = ['left', 'right']; _i2 < _arr2.length; _i2++) {
|
|
57
54
|
var hor = _arr2[_i2];
|
|
58
55
|
var normal = "border-" + ver + "-" + hor + "-radius";
|
|
59
56
|
var mozilla = "border-radius-" + ver + hor;
|
package/lib/hacks/cross-fade.js
CHANGED
|
@@ -6,10 +6,10 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
|
|
|
6
6
|
|
|
7
7
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
8
|
|
|
9
|
-
var Value = require('../value');
|
|
10
|
-
|
|
11
9
|
var list = require('postcss').list;
|
|
12
10
|
|
|
11
|
+
var Value = require('../value');
|
|
12
|
+
|
|
13
13
|
var CrossFade =
|
|
14
14
|
/*#__PURE__*/
|
|
15
15
|
function (_Value) {
|
package/lib/hacks/flex.js
CHANGED
|
@@ -6,12 +6,12 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
|
|
|
6
6
|
|
|
7
7
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
8
|
|
|
9
|
+
var list = require('postcss').list;
|
|
10
|
+
|
|
9
11
|
var flexSpec = require('./flex-spec');
|
|
10
12
|
|
|
11
13
|
var Declaration = require('../declaration');
|
|
12
14
|
|
|
13
|
-
var list = require('postcss').list;
|
|
14
|
-
|
|
15
15
|
var Flex =
|
|
16
16
|
/*#__PURE__*/
|
|
17
17
|
function (_Declaration) {
|
package/lib/hacks/gradient.js
CHANGED
|
@@ -8,16 +8,16 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
|
|
|
8
8
|
|
|
9
9
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
10
|
|
|
11
|
+
var parser = require('postcss-value-parser');
|
|
12
|
+
|
|
13
|
+
var range = require('normalize-range');
|
|
14
|
+
|
|
11
15
|
var OldValue = require('../old-value');
|
|
12
16
|
|
|
13
17
|
var Value = require('../value');
|
|
14
18
|
|
|
15
19
|
var utils = require('../utils');
|
|
16
20
|
|
|
17
|
-
var parser = require('postcss-value-parser');
|
|
18
|
-
|
|
19
|
-
var range = require('normalize-range');
|
|
20
|
-
|
|
21
21
|
var IS_DIRECTION = /top|left|right|bottom/gi;
|
|
22
22
|
|
|
23
23
|
var Gradient =
|
|
@@ -398,8 +398,8 @@ function (_Value) {
|
|
|
398
398
|
this.colorStops(params);
|
|
399
399
|
node.nodes = [];
|
|
400
400
|
|
|
401
|
-
for (var _i5 = 0; _i5 <
|
|
402
|
-
var param =
|
|
401
|
+
for (var _i5 = 0, _params = params; _i5 < _params.length; _i5++) {
|
|
402
|
+
var param = _params[_i5];
|
|
403
403
|
node.nodes = node.nodes.concat(param);
|
|
404
404
|
}
|
|
405
405
|
|
package/lib/hacks/grid-utils.js
CHANGED
|
@@ -541,8 +541,9 @@ function insertAreas(css, isDisabled) {
|
|
|
541
541
|
|
|
542
542
|
if (!rulesToInsert[lastArea]) {
|
|
543
543
|
rulesToInsert[lastArea] = {};
|
|
544
|
-
}
|
|
544
|
+
}
|
|
545
545
|
|
|
546
|
+
var lastRuleIsSet = false; // walk through every grid-template rule data
|
|
546
547
|
|
|
547
548
|
for (var _iterator2 = data.rules, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
|
548
549
|
var _ref9;
|
|
@@ -586,6 +587,7 @@ function insertAreas(css, isDisabled) {
|
|
|
586
587
|
}));
|
|
587
588
|
});
|
|
588
589
|
rulesToInsert[lastArea].lastRule = gridAreaRule;
|
|
590
|
+
lastRuleIsSet = true;
|
|
589
591
|
} else if (rule.hasDuplicates && !rule.params && !selectorIsComplex) {
|
|
590
592
|
(function () {
|
|
591
593
|
// grid-template has duplicates and not inside media rule
|
|
@@ -605,10 +607,11 @@ function insertAreas(css, isDisabled) {
|
|
|
605
607
|
}
|
|
606
608
|
|
|
607
609
|
rulesToInsert[lastArea].lastRule = cloned;
|
|
610
|
+
lastRuleIsSet = true;
|
|
608
611
|
})();
|
|
609
612
|
} else if (rule.hasDuplicates && !rule.params && selectorIsComplex && gridAreaRule.selector.includes(rule.selectors[0])) {
|
|
610
613
|
// grid-template has duplicates and not inside media rule
|
|
611
|
-
//
|
|
614
|
+
// and the selector is complex
|
|
612
615
|
gridAreaRule.walkDecls(/-ms-grid-(row|column)/, function (d) {
|
|
613
616
|
return d.remove();
|
|
614
617
|
});
|
|
@@ -648,9 +651,11 @@ function insertAreas(css, isDisabled) {
|
|
|
648
651
|
} else {
|
|
649
652
|
// store the rule to insert later
|
|
650
653
|
rulesToInsert[lastArea][rule.params].push(cloned);
|
|
651
|
-
}
|
|
654
|
+
} // set new rule as last rule ONLY if we didn't set lastRule for
|
|
655
|
+
// this grid-area before
|
|
656
|
+
|
|
652
657
|
|
|
653
|
-
if (
|
|
658
|
+
if (!lastRuleIsSet) {
|
|
654
659
|
rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule;
|
|
655
660
|
}
|
|
656
661
|
})();
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
|
|
4
|
+
|
|
5
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
|
|
6
|
+
|
|
7
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
+
|
|
9
|
+
var Declaration = require('../declaration');
|
|
10
|
+
|
|
11
|
+
var MaskComposite =
|
|
12
|
+
/*#__PURE__*/
|
|
13
|
+
function (_Declaration) {
|
|
14
|
+
_inheritsLoose(MaskComposite, _Declaration);
|
|
15
|
+
|
|
16
|
+
function MaskComposite() {
|
|
17
|
+
return _Declaration.apply(this, arguments) || this;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var _proto = MaskComposite.prototype;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Prefix mask-composite for webkit
|
|
24
|
+
*/
|
|
25
|
+
_proto.insert = function insert(decl, prefix, prefixes) {
|
|
26
|
+
var isCompositeProp = decl.prop === 'mask-composite';
|
|
27
|
+
var compositeValues;
|
|
28
|
+
|
|
29
|
+
if (isCompositeProp) {
|
|
30
|
+
compositeValues = decl.value.split(',');
|
|
31
|
+
} else {
|
|
32
|
+
compositeValues = decl.value.match(MaskComposite.regexp) || [];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
compositeValues = compositeValues.map(function (el) {
|
|
36
|
+
return el.trim();
|
|
37
|
+
}).filter(function (el) {
|
|
38
|
+
return el;
|
|
39
|
+
});
|
|
40
|
+
var hasCompositeValues = compositeValues.length;
|
|
41
|
+
var compositeDecl;
|
|
42
|
+
|
|
43
|
+
if (hasCompositeValues) {
|
|
44
|
+
compositeDecl = this.clone(decl);
|
|
45
|
+
compositeDecl.value = compositeValues.map(function (value) {
|
|
46
|
+
return MaskComposite.oldValues[value] || value;
|
|
47
|
+
}).join(', ');
|
|
48
|
+
|
|
49
|
+
if (compositeValues.includes('intersect')) {
|
|
50
|
+
compositeDecl.value += ', xor';
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
compositeDecl.prop = prefix + 'mask-composite';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (isCompositeProp) {
|
|
57
|
+
if (!hasCompositeValues) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (this.needCascade(decl)) {
|
|
62
|
+
compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return decl.parent.insertBefore(decl, compositeDecl);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
var cloned = this.clone(decl);
|
|
69
|
+
cloned.prop = prefix + cloned.prop;
|
|
70
|
+
|
|
71
|
+
if (hasCompositeValues) {
|
|
72
|
+
cloned.value = cloned.value.replace(MaskComposite.regexp, '');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (this.needCascade(decl)) {
|
|
76
|
+
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
decl.parent.insertBefore(decl, cloned);
|
|
80
|
+
|
|
81
|
+
if (!hasCompositeValues) {
|
|
82
|
+
return decl;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (this.needCascade(decl)) {
|
|
86
|
+
compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return decl.parent.insertBefore(decl, compositeDecl);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return MaskComposite;
|
|
93
|
+
}(Declaration);
|
|
94
|
+
|
|
95
|
+
_defineProperty(MaskComposite, "names", ['mask', 'mask-composite']);
|
|
96
|
+
|
|
97
|
+
_defineProperty(MaskComposite, "oldValues", {
|
|
98
|
+
add: 'source-over',
|
|
99
|
+
substract: 'source-out',
|
|
100
|
+
intersect: 'source-in',
|
|
101
|
+
exclude: 'xor'
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
_defineProperty(MaskComposite, "regexp", new RegExp("\\s+(" + Object.keys(MaskComposite.oldValues).join('|') + ")\\b(?!\\))\\s*(?=[,])", 'ig'));
|
|
105
|
+
|
|
106
|
+
module.exports = MaskComposite;
|
package/lib/prefixer.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var vendor = require('postcss').vendor;
|
|
4
|
+
|
|
3
5
|
var Browsers = require('./browsers');
|
|
4
6
|
|
|
5
7
|
var utils = require('./utils');
|
|
6
|
-
|
|
7
|
-
var vendor = require('postcss').vendor;
|
|
8
8
|
/**
|
|
9
9
|
* Recursively clone objects
|
|
10
10
|
*/
|
|
@@ -13,10 +13,8 @@ var vendor = require('postcss').vendor;
|
|
|
13
13
|
function _clone(obj, parent) {
|
|
14
14
|
var cloned = new obj.constructor();
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
for (var _i = 0; _i < _arr.length; _i++) {
|
|
19
|
-
var i = _arr[_i];
|
|
16
|
+
for (var _i = 0, _Object$keys = Object.keys(obj || {}); _i < _Object$keys.length; _i++) {
|
|
17
|
+
var i = _Object$keys[_i];
|
|
20
18
|
var value = obj[i];
|
|
21
19
|
|
|
22
20
|
if (i === 'parent' && typeof value === 'object') {
|
package/lib/prefixes.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var vendor = require('postcss').vendor;
|
|
4
|
+
|
|
3
5
|
var Declaration = require('./declaration');
|
|
4
6
|
|
|
5
7
|
var Resolution = require('./resolution');
|
|
@@ -20,8 +22,6 @@ var Value = require('./value');
|
|
|
20
22
|
|
|
21
23
|
var utils = require('./utils');
|
|
22
24
|
|
|
23
|
-
var vendor = require('postcss').vendor;
|
|
24
|
-
|
|
25
25
|
Selector.hack(require('./hacks/fullscreen'));
|
|
26
26
|
Selector.hack(require('./hacks/placeholder'));
|
|
27
27
|
Declaration.hack(require('./hacks/flex'));
|
|
@@ -39,6 +39,7 @@ Declaration.hack(require('./hacks/align-self'));
|
|
|
39
39
|
Declaration.hack(require('./hacks/appearance'));
|
|
40
40
|
Declaration.hack(require('./hacks/flex-basis'));
|
|
41
41
|
Declaration.hack(require('./hacks/mask-border'));
|
|
42
|
+
Declaration.hack(require('./hacks/mask-composite'));
|
|
42
43
|
Declaration.hack(require('./hacks/align-items'));
|
|
43
44
|
Declaration.hack(require('./hacks/flex-shrink'));
|
|
44
45
|
Declaration.hack(require('./hacks/break-props'));
|
|
@@ -54,6 +55,7 @@ Declaration.hack(require('./hacks/grid-row-align'));
|
|
|
54
55
|
Declaration.hack(require('./hacks/transform-decl'));
|
|
55
56
|
Declaration.hack(require('./hacks/flex-direction'));
|
|
56
57
|
Declaration.hack(require('./hacks/image-rendering'));
|
|
58
|
+
Declaration.hack(require('./hacks/backdrop-filter'));
|
|
57
59
|
Declaration.hack(require('./hacks/background-clip'));
|
|
58
60
|
Declaration.hack(require('./hacks/text-decoration'));
|
|
59
61
|
Declaration.hack(require('./hacks/justify-content'));
|
package/lib/processor.js
CHANGED
|
@@ -204,6 +204,11 @@ function () {
|
|
|
204
204
|
word: 'auto-fill'
|
|
205
205
|
});
|
|
206
206
|
return undefined;
|
|
207
|
+
} else if (/^grid-template/.test(prop) && value.indexOf('[') !== -1) {
|
|
208
|
+
result.warn('Autoprefixer currently does not support line names. ' + 'Try using grid-template-areas instead.', {
|
|
209
|
+
node: decl,
|
|
210
|
+
word: '['
|
|
211
|
+
});
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
|
package/lib/resolution.js
CHANGED
|
@@ -4,12 +4,12 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaul
|
|
|
4
4
|
|
|
5
5
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
|
|
6
6
|
|
|
7
|
+
var n2f = require('num2fraction');
|
|
8
|
+
|
|
7
9
|
var Prefixer = require('./prefixer');
|
|
8
10
|
|
|
9
11
|
var utils = require('./utils');
|
|
10
12
|
|
|
11
|
-
var n2f = require('num2fraction');
|
|
12
|
-
|
|
13
13
|
var REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi)/gi;
|
|
14
14
|
var SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi)/i;
|
|
15
15
|
|
package/lib/supports.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var postcss = require('postcss');
|
|
4
|
+
|
|
5
|
+
var data = require('caniuse-lite').feature(require('caniuse-lite/data/features/css-featurequeries.js'));
|
|
6
|
+
|
|
3
7
|
var Browsers = require('./browsers');
|
|
4
8
|
|
|
5
9
|
var brackets = require('./brackets');
|
|
@@ -8,12 +12,8 @@ var Value = require('./value');
|
|
|
8
12
|
|
|
9
13
|
var utils = require('./utils');
|
|
10
14
|
|
|
11
|
-
var postcss = require('postcss');
|
|
12
|
-
|
|
13
15
|
var supported = [];
|
|
14
16
|
|
|
15
|
-
var data = require('caniuse-lite').feature(require('caniuse-lite/data/features/css-featurequeries.js'));
|
|
16
|
-
|
|
17
17
|
for (var browser in data.stats) {
|
|
18
18
|
var versions = data.stats[browser];
|
|
19
19
|
|
package/lib/value.js
CHANGED
|
@@ -4,14 +4,14 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaul
|
|
|
4
4
|
|
|
5
5
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
|
|
6
6
|
|
|
7
|
+
var vendor = require('postcss').vendor;
|
|
8
|
+
|
|
7
9
|
var Prefixer = require('./prefixer');
|
|
8
10
|
|
|
9
11
|
var OldValue = require('./old-value');
|
|
10
12
|
|
|
11
13
|
var utils = require('./utils');
|
|
12
14
|
|
|
13
|
-
var vendor = require('postcss').vendor;
|
|
14
|
-
|
|
15
15
|
var Value =
|
|
16
16
|
/*#__PURE__*/
|
|
17
17
|
function (_Prefixer) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autoprefixer",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.5.1",
|
|
4
4
|
"description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website",
|
|
5
5
|
"keywords": ["autoprefixer", "css", "prefix", "postcss", "postcss-plugin"],
|
|
6
6
|
"author": "Andrey Sitnik <andrey@sitnik.ru>",
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"node": ">=6.0.0"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"browserslist": "^4.4
|
|
14
|
-
"caniuse-lite": "^1.0.
|
|
13
|
+
"browserslist": "^4.5.4",
|
|
14
|
+
"caniuse-lite": "^1.0.30000957",
|
|
15
15
|
"normalize-range": "^0.1.2",
|
|
16
16
|
"num2fraction": "^1.2.2",
|
|
17
17
|
"postcss": "^7.0.14",
|