autoprefixer
Advanced tools
@@ -361,2 +361,26 @@ let parser = require('postcss-value-parser') | ||
| function selectorStartsWith(base, selector) { | ||
| if (!selector.startsWith(base)) { | ||
| return false | ||
| } | ||
| let next = selector[base.length] | ||
| return !next || /[\s.#[:>+~]/.test(next) | ||
| } | ||
| function selectorMayOverlap(previous, current) { | ||
| let base = previous.replace(/\s*\*\s*/g, ' ').replace(/\s+/g, ' ').trim() | ||
| let selector = current.replace(/\s+/g, ' ').trim() | ||
| return !base || selectorStartsWith(base, selector) | ||
| } | ||
| function selectorsMayOverlap(previous, current) { | ||
| return previous.some(previousSelector => { | ||
| return current.some(currentSelector => { | ||
| return selectorMayOverlap(previousSelector, currentSelector) | ||
| }) | ||
| }) | ||
| } | ||
| /** | ||
@@ -487,2 +511,3 @@ * Parse data from all grid-template(-areas) declarations | ||
| let rulesToInsert = {} | ||
| let previousGridAreas = [] | ||
@@ -520,2 +545,16 @@ css.walkDecls('grid-area', gridArea => { | ||
| function shouldResetSpan(rule, area, dimension) { | ||
| return previousGridAreas.some(previous => { | ||
| if (previous.data !== data) { | ||
| return false | ||
| } | ||
| if (!selectorsMayOverlap(previous.selectors, gridAreaRule.selectors)) { | ||
| return false | ||
| } | ||
| let previousArea = rule.areas[previous.value] | ||
| return previousArea && previousArea[dimension].span > area[dimension].span | ||
| }) | ||
| } | ||
| // create the empty object with the key as the last area name | ||
@@ -559,4 +598,6 @@ // e.g if we have templates with "a b c" values, "c" will be the last area | ||
| // grid-template has no duplicates and not inside media rule | ||
| let addRowSpan = shouldResetSpan(rule, area, 'row') | ||
| let addColumnSpan = shouldResetSpan(rule, area, 'column') | ||
| getMSDecls(area, false, false) | ||
| getMSDecls(area, addRowSpan, addColumnSpan) | ||
| .reverse() | ||
@@ -579,4 +620,7 @@ .forEach(i => | ||
| cloned.removeAll() | ||
| let addRowSpan = area.row.updateSpan || shouldResetSpan(rule, area, 'row') | ||
| let addColumnSpan = | ||
| area.column.updateSpan || shouldResetSpan(rule, area, 'column') | ||
| getMSDecls(area, area.row.updateSpan, area.column.updateSpan) | ||
| getMSDecls(area, addRowSpan, addColumnSpan) | ||
| .reverse() | ||
@@ -612,3 +656,7 @@ .forEach(i => | ||
| gridAreaRule.walkDecls(/-ms-grid-(row|column)/, d => d.remove()) | ||
| getMSDecls(area, area.row.updateSpan, area.column.updateSpan) | ||
| let addRowSpan = area.row.updateSpan || shouldResetSpan(rule, area, 'row') | ||
| let addColumnSpan = | ||
| area.column.updateSpan || shouldResetSpan(rule, area, 'column') | ||
| getMSDecls(area, addRowSpan, addColumnSpan) | ||
| .reverse() | ||
@@ -631,4 +679,7 @@ .forEach(i => | ||
| cloned.removeAll() | ||
| let addRowSpan = area.row.updateSpan || shouldResetSpan(rule, area, 'row') | ||
| let addColumnSpan = | ||
| area.column.updateSpan || shouldResetSpan(rule, area, 'column') | ||
| getMSDecls(area, area.row.updateSpan, area.column.updateSpan) | ||
| getMSDecls(area, addRowSpan, addColumnSpan) | ||
| .reverse() | ||
@@ -671,2 +722,8 @@ .forEach(i => | ||
| previousGridAreas.push({ | ||
| data, | ||
| selectors: gridAreaRule.selectors, | ||
| value | ||
| }) | ||
| return undefined | ||
@@ -673,0 +730,0 @@ }) |
+2
-1
@@ -214,3 +214,4 @@ let featureQueries = require('caniuse-lite/data/features/css-featurequeries.js') | ||
| filtered, | ||
| this.all.options | ||
| this.all.options, | ||
| this.all.browsers.browserslistOpts | ||
| ) | ||
@@ -217,0 +218,0 @@ this.prefixerCache = new this.Prefixes( |
+3
-3
| { | ||
| "name": "autoprefixer", | ||
| "version": "10.5.0", | ||
| "version": "10.5.1", | ||
| "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website", | ||
@@ -36,4 +36,4 @@ "keywords": [ | ||
| "dependencies": { | ||
| "browserslist": "^4.28.2", | ||
| "caniuse-lite": "^1.0.30001787", | ||
| "browserslist": "^4.28.4", | ||
| "caniuse-lite": "^1.0.30001799", | ||
| "fraction.js": "^5.3.4", | ||
@@ -40,0 +40,0 @@ "picocolors": "^1.1.1", |
+0
-3
@@ -54,4 +54,1 @@ # Autoprefixer [![Cult Of Martians][cult-img]][cult] | ||
| [cult]: https://cultofmartians.com/tasks/autoprefixer-grid.html | ||
| ## Docs | ||
| Read full docs **[here](https://github.com/postcss/autoprefixer#readme)**. |
200887
0.91%7065
0.7%54
-5.26%Updated
Updated