Skip to content

Commit 7f29035

Browse files
committed
Compile media query range syntax with boolean logic instead of fractional pixels
Fixes #228, fixes #864
1 parent f9ecde2 commit 7f29035

File tree

2 files changed

+179
-56
lines changed

2 files changed

+179
-56
lines changed

src/lib.rs

Lines changed: 91 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8402,7 +8402,7 @@ mod tests {
84028402
}
84038403
"#,
84048404
indoc! { r#"
8405-
@media (min-color: 3) {
8405+
@media not (max-color: 2) {
84068406
.foo {
84078407
color: #7fff00;
84088408
}
@@ -8423,7 +8423,7 @@ mod tests {
84238423
}
84248424
"#,
84258425
indoc! { r#"
8426-
@media (max-color: 1) {
8426+
@media not (min-color: 2) {
84278427
.foo {
84288428
color: #7fff00;
84298429
}
@@ -8444,7 +8444,7 @@ mod tests {
84448444
}
84458445
"#,
84468446
indoc! { r#"
8447-
@media (min-width: 240.001px) {
8447+
@media not (max-width: 240px) {
84488448
.foo {
84498449
color: #7fff00;
84508450
}
@@ -8507,7 +8507,66 @@ mod tests {
85078507
}
85088508
"#,
85098509
indoc! { r#"
8510-
@media (max-width: 239.999px) {
8510+
@media not (min-width: 240px) {
8511+
.foo {
8512+
color: #7fff00;
8513+
}
8514+
}
8515+
"#},
8516+
Browsers {
8517+
firefox: Some(60 << 16),
8518+
..Browsers::default()
8519+
},
8520+
);
8521+
8522+
prefix_test(
8523+
r#"
8524+
@media not (width < 240px) {
8525+
.foo {
8526+
color: chartreuse;
8527+
}
8528+
}
8529+
"#,
8530+
indoc! { r#"
8531+
@media (min-width: 240px) {
8532+
.foo {
8533+
color: #7fff00;
8534+
}
8535+
}
8536+
"#},
8537+
Browsers {
8538+
firefox: Some(60 << 16),
8539+
..Browsers::default()
8540+
},
8541+
);
8542+
8543+
test(
8544+
r#"
8545+
@media not (width < 240px) {
8546+
.foo {
8547+
color: chartreuse;
8548+
}
8549+
}
8550+
"#,
8551+
indoc! { r#"
8552+
@media (width >= 240px) {
8553+
.foo {
8554+
color: #7fff00;
8555+
}
8556+
}
8557+
"#},
8558+
);
8559+
8560+
prefix_test(
8561+
r#"
8562+
@media (width < 240px) and (hover) {
8563+
.foo {
8564+
color: chartreuse;
8565+
}
8566+
}
8567+
"#,
8568+
indoc! { r#"
8569+
@media (not (min-width: 240px)) and (hover) {
85118570
.foo {
85128571
color: #7fff00;
85138572
}
@@ -8612,7 +8671,28 @@ mod tests {
86128671
}
86138672
"#,
86148673
indoc! { r#"
8615-
@media (min-width: 100.001px) and (max-width: 199.999px) {
8674+
@media (not (max-width: 100px)) and (not (min-width: 200px)) {
8675+
.foo {
8676+
color: #7fff00;
8677+
}
8678+
}
8679+
"#},
8680+
Browsers {
8681+
firefox: Some(85 << 16),
8682+
..Browsers::default()
8683+
},
8684+
);
8685+
8686+
prefix_test(
8687+
r#"
8688+
@media not (100px < width < 200px) {
8689+
.foo {
8690+
color: chartreuse;
8691+
}
8692+
}
8693+
"#,
8694+
indoc! { r#"
8695+
@media not ((not (max-width: 100px)) and (not (min-width: 200px))) {
86168696
.foo {
86178697
color: #7fff00;
86188698
}
@@ -8663,7 +8743,7 @@ mod tests {
86638743
}
86648744
"#,
86658745
indoc! { r#"
8666-
@media (min-width: calc(1.001px + 1rem)) {
8746+
@media not (max-width: calc(1px + 1rem)) {
86678747
.foo {
86688748
color: #ff0;
86698749
}
@@ -8681,7 +8761,7 @@ mod tests {
86818761
}
86828762
"#,
86838763
indoc! { r#"
8684-
@media (min-width: calc(max(10px, 1rem) + .001px)) {
8764+
@media not (max-width: max(10px, 1rem)) {
86858765
.foo {
86868766
color: #ff0;
86878767
}
@@ -8699,7 +8779,7 @@ mod tests {
86998779
}
87008780
"#,
87018781
indoc! { r#"
8702-
@media (min-width: .001px) {
8782+
@media not (max-width: 0) {
87038783
.foo {
87048784
color: #ff0;
87058785
}
@@ -8753,7 +8833,7 @@ mod tests {
87538833
}
87548834
"#,
87558835
indoc! { r#"
8756-
@media (-webkit-min-device-pixel-ratio: 2.001), (min-resolution: 2.001dppx) {
8836+
@media not (-webkit-max-device-pixel-ratio: 2), not (max-resolution: 2dppx) {
87578837
.foo {
87588838
color: #ff0;
87598839
}
@@ -22509,7 +22589,7 @@ mod tests {
2250922589
grid-auto-flow: column;
2251022590
}
2251122591

22512-
@media (min-width: 1024px) {
22592+
@media not (max-width: 1024px) {
2251322593
.foo {
2251422594
max-inline-size: 1024px;
2251522595
}
@@ -26336,7 +26416,7 @@ mod tests {
2633626416
}
2633726417
"#,
2633826418
indoc! {r#"
26339-
@media screen and ((prefers-color-scheme: dark) or (not (width >= 300px))) {
26419+
@media screen and ((prefers-color-scheme: dark) or ((width < 300px))) {
2634026420
.foo {
2634126421
order: 6;
2634226422
}

0 commit comments

Comments
 (0)