MCPcopy Index your code
hub / github.com/NativeScript/NativeScript / matchQuery

Function matchQuery

packages/core/css-mediaquery/index.ts:50–119  ·  view source on GitHub ↗
(mediaQuery: string, values: MediaQueryEnvironmentParams)

Source from the content-addressed store, hash-verified

48}
49
50export function matchQuery(mediaQuery: string, values: MediaQueryEnvironmentParams): boolean {
51 const expressions = parseQuery(mediaQuery);
52
53 return expressions.some((query) => {
54 const { type, inverse, features } = query;
55
56 // Either the parsed or specified `type` is "all", or the types must be
57 // equal for a match.
58 const typeMatch = query.type === 'all' || values.type === query.type;
59
60 // Quit early when `type` doesn't match, but take "not" into account
61 if ((typeMatch && inverse) || !(typeMatch || inverse)) {
62 return false;
63 }
64
65 const expressionsMatch = features.every((feature) => {
66 const value: any = values[feature.property];
67
68 // Missing or falsy values don't match
69 if (!value && value !== 0) {
70 return false;
71 }
72
73 switch (feature.property) {
74 case 'orientation':
75 case 'prefers-color-scheme':
76 if (typeof value !== 'string') {
77 return false;
78 }
79
80 return value.toLowerCase() === feature.value.toLowerCase();
81 default: {
82 // Numeric properties
83 let numVal: number;
84
85 if (typeof value !== 'number') {
86 Trace.write(`Unknown CSS media query feature property: '${feature.property}' on '${query}'`, Trace.categories.MediaQuery, Trace.messageType.warn);
87 return false;
88 }
89
90 switch (feature.property) {
91 case 'width':
92 case 'height':
93 case 'device-width':
94 case 'device-height': {
95 numVal = Length.toDevicePixels(Length.parse(feature.value), 0);
96 break;
97 }
98 default:
99 Trace.write(`Unknown CSS media query feature property: '${feature.property}' on '${query}'`, Trace.categories.MediaQuery, Trace.messageType.warn);
100 break;
101 }
102
103 switch (feature.modifier) {
104 case 'min':
105 return value >= numVal;
106 case 'max':
107 return value <= numVal;

Callers 2

checkIfMediaQueryMatchesFunction · 0.90
index.spec.tsFile · 0.85

Calls 5

parseQueryFunction · 0.85
someMethod · 0.80
everyMethod · 0.80
writeMethod · 0.65
parseMethod · 0.65

Tested by

no test coverage detected