File tree Expand file tree Collapse file tree 3 files changed +44
-0
lines changed Expand file tree Collapse file tree 3 files changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -624,6 +624,38 @@ AtRules('finds @media browserhacks', () => {
624
624
assert . equal ( actual , expected )
625
625
} )
626
626
627
+ AtRules ( 'finds Media Features' , ( ) => {
628
+ const fixture = `
629
+ @media (min-width: 0) {}
630
+ @media (max-width: 0) {}
631
+ @media (hover) {}
632
+ @media (forced-colors: none) {}
633
+ @media (prefers-color-scheme: dark) {}
634
+ @media (prefers-reduced-motion: reduce) {}
635
+ @media (prefers-contrast: more) {}
636
+
637
+ @media screen and (50px <= width <= 100px), (min-height: 100px) {}
638
+ `
639
+ const actual = analyze ( fixture ) . atrules . media . features
640
+ const expected = {
641
+ total : 8 ,
642
+ totalUnique : 8 ,
643
+ unique : {
644
+ 'min-width' : 1 ,
645
+ 'max-width' : 1 ,
646
+ 'hover' : 1 ,
647
+ 'forced-colors' : 1 ,
648
+ 'prefers-color-scheme' : 1 ,
649
+ 'prefers-reduced-motion' : 1 ,
650
+ 'prefers-contrast' : 1 ,
651
+ 'min-height' : 1 ,
652
+ } ,
653
+ uniquenessRatio : 8 / 8 ,
654
+ }
655
+
656
+ assert . equal ( actual , expected )
657
+ } )
658
+
627
659
AtRules ( 'does not crash on incomplete @media queries' , ( ) => {
628
660
let css = `
629
661
@media (min-width) {}
Original file line number Diff line number Diff line change @@ -119,6 +119,7 @@ export function analyze(css, options = {}) {
119
119
let imports = new Collection ( useLocations )
120
120
let medias = new Collection ( useLocations )
121
121
let mediaBrowserhacks = new Collection ( useLocations )
122
+ let mediaFeatures = new Collection ( useLocations )
122
123
let charsets = new Collection ( useLocations )
123
124
let supports = new Collection ( useLocations )
124
125
let supportsBrowserhacks = new Collection ( useLocations )
@@ -283,6 +284,10 @@ export function analyze(css, options = {}) {
283
284
}
284
285
break
285
286
}
287
+ case 'Feature' : {
288
+ mediaFeatures . p ( node . name , node . loc )
289
+ break
290
+ }
286
291
case Rule : {
287
292
let prelude = node . prelude
288
293
let block = node . block
@@ -747,6 +752,7 @@ export function analyze(css, options = {}) {
747
752
medias . c ( ) ,
748
753
{
749
754
browserhacks : mediaBrowserhacks . c ( ) ,
755
+ features : mediaFeatures . c ( ) ,
750
756
}
751
757
) ,
752
758
charset : charsets . c ( ) ,
Original file line number Diff line number Diff line change @@ -110,6 +110,12 @@ Api("handles empty input gracefully", () => {
110
110
unique : { } ,
111
111
uniquenessRatio : 0 ,
112
112
} ,
113
+ features : {
114
+ total : 0 ,
115
+ totalUnique : 0 ,
116
+ unique : { } ,
117
+ uniquenessRatio : 0 ,
118
+ } ,
113
119
} ,
114
120
charset : {
115
121
total : 0 ,
You can’t perform that action at this time.
0 commit comments