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', () => {
624624 assert . equal ( actual , expected )
625625} )
626626
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+
627659AtRules ( 'does not crash on incomplete @media queries' , ( ) => {
628660 let css = `
629661 @media (min-width) {}
Original file line number Diff line number Diff line change @@ -119,6 +119,7 @@ export function analyze(css, options = {}) {
119119 let imports = new Collection ( useLocations )
120120 let medias = new Collection ( useLocations )
121121 let mediaBrowserhacks = new Collection ( useLocations )
122+ let mediaFeatures = new Collection ( useLocations )
122123 let charsets = new Collection ( useLocations )
123124 let supports = new Collection ( useLocations )
124125 let supportsBrowserhacks = new Collection ( useLocations )
@@ -283,6 +284,10 @@ export function analyze(css, options = {}) {
283284 }
284285 break
285286 }
287+ case 'Feature' : {
288+ mediaFeatures . p ( node . name , node . loc )
289+ break
290+ }
286291 case Rule : {
287292 let prelude = node . prelude
288293 let block = node . block
@@ -747,6 +752,7 @@ export function analyze(css, options = {}) {
747752 medias . c ( ) ,
748753 {
749754 browserhacks : mediaBrowserhacks . c ( ) ,
755+ features : mediaFeatures . c ( ) ,
750756 }
751757 ) ,
752758 charset : charsets . c ( ) ,
Original file line number Diff line number Diff line change @@ -110,6 +110,12 @@ Api("handles empty input gracefully", () => {
110110 unique : { } ,
111111 uniquenessRatio : 0 ,
112112 } ,
113+ features : {
114+ total : 0 ,
115+ totalUnique : 0 ,
116+ unique : { } ,
117+ uniquenessRatio : 0 ,
118+ } ,
113119 } ,
114120 charset : {
115121 total : 0 ,
You can’t perform that action at this time.
0 commit comments