autoprefixer 9.7.0 → 9.7.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 CHANGED
@@ -1,6 +1,10 @@
1
1
  # Change Log
2
2
  This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
+ ## 9.7.1
5
+ * Avoid unnecessary transitions in prefixed selectors (by Andrey Alexandrov).
6
+ * Fix `fit-content` for Firefox.
7
+
4
8
  ## 9.7 “Ad Victoriam”
5
9
  * Add `AUTOPREFIXER_GRID` env variable to enable Grid Layout polyfill for IE.
6
10
  * Fix `Cannot read property 'grid' of undefined` error.
package/README.md CHANGED
@@ -309,7 +309,7 @@ module.exports = {
309
309
  ### CSS-in-JS
310
310
 
311
311
  The best way to use PostCSS with CSS-in-JS is [`astroturf`].
312
- Add it’s loader to your `webpack.config.js`:
312
+ Add its loader to your `webpack.config.js`:
313
313
 
314
314
  ```js
315
315
  module.exports = {
package/data/prefixes.js CHANGED
@@ -374,9 +374,10 @@ f(require('caniuse-lite/data/features/css3-tabsize'), function (browsers) {
374
374
 
375
375
  var intrinsic = require('caniuse-lite/data/features/intrinsic-width');
376
376
 
377
+ var sizeProps = ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size', 'grid', 'grid-template', 'grid-template-rows', 'grid-template-columns', 'grid-auto-columns', 'grid-auto-rows'];
377
378
  f(intrinsic, function (browsers) {
378
- return prefix(['max-content', 'min-content', 'fit-content'], {
379
- props: ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size', 'grid', 'grid-template', 'grid-template-rows', 'grid-template-columns', 'grid-auto-columns', 'grid-auto-rows'],
379
+ return prefix(['max-content', 'min-content'], {
380
+ props: sizeProps,
380
381
  feature: 'intrinsic-width',
381
382
  browsers: browsers
382
383
  });
@@ -385,7 +386,16 @@ f(intrinsic, {
385
386
  match: /x|\s#4/
386
387
  }, function (browsers) {
387
388
  return prefix(['fill', 'fill-available', 'stretch'], {
388
- props: ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size', 'grid', 'grid-template', 'grid-template-rows', 'grid-template-columns', 'grid-auto-columns', 'grid-auto-rows'],
389
+ props: sizeProps,
390
+ feature: 'intrinsic-width',
391
+ browsers: browsers
392
+ });
393
+ });
394
+ f(intrinsic, {
395
+ match: /x|\s#5/
396
+ }, function (browsers) {
397
+ return prefix(['fit-content'], {
398
+ props: sizeProps,
389
399
  feature: 'intrinsic-width',
390
400
  browsers: browsers
391
401
  });
package/lib/transition.js CHANGED
@@ -8,6 +8,8 @@ var vendor = require('postcss').vendor;
8
8
 
9
9
  var list = require('postcss').list;
10
10
 
11
+ var Browsers = require('./browsers');
12
+
11
13
  var Transition =
12
14
  /*#__PURE__*/
13
15
  function () {
@@ -28,7 +30,8 @@ function () {
28
30
 
29
31
  var prefix, prop;
30
32
  var add = this.prefixes.add[decl.prop];
31
- var declPrefixes = add && add.prefixes || [];
33
+ var vendorPrefixes = this.ruleVendorPrefixes(decl);
34
+ var declPrefixes = vendorPrefixes || add && add.prefixes || [];
32
35
  var params = this.parse(decl.value);
33
36
  var names = params.map(function (i) {
34
37
  return _this.findProp(i);
@@ -69,6 +72,12 @@ function () {
69
72
  prefix = _i3.value;
70
73
  }
71
74
 
75
+ if (vendorPrefixes && !vendorPrefixes.some(function (p) {
76
+ return prefix.includes(p);
77
+ })) {
78
+ continue;
79
+ }
80
+
72
81
  var prefixed = this.prefixes.prefixed(prop, prefix);
73
82
 
74
83
  if (prefixed !== '-ms-transform' && !names.includes(prefixed)) {
@@ -473,6 +482,25 @@ function () {
473
482
  }
474
483
 
475
484
  return undefined;
485
+ }
486
+ /**
487
+ * Check if transition prop is inside vendor specific rule
488
+ */
489
+ ;
490
+
491
+ _proto.ruleVendorPrefixes = function ruleVendorPrefixes(decl) {
492
+ var parent = decl.parent;
493
+
494
+ if (parent.type !== 'rule') {
495
+ return false;
496
+ } else if (!parent.selector.includes(':-')) {
497
+ return false;
498
+ }
499
+
500
+ var selectors = Browsers.prefixes().filter(function (s) {
501
+ return parent.selector.includes(':' + s);
502
+ });
503
+ return selectors.length > 0 ? selectors : false;
476
504
  };
477
505
 
478
506
  return Transition;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autoprefixer",
3
- "version": "9.7.0",
3
+ "version": "9.7.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>",
@@ -11,11 +11,11 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "browserslist": "^4.7.2",
14
- "caniuse-lite": "^1.0.30001004",
14
+ "caniuse-lite": "^1.0.30001006",
15
15
  "chalk": "^2.4.2",
16
16
  "normalize-range": "^0.1.2",
17
17
  "num2fraction": "^1.2.2",
18
- "postcss": "^7.0.19",
18
+ "postcss": "^7.0.21",
19
19
  "postcss-value-parser": "^4.0.2"
20
20
  },
21
21
  "bin": {