autoprefixer 10.5.0 → 10.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/README.md +0 -3
- package/lib/hacks/grid-utils.js +61 -4
- package/lib/supports.js +2 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -51,6 +51,3 @@ Twitter account for news and releases: [@autoprefixer].
|
|
|
51
51
|
[cult-img]: https://cultofmartians.com/assets/badges/badge.svg
|
|
52
52
|
[PostCSS]: https://github.com/postcss/postcss
|
|
53
53
|
[cult]: https://cultofmartians.com/tasks/autoprefixer-grid.html
|
|
54
|
-
|
|
55
|
-
## Docs
|
|
56
|
-
Read full docs **[here](https://github.com/postcss/autoprefixer#readme)**.
|
package/lib/hacks/grid-utils.js
CHANGED
|
@@ -358,6 +358,30 @@ function selectorsEqual(ruleA, ruleB) {
|
|
|
358
358
|
})
|
|
359
359
|
}
|
|
360
360
|
|
|
361
|
+
function selectorStartsWith(base, selector) {
|
|
362
|
+
if (!selector.startsWith(base)) {
|
|
363
|
+
return false
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
let next = selector[base.length]
|
|
367
|
+
return !next || /[\s.#[:>+~]/.test(next)
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
function selectorMayOverlap(previous, current) {
|
|
371
|
+
let base = previous.replace(/\s*\*\s*/g, ' ').replace(/\s+/g, ' ').trim()
|
|
372
|
+
let selector = current.replace(/\s+/g, ' ').trim()
|
|
373
|
+
|
|
374
|
+
return !base || selectorStartsWith(base, selector)
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
function selectorsMayOverlap(previous, current) {
|
|
378
|
+
return previous.some(previousSelector => {
|
|
379
|
+
return current.some(currentSelector => {
|
|
380
|
+
return selectorMayOverlap(previousSelector, currentSelector)
|
|
381
|
+
})
|
|
382
|
+
})
|
|
383
|
+
}
|
|
384
|
+
|
|
361
385
|
/**
|
|
362
386
|
* Parse data from all grid-template(-areas) declarations
|
|
363
387
|
* @param {Root} css css root
|
|
@@ -483,6 +507,7 @@ function insertAreas(css, isDisabled) {
|
|
|
483
507
|
|
|
484
508
|
// we need to store the rules that we will insert later
|
|
485
509
|
let rulesToInsert = {}
|
|
510
|
+
let previousGridAreas = []
|
|
486
511
|
|
|
487
512
|
css.walkDecls('grid-area', gridArea => {
|
|
488
513
|
let gridAreaRule = gridArea.parent
|
|
@@ -515,6 +540,20 @@ function insertAreas(css, isDisabled) {
|
|
|
515
540
|
return false
|
|
516
541
|
}
|
|
517
542
|
|
|
543
|
+
function shouldResetSpan(rule, area, dimension) {
|
|
544
|
+
return previousGridAreas.some(previous => {
|
|
545
|
+
if (previous.data !== data) {
|
|
546
|
+
return false
|
|
547
|
+
}
|
|
548
|
+
if (!selectorsMayOverlap(previous.selectors, gridAreaRule.selectors)) {
|
|
549
|
+
return false
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
let previousArea = rule.areas[previous.value]
|
|
553
|
+
return previousArea && previousArea[dimension].span > area[dimension].span
|
|
554
|
+
})
|
|
555
|
+
}
|
|
556
|
+
|
|
518
557
|
// create the empty object with the key as the last area name
|
|
519
558
|
// e.g if we have templates with "a b c" values, "c" will be the last area
|
|
520
559
|
if (!rulesToInsert[lastArea]) {
|
|
@@ -553,8 +592,10 @@ function insertAreas(css, isDisabled) {
|
|
|
553
592
|
|
|
554
593
|
if ((!rule.hasDuplicates || !hasDuplicateName) && !rule.params) {
|
|
555
594
|
// grid-template has no duplicates and not inside media rule
|
|
595
|
+
let addRowSpan = shouldResetSpan(rule, area, 'row')
|
|
596
|
+
let addColumnSpan = shouldResetSpan(rule, area, 'column')
|
|
556
597
|
|
|
557
|
-
getMSDecls(area,
|
|
598
|
+
getMSDecls(area, addRowSpan, addColumnSpan)
|
|
558
599
|
.reverse()
|
|
559
600
|
.forEach(i =>
|
|
560
601
|
gridAreaRule.prepend(
|
|
@@ -572,8 +613,11 @@ function insertAreas(css, isDisabled) {
|
|
|
572
613
|
// grid-template has duplicates and not inside media rule
|
|
573
614
|
let cloned = gridAreaRule.clone()
|
|
574
615
|
cloned.removeAll()
|
|
616
|
+
let addRowSpan = area.row.updateSpan || shouldResetSpan(rule, area, 'row')
|
|
617
|
+
let addColumnSpan =
|
|
618
|
+
area.column.updateSpan || shouldResetSpan(rule, area, 'column')
|
|
575
619
|
|
|
576
|
-
getMSDecls(area,
|
|
620
|
+
getMSDecls(area, addRowSpan, addColumnSpan)
|
|
577
621
|
.reverse()
|
|
578
622
|
.forEach(i =>
|
|
579
623
|
cloned.prepend(
|
|
@@ -604,7 +648,11 @@ function insertAreas(css, isDisabled) {
|
|
|
604
648
|
// grid-template has duplicates and not inside media rule
|
|
605
649
|
// and the selector is complex
|
|
606
650
|
gridAreaRule.walkDecls(/-ms-grid-(row|column)/, d => d.remove())
|
|
607
|
-
|
|
651
|
+
let addRowSpan = area.row.updateSpan || shouldResetSpan(rule, area, 'row')
|
|
652
|
+
let addColumnSpan =
|
|
653
|
+
area.column.updateSpan || shouldResetSpan(rule, area, 'column')
|
|
654
|
+
|
|
655
|
+
getMSDecls(area, addRowSpan, addColumnSpan)
|
|
608
656
|
.reverse()
|
|
609
657
|
.forEach(i =>
|
|
610
658
|
gridAreaRule.prepend(
|
|
@@ -622,8 +670,11 @@ function insertAreas(css, isDisabled) {
|
|
|
622
670
|
// rules and merge them easily
|
|
623
671
|
let cloned = gridAreaRule.clone()
|
|
624
672
|
cloned.removeAll()
|
|
673
|
+
let addRowSpan = area.row.updateSpan || shouldResetSpan(rule, area, 'row')
|
|
674
|
+
let addColumnSpan =
|
|
675
|
+
area.column.updateSpan || shouldResetSpan(rule, area, 'column')
|
|
625
676
|
|
|
626
|
-
getMSDecls(area,
|
|
677
|
+
getMSDecls(area, addRowSpan, addColumnSpan)
|
|
627
678
|
.reverse()
|
|
628
679
|
.forEach(i =>
|
|
629
680
|
cloned.prepend(
|
|
@@ -661,6 +712,12 @@ function insertAreas(css, isDisabled) {
|
|
|
661
712
|
}
|
|
662
713
|
}
|
|
663
714
|
|
|
715
|
+
previousGridAreas.push({
|
|
716
|
+
data,
|
|
717
|
+
selectors: gridAreaRule.selectors,
|
|
718
|
+
value
|
|
719
|
+
})
|
|
720
|
+
|
|
664
721
|
return undefined
|
|
665
722
|
})
|
|
666
723
|
|
package/lib/supports.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autoprefixer",
|
|
3
|
-
"version": "10.5.
|
|
3
|
+
"version": "10.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": [
|
|
6
6
|
"autoprefixer",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"main": "lib/autoprefixer.js",
|
|
34
34
|
"types": "lib/autoprefixer.d.ts",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"browserslist": "^4.28.
|
|
37
|
-
"caniuse-lite": "^1.0.
|
|
36
|
+
"browserslist": "^4.28.4",
|
|
37
|
+
"caniuse-lite": "^1.0.30001799",
|
|
38
38
|
"fraction.js": "^5.3.4",
|
|
39
39
|
"picocolors": "^1.1.1",
|
|
40
40
|
"postcss-value-parser": "^4.2.0"
|